package vip.mate.skill.model; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.time.LocalDateTime; /** * 技能实体 * 技能实体:可扩展的功能模块 * * @author MateClaw Team */ @Data @TableName("mate_skill") public class SkillEntity { @TableId(type = IdType.ASSIGN_ID) private Long id; /** 技能名称 */ private String name; /** 技能描述 */ private String description; /** 技能类型:builtin(内置)/ custom(自定义)/ mcp(MCP协议) */ private String skillType; /** 技能图标(emoji 或 URL) */ private String icon; /** 技能版本 */ private String version; /** 技能作者 */ private String author; /** 技能配置(JSON) */ @TableField(value = "config_json", updateStrategy = FieldStrategy.ALWAYS) private String configJson; /** 技能代码/脚本内容(旧字段,保留兼容) */ @TableField(value = "source_code", updateStrategy = FieldStrategy.ALWAYS) private String sourceCode; /** * SKILL.md 完整内容 — 技能执行协议 *

* 采用 SKILL.md 格式:YAML frontmatter + Markdown 正文。 * Agent 通过阅读此内容理解技能的用途、执行方式和注意事项。 *

* 格式示例: *

     * ---
     * name: pdf
     * description: PDF 处理技能
     * metadata: { "builtin_skill_version": "1.0" }
     * ---
     * # PDF Processing Guide
     * ## Prerequisites
     * ...(详细使用说明)
     * 
*/ @TableField(value = "skill_content", updateStrategy = FieldStrategy.ALWAYS) private String skillContent; /** 是否启用 */ private Boolean enabled; /** 是否系统内置(不可删除) */ private Boolean builtin; /** 标签(逗号分隔) */ private String tags; /** RFC-023:来源对话 ID(Agent 自治合成时记录) */ private String sourceConversationId; /** * RFC-023:安全扫描状态。 * NULL = 旧数据或手动创建(不受扫描约束),PASSED = 扫描通过,FAILED = 扫描拦截。 * listEnabledSkills 过滤条件:NULL 或 PASSED 才加载。 */ private String securityScanStatus; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; private Integer deleted; }