dsh-tmon:把 tmon 长命令工作台搬进 DeepSeek Harness

前言

在 DeepSeek Harness(DSH)里让模型跑编译、大文件下载或数据迁移时,命令往往被丢到后台或长时间挂着 shell。对调用方来说,输出和退出码看起来仍像普通终端;实际上你很难区分「卡死了」「还在慢跑」还是「快结束了」,出问题时也缺少可操作的干预手段。tmon 用透明代理把每条输出打上时间戳,并提供网页工作台做监控与取消;dsh-tmon 是 wr0ld 维护的客户端类插件,把这套能力接到 Harness 会话里,并给模型补上 tmon_tasks 工具与配套提示,让「有没有卡住」从猜测变成可查事实。

这是什么

dsh-tmon(GitHub:wr0ld/dsh-tmon,社区目录:skillhub 插件页)不重新实现 tmon,而是:

  • 在会话顶部增加「命令终端」标签,内嵌 tmon 官方网页(iframe);
  • 注册 tmon 技能(bundled skill.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 补链的两端是:

  1. 人:工作台进 Harness 主面板,不必记端口、不必切窗口。
  2. 模型:通过 tmon_tasks 拿到距上次输出多久、已运行多久、最近 progress/stage 等事实,而不是用 sleep 轮询或超时硬判。

核心功能

命令终端面板

  • 注册 conversation.view 标签(id tmon,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
羽毛球分组比赛记分
小程序二维码

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

小夜