ForcePilot/docs/latest/advanced/skills-management.md
肖泽涛 46b676db07 feat(skills): add skills management module
实现 Skills 管理功能,支持超级管理员导入、编辑、导出和删除技能包。

- 新增 Skill 数据模型(元数据存数据库,内容存文件系统)
- 新增 /api/system/skills/* 路由(权限分级:admin 可列表,superadmin 可管理)
- 新增 SelectedSkillsReadonlyBackend,运行时只读挂载到 /skills
- Agent 配置新增 skills 字段,运行时注入技能提示词
- 前端新增 Skills 管理页面(设置弹窗 + 独立路由)
- 新增测试覆盖:service/router/backend 单测

未实现功能:
 - 关联使用其他技能
 - 沙箱执行代码
 - 在技能中绑定工具
2026-02-21 02:48:20 +08:00

1.8 KiB
Raw Blame History

Skills 管理

Skills 管理模块用于集中维护可供 Agent 只读引用的技能包。
本期采用“文件系统存内容,数据库存索引”模式:

  1. 技能目录存储在 /app/saves/skills(本地 save_dir/skills)。
  2. 技能元数据slug/name/description/dir_path存储在 skills 表。
  3. Agent 配置通过 context.skills 选择技能,运行时挂载到 /skills 且只读。

权限与入口

  1. 系统设置中新增 Skills 管理 页签(仅 superadmin 可见)。
  2. admin 仅可调用列表接口(用于 Agent 配置选择 skills
  3. user 无 skills 管理权限。

导入规范ZIP

  1. 单包单技能,且必须包含一个 SKILL.md
  2. SKILL.md 必须包含 frontmatternamedescription 必填。
  3. name 需满足 slug 规则:小写字母/数字/短横线。
  4. 导入时执行路径安全校验,拒绝绝对路径与 .. 路径穿越。
  5. slug 冲突时自动追加 -v2/-v3...,并自动改写 SKILL.mdname 为最终 slug。
  6. 导入采用临时目录 + 原子替换,避免半成品落盘。

在线管理能力

  1. Skills 列表:来自数据库,避免全量目录扫描。
  2. 目录树:按原生目录结构展示。
  3. 文件级 CRUD支持新建文件/目录、编辑文本文件、删除文件/目录。
  4. 文件编辑仅允许文本类型(如 md/py/js/ts/json/yaml/toml/txt 等)。
  5. SKILL.md 保存后会重新解析,并同步更新数据库中的 name/description
  6. 支持导出单个 skill 为 ZIP。
  7. 删除 skill 时会同时删除目录与数据库记录(硬删除)。

Agent 运行时行为

  1. context.skills 用于配置技能 slug 列表。
  2. 运行时仅暴露选中 skills 到 /skills/<slug>/...
  3. /skills 路径只读,不允许写入、编辑、上传。
  4. 变更在下一次对话请求生效。