dsh-task-control:DSH 下載卡死急停與任務健康檢測

前言

在 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 裏註冊。步驟如下。

  1. 將插件包放到 DSH profile 的 node_modules(lib/ 已含構建產物 lib/index.js、lib/client.js):
    - 拷貝到 ~/.dsh/profiles/node_modules/dsh-task-control/,或
    - 對本目錄建立 junction 鏈接(本地開發常用)。

  2. 在 ~/.dsh/profiles/web/cordis.patch.yml 中插入:

- insert:
    - id: task-control
      name: 'dsh-task-control'
  1. 重啓 DSH web,硬刷新頁面(Ctrl+Shift+R)。

從源碼重新構建時使用:

node build.mjs

生成 lib/index.js(宿主半)與 lib/client.js(客戶端 bundle)。

典型用法

安裝並刷新 Web 界面後,任務控制相關按鈕會出現在 DSH Web 的插槽中(具體位置以當前 DSH 客戶端 UI 爲準)。

  1. 下載卡住:點「急停」→ 閱讀警告並勾選確認 → 確認終止;再換源或重新發起安裝。
  2. 不確定是否在跑:點「檢測」→ 根據彈窗區分正常、出錯、下載中(含進度或 pip 等待提示)、疑似卡死;必要時在彈窗內強制終止。
  3. 任務跑了一半要改約束:點「追加條件」→ 輸入補充說明 → 按插件設計的隱形重跑流程繼續,界面不堆用戶氣泡。

自定義按鈕與檢測輸出文案:設置 → 通用設置 → 任務控制,共 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 爲準。

相關資源

插件目錄頁:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control
GitHub 倉庫:https://github.com/ningmengxr/dsh-task-control

羽毛球分组比赛记分
小程序二维码

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

小夜