前言¶
DeepSeek Harness(DSH)把智能體跑在真實環境裏:模型可以調 bash、起後臺作業、並行幹幾件事。Web 界面裏,對話頁負責提問和看回復,任務看板、軌跡視圖則負責另一套觀察。後臺任務一旦跑起來,輸入框附近往往只剩「模型還在工作」這一層狀態,具體是哪條命令、跑了多久、終端此刻打出了什麼,要切到別的視圖纔看得見。
DSH 的設計口號是「一切皆插件」:模型適配、工具、會話、沙箱、調度和 UI 都可以換成插件,不必改 Harness 源碼。社區目錄 DeepSeek Harness 插件庫 是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,用來檢索、安裝社區插件。dsh-task-status 就掛在這個目錄的「界面增強」分類下:它不給模型增加新工具,只在對話頁輸入區上方加一條後臺任務狀態條,並帶即時輸出 tail。
本文按插件目錄頁、GitHub 倉庫 README、package.json 與源碼交叉覈對後整理:它是什麼、裝在哪、怎麼用,以及安裝前需要知道的邊界。
這是什麼¶
dsh-task-status 是一款面向 DSH Web 界面的界面增強插件,npm 包名爲 @vlln/dsh-task-status,當前版本 0.3.1,由 vlln(LICENSE 署名 Sam Gao)維護,許可證 MIT。GitHub 倉庫 vlln/dsh-task-status 在 2026-08-18 查詢時爲 9 顆星。目錄頁收錄在「界面增強」分類,並標明它是 bundle 形態的插件:package.json 裏聲明瞭 dsh.bundle,客戶端走 dshClient 通道,平臺字段爲 web。
它解決的問題很具體:智能體用後臺方式跑任務時,開發者仍停留在對話頁,也能看到:
- 當前會話有幾條後臺任務在跑
- 每條任務的狀態、耗時和詳情
- 展開後的終端輸出 tail(類似
tail -f,自動刷新)
目錄頁和 README 把它寫成「官方 bundle 插件」。這裏的「官方」指的是 DSH 規定的 bundle 打包方式(dsh.bundle + 客戶端注入),不是 DeepSeek 官方發行、也不是 Harness 內置組件。README 自己的定位是「DSH 生態示例插件」。
核心功能¶
插件分成兩半:Node 端提供只讀數據路由,瀏覽器端把狀態條掛進對話輸入區的官方槽位 conversation.input.dock(與 queue、todo 等 dock 組件同一條帶)。cordis.patch.yml 只插入自身這一行,不改其他插件的配置。
對話頁狀態條¶
瀏覽器端源碼 src/client/task-status.tsx 的行爲如下。
- 位置:對話頁輸入框上方的 dock 卡片,佈局變量對齊官方 composer(側邊留白、卡片最大寬度等)。
- 計數:多條任務時顯示「⚙ N 個後臺任務運行中」;只有一條時直接畫出該任務行,不再套一層計數頭。
- 展開詳情:點擊任務行展開,可見狀態、起始時間、可選詳情,以及輸出 tail。
- 只顯示活躍任務:
running/stopping纔會出現在條上;completed/killed/failed到達後,該條從界面消失。任務全部結束後,狀態條自動隱藏。 - 僅對話頁:用頁面上是否存在
[data-chat-flow=""]判斷當前是不是 Chat 視圖。切到 trajectory、taskboard 等視圖時自動隱藏,切回對話頁再顯示。 - 按會話過濾:列表按
ownerSession對齊當前對話的sessionId,不會把別的會話的後臺任務畫到這一頁。
狀態文案帶中英文案:運行中、停止中、已完成、已終止、失敗。視覺點使用官方 StateDot 組件。
即時輸出 tail¶
展開某一條任務後,客戶端每 1 秒輪詢輸出路由,拿到全文後整段替換渲染,效果接近終端裏的 tail -f。輸出區高度上限約 10 行(160px),超出出現滾動條,並儘量保住尾部,方便回看最近日誌。
對應的 HTTP 路由由 Node 端 src/index.mjs 註冊:
| 路徑 | 作用 |
|---|---|
/plugins/dsh-task-status/tasks |
只讀任務列表(owned + unowned 並集,按 id 去重) |
/plugins/dsh-task-status/output |
指定任務的輸出 tail(full: true 表示累積全文;未知 id 返回 404) |
列表接口不消耗任務輸出遊標。輸出接口走宿主的 jobs.read:這是消耗式增量讀取,和官方 task_output / job 工具共用每條任務上的遊標。插件因此給 ctx.jobs.read 打了運行時鏡像包裝——官方側優先從緩衝裏讀「尚未被官方消費」的增量,插件自己則走底層 rawRead 並累積全文。README 裏仍寫 ctx.tasks.read,與當前源碼中的 ctx.jobs 命名不一致;以倉庫源碼爲準。
輸出緩衝上限 64KB,超限丟掉最舊的內容,只保尾。這是實現約束,不是可配置項。
安裝與啓用¶
package.json 聲明:Node.js >= 22.19.0,DSH >= 0.1.0-rc.5,客戶端平臺爲 web。請在已能打開 DSH Web UI 的環境裏安裝。
目錄頁給出的安裝命令是:
dsh plugin add github:vlln/dsh-task-status
倉庫 README 推薦顯式指定 web profile,並且把分支釘在 main(git 源已包含構建產物 lib/,安裝時不觸發本地構建):
dsh plugin --profile web add "github:vlln/dsh-task-status#main"
本地已有源碼時,也可以 git clone 之後在倉庫目錄執行:
dsh plugin --profile web add .
需要可復現安裝時,按目錄頁說明把 GitHub 源釘到 commit。當前 main 最新提交爲 b4fc6625362498bc230953df5e3a0e37b2104def(2026-08-17,版本 0.3.1),寫法如下:
dsh plugin add github:vlln/dsh-task-status#b4fc6625362498bc230953df5e3a0e37b2104def
裝完後 重啓 web 纔會生效。之後可在設置頁的「插件」面板停用或重新啓用。
目錄頁和 README 都提醒:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應閱讀源代碼倉庫和許可證。
典型用法¶
不需要額外配置文件。按 README,讓模型側用後臺方式跑一條任務即可,例如 bash 工具帶 run_in_background: true。對話頁輸入框上方會出現類似:
⚙ 1 個後臺任務運行中
● bash-1 for i in $(seq 1 20)… 21:30:15 起 運行中
操作順序:
- 在對話裏讓智能體後臺執行一條會持續輸出的命令。
- 狀態條出現後,點擊該任務行展開。
- 輸出區按約 1 秒間隔刷新;超過 10 行時用滾動條看尾部。
- 任務結束後狀態條消失。
多條後臺任務同時運行時,先點計數頭展開列表,再點其中一行看 tail。
適用場景與注意事項¶
適合這幾類使用方式:
- 日常在 DSH Web 對話頁裏寫代碼、跑測試、裝依賴,希望後臺
bash的進度留在輸入框附近,而不是切到任務看板。 - 需要邊看模型回覆、邊掃一眼命令輸出是否卡住或報錯。
- 想參考「官方 dock 槽 + bundle + 自建只讀路由」寫自己的界面插件。源碼註釋也把它標成示例。
使用前注意這些邊界:
- 只覆蓋 Web 對話頁。
dsh.client.platform爲web,headless / TUI 用不上這條狀態條;trajectory、taskboard 上也會隱藏。 - 不給模型增加能力。它不註冊新的 model-facing 工具,只觀察已有後臺任務。
- 運行時包裝了
jobs.read。插件卸載時會恢復原方法,但裝上期間官方讀取與插件 tail 共用同一套增量遊標。源碼寫明:展開任務並主動自讀時,官方「首次消耗式 read 交付終態通知」可能被提前觸發,窗口有限、作者視爲可接受。若你同時依賴官方task_output工具的精確時序,先讀src/index.mjs頂部的註釋再決定是否安裝。 - DSH 仍處於 developer preview。官方文檔寫明核心插件和 API 還會變。本插件註釋裏出現過「0809 官方 API」這類針對當時快照的約束,升級 Harness 後應再覈對倉庫是否跟進。
- 權限與許可證。插件以當前 dsh 進程權限運行,安裝可能執行代碼。許可證爲 MIT,源碼公開,安裝前自行審查 GitHub 倉庫。
小結¶
後臺任務在 DSH 裏並不少見,但對話頁默認不怎麼展示它們的進度和輸出。dsh-task-status 用官方 conversation.input.dock 槽加一條狀態條,再配上每秒刷新的輸出 tail,讓人不用離開當前對話也能看到後臺作業在幹什麼。它是 vlln 維護的社區 MIT 插件,形態是 DSH 的 bundle + 客戶端通道,不是 DeepSeek 官方應用商店裏的內置功能。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-task-status/
GitHub:https://github.com/vlln/dsh-task-status