在 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 工作流。