dsh-download-progress:爲 DeepSeek Harness 提供常駐下載進度面板

前言

在 DeepSeek Harness(DSH)裏做下載任務時,命令行日誌往往只能看到當前進度,多個下載任務同時跑時不容易區分。尤其是 GitHub 大文件、鏡像加速、多線程下載這類場景,進度、速度和剩餘時間最好能常駐顯示。

dsh-download-progress 是 DSH 的一個下載管理器插件,在右下角提供常駐懸浮面板,把每個下載任務的文件名、百分比、速度、剩餘時間顯示出來。

這是什麼

dsh-download-progress 由 azhe411 維護,許可證爲 MIT。

它主要解決的是 DSH 下載任務缺少常駐進度面板的問題:

  • 右下角常駐顯示下載面板;
  • 每個任務顯示文件名、百分比、速度、剩餘時間;
  • 支持多任務併發,每個任務有獨立進度條;
  • 保留已完成和失敗任務的歷史記錄,最多 20 條;
  • 支持在文件資源管理器中定位已完成或失敗文件;
  • 面板支持拖動和縮放;
  • 下載工具支持斷點續傳、HTTP 重定向跟隨、GitHub 鏡像加速;
  • 可選使用 aria2 多線程下載,使用 16 連接併發;
  • 下載任務狀態寫入 ~/.dsh/downloads/tasks/<任務>.json;
  • 支持動態插件加載和固化插件加載兩種方式。

DSH 的插件生態強調“一切皆插件”。dsh-download-progress 屬於社區目錄中的下載管理插件,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

常駐下載面板

面板常駐在右下角,不會因沒有任務就消失。面板會顯示「待命」狀態,並在下載任務開始後展示具體進度。

多任務併發

每個下載任務單獨顯示一行:

  • 文件名;
  • 百分比;
  • 速度;
  • 剩餘時間;
  • 獨立進度條。

歷史記錄

已完成和失敗任務會保留在列表中,最多保留 20 條。列表中可以通過「打開」按鈕在文件資源管理器裏定位對應文件。

面板操作

  • 任務列表支持收起 / 展開;
  • 面板可以通過標題欄拖動;
  • 面板可以通過右下角手柄縮放。

下載能力

下載工具支持:

  • 斷點續傳;
  • HTTP 重定向跟隨;
  • GitHub 鏡像加速;
  • 可選 aria2 多線程下載,使用 16 連接併發。

下載任務狀態會寫入:

~/.dsh/downloads/tasks/<任務>.json

面板讀取這些任務狀態來展示進度。

安裝與啓用

這個插件有兩種加載方式:

  1. 動態插件方式:臨時使用,重啓即失;
  2. 固化插件方式:推薦重啓自動加載,需要複製插件包到 profile 的 @local 目錄、修改 cordis.patch.yml,並重啓 dsh web。

如果你只是臨時驗證,可以用動態插件方式。如果你希望重啓後仍然自動加載,建議使用固化插件方式。

固化插件安裝命令

以下是固化插件包的複製命令:

cp -r @local/dl-manager ~/.dsh/profiles/web/node_modules/@local/dl-manager

複製完成後,還需要在 cordis.patch.yml 中加入該插件的加載配置,並重啓 dsh web。

固化版插件推薦用於長期保留下載面板。動態插件方式適合臨時調試,重啓後會丟失。

典型用法

以下命令示例來自插件說明。

普通下載

node ~/.dsh/scripts/download.cjs <URL> <輸出路徑>

下載開始後,右下角面板會顯示該任務的進度。

使用 GitHub 鏡像加速

node ~/.dsh/scripts/download.cjs <URL> <輸出路徑> --mirror=https://gh-proxy.com/

適合國內直連 GitHub 大文件容易超時的場景。README 中提到推薦鏡像可能偶發不穩定,遇到失敗時可以換鏡像或重試。

使用 aria2 多線程下載

node ~/.dsh/scripts/aria2-dl.cjs <URL> <輸出路徑> --mirror=https://gh-proxy.com/

aria2 模式使用 16 連接併發,適合較大文件。進度同樣寫入任務狀態目錄,並驅動右下角面板顯示。

適用場景與注意

適合誰使用

如果你經常需要在 DSH web 會話中下載文件,尤其是 GitHub 大文件、多任務下載、鏡像加速下載,這個插件比較適合。

安裝前注意

插件會以當前 dsh 進程權限運行。安裝前建議先檢查源碼,並確認許可證。該插件許可證爲 MIT。

路徑問題

如果 fs.resolve('~/.dsh/...') 沒有正確展開 ~,進度條可能一直顯示「待命」。這時需要把相關路徑改成絕對路徑,例如把 ~/.dsh/downloads/tasks 改成當前用戶目錄下的實際絕對路徑。

動態插件注意事項

DSH 動態客戶端沒有瀏覽器定時器全局。動態插件裏需要定時刷新時,應使用 timer 服務的 ctx.interval,並且插件需要聲明:

"inject": ["timer"]

固化插件注意事項

固化版插件不能直接使用動態插件裏的 harness.handle。固化版 host 端應改用 ctx.webServer.register 註冊 HTTP 端點,client 端使用 fetch 輪詢。

aria2 RPC 注意事項

  • aria2 RPC 請求必須帶 Content-Length,否則 aria2 RPC 服務器可能報 Parse error;
  • aria2 RPC 模式下載完成後不會自動退出,需要輪詢 tellStopped 收尾並寫入 done 狀態,再執行 aria2.shutdown。

其他說明

  • 限速功能已移除;
  • README 推薦的鏡像可能偶發不穩定;
  • 動態插件方式標註爲臨時,重啓即失;
  • 固化插件方式推薦用於重啓自動加載。

結尾

dsh-download-progress 的價值在於把 DSH 下載任務從“命令行等待”變成“常駐面板觀察”,尤其適合多任務下載、GitHub 鏡像加速和 aria2 多線程下載場景。

相關鏈接:

  • 插件目錄頁:https://www.skillhub.cn/plugins/azhe411/dsh-download-progress
  • GitHub 倉庫:https://github.com/azhe411/dsh-download-progress
羽毛球分组比赛记分
小程序二维码

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

小夜