前言¶
DSH 的插件机制允许把不同运行能力拆到独立插件中。dsh-turn-watchdog 处理其中一个具体场景:live 会话在回合中途长时间没有产生 turn/end,用户可能处于空等状态。这个插件不修复会话,也不中断回合,而是做一件相对窄的事:定期扫描 live 会话,报告长时间未产生 turn/end 的疑似卡住会话。
这是什么¶
dsh-turn-watchdog 是 DeepSeek Harness(DSH)插件,维护者为 Equinox7379,许可证为 MIT。它面向 DSH 的 live 会话,提供只读的卡住观测:发现最后事件不是正常结束、且空闲超过阈值的会话,并给出提示词警示和状态查询入口。
核心功能¶
扫描与判定¶
插件定期扫描 live 会话。判定一个会话为“疑似卡住”的条件是:
1、最后事件不是 turn/end 或 session/end-seed;
2、空闲时间超过 thresholdMinutes。
thresholdMinutes 默认 10,可在 profile patch 的 config 里配置。扫描时排除 subagent 会话。
警示与查询¶
当存在疑似卡住会话时,插件将警示文本注入提示词上下文,供 AI 与用户参考。该文本是同步纯文本拼接,不含模板变量;没有疑似卡住会话时不注入。
插件还提供 turn_watchdog_status 查询工具。参数 refresh 默认 true,表示立即重扫。
运行边界¶
- 只读:不改写会话事件、不打断回合、不重启服务。
- 零依赖、无自定义会话事件、无 HTTP 路由。
安装与启用¶
插件会以当前 dsh 进程权限运行,安装前应检查源码与许可证。下面命令来自已核实资料,使用本地 link 路径:
dsh plugin --profile web add link:/path/to/dsh-turn-watchdog
# 重启 dsh web
把 link:/path/to/dsh-turn-watchdog 替换为本地实际路径。已核实资料未列出其他安装方式。
典型用法¶
启用后,可以用 turn_watchdog_status 查询,或者直接询问“哪些会话卡住了”。返回结果包含 thresholdMinutes 和 stuck 列表。
示例:
{ "thresholdMinutes": 10,
"stuck": [ { "sessionId": "…", "cwd": "E:\\surdet", "lastEventType": "step/start", "idleMinutes": 12 } ] }
示例中 thresholdMinutes 为 10,stuck 列表项包含 sessionId、cwd、lastEventType、idleMinutes。这里 lastEventType 为 step/start,idleMinutes 为 12,符合“最后事件不是 turn/end 且空闲超过阈值”的报告条件。
适用场景与注意¶
适合用于需要观察 live 会话是否停滞的 DSH 使用场景,帮助发现“会话没有明确结束、但长时间没有 turn/end”的状态。它不是故障恢复工具:不会取消回合、不会重启服务,也不会改写会话事件。
使用注意:
1、合法长回合可能被列入,需结合 lastEventType 判断。
2、thresholdMinutes 默认 10,需要按实际回合时长配置。
3、插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
结尾¶
dsh-turn-watchdog 提供的是一个轻量、只读的 live 会话观测点:定期扫描、警示疑似卡住会话、提供状态查询。
GitHub 地址:https://github.com/Equinox7379/dsh-turn-watchdog
社区目录页地址未在已核实资料中明确出现,本文不列出不确定的 URL。