前言¶
在 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