dsh-learn:把會話裏的糾正與修法寫成普通 DSH 技能

前言

用 DeepSeek Harness(DSH)做智能體開發時,同類問題會在不同會話裏反覆出現:工具退出碼誤判、環境變量沒設、某條命令在 Windows 與 Linux 上行爲不一致。常見做法是另開一輪模型做「復盤」、或維護一份越寫越長的 MEMORY 文件——前者多一次 API 調用且上下文已變,後者難版本管理、也難和宿主自帶的技能體系對齊。

下面介紹社區插件 dsh-learn(維護者 xiex16070-jpg,SkillHub 分類爲「記憶」):掛在會話事件流上,用確定性規則從用戶糾正、失敗與修復裏提出候選,真正落盤由前臺模型顯式決定;產出是 <DSH_HOME>/skills/learned/ 下的普通 DSH 技能,不另建第二套註冊表,README 寫明零額外模型調用。

這是什麼

dsh-learn 是 Cordis 插件,當前倉庫版本爲 0.3.13(MIT,package.json 要求 Node >=22.19、DSH >=0.2.0-rc.1)。它監聽 session/event(用戶消息、助手消息、工具結果),在內存裏維護有上限的觀測窗口,回合結束後做審查並把候選寫入 <DSH_HOME>/learn/data/;技能正文與四把「傘技能」(durable-preferences、tool-recovery、environment-facts、agent-engineering)則落在技能目錄,供 learn_skills 檢索、/技能名 加載。

中央分工在 README 裏寫得很清楚:正則與門檻只產出候選;寫技能文件只能由模型觸發 learn_skill_manage create 或 learn action=note。系統提示保持穩定,隊列與規則摘錄走宿主 runtime context,不改寫持久會話歷史。

核心功能

零額外模型調用的學習迴路

環節 行爲
觀測 capture 脫敏、壓縮並按來源分類信號(用戶/助手/工具各有限定類型,見 text.js 的 SOURCE_KINDS)
審查 agent/turn-stopping 後防抖約 4 秒運行 runReview,僅寫 pending.json;窗口觀測數需 ≥ review.triggerObservations(默認 3)
落盤 模型查看 learn action=pending 後自行決定創建技能或往傘技能記規則;相似度 ≥ review.similarity(默認 0.6)的既有規則會被強化而非重複寫入
維護 curator 每 10 分鐘檢查是否到期,在空閒且間隔滿足時標記陳舊或移入歸檔(只移動、不刪除);加載次數 ≥ 3 的技能不自動歸檔

專屬技能根與自注冊提供者

宿主文件系統技能提供者通常只掃技能根下一層,因此 <skills>/learned/<name>/SKILL.md 這類三層路徑無法被默認掃描。插件通過 lib/provider.js 向宿主 registerProvider() 註冊 <DSH_HOME>/skills/learned/,rank 330,無需改 profile。寫入前會跑探針技能 learn-root-probe,確認目錄對宿主可見後再遷移本插件管理的技能。

可見反饋與自檢

瀏覽器客戶端在每個回合結束後,在回覆下方展示彩色回執(僅統計本回合模型主動調用的 learn* 寫操作;自動審查入隊不產生回執)。排查可用:

learn action=status
learn action=doctor

開發者可在插件目錄執行 npm test(README:宿主側 23 節斷言 + 瀏覽器側檢查,零依賴)。

安裝與啓用

DSH 生態裏插件多以 Cordis bundle 形式接入;本插件收錄在 awesome-dsh-plugin 清單。README 推薦從倉庫預構建包安裝,下載地址爲:

https://github.com/xiex16070-jpg/dsh-learn/releases/latest/download/dsh-learn.tgz

資產名不帶版本號,便於 releases/latest/download/ 長期有效。

手動安裝時,將插件目錄置於 profile 的 node_modules/dsh-learn/,並在 profile 的 package.json 的 dsh.profile.bundles 中列出 "dsh-learn"。插件自帶的 cordis.patch.yml 僅 insert 一條 id: dsh-learn 的 loader。README 也說明:因尚未發到 npm registry,暫無法走 plugin_manager 的 install_bundle 包名安裝,手工拷貝是文檔路徑不可用時的辦法,而非長期推薦姿勢。

安裝後勿在 package.json 裏對 @deepseek-ai/dsh-* 聲明 peerDependencies,否則宿主可能靜默跳過整個 bundle。

典型用法

收攏技能到專屬根

先 dry-run 看計劃,再執行遷移(探針未通過則不會搬任何技能):

learn action=organize dryRun=true
learn action=organize dryRun=false

模型側寫盤入口

  • 新獨立技能:learn_skill_manage(create 等;description 必填,是受控寫入口)
  • 往傘技能追加規則:learn action=note(需 statement)
  • 瀏覽候選隊列:learn action=pending
  • 語義檢索已學內容:learn_skills(只讀,query 必填)

用戶明確要求「記住」且滿足來源條件的候選,審查路徑可直接落盤;其餘候選需模型根據 pending 列表自行調用上述工具。

配置要點

配置經 normalizeConfig() 解析,相對路徑相對 <DSH_HOME>。常用默認值包括:dataDir 爲 <DSH_HOME>/learn/data,capture.maxSessions 8、maxItemsPerSession 120,curator.staleAfterDays 14、archiveAfterDays 30。完整鍵表見 GitHub README「配置」一節;README 強調每個配置鍵在代碼中都有讀者,並由 npm test 校驗。

適用場景與注意

適合:長期在同一 DSH profile 下做工具鏈、環境、流程類開發,希望把「這次踩坑的修法」沉澱爲可讀、可改、可 git 管理的 SKILL.md,而不是依賴額外復盤模型或 monolithic 記憶文件。

注意:

  1. 插件以當前 DSH 進程權限讀寫 home 目錄;安裝前請閱讀 源碼與 LICENSE,確認符合你的安全與合規要求。
  2. 確定性路徑曾出現誤匹配(v0.1.0 的 REMEMBER_RE 事故);當前設計 deliberately 把「判什麼值得記」交還模型,候選多、落盤少是預期行爲之一。
  3. SkillHub(https://www.skillhub.cn/plugins/xiex16070-jpg/dsh-learn)是社區目錄站點,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以各頁面當時展示爲準(GitHub 倉庫當前爲 1 star)。

結尾

dsh-learn 把「持久學習」收束成一條保守迴路:觀察真實事件流、候選排隊、模型顯式寫盤、普通技能文件出倉,並用 curator 做可逆歸檔。若你在 DSH 上反覆糾正同一類錯誤,可以按 README 安裝 bundle,用 learn action=doctor 確認專屬根已註冊,再讓會話裏的修法逐步進入 skills/learned。

  • 目錄頁:https://www.skillhub.cn/plugins/xiex16070-jpg/dsh-learn
  • 源碼與文檔:https://github.com/xiex16070-jpg/dsh-learn
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