Skip to content

Skills zh

pawaca edited this page Aug 30, 2026 · 1 revision

技能

上游技能提供者和模型工具在 Edge 中的适配。

上游参考:Skills

上游提供了什么

技能是模型和用户都可以调用的可复用指令集。子系统分三层:

  • SkillRegistryctx.skills)— 分层提供者注册表。合并来自多个来源的目录(项目文件、用户目录、内置)。按优先级和注册顺序解决重复。
  • ToolSkill — 注册模型面向的 skill 工具。模型调用时加载技能内容注入为 <skill_content> 上下文。执行调用策略(仅模型、仅用户、两者、隐藏)。
  • Skill Providers — 可插拔的后端,发现和提供技能。上游有文件系统提供者,监听 .dsh/skills/.agents/skills/ 目录。

当前 Edge 状态:main 上未实现

当前 main 分支没有安装 SkillRegistryToolSkill 或任何技能提供者。模型没有 skill 工具,/skill 斜杠命令不可用。

edge-remotes.ts 里的 commands/list 桩返回空数组——客户端的 ui-commands 插件连接时查询命令目录,没有响应 UI 会报错。

Feature 分支:feat/tool-skill

feat/tool-skill 分支上有完整实现但尚未合入:

  • SkillRegistry + ToolSkill — 作为上游插件安装(直接复用)
  • EdgeSkillProvider — 基于 DO KV 存储的自定义提供者(dsh-edge:skill:{name} 键)。实现了上游 SkillProvider 接口的 list()lookup()load()
  • Skill CRUD 路由/api/skills REST 端点,支持 PUT(创建/更新)、DELETE 和 GET(列出名称)
  • 单元测试 — EdgeSkillProvider 测试覆盖

该分支用 DO KV 存储替换了文件系统技能发现(Workers 上不可能——无持久化文件系统)。技能通过 REST API 创建而非文件监听。

为什么没合入

  • SkillRegistry 缺少 @Remote 装饰器commands/list Typert RPC 无法被网关自动路由,手写桩必须保留
  • 该分支与 0.7.0 的其他工作并行开发,需要 rebase

Plan 要求

功能 Plan 备注
技能存储(DO KV) 所有 plan 使用已有 DO 存储,无额外服务
技能 CRUD API 所有 plan 已有 DO fetch handler 上的 REST 路由
模型 skill 工具 所有 plan 上游 ToolSkill 插件,无平台依赖

架构总结

组件 分类 状态
SkillRegistry 复用 在 feature 分支,未合入
ToolSkill 复用 在 feature 分支,未合入
EdgeSkillProvider 替换 在 feature 分支,未合入
Skill CRUD 路由 桥接 在 feature 分支,未合入
commands/list ⚠️ 临时方案 在 main 上,等待技能合入

TODO

**合入 feat/tool-skill 分支。**Rebase 到当前 main,解决冲突后合入。实现已完成并有测试。合入后 commands/list 桩仍需保留,直到上游 SkillRegistry 获得 @Remote 装饰器。

**验证技能 UI 集成。**上游 dsh-client-ui-commands 插件(已在 33 个客户端插件中)渲染斜杠命令菜单。合入后验证它能正确显示 EdgeSkillProvider 目录中的技能。

English

中文

Clone this wiki locally