在 DeepSeek Harness (DSH) 環境中,智能體通常傾向於使用 shell 命令(如 curl、wget 或 PowerShell 的 Invoke-WebRequest)來下載文件。這些命令通常是單連接下載,速度較慢且不可見。即便智能體使用了名爲 aria2-dl.js 的腳本,如果該腳本內部未調用 aria2 引擎,下載速度可能僅爲單連接的幾分之一(實測 4.76GB 文件,使用 node download.cjs 僅 0.13 MB/s,而 aria2 可達 11.78 MB/s)。dsh-download-guard 的作用是將這條規則從提示詞建議變爲運行時強制:在工具執行前攔截 shell 下載命令,並返回正確的 aria2 命令。
功能概述¶
本插件通過監聽 cordis 的 tools/pre-execute 鉤子(waterfall 模式),在工具真正執行前進行裁決。
核心功能包括:
1. 攔截常見的 shell 下載命令(如 curl -o、wget <url>、Invoke-WebRequest ... -OutFile)。
2. 自動返回包含正確參數的 aria2 替代命令。
3. 隨包分發 aria2-dl.cjs 轉發腳本,支持通過 JSON-RPC 連接 aria2-next 引擎。
安裝¶
在終端中執行以下命令:
cd ~/.dsh && dsh plugin --profile <your-profile> add "dsh-download-guard@github:BeiWay1145/dsh-download-guard"
安裝後重啓 DSH 即可生效。
使用示例¶
當智能體嘗試使用 shell 命令下載文件時,插件會攔截並提示使用 aria2 命令:
curl -o F / wget <url> / Invoke-WebRequest ... -OutFile F
插件會返回類似以下的提示,建議使用隨包分發的轉發腳本:
node "$env:USERPROFILE\.dsh\skills\aria2-download\scripts\aria2-dl.js" "<URL>" --out=<filename>
實際的調用方式如下:
node scripts/aria2-dl.cjs <url> --out=<文件名> [--dir=<目錄>] [--no-wait]
node scripts/aria2-dl.cjs --status <gid>
限制與注意¶
本插件無法覆蓋所有場景,使用前需瞭解以下邊界:
- 命令內部的下載無法攔截:例如
python script.py,鉤子只能看到python script.py,無法檢測其內部的urllib請求。 - 非 DSH 進程不受影響:在 DSH 之外打開的終端執行
curl -o不會被攔截。 - 依賴宿主環境:要求宿主提供
tools/pre-execute鉤子。 - 引擎依賴:依賴本機運行 aria2-next 引擎,且未啓動時會報錯。
總結¶
dsh-download-guard 解決了智能體在下載大文件時可能繞過 aria2 引擎的問題。通過強制攔截 shell 命令,確保所有下載都通過本地 aria2 引擎進行,從而獲得多線程下載、斷點續傳和可見性。
- GitHub: https://github.com/BeiWay1145/dsh-download-guard