dsh-download-guard:強制下載通過本地 aria2 引擎

在 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>

限制與注意

本插件無法覆蓋所有場景,使用前需瞭解以下邊界:

  1. 命令內部的下載無法攔截:例如 python script.py,鉤子只能看到 python script.py,無法檢測其內部的 urllib 請求。
  2. 非 DSH 進程不受影響:在 DSH 之外打開的終端執行 curl -o 不會被攔截。
  3. 依賴宿主環境:要求宿主提供 tools/pre-execute 鉤子。
  4. 引擎依賴:依賴本機運行 aria2-next 引擎,且未啓動時會報錯。

總結

dsh-download-guard 解決了智能體在下載大文件時可能繞過 aria2 引擎的問題。通過強制攔截 shell 命令,確保所有下載都通過本地 aria2 引擎進行,從而獲得多線程下載、斷點續傳和可見性。

  • GitHub: https://github.com/BeiWay1145/dsh-download-guard
羽毛球分组比赛记分
小程序二维码

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

小夜