dsh-wikiskill-experience:把跨會話 agent 經驗編譯成持久 wiki

前言

在 DeepSeek Harness(DSH)裏跑 agent,一次會話裏踩過的坑、驗證過的打法,默認隨着會話結束就丟;寫進 AGENTS.md 又容易被下一輪「優化」沖掉,還難回滾、難整體重來。社區目錄裏維護者 CHIPINGHSIEN 的 dsh-wikiskill-experience(分類:記憶)針對的是另一套做法:把經驗確定性編譯成一份 append-only 的 wiki,在後續會話用短索引注入;另一條路上再用證據閘門卡住,由用戶批准後纔可發佈可執行的 SKILL.md,且插件本身不會自批准發佈。

下面按「定位 → 能力 → 安裝 → 用法 → 注意」介紹,事實以倉庫 README 與 package.json 爲準。

這是什麼

dsh-wikiskill-experience 是 Host-only Cordis bundle:無運行時依賴、插件內部不調用 LLM、設計文檔寫明無網絡訪問。設計來源爲論文 WikiSkill: Compiling Agent Experience into Persistent Knowledge for Skill Evolution(arXiv:2608.27454v1)及本倉庫的雙迴路改造。

一句話:跨會話、跨項目把 agent 經驗編譯成持久 wiki,後續會話注入短描述性索引,併疊加「提案 → 用戶批准 → 可回滾 SKILL.md」的程序性迴路。

運行環境要求:Node.js ≥ 20;package.json 中 engines.dsh 爲 >=0.2.2-rc.1 <0.3.0-0。許可證:MIT。

雙迴路在解決什麼

插件把經驗拆成兩層,演化路徑彼此隔離:

迴路 ① 描述性(P0 + P1) 迴路 ② 程序性(P2 + P3)
產出 wiki:raw/ → patterns/ → index.md SKILL.md
默認 常開 常開,閘門 + 只干預演
回滾 wiki 永不回滾(審計底賬) 刪 SKILL.md 即可回滾
誰能觸發 agent 調 wikiskill_record 提案由 agent;發佈只能用戶本人

門控結果永不回寫 patterns/;wiki 與 skill 是兩條獨立可審計的賬。

核心功能

四個工具

工具 作用 是否寫文件
wikiskill_record 記錄一條經驗(九字段結構化);追加 raw/YYYY-MM-DD.jsonl 與 logs.md,重編譯 wiki 是(僅插件 root)
wikiskill_hint 只讀:返回最近輪次候選觸發信號(工具失敗、step 報錯、疑似用戶糾正等) 否
wikiskill_propose P2:status / draft / reset;draft 寫 p2/deferred-proposals.md,不寫 SKILL.md draft 時寫隊列
wikiskill_release P3:status / publish(默認 DRY-RUN)/ rollback / receipts 用戶批准後寫刪 SKILL.md

wikiskill_record 九字段包括:patternId、kind(failure/strategy)、title、errorDescription、rootCause(須回答 WHY)、when、general、projectContext、evidence,以及 transfer(universal / conditional / project-only)。語義判斷由 agent 承擔;插件做確定性編譯。壞記錄會永久留在 wiki,README 明確提醒 rootCause 與 general 的質量要求。

注入與硬保證(摘要)

  • 可選每步注入短索引(injectSection,默認開啓;maxIndexLines、topN 可配)。
  • 會話日誌只讀;不新增 SessionEvent 類型。
  • 確定性信號只進內存 hints,不自動寫入 raw/ 或 index.md。
  • 可選服務故障不讓工具調用 reject;wiki 永不回滾;發佈落在 watched skill root,與 wiki 分離。

P2 資格閘與 P3 批准

P2 默認需同時滿足:minCases ≥ 20、單一模式最大重複 ≥ 5、去重場景數 ≥ 3、rubric.md 已凍結,才允許 draft;可用 minCases / minRepeat / minScenes 覆蓋,覆蓋值會在返回值裏報告。

publish / rollback 僅在用戶指令裏提供 approvalToken: "USER-APPROVED" 時真正執行,否則 DRY-RUN;工具描述寫明 agent 不能自批准。

安裝與啓用

需要已帶 plugin_manager 的 DeepSeek Harness。README 寫明:Host-only bundle,不需要重啓進程,裝完即生效;安裝前 DSH 會按 engines.dsh 範圍攔截不兼容版本。

方式 A:本地目錄

將 bundle 目錄的絕對路徑傳給 install_bundle:

plugin_manager action=install_bundle target="<絕對路徑>/wikiskill-plugin"

方式 B:打包 tgz

在插件目錄執行:

