dsh-turn-watchdog:报告 DSH live 会话中的疑似卡住回合

前言

DSH 的插件机制允许把不同运行能力拆到独立插件中。dsh-turn-watchdog 处理其中一个具体场景:live 会话在回合中途长时间没有产生 turn/end,用户可能处于空等状态。这个插件不修复会话,也不中断回合,而是做一件相对窄的事:定期扫描 live 会话,报告长时间未产生 turn/end 的疑似卡住会话。

这是什么

dsh-turn-watchdog 是 DeepSeek Harness(DSH)插件,维护者为 Equinox7379,许可证为 MIT。它面向 DSH 的 live 会话,提供只读的卡住观测:发现最后事件不是正常结束、且空闲超过阈值的会话,并给出提示词警示和状态查询入口。

核心功能

扫描与判定

插件定期扫描 live 会话。判定一个会话为“疑似卡住”的条件是:

1、最后事件不是 turn/endsession/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 查询,或者直接询问“哪些会话卡住了”。返回结果包含 thresholdMinutesstuck 列表。

示例:

{ "thresholdMinutes": 10,
  "stuck": [ { "sessionId": "…", "cwd": "E:\\surdet", "lastEventType": "step/start", "idleMinutes": 12 } ] }

示例中 thresholdMinutes10stuck 列表项包含 sessionIdcwdlastEventTypeidleMinutes。这里 lastEventTypestep/startidleMinutes12,符合“最后事件不是 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye