前言¶
在 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 后刷新页面即可。
典型用法¶
- 安装并重启 DSH 后,在对话中让模型按需调用
clock_elapsed查看本轮已用时间。 - 对预期会跑较久的任务执行分段提醒,例如:
/set-time 30s 5m 1m
- 人侧想周期性看到已运行时长而不打断模型上下文时:
/clock 2m
- 在设置页按需改模板文案;长任务前确认
/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