feat: rename Content field to Instruction across skill-related models and requests for consistency

This commit is contained in:
mlogclub
2026-04-12 10:00:47 +08:00
parent 294ad772de
commit 06abbbeeb6
8 changed files with 23 additions and 23 deletions
@@ -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 {
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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 命中冲突时的优先级,数值越大优先级越高。
+1 -1
View File
@@ -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"`
+1 -1
View File
@@ -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"`
@@ -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 {
@@ -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({
</FieldContent>
</Field>
<Field data-invalid={!!errors.content}>
<FieldLabel htmlFor="skill-content">Content</FieldLabel>
<Field data-invalid={!!errors.instruction}>
<FieldLabel htmlFor="skill-instruction"></FieldLabel>
<FieldContent>
<Textarea
id="skill-content"
id="skill-instruction"
rows={12}
placeholder="请输入 Skill 文档内容,描述目标、步骤、工具使用规则和边界。"
aria-invalid={!!errors.content}
{...register("content")}
aria-invalid={!!errors.instruction}
{...register("instruction")}
/>
<FieldError errors={[errors.content]} />
<FieldError errors={[errors.instruction]} />
</FieldContent>
</Field>
<Field data-invalid={!!errors.examplesText}>
<FieldLabel htmlFor="skill-examples">Examples</FieldLabel>
<FieldLabel htmlFor="skill-examples"></FieldLabel>
<FieldContent>
<Textarea
id="skill-examples"
+2 -2
View File
@@ -273,7 +273,7 @@ export type SkillDefinition = {
code: string
name: string
description: string
content: string
instruction: string
examples: string[]
allowedToolCodes: string[]
priority: number
@@ -290,7 +290,7 @@ export type CreateSkillDefinitionPayload = {
code: string
name: string
description: string
content: string
instruction: string
examples: string[]
allowedToolCodes: string[]
priority?: number