在 DeepSeek Harness (DSH) 的多代理編排場景中,主 Agent 往往需要在所有子代理任務完成後才能結束當前回合。如果主 Agent 試圖過早收尾,會導致工作流中斷或結果不完整。dsh-wait-guard 插件正是爲了解決這個問題而生,它作爲一個純 Host 平面閘門,強制保持主 Agent 的 turn 開放,直到所有後代子代理的狀態變爲非 running。
核心功能¶
- 強制等待後代結算:只要還有後代子代理處於
running,主 Agent 的 turn 就不允許結束。 - 純 Host 插件:不註冊工具、不改配置、不寫文件、無全局狀態,刪除插件即可完全恢復原樣。
- 即時響應消息:暫停期間任何消息(人的消息、子代理的彙報或結算通知)到達都立刻讓插件失效。
- 臨時失效機制:失效是臨時的。下一次模型想收尾時,只要還有子代理在跑,閘門立刻重新生效。
- 無泄漏設計:監聽器隨插件銷燬,定時器不泄漏。在途等待會在卸載時立刻解除,不會把正在等待的 turn 卡死。
安裝與啓用¶
插件支持從 GitHub 直接安裝,無需 npm。
dsh plugin --profile <你的 profile> add github:dn4hjtcr9s-del/dsh-wait-guard
也可以在 Web UI 中操作:Plugins → Add plugin → 將上面的 add 命令後的一段粘貼進去。
典型用法¶
插件裝好後無需配置即可工作,默認行爲是 60 秒靜默提醒一次,任何消息到達立刻退場。
若需調整行爲,可修改 bundle 行的 config:
- 純靜默:設置
nudge: false,只等待,不發送提醒。 - 攢批處理:設置
releaseOn: ['user','agent-message'],在收到用戶消息或子代理消息時才放行,而不是每次結算通知都放行。
適用場景與注意¶
- 適用場景:任何涉及多層級子代理調用的 DSH Agent 工作流,防止主 Agent 過早結束導致流程中斷。
- 環境要求:需要 Node.js >= 22.19.0。
- 安全特性:零依賴、零寫入、零全局狀態。
- 容錯策略:若讀不到子代理列表時默認放行(
onProbeError: 'open'),可改爲'closed'嚴格模式。 - 消息處理:不阻斷排隊的人消息。若本次放行的唯一原因是 next-turn 裏的排隊消息,絕不注入提醒。
- 版本變更:已廢除(v5)的配置項包括
waitFactor/maxWaitMs/maxNudgesPerTurn/giveUpAfterMs/giveUpText,配置裏寫了也會被忽略。
結尾¶
dsh-wait-guard 提供了一個可靠、無副作用的方式來管理多代理編排中的回合收尾邏輯。作爲純 Host 插件,它不干擾業務邏輯,適合需要嚴格把控子代理完成狀態的 DSH 工作流。