前言¶
在 DeepSeek Harness(DSH)裏跑長會話時,主模型往往在「改完文件、準備結束本輪」時缺少一道固定閘門:本輪動過哪些路徑、是否和用戶原始需求一致,容易依賴人工回憶或事後 diff。常見做法是手動加 stop-hook、或在對話裏反覆叮囑「改完自查」——前者要維護鉤子邏輯,後者不穩定。
下面介紹社區工作流類宿主插件 dsh-host-compliance-check(維護者 liuyun847):在主會話輪次正常結束時,若本輪確實寫過文件,向主會話注入 notice 形態的合規提醒(含文件清單與自查引導),由主模型當場決定直接收尾、簡要自查,或阻塞並調用 subagent 深入檢查。DSH 生態主張「一切皆插件」;插件索引來自獨立社區目錄 SkillHub,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-host-compliance-check 是 DSH 宿主插件,通過 cordis.patch.yml 掛入 Cordis 運行時。SkillHub 上的簡介爲:「DSH 宿主插件:輪末自動派發需求合規檢查子智能體 (DeepSeek Harness)」;倉庫 README(v0.4.x)進一步說明:行爲上模仿 Trae 的 stop-hook(PostToolUse + Stop → decision 移交),當前版本不自動派發檢查子智能體,而是在輪末注入 notice,由主模型自行判斷後續動作。
- 倉庫:
liuyun847/dsh-host-compliance-check - 分類:工作流(SkillHub
categoryKey:agent-workflow) - 許可證:MIT(SkillHub 元數據)
- 當前 manifest 版本:0.4.2(目錄頁標註 v0.4.2)
核心功能¶
以下能力均來自倉庫 README 與 SkillHub 同步的 manifest 描述,安裝前可在目錄頁查看完整 README。
輪末 notice 提醒¶
主會話輪次正常結束(監聽 agent/turn-stopping,近似 Trae 的 Stop)時,若滿足:本輪修改過文件、且本用戶輸入尚未提醒過,則通過 agent.inject 注入 notice(source.form='notice',summary 一句話 ≤120 字)。消息進入 next-step 隊列,本 turn 繼續,主模型當場看到並響應後再真正結束——效果上類似 Trae 的 block,而非靜默結束。
基於 tools/result 的文件收集¶
v0.4.0 起,寫入路徑的收集信源改爲 tools/result 實時精確記錄:
- 頂層
write/edit成功 → 提取真實file_path; run_code內通過tools.write/tools.edit子派發同樣經工具管道產生tools/result;- 會話事件日誌中的頂層
tool/call僅作兜底。
每輪用戶新消息經 agent/pre-step 復位「已提醒」標記與本輪寫入表。可對路徑配置 skipPaths 過濾。
會話範圍與提示內容¶
- 僅對主會話觸發;子代理會話(header
origin: 'subagent')排除,避免嵌套提醒。GUI 恢復/續寫的 fork 會話(有parentSession、無origin)仍視爲主會話。 - 提示詞攜帶按時間順序拼接的全部用戶輸入歷史(跳過插件注入,過長時截斷保留最新),並內置自查清單與處理方式引導(可直接結束 / 阻塞調 subagent 或
subagent_fork深查)。
已知限制¶
- 只覆蓋經 標準
tools.write/tools.edit的寫入;PTC 裸寫(如await import('node:fs')直接寫盤、繞過 tools 綁定)不產生tools/result,插件檢測不到。 - 無子代理自動派發,不依賴
ctx.get('subagents')。
配置項¶
在 cordis.patch.yml 對應 entry 的 config 中(README 表格):
| 字段 | 默認值 | 說明 |
|---|---|---|
skipPaths |
[] |
跳過匹配的路徑(RegExp/字符串數組),命中則不記錄 |
diag |
false |
寫診斷日誌到 ~/.dsh/compliance-diag.log(優先 DSH_HOME;排查用) |
0.2.x 的 providerName、promptTemplate、diffMaxChars 等字段與 0.3.x 源碼解析邏輯已移除。
安裝與啓用¶
插件以當前 dsh 進程權限運行;安裝前應閱讀 GitHub 源碼與 MIT 許可證,確認 cordis.patch.yml 中的 bundle patch(./cordis.patch.yml)符合預期。
方式一:SkillHub 安裝計劃(推薦覈對 commit)¶
SkillHub 對 liuyun847/dsh-host-compliance-check 標註爲可安裝(installability: verified),並給出帶精確 commit 的命令(profile 示例爲 web,請按自己的 profile 替換):
dsh plugin --profile web add github:liuyun847/dsh-host-compliance-check#0a02278cef3a966dd7435cf00430c68a8e484453
執行後按安裝計劃重啓,例如:
dsh --profile web
並確認插件行已掛載且無啓動錯誤。
方式二:README 中的 profile 本地依賴¶
在 DSH profile 目錄(例如 ~/.dsh/profiles/web/)下:
- 在
package.json增加 file 依賴並安裝:
{
"dependencies": {
"dsh-host-compliance-check": "file:./plugins/dsh-host-compliance-check"
}
}
然後在該目錄執行 pnpm install(或 npm install)。
- 在
cordis.patch.yml註冊:
- insert:
- id: compliance-check
name: 'dsh-host-compliance-check'
- 重啓
dsh web生效。
README 註明:倉庫以 plugins/dsh-host-compliance-check/ 爲活源,運行時加載 node_modules 下的 file 拷貝;改活源後需把 lib/index.js、package.json 等同步到 node_modules/dsh-host-compliance-check/ 再重啓。
典型用法¶
啓用後無需單獨 CLI:在主會話中正常讓模型使用 write / edit(或 run_code 內的 tools 寫入)改文件。當本輪 turn 即將結束時,若本輪有記錄到的寫入且尚未對本條用戶輸入提醒過,會自動注入 notice,主模型應閱讀文件清單與用戶訴求對照,再選擇收尾或調用 subagent。
排查時可臨時設置 diag: true,查看 ~/.dsh/compliance-diag.log(或 DSH_HOME 下對應路徑)。
開發側單測(README):
pnpm install
node plugins/dsh-host-compliance-check/tests/diff.test.mjs
適用場景與注意¶
適合:希望在 DSH 主會話裏固定一道「輪末合規閘門」的團隊或個人;已使用 subagent 做深查、但希望默認由主模型決定是否派發,而不是插件硬編碼自動 fork。
注意:
- 插件邏輯與宿主 Cordis 事件強相關,peer 依賴包括
@deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-subagent等(見 SkillHub manifest);升級 DSH 時需關注兼容性。 - 依賴 tools 管道的寫入檢測,PTC 裸寫不在覆蓋範圍內。
- GitHub 倉庫星標爲 0(SkillHub 同步數據);以目錄頁與 README 爲準理解行爲,勿將目錄頁一句「自動派發子智能體」與 v0.4.x「notice + 主模型判斷」混爲一談。
鏈接¶
- SkillHub 目錄頁:https://www.skillhub.cn/plugins/liuyun847/dsh-host-compliance-check
- GitHub:https://github.com/liuyun847/dsh-host-compliance-check
經過上面的步驟,你可以在 DSH 工作流裏把「輪末是否對照需求與改動文件」從口頭習慣變成宿主插件驅動的 notice 提醒,並在需要時再交給 subagent 做深入合規檢查。