前言¶
在 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。