前言¶
在 DeepSeek Harness(DSH)裏跑智能體任務時,pip 安裝大包、從 GitHub 拉大文件是常見操作。國內網絡下這些下載容易卡頓或超時。DSH 原生的「停止」和任務暫停,在實現上往往要等當前卡住的工具調用返回之後纔會生效——任務既下不完,也停不掉。社區在 GitHub Discussions #3400 裏討論過 session.cancel 與工具進程不同步的問題;dsh-task-control 由維護者 ningmengxr 發佈,分類爲聯網工具,在 DSH Web 側補上急停、進度感知檢測和運行中追加條件等能力。本文介紹其定位、功能與安裝方式,事實均來自項目 README 與 package.json。
這是什麼¶
dsh-task-control 是 DeepSeek Harness 插件:針對 pip / GitHub 等下載卡住時的一鍵急停,配合下載進度檢測、卡死識別和隱形追加條件。倉庫地址:https://github.com/ningmengxr/dsh-task-control;社區目錄頁:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control。當前 package.json 中版本爲 0.4.5,許可證 MIT,Node 要求 >=20。DSH 兼容範圍在資料中寫爲 >=0.1.0-rc.8 <0.2.0,profile 爲 web。
核心功能¶
界面側提供三個主操作(默認文案可在設置裏改):
| 操作 | 作用 |
|---|---|
| 急停(默認文案「急停」) | 強制終止當前任務:按命令特徵結束卡住的下載/安裝進程,並停止會話;帶防誤觸確認(需勾選「瞭解丟失進度」才能確認) |
| 檢測(默認文案「拍一下deepseek」) | 檢查任務狀態:出錯 / 疑似卡死 / 運行中 / 健康 |
| 追加條件(默認文案「追加條件」) | 運行中追加補充條件:先中止 → 彈窗輸入 → 帶條件隱形重跑 |
下面分點說明 README 中強調的行爲。
下載卡死急停¶
當 pip install torch 等大包、GitHub 大文件或 curl 下載卡住時,原生停止按鈕可能排在卡住工具返回值之後而無反應。點「急停」後,宿主按命令特徵查找並結束相關進程,任務立即停止,便於換源或重試。急停前會警告未完成下載會丟失,需勾選確認後纔可執行。
下載中的檢測邏輯¶
檢測到正在執行下載/安裝類命令時,會先查實際狀態,而不是一律報「疑似卡死」:
- curl 類(有輸出文件):顯示真實進度百分比,例如正在下載某 zip 並給出進度。
- pip 類(無輸出文件):提示正在下載、無法計算進度,不展示誤導性假進度。
- 下載進程已退出:提示下載異常中斷,並可在檢測彈窗內強制終止。
卡死識別¶
非下載類工具調用超過 10 分鐘未返回時,檢測會提示「疑似卡死:工具 X 已運行 N 分 N 秒」;彈窗內可直接強制終止(殺進程),README 說明 session.cancel 對此類情況能力有限。
隱形追加條件¶
「追加條件」的恢復/條件消息經宿主通道以插件來源消息注入會話:模型照常執行,聊天界面只顯示一條低調的上下文提示行,不出現「繼續」或「補充條件…」類用戶氣泡。
宿主路由¶
宿主半掛載三條路由(loopback Host 校驗):/dsh-task-control/resume、/dsh-task-control/kill、/dsh-task-control/download-status;瀏覽器端通過同源 fetch 調用。客戶端 bundle 按 window.__ModuleLoader__ 契約加載。
安裝與啓用¶
資料中的安裝不是 dsh plugin add github:... 一類命令,而是把插件包放進 profile 的 node_modules,並在 cordis patch 裏註冊。步驟如下。
-
將插件包放到 DSH profile 的 node_modules(
lib/已含構建產物lib/index.js、lib/client.js):
- 拷貝到~/.dsh/profiles/node_modules/dsh-task-control/,或
- 對本目錄建立 junction 鏈接(本地開發常用)。 -
在
~/.dsh/profiles/web/cordis.patch.yml中插入:
- insert:
- id: task-control
name: 'dsh-task-control'
- 重啓 DSH web,硬刷新頁面(Ctrl+Shift+R)。
從源碼重新構建時使用:
node build.mjs
生成 lib/index.js(宿主半)與 lib/client.js(客戶端 bundle)。
典型用法¶
安裝並刷新 Web 界面後,任務控制相關按鈕會出現在 DSH Web 的插槽中(具體位置以當前 DSH 客戶端 UI 爲準)。
- 下載卡住:點「急停」→ 閱讀警告並勾選確認 → 確認終止;再換源或重新發起安裝。
- 不確定是否在跑:點「檢測」→ 根據彈窗區分正常、出錯、下載中(含進度或 pip 等待提示)、疑似卡死;必要時在彈窗內強制終止。
- 任務跑了一半要改約束:點「追加條件」→ 輸入補充說明 → 按插件設計的隱形重跑流程繼續,界面不堆用戶氣泡。
自定義按鈕與檢測輸出文案:設置 → 通用設置 → 任務控制,共 6 項(急停/檢測/追加條件按鈕文案,以及檢測·無異常、出錯 {error}、運行中三類輸出模板)。文案設置存瀏覽器 localStorage。
適用場景與注意¶
適合誰:經常在 DSH Web 裏用智能體執行 pip、GitHub、curl 等聯網安裝/下載,且遇到過「停不掉」或難以判斷是真卡死還是在下大包的開發者。
能力邊界(README / SECURITY 摘要):
- 本插件屬於高能力插件(命令執行、文件讀寫、網絡請求),安裝前請閱讀倉庫 SECURITY.md 與源碼、許可證。
- 急停/強制終止:Windows 用
taskkill,POSIX 用kill,僅針對運行中且命令行匹配的調用;匹配不到時僅發送會話取消,不盲目殺進程。 - 文件讀寫:只讀下載輸出文件大小/時間以算進度;寫入限於插件自身目錄與瀏覽器本地設置。
- 網絡:宿主路由僅 loopback;自動更新可查詢 npm registry;資料寫明無遙測、無數據上報,不使用憑據。
- 急停會終止當前任務,未完成下載需重新開始。
- 依賴宿主
webServer/agents;不可用時追加條件會降級爲「可見消息」恢復,README 稱不影響 DSH 本體。 - 自動更新會替換插件自身
lib/(下次啓動生效);junction/symlink 開發安裝會跳過自動更新。
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。本文不代替官方文檔,使用前請以倉庫最新 README 爲準。
相關資源¶
- 問題緣起討論:task stuck in download/install cannot be stopped
- 社區手冊專題:Stop a DeepSeek Harness tool that will not cancel
插件目錄頁:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control
GitHub 倉庫:https://github.com/ningmengxr/dsh-task-control