前言¶
在 DSH 里跑 coding agent,一次会话里纠正过的做法、摸索出的流程,往往只留在当轮上下文里。下一轮或换机器,同样的坑还要再走一遍。手写 SKILL.md 能沉淀经验,但依赖人主动整理,且容易把「这次修 bug 的步骤」写成一次性条目,反而污染技能库。
下面介绍维护者 veritaswiki 发布的 DSH 插件 skill-evolution(分类:工作流)。它在每次有效回合结束后自动采集有界轨迹、在只读沙箱里蒸馏类级别技能草稿,用中文简报和强制人工批示把「人机协同」写进流水线,并用代码级闸门、SHA-256 账本与 Curator 生命周期降低误采纳和不可回滚的风险。工程上完整对齐 Nous Research hermes-agent 的 Closed Learning Loop,并在中文审阅、可视化工作台等方面做了增强。
这是什么¶
Skill Evolution 是一套面向 AI Coding Agent 的闭环程序性记忆自进化引擎(Closed-Loop Procedural Memory & Self-Evolution Engine)。插件以 MIT 许可证发布,当前 package 版本为 0.3.0;源码与说明见 GitHub 仓库,社区目录页为 skillhub.cn/plugins/veritaswiki/skill-evolution。
它要解决的问题可以概括为:把「会话里学来的东西」变成可复用、可审计、可回滚的技能资产,而不是散落的消息或未经审阅的自动落盘。
核心功能¶
六步闭环流水线¶
回合结束(turn/end 与 session/flush)后,引擎按固定顺序工作:
- Collector:采集有界快照,剥离系统注入块,识别用户纠正、新技法、技能误判等信号,并做跨进程节流与历史摘要压缩。
- Reflector:在只读上下文中复盘,输出结构化结果与中文审阅简报(
.briefing.json)。 - Gatekeeper:四道硬闸门校验草稿(见下文)。
- ReviewBrief:展示中文简报,要求填写批示后再解锁采纳 / 驳回 / AI 融合修订。
- Applier & Ledger:采纳或变更写入技能树,并记入 SHA-256 内容寻址账本。
默认推荐配置下,mode 为 "draft",通过闸门后只进 .staging/ 草稿,需人工批示后才升入正式库;若设为 "apply",则通过闸门后会自动落盘(风险更高,需自行评估)。
中文简报与强制批示融合¶
打开待审草稿时,界面会先给出结构化中文审阅简报:说明「这是什么技能」「核心铁律」「采纳后果」「驳回后果」。必须填写审阅批示(支持快捷批示胶囊)后,才能进行后续操作。可选路径包括:让 AI 按批示修订草稿(先看效果),或按批示进化并采纳进正式技能库。
远程 / 移动端可通过自然语言触发 evolution_review_center 审批卡片,或使用 /evolution 斜杠命令(见典型用法)。
四道代码级安全闸门¶
相比仅靠提示词约束,闸门在代码里做正则与结构拦截:
- Frontmatter:
name须为 kebab-case,且description非空。 - 类级别命名:拒绝
fix-xxx、debug-yyy、PR 号、日期戳等一次性会话式命名。 - 负面断言与环境错误:拦截如
"X tool does not work"、"command not found"等会让 agent 长期自我设限的表述。 - 体积与归属:单技能正文不超过 24,000 字符;校验
metadata.createdBy === "agent",不自动改写用户手写技能。
SHA-256 账本与单条回滚¶
每次创建、补丁、批示修订、采纳、合并或归档,会在 .evolution_ledger.jsonl 记录前后文件清单;内容按 SHA-256 去重存放在 .evolution_backups/blobs/。工作台提供文件级 SHA-256 diff,支持按账本条目一键原子回滚;安全快照捕获失败时采用 Fail-Closed 策略。
Curator 生命周期与建伞合并¶
旁路遥测 .usage.json(不写入 SKILL.md 正文),按配置将技能在 active → stale → archived 之间迁移(例如默认 14 天未使用标记 stale、30 天未使用归档;零使用不归档、pinned 豁免、内置技能受保护、只归档不删除)。可选 LLM Umbrella Consolidation:扫描前缀聚类,将多个窄技能合并为类级别伞技能,支持 Dry-Run 预览与确认执行。
使用入口¶
- 桌面 Web GUI:会话顶部视图栏「自进化」标签,或「设置 → 自进化」。
- 手机 PWA:
http://127.0.0.1:18890/dsh-evolution/mobile(及对应路由)。 - HTTP API:
/dsh-evolution/api/*提供状态、草稿、技能、账本、批示修订、采纳、回滚、建伞合并等接口(详见仓库 README 路由表)。
安装与启用¶
DSH 生态里插件通过插件管理器安装到当前 Profile。官方 README 给出的 GitHub 安装方式为:
dsh plugin add github:veritaswiki/skill-evolution
安装后,插件通过 cordis.patch.yml 注入配置;默认 enabled: true,mode: "draft"。技能根目录 skillsRoot 留空时,默认使用 ~/.dsh/skills。
主要配置项如下(节选,完整表见仓库 README):
| 配置项 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
是否启用回合后自动复盘采集 |
mode |
"draft" |
草稿待批示,或 "apply" 自动落盘 |
skillsRoot |
"" |
技能根目录 |
minTurnsBetween |
3 |
两次自动复盘最少间隔回合数 |
minMinutesBetween |
5 |
两次自动复盘最少间隔分钟 |
maxMessages |
24 |
快照保留的最近消息条数 |
maxChars |
24000 |
单次复盘快照字符上限 |
reviewTimeoutSeconds |
180 |
后台复盘超时(秒) |
curatorEnabled |
true |
生命周期维护 |
consolidate |
false |
是否在 Curator 中自动建伞合并 |
consolidateDryRun |
true |
建伞默认仅预览 |
staleAfterDays |
14 |
未使用标记 stale 的天数 |
archiveAfterDays |
30 |
未使用归档天数 |
典型用法¶
桌面端审阅草稿¶
- 完成若干轮有效 coding 会话,等待回合结束触发采集与复盘(受
minTurnsBetween、minMinutesBetween限制)。 - 打开会话顶部 「自进化」,查看待审草稿与中文简报。
- 填写批示后,选择「AI 按批示修订」或「按批示进化并采纳进正式库」,或驳回。
斜杠命令(远程 / 聊天内)¶
/evolution brief # 查看所有待审草稿的中文简报
/evolution refine <skill-name> <您的批示想法> # 按批示修订草稿并汇报
/evolution approve <skill-name> <您的批示想法> # 融合批示后升入正式技能库
/evolution reject <skill-name> <您的驳回理由> # 驳回并记入账本
/evolution consolidate # 预览 LLM 建伞合并计划 (dry-run)
/evolution consolidate --apply # 执行建伞合并
/evolution ledger # 查看最近账本记录
/evolution rollback <entry-id> # 原子回滚指定账本记录
聊天内也可发送「审阅自进化草稿」或「看看自进化待审稿」,由 agent 调用 evolution_review_center 弹出审批卡片。
手动复盘与 API¶
需要立即对当前活跃会话做一次复盘时,可调用 POST /dsh-evolution/api/review。日常集成或自动化可对照 README 中的 HTTP API 表使用 refine-draft、promote、discard、rollback、consolidate 等端点。
适用场景与注意¶
适合谁:长期用 DSH 做仓库级开发、希望把重复纠正沉淀为类级别技能、且愿意在采纳前过目中文简报并写批示的团队或个人。若你已经在用手写 skills 目录,插件在 draft 模式下不易直接污染正式库;Curator 与账本适合技能数量增多后的整理与回滚。
权限与安全:插件以当前 DSH 进程权限读写技能目录、账本与备份文件。安装前应阅读 源码 与 MIT 许可证,确认配置(尤其 mode: "apply")是否符合你的合规要求。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
验证与质量:仓库提供 61 项单元测试与 41/41 Hermes 能力对齐审计(npm test、npm run audit:parity),供自行在克隆后的开发环境中验证;作为终端用户,以 DSH 插件安装后的实际行为为准即可。
结尾¶
Skill Evolution 把「回合后复盘 → 闸门 → 中文批示 → 账本落盘 → 生命周期与合并」串成一条可操作的闭环,适合把 agent 的程序性记忆从聊天上下文里抽出来,变成可审、可退、可维护的技能库。进一步了解特性与 API,见 目录页 与 GitHub README。