前言¶
在 DeepSeek Harness(DSH)裏,智能體經常需要拉取大體積的 HTTP(S) 資源——模型權重、數據集歸檔、遠程產物。單靠 curl 或一次性腳本,回合結束任務就停;多線程、斷點、代理和校驗往往要另外拼一層。dsh-downloader 由社區維護者 Morethaninformation 發佈,歸類爲「聯網工具」,把多連接分塊下載、斷點續傳、代理與 SHA-256 校驗封裝成三個 agent 工具,任務在宿主進程後臺繼續跑,回合結束後仍可用 dl_status 查進度。
下面介紹插件定位、能力與安裝用法;事實以 GitHub 倉庫 README 爲準。DSH 插件目錄由 SkillHub 等站點獨立維護,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-downloader(包名 dsh-downloader,當前 README 對應版本 0.1.0)是純 Node 內置模塊實現(fs / net / tls / http / https / crypto),零 npm 依賴,不要求 Python。實現多連接 HTTP(S) 下載,並通過 dl_start、dl_status、dl_cancel 暴露給智能體;作業在 DSH 宿主進程內後臺執行,回合結束後下載仍可進行。
運行環境:node >= 22;插件元數據要求 DSH >= 0.2.2-rc.1。許可證 MIT。
核心功能¶
三個工具¶
| 工具 | 作用 | 關鍵參數 |
|---|---|---|
dl_start |
開始或續傳下載,立即返回 jobId |
url、outFile(必填);totalBytes、sha256、threads(默認 8,上限 32)、chunkMb(默認 16)、proxy、headers |
dl_status |
查進度:傳 jobId 查單個,不傳則列出全部 |
jobId |
dl_cancel |
停止任務 | jobId;deletePartial(默認 false,保留半成品與續傳狀態) |
dl_status 與 dl_cancel 統一返回 { count, jobs: [...] }。每個 job 含 state(pending / running / done / failed / cancelled)、bytesDone、percent、speedBps、etaSeconds、doneChunks / totalChunks、error 等字段。
行爲要點¶
- 續傳:進度寫在
<outFile>.dlstate.json(URL、總長、塊大小、已完成塊位圖)。同一 URL、同一塊大小再次調用dl_start會跳過已完成塊;成功後自動刪除狀態文件。 - 並行:默認 8 條連接、16 MiB 一塊;單塊失敗最多重試 6 次(指數退避)。
- 代理:例如
proxy: "http://127.0.0.1:3128";對 HTTPS 走 HTTPCONNECT隧道。 - 校驗:傳入
sha256則在完成後整文件校驗,不一致判爲failed。 - 無 Range 的服務器(返回 200):退化爲單連接順序下載,此類源不支持續傳。
- 超時:連接 / CONNECT 15s、等響應頭 45s、響應體靜默 60s;可用環境變量
DSH_DL_CONNECT_TIMEOUT_MS、DSH_DL_HEADERS_TIMEOUT_MS、DSH_DL_IDLE_TIMEOUT_MS覆蓋。 - Windows:不預先
truncate到最終大小,分塊按偏移寫入,結束時再校正文件長度。
安裝與啓用¶
本包自帶 bundle patch(cordis.patch.yml),註冊 id: downloader / name: dsh-downloader。
從 GitHub 直接安裝:
dsh plugin --profile desktop add github:morethaninformation/dsh-downloader
或使用 Release 預構建 tarball(無需從源碼構建,也無需 pnpm 拉依賴):
dsh plugin --profile desktop add https://github.com/morethaninformation/dsh-downloader/releases/latest/download/dsh-downloader.tgz
安裝後重啓一次 DSH,dl_start / dl_status / dl_cancel 會出現在工具列表。卸載:
dsh plugin --profile desktop remove dsh-downloader
典型用法¶
先啓動任務,再用 dl_status 輪詢;需要時 dl_cancel 停止。
dl_start({ url: "https://example.com/model.gguf", outFile: "D:\\models\\model.gguf",
totalBytes: 47039860096, sha256: "219e…", threads: 8, chunkMb: 16,
proxy: "http://127.0.0.1:3128" })
→ { jobId: "dl-1", state: "pending", ... }
dl_status({ jobId: "dl-1" })
→ { count: 1, jobs: [{ percent: 3.1, speedBps: 4200000, etaSeconds: 10800, ... }] }
大文件場景下可顯式傳 totalBytes 與 sha256,便於進度估算與落盤校驗。
適用場景與注意¶
適合:需要在 agent 回合內發起下載、又希望後臺持續跑完的場景;走企業 HTTP 代理的 HTTPS 拉取;需要可恢復的大文件 HTTP(S) 下載(源支持 Range 時)。
限制(README 原文):
- 僅支持 HTTP / HTTPS(含
http://代理的CONNECT);不支持 SOCKS 與 FTP。 - 續傳依賴服務器 Range;不支持時中斷後需從頭再來。
- 任務表在內存中:DSH 重啓後任務消失,但
.dlstate.json仍在;對同一 URL 與塊大小重新dl_start可接着下。 - 續傳要求塊大小一致;改變
chunkMb會作廢舊進度。
插件以當前 DSH 進程權限訪問網絡與寫本地文件,安裝前宜查看源碼與 MIT 許可證,確認目標 URL 與輸出路徑符合本機安全策略。
結尾¶
dsh-downloader 把「多連接 + 斷點 + 代理 + 校驗」收成 DSH 三個工具,減少智能體工作流裏單獨維護下載腳本的負擔。目錄頁:SkillHub - dsh-downloader;源碼與詳細說明:GitHub - Morethaninformation/dsh-downloader。