前言¶
在 DeepSeek Harness(DSH)里让模型跑编译、大文件下载或数据迁移时,命令往往被丢到后台或长时间挂着 shell。对调用方来说,输出和退出码看起来仍像普通终端;实际上你很难区分「卡死了」「还在慢跑」还是「快结束了」,出问题时也缺少可操作的干预手段。tmon 用透明代理把每条输出打上时间戳,并提供网页工作台做监控与取消;dsh-tmon 是 wr0ld 维护的客户端类插件,把这套能力接到 Harness 会话里,并给模型补上 tmon_tasks 工具与配套提示,让「有没有卡住」从猜测变成可查事实。
这是什么¶
dsh-tmon(GitHub:wr0ld/dsh-tmon,社区目录:skillhub 插件页)不重新实现 tmon,而是:
- 在会话顶部增加「命令终端」标签,内嵌 tmon 官方网页(iframe);
- 注册
tmon技能(bundledskill.md)与系统提示段tool:tmon; - 提供
tmon_tasks工具,供模型查询任务状态、静默时长、进度与输出。
插件本身无独立配置项;依赖你本机已安装的 tmon CLI(npm install -g @qiu745/tmon,README 要求 Node 22.18+,package.json 中 engines 为 ^22.19.0 || >=24.0.0)。当前 npm 版本为 0.2.2,许可证 MIT。
它解决什么问题¶
tmon 官方对场景的表述是:Agent 执行长任务时状态不可见,无法判断 stuck、crawling 还是即将完成,也缺少干预手段。官方用法是对任意命令套一层代理,行为与直接执行一致,同时记录带时间戳的输出:
tmon "curl -o big.bin https://example.com/big.bin"
dsh-tmon 补链的两端是:
- 人:工作台进 Harness 主面板,不必记端口、不必切窗口。
- 模型:通过
tmon_tasks拿到距上次输出多久、已运行多久、最近 progress/stage 等事实,而不是用sleep轮询或超时硬判。
核心功能¶
命令终端面板¶
- 注册
conversation.view标签(idtmon,order 40),内容挂在主面板键tmon,为 tmon 网页 iframe。 - 顶部显示标题与「tmon 运行于 127.0.0.1:<端口>」;未响应时变红提示「tmon 没有响应」。
- 「重新加载」重挂 iframe;「在浏览器打开」用系统浏览器打开同一地址。
- 客户端每 10 秒请求宿主
GET /tmon/status(端口来自~/.tmon/port,健康检查走/api/health),拿到端口后加载http://127.0.0.1:<端口>/。
首次打开面板时,插件会在约 300ms 内尝试拉起 tmon serve(直接 spawn node,不经过 Windows 上会弹窗的 tmon.cmd 壳);已在运行的服务会按端口文件复用。
模型侧:提示段、技能与工具¶
| 组件 | 作用 |
|---|---|
系统提示段 tool:tmon(order 1650) |
策略:长/不确定输出时用 tmon、禁止用 sleep 轮询盯命令、整条命令一个字符串、卡住查 tmon_tasks、找不到 tmon 时提示用户安装 |
技能 tmon |
按需:后台运行、tmon progress / tmon stage、CLI 兜底与实测坑 |
tmon_tasks |
列表/单任务/输出;返回状态、verdict、时长、静默、progress、行数等 |
提示段刻意用「有没有可能超过十秒 / 输出量说不准」而非「预计超过三十秒」,避免模型先乐观估计时长而跳过 tmon。
tmon_tasks 只报事实不做最终「卡死」结论;工具说明中注明 status: error 且无 exitCode 可能是服务重启误标,状态应以 HTTP API 为准而非直接读 ~/.tmon/tasks/<id>/meta.json。
安装与启用¶
1、安装 tmon 本体¶
插件不带 CLI,需要全局安装:
npm install -g @qiu745/tmon
2、安装 DSH 插件¶
Web 配置示例:
dsh plugin --profile web add dsh-tmon
桌面客户端将 --profile web 换成 desktop。从本地源码目录安装时路径必须以 ./ 开头:
dsh plugin --profile desktop add ./plugins/dsh-tmon
3、重开 Harness¶
装完后重启 Harness,会话顶部 View 行会出现「命令终端」,点开即为面板。
卸载插件¶
dsh plugin --profile desktop remove dsh-tmon
仅移除插件;若要一并卸载 tmon,需按 tmon 官方顺序先 tmon kill-server,再 npm rm -g @qiu745/tmon,可选 rm -rf ~/.tmon。
典型用法¶
人:在会话里看任务¶
打开「命令终端」标签,在 tmon 网页中查看任务列表、实时输出、发送输入、停止任务、复制任务 id。服务未启动时面板显示连不上及启动说明,不作为 Harness 故障。
模型:长命令与查状态¶
系统提示会引导模型对可能长时间或无规律输出的命令使用 tmon 包裹;卡住或需要核对进度时调用 tmon_tasks,而不是自行 sleep 轮询。
底层仍是你 PATH 上的 tmon 命令;~/.tmon(端口、pid、token、tasks)在首次真正跑命令时创建。
适用场景与注意¶
适合:经常在 Harness 里跑编译、下载、迁移等长命令,且希望人和模型都能看见进度、区分慢与卡的用户。
边界与权限:
- 插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的环境策略。
- 插件不预检 tmon 是否已装;未安装时模型首次调用会得到
command not found,提示段要求告知用户安装上述 npm 包,不会悄悄改跑裸命令。 - 面板能力等于 tmon 网页;内嵌依赖 iframe 加载本机
127.0.0.1,若 CSP 或 tmon 拒绝嵌入可能空白,可用「在浏览器打开」。 - tmon 对本机浏览器访问的安全模型与官方一致,插件未额外加认证;能使用本机浏览器的人理论上可见任务输出。
- Linux 上 tmon 依赖
node-pty可能需本地编译工具链;与插件无关,属 tmon 依赖行为。
DeepSeek Harness 生态是「一切皆插件」;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-tmon 把 cy745/tmon 的长命令监控工作台嵌进会话,并用 tmon_tasks 与提示段让模型用事实代替猜超时。维护者 wr0ld,分类为客户端插件。
- 目录页:https://www.skillhub.cn/plugins/wr0ld/dsh-tmon
- 源码与完整说明:https://github.com/wr0ld/dsh-tmon