dsh-time-watchdog:给 DSH 加一轮对话计时与收尾提醒

前言

在 DeepSeek Harness(DSH)里跑长任务时,模型往往会连续多步调用工具,人侧只能盯着界面右上角的「深度求索中,用时 …」或凭感觉判断该不该打断。若希望模型自己知道「这轮已经跑了多久」,并在接近预期工时前收到可配置的收尾提示,单靠客户端计时投影不够:宿主侧没有等价的 timeline,也不适合继续调用已标为 deprecated 的 session.eventAt()。

下面介绍社区插件 dsh-time-watchdog(维护者 aawef,分类:工作流)。它在 turn/start 起记时刻、在 turn/end 冻结读数,与 Web 客户端右上角计时口径一致;同时提供工具 clock_elapsed、命令 /set-time 与 /clock,以及输入框上方的运行卡片和设置页模板编辑。配置落在本地 JSON,无网络、无遥测。

这是什么

dsh-time-watchdog 是 DSH 的 turn timer:折叠 session 投影回答「本轮从 turn/start 起已运行多久」,把结果暴露为 clock_elapsed 工具;通过 agent/pre-step 按 /set-time 的三段式排程注入收尾提示词;在 composer 上方用卡片显示已运行时长与「提示词已发送」。英文简介概括为:elapsed tool、/set-time wrap-up prompt injection、run-time cards。

  • 目录页:https://www.skillhub.cn/plugins/aawef/dsh-time-watchdog
  • 源码与文档:https://github.com/aawef/dsh-time-watchdog
  • npm 包名:dsh-time-watchdog(当前 package.json 版本 1.0.0,MIT)

核心功能

计时与读数

能力 说明
计时 折叠单元 watchdog 在 turn/start 记下时刻,在 turn/end 结算总耗时
读数 工具 clock_elapsed 返回本轮已用时间(进行中累计,结束后冻结)
口径 起点 = turn/start;仅 open 轮继续计时;向下取整到秒

clock_elapsed 无参数,返回 JSON(含 turn、running、elapsedMs、elapsedSeconds、elapsedText 等),模型正文会附带人类可读的一句总结。

收尾提醒:/set-time

/set-time <t1> <t2> <t3>
  • t1:到 t2 之前,每 t1 提醒一次
  • t2:预期可工作时间(截止点)
  • t3:超过 t2 之后每 t3 提醒一次;t3 <= 0 关闭这一档

时长可写裸秒数 30,或 30s、2m、1h、1h20m30s(单位大小写不敏感,顺序 h→m→s)。示例:/set-time 30s 5m 1m 表示预期 5 分钟、期间每 30 秒提醒、超时后每 60 秒再催。参数上限 86400 秒(24 小时)。

只对当前一轮生效:无进行中对话时挂起到下一轮 turn/start;有进行中对话则从指令发出时刻起算并注入「计时已生效」提示;该轮 turn/end 后计划清理,需重新执行命令。提醒只在 agent/pre-step 触发,长工具执行期间不会到点;到点仅注入提示词,不会强制结束本轮。

注入的消息 source.kind 为 dsh-time-watchdog,客户端归为 context、不渲染成聊天气泡,模型在同一步请求里能读到。

运行卡片与 /clock

命令 效果
/clock 30 每 30 秒在输入框上方弹卡显示本轮已运行时长
/clock 2m 每 2 分钟弹一次
/clock off 或 /clock 0 关闭周期卡片
/clock 回显当前设置

允许 1–3600 秒。另有「提示词已发送」卡片:宿主每注入一条提醒时弹出(可在设置页打开 Toast 与详细正文)。两张卡片停留 5 秒后消失;仅本轮进行中有效。

设置页与配置

设置 →「计时与收尾提醒」(section id dsh-time-watchdog):可编辑 4 种提示词模板(开始 / 未超时周期 / 首次超时 / 超时后周期),支持占位符 &t1&~&t4&;可开关 Toast 与「已发送」卡片是否带正文。

配置文件路径:

~/.dsh/storages/dsh-time-watchdog.json

字段包括 intervalSeconds、toastOnPrompt、toastDetail、templates 等。webServer 缺席时 HTTP 端点不注册,其余功能照常。

安装与启用

先做 profile 安装,再重启 DSH 桌面进程(宿主 lib/index.js 为 ESM,仅刷新页面不够)。

dsh plugin --profile <你的 profile> add dsh-time-watchdog

若需跟踪仓库 main 最新代码:

dsh plugin --profile <你的 profile> add git+https://github.com/aawef/dsh-time-watchdog.git

环境要求(package.json):Node >=20,DSH >=0.2.0-rc.1 <1.0.0,peer @deepseek-ai/cordis >=4.0.2 <5。

改 lib/index.js 或 cordis.patch.yml 后需重启桌面进程;改 lib/client.js 后刷新页面即可。

典型用法

  1. 安装并重启 DSH 后,在对话中让模型按需调用 clock_elapsed 查看本轮已用时间。
  2. 对预期会跑较久的任务执行分段提醒,例如:
/set-time 30s 5m 1m
  1. 人侧想周期性看到已运行时长而不打断模型上下文时:
/clock 2m
  1. 在设置页按需改模板文案;长任务前确认 /set-time 规则「一轮一计划」,下一轮需重新下达。

适用场景与注意

适合:长工具链对话、需要与 UI 右上角一致的 turn 计时、希望模型在 deadline 前收到隐藏收尾提示、需要 composer 上方轻量进度反馈的 DSH 用户。

注意:

  • 插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 源码与 MIT 许可证。
  • SkillHub 目录页(https://www.skillhub.cn/plugins/aawef/dsh-time-watchdog)为社区插件索引,与 DeepSeek / 幻方无官方从属关系。
  • /set-time 的周期提醒受 pre-step 约束,工具执行期间不会注入;超时后提醒会进入模型上下文,一轮内条数有上限,属设计取舍。
  • ~/.dsh/profiles/desktop/node_modules/dsh-time-watchdog 为 pnpm 副本,改源码目录后需重新 pnpm install 或拷贝才会进宿主。

结尾

dsh-time-watchdog 把「本轮跑了多久」做成 O(1) 的 session 投影,并把它接到工具、隐藏提示词与 UI 卡片三条线上,方便在工作流里控时与收尾。更多细节见仓库 README 与测试说明(插件目录内 node --test "tests/*.test.mjs" "tests/*.mjs")。

  • 目录:https://www.skillhub.cn/plugins/aawef/dsh-time-watchdog
  • GitHub:https://github.com/aawef/dsh-time-watchdog
羽毛球分组比赛记分
小程序二维码

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

Xiaoye