前言¶
在 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
面板讀取這些任務狀態來展示進度。
安裝與啓用¶
這個插件有兩種加載方式:
- 動態插件方式:臨時使用,重啓即失;
- 固化插件方式:推薦重啓自動加載,需要複製插件包到 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