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
羽毛球分组比赛记分
小程序二维码

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

小夜