cd wikiskill-plugin
npm pack --pack-destination dist

將 dist/*.tgz 的絕對路徑作爲 target。

方式 C:Git 渠道

plugin_manager action=install_bundle target="git+https://github.com/CHIPINGHSIEN/dsh-wikiskill-experience#<commit-sha>"

固定 commit 可復現;省略 #<commit-sha> 則用默認分支 HEAD(不推薦)。README 另給出 SSH over 443 的實測示例(網絡無法訪問 github.com:443 時可參考)。

方式 D:npm

plugin_manager action=install_bundle target="dsh-wikiskill-experience" registry="https://registry.npmjs.org/"

可寫 dsh-wikiskill-experience@<version> 固定版本;package.json 當前版本爲 0.1.1。

裝完確認

  1. cordis_inspect_query host / Tool / listTools 應出現四個工具(p2Enabled / p3Enabled 控制後兩個是否註冊)。
  2. 默認數據根:<DSH_HOME>/experience/wiki/。
  3. bundle 詳情應顯示標題「WikiSkill experience」及本地化描述、圖標。

卸載:

plugin_manager action=remove_bundle target="dsh-wikiskill-experience"

卸載不刪除 <DSH_HOME>/experience/wiki/ 數據;已發佈 SKILL.md 需用 wikiskill_release 的 rollback 單獨處理。

配置要點

在 profile 的 cordis.patch.yml 中用同一 bundle id(wikiskill-experience)覆蓋配置時,會替換整塊 config,宜先複製默認再改。常見鍵:

鍵 默認 說明
root '' 空則 <DSH_HOME>/experience/wiki
enabled true false 關閉注入與工具註冊
injectSection true 是否每步注入短索引
maxIndexLines 12 注入索引最大行數(1–50)
topN 8 注入條目上限(1–20)
p2Enabled / p3Enabled true 是否註冊 P2 / P3 工具
p2MinCases / p2MinRepeat / p2MinScenes 20 / 5 / 3 P2 閘門閾值
p3SkillRoot '' 空則 <DSH_HOME>/skills

典型用法與數據佈局

記錄一條經驗

agent 在確認根因與可遷移策略後調用 wikiskill_record,填滿九字段;插件追加 raw/、更新 patterns/ 與 index.md。wikiskill_hint 可在同輪或後續輪次提供「該不該記」的候選信號,但不會自動落盤。

從提案到發佈(P2 → P3)

  1. wikiskill_propose + status:查看是否過資格閘;未達標時 README 示例爲 eligible:false(如記錄數少於 20)。
  2. 達標後 draft:原子草案進入 p2/deferred-proposals.md。
  3. wikiskill_release + publish:無 USER-APPROVED 時爲 DRY-RUN;用戶在指令中給出 approvalToken: "USER-APPROVED" 後寫入 <DSH_HOME>/skills/wikiskill-*.md(或配置的 p3SkillRoot)。
  4. 需要撤銷行爲時:rollback 刪除對應 SKILL.md,不牽動 wiki。

默認數據目錄結構(節選):

<root>/
├── raw/YYYY-MM-DD.jsonl
├── patterns/<patternId>.md
├── index.md
├── logs.md
├── p2/                    # rubric、deferred-proposals 等
└── skills/                # 始終爲空(描述迴路與程序迴路分界)

適用場景與注意

適合誰: 長期在 DSH 上做多項目、多會話 agent 工作,希望把「爲什麼失敗、在什麼條件下怎麼避坑」沉澱成可審計 wiki,並僅在證據足夠、用戶點頭後才把行爲寫進 SKILL.md 的開發者。

權限與安全: 插件以當前 DSH 進程權限讀寫 root 與 skill root;安裝前請自行審閱倉庫源碼與 MIT 許可證。README 說明 bundle 爲 Host-only、無插件內 LLM 調用;P3 發佈必須由用戶 token 門控。

生態說明: DeepSeek Harness 主張「一切皆插件」;SkillHub 插件目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

驗證邊界(README 誠實版): 維護者在真實環境驗證過工具註冊、P3 鏈路、dry-run 與回滾等;P2 閘門在默認閾值下於真實小庫上曾被拒絕(設計行爲)。無 Client 設置面板;Windows 下部分權限失敗路徑僅有代碼級保證。

結尾

dsh-wikiskill-experience 用確定性編譯把跨會話經驗變成不可回滾的 wiki 索引,用閘門與用戶批准把可執行技能變更擋在第二道門後。若要安裝或讀完整 API 與保證列表,見倉庫 README。

羽毛球分组比赛记分
小程序二维码

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

小夜