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
羽毛球分组比赛记分
小程序二维码

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

小夜