前言¶
在長鏈路 Agent 任務中,思考模型(Reasoning Models)容易把推理過程隱藏在 <thought> 塊內,隨後直接發起一連串工具調用,界面只看到工具刷屏而缺少人類可見的階段性結論;同時,當 Prompt 要求“彙報階段性進展”時,模型可能單獨輸出純文本,導致 Agent 主循環誤判回合結束而提前停頓。dsh-milestone-guard 通過常駐規範注入與軟強制糾偏提醒,緩解這兩個常見問題。
插件簡介¶
dsh-milestone-guard 是面向 DeepSeek Harness(DSH)的輕量級 Cordis 插件,通過“System Prompt 常駐規範注入 + tools/post-execute 瀑布流軟強制糾偏提醒 + GUI 可視化熱更新配置”的機制,解決思考模型在長鏈路 Agent 任務中的靜默工具調用與回合誤判中斷問題。由維護者 xt765 提供,分類爲工作流。
核心功能¶
1. System Prompt 常駐規範注入¶
插件通過 ctx.systemPrompt.section 向對話上下文注入階段性結論規範,引導模型在發起工具調用時同步輸出簡明的人類可見結論(如“已確認配置文件入口,接下來檢查中間件註冊邏輯”)。規範文本支持中英雙語預設,也可通過 promptText 自定義。
2. 軟強制糾偏提醒¶
在 tools/post-execute 階段,插件會檢查最新 assistant/message 是否包含非空可見 Text 塊。若未包含,則基於 WeakMap<Agent, State> 按 (agent, turn, step) 去重並校驗 maxSilentSteps,當觸發條件時在 downstream.additionalContexts 前置注入 notice 軟提醒。該機制不阻斷工具執行,避免浪費已執行結果,僅在下輪對話中提示模型補充結論。
3. 步級併發去重與防內存泄漏¶
當模型在同一 (turn, step) 中併發調用多個工具(如同時調用 5 次 read)時,插件按 (agent, turn, step) 去重,確保同一步只評估並注入一次提醒;同時利用 WeakMap,隨 Agent 實例銷燬自動回收內存。
4. GUI 可視化熱更新¶
插件內置客戶端配置組件(lib/client.js),在 DSH「插件 → 已安裝 → 階段性結論守衛(dsh-milestone-guard)」頁面提供可視化配置表單。修改後無需重啓會話即可實時生效。
5. 零外部強依賴與多版本兼容¶
插件自動兼容 session.events(數組屬性)、session.snapshotEvents()(DSH 0.1.5+ / 0.2.0+ 方法)與 session.log;對 @deepseek-ai/dsh-llm 和 @deepseek-ai/schemastery 提供宿主動態解析與內置零依賴 Fallback(含 toJSON() 與 Standard Schema ~standard 協議),可在純 Node.js 環境獨立運行和測試。
安裝與啓用¶
方式一:通過 GUI 安裝與配置¶
- 在 DeepSeek Harness「插件 (Plugins) → 添加插件」中填入本地路徑或倉庫地址進行安裝。
- 點擊「插件 → 已安裝 → 階段性結論守衛 (
dsh-milestone-guard)」,即可在詳情面板中直接修改:
* 最大連續靜默步數(maxSilentSteps)
* System Prompt 排序權重(sectionOrder)
* 自定義軟強制提醒文案(reminderText)
方式二:在 cordis.patch.yml 中配置¶
- id: milestone-guard
name: dsh-milestone-guard
config:
enabled: true
locale: zh
sectionOrder: 180
maxSilentSteps: 0
ignoreTools: []
配置項說明¶
| 配置項 | 類型 | 默認值 | 說明 |
|---|---|---|---|
enabled |
boolean |
true |
是否啓用本插件。 |
locale |
'zh' \| 'en' |
'zh' |
內置 System Prompt 規範與軟強制提醒文本的語言預設。 |
sectionOrder |
number |
180 |
注入到 System Prompt 的段落排序權重,數值越小越靠前。 |
maxSilentSteps |
number |
0 |
允許連續多少步僅調用工具而不輸出可見結論。默認 0 表示每步必報;設爲 N 表示允許連續靜默 N 步,第 N+1 步仍無正文時才觸發提醒;支持別名 everySteps: N(自動換算爲 maxSilentSteps: N - 1)。 |
ignoreTools |
string[] |
[] |
忽略的工具名稱列表(例如 ["todo_write"]),僅調用列表內工具時不觸發提醒。 |
promptText |
string |
(內置預設) | 自定義注入到 System Prompt 的規範正文,留空時使用 locale 對應的內置預設。 |
reminderText |
string |
(內置預設) | 自定義檢測到靜默工具調用時注入的軟提醒文本,留空或恢復默認時使用內置預設。 |
開發與測試¶
項目使用 Node.js 原生測試運行器(node:test),無需安裝額外測試框架即可驗證全部核心行爲:
npm test
適用場景與注意¶
- 適合需要長鏈路工具調用且希望保持階段性結論可見的開發者與團隊。
- 插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證。
小結¶
dsh-milestone-guard 通過常駐規範注入、tools/post-execute 瀑布流軟強制糾偏提醒以及 GUI 可視化熱更新配置,幫助思考模型在長鏈路 Agent 任務中保持階段性結論的可見性,避免靜默工具調用與回合誤判中斷。如需瞭解詳情,可訪問插件目錄頁或 GitHub 倉庫。