diff --git a/internal/ai/runtime/internal/impl/factory/agent_factory.go b/internal/ai/runtime/internal/impl/factory/agent_factory.go index 33ec0ed..93fb223 100644 --- a/internal/ai/runtime/internal/impl/factory/agent_factory.go +++ b/internal/ai/runtime/internal/impl/factory/agent_factory.go @@ -241,7 +241,7 @@ func buildSelectedSkillInstruction(skill *models.SkillDefinition, toolDefinition if desc := strings.TrimSpace(skill.Description); desc != "" { lines = append(lines, fmt.Sprintf("- description: %s", desc)) } - if content := strings.TrimSpace(skill.Content); content != "" { + if content := strings.TrimSpace(skill.Instruction); content != "" { lines = append(lines, "", "技能说明:", content) } if examples := parseJSONStringArray(skill.Examples); len(examples) > 0 { diff --git a/internal/builders/skill_builder.go b/internal/builders/skill_builder.go index a834ee3..76ca544 100644 --- a/internal/builders/skill_builder.go +++ b/internal/builders/skill_builder.go @@ -22,7 +22,7 @@ func BuildSkillDefinitionResponse(item *models.SkillDefinition) response.SkillDe Code: item.Code, Name: item.Name, Description: item.Description, - Content: item.Content, + Instruction: item.Instruction, Examples: examples, AllowedToolCodes: allowedToolCodes, Priority: item.Priority, diff --git a/internal/models/models.go b/internal/models/models.go index 49881be..b2268c6 100644 --- a/internal/models/models.go +++ b/internal/models/models.go @@ -908,7 +908,7 @@ type SkillDefinition struct { Code string `gorm:"type:varchar(100);not null;default:'';uniqueIndex"` // Code 为 Skill 的稳定唯一编码,供程序内部引用和路由判断使用,例如 refund_skill。 Name string `gorm:"type:varchar(100);not null;default:'';index"` // Name 为 Skill 的展示名称,用于后台列表、配置页和人工选择场景。 Description string `gorm:"type:varchar(255);not null;default:''"` // Description 为 Skill 的简要说明,用于描述该 Skill 的适用场景和职责边界。 - Content string `gorm:"type:longtext"` // Content 为 Skill 的主体文档,使用 Markdown 编写,供 Agent 理解任务目标、步骤和工具使用要求。 + Instruction string `gorm:"type:longtext"` // Instruction 为 Skill 的主体说明文档存储字段,使用 Markdown 编写,供 Agent 理解任务目标、步骤和工具使用要求。 Examples string `gorm:"type:text"` // Examples 为示例问法 JSON 数组字符串。 AllowedToolCodes string `gorm:"type:text"` // AllowedToolCodes 为允许使用的工具编码 JSON 数组字符串。 Priority int `gorm:"type:int;not null;default:0;index"` // Priority 为 Skill 命中冲突时的优先级,数值越大优先级越高。 diff --git a/internal/pkg/dto/request/skill_request.go b/internal/pkg/dto/request/skill_request.go index 2a7ca59..1bcad94 100644 --- a/internal/pkg/dto/request/skill_request.go +++ b/internal/pkg/dto/request/skill_request.go @@ -10,7 +10,7 @@ type CreateSkillDefinitionRequest struct { Code string `json:"code"` Name string `json:"name"` Description string `json:"description"` - Content string `json:"content"` + Instruction string `json:"instruction"` Examples []string `json:"examples"` AllowedToolCodes []string `json:"allowedToolCodes"` Priority int `json:"priority"` diff --git a/internal/pkg/dto/response/skill_response.go b/internal/pkg/dto/response/skill_response.go index 2bac734..3dec52f 100644 --- a/internal/pkg/dto/response/skill_response.go +++ b/internal/pkg/dto/response/skill_response.go @@ -7,7 +7,7 @@ type SkillDefinitionResponse struct { Code string `json:"code"` Name string `json:"name"` Description string `json:"description"` - Content string `json:"content"` + Instruction string `json:"instruction"` Examples []string `json:"examples"` AllowedToolCodes []string `json:"allowedToolCodes"` Priority int `json:"priority"` diff --git a/internal/services/skill_definition_service.go b/internal/services/skill_definition_service.go index 5e8aa3c..0ff24ad 100644 --- a/internal/services/skill_definition_service.go +++ b/internal/services/skill_definition_service.go @@ -112,7 +112,7 @@ func (s *skillDefinitionService) CreateSkillDefinition(req request.CreateSkillDe Code: normalized.Code, Name: normalized.Name, Description: normalized.Description, - Content: normalized.Content, + Instruction: normalized.Instruction, Examples: mustMarshalSkillStringArray(normalized.Examples), AllowedToolCodes: mustMarshalSkillStringArray(normalized.AllowedToolCodes), Priority: normalized.Priority, @@ -151,7 +151,7 @@ func (s *skillDefinitionService) UpdateSkillDefinition(req request.UpdateSkillDe "code": normalized.Code, "name": normalized.Name, "description": normalized.Description, - "content": normalized.Content, + "content": normalized.Instruction, "examples": mustMarshalSkillStringArray(normalized.Examples), "allowed_tool_codes": mustMarshalSkillStringArray(normalized.AllowedToolCodes), "priority": resolveSkillPriorityForService(normalized.Priority, current.Priority), @@ -167,7 +167,7 @@ func (s *skillDefinitionService) normalizeSkillDefinitionRequest(req request.Cre Code: strings.TrimSpace(req.Code), Name: strings.TrimSpace(req.Name), Description: strings.TrimSpace(req.Description), - Content: strings.TrimSpace(req.Content), + Instruction: strings.TrimSpace(req.Instruction), Priority: normalizeSkillPriorityForService(req.Priority), Remark: strings.TrimSpace(req.Remark), } @@ -177,8 +177,8 @@ func (s *skillDefinitionService) normalizeSkillDefinitionRequest(req request.Cre if normalized.Name == "" { return nil, errorsx.InvalidParam("Skill 名称不能为空") } - if normalized.Content == "" { - return nil, errorsx.InvalidParam("Content 不能为空") + if normalized.Instruction == "" { + return nil, errorsx.InvalidParam("技能说明不能为空") } examples, err := normalizeSkillStringArray(req.Examples) if err != nil { diff --git a/web/app/(console)/skill-definition/_components/edit.tsx b/web/app/(console)/skill-definition/_components/edit.tsx index b385008..0d508a7 100644 --- a/web/app/(console)/skill-definition/_components/edit.tsx +++ b/web/app/(console)/skill-definition/_components/edit.tsx @@ -37,7 +37,7 @@ const emptyForm: EditForm = { code: "", name: "", description: "", - content: "", + instruction: "", examplesText: "", remark: "", }; @@ -50,7 +50,7 @@ const skillFormSchema = z.object({ .regex(/^[a-zA-Z0-9_-]+$/, "Skill 编码仅支持字母、数字、下划线和中划线"), name: z.string().trim().min(1, "Skill 名称不能为空"), description: z.string().trim(), - content: z.string().trim().min(1, "Content 不能为空"), + instruction: z.string().trim().min(1, "技能说明不能为空"), examplesText: z.string().trim(), remark: z.string().trim(), }); @@ -71,7 +71,7 @@ function buildForm(item: SkillDefinition | null): EditForm { code: item.code, name: item.name, description: item.description ?? "", - content: item.content ?? "", + instruction: item.instruction ?? "", examplesText: (item.examples ?? []).join("\n"), remark: item.remark ?? "", }; @@ -85,7 +85,7 @@ function buildPayload( code: form.code.trim(), name: form.name.trim(), description: form.description.trim(), - content: form.content.trim(), + instruction: form.instruction.trim(), examples: form.examplesText .split("\n") .map((item) => item.trim()) @@ -307,22 +307,22 @@ function SkillEditDialogBody({ - - Content + + 技能说明