前言¶
在 DeepSeek Harness(DSH)里让 agent 通过浏览器拉文件时,若本机装了迅雷「下载支持」一类扩展,常见现象是:任务本该走浏览器下载,却被扩展监听 chrome.downloads 后 cancel,再弹出迅雷的「新建下载任务」窗口。DSH 自带的 dsh_browser_download 走 provider 原生下载通道,桌面端(desktop shell)还会直接报 browser: download is only available on the self-hosted browser。下面介绍社区插件 dsh-blob-download(维护者 adcgesdad,分类:联网工具),它在页面内用 fetch → Blob → createObjectURL → <a download>.click(),让文件走浏览器自身管线,扩展通常对 blob: / data: 协议不介入。
这是什么¶
dsh-blob-download 是给 DSH 用的下载工具插件:在 DSH 浏览器里用 blob: 方案下载 http/https 文件,避免迅雷等下载扩展劫持。仓库:https://github.com/adcgesdad/dsh-blob-download;社区目录页:https://www.skillhub.cn/plugins/adcgesdad/dsh-blob-download。当前 package 版本为 0.1.0,许可证 MIT。
迅雷 v4.1.5 的决策逻辑里,对 blob:、data: 等协议会直接 return false,因此页面内 blob 下载不会触发同一套劫持路径。
核心功能¶
插件向 agent 暴露工具 blob_download,主要参数如下:
| 参数 | 必填 | 说明 |
|---|---|---|
url |
是 | 要下载的 URL(http/https) |
fileName |
否 | 保存文件名,不传则从 URL 末段推断 |
saveDir |
否 | 保存目录(绝对路径),不传用配置或系统下载目录 |
waitSeconds |
否 | 等待落盘秒数,默认 30,上限 300 |
返回结构包含 ok、message,以及可选的 path、bytes、fileName、verified。verified: true 表示宿主在目标目录里看到了大小相符的新文件,而不只是触发了一次点击。
行为上值得提前知道的几点:
- 串行排队:浏览器对并发多文件下载会弹确认框,插件内部一次只处理一个任务。
- 先导航到 origin 根路径再 fetch:保证同站资源不受 CORS 限制;不能直接
openUrl目标文件 URL,否则会先触发真浏览器下载。 - 文件名消毒:去掉 Windows 非法字符与路径穿越;重名自动加
(1)后缀。 - 只读目录:不会删空目录、不移动已有文件。
安装与启用¶
要求 DSH 0.2.1-rc.5 或更高(engines.dsh: >=0.2.1-rc.5 <0.3.0),且 profile 中已安装 dsh-builtin-browser(提供 browser 服务)。未装浏览器插件时,工具会直接报错。
方式一:插件页安装(推荐)
Web 侧边栏 → 插件 → 安装,填写 git 地址:
git+https://github.com/adcgesdad/dsh-blob-download.git
需要固定版本可在后面加 #<commit>。装完重启 DSH。
方式二:本地 link
git clone https://github.com/adcgesdad/dsh-blob-download.git ~/.dsh/plugin-src/dsh-blob-download
cd ~/.dsh/profiles/desktop
pnpm add link:~/.dsh/plugin-src/dsh-blob-download
在同一 package.json 的 bundle 列表里追加包名,例如:
{
"dependencies": { "dsh-blob-download": "link:..." },
"dsh": { "profile": { "bundles": ["dsh-builtin-browser", "dsh-blob-download"] } }
}
重启 DSH 生效。
方式三:npm
README 写明 npm i dsh-blob-download 需等包发布到 npm 后使用,目前请用方式一或方式二。
可选配置写在 cordis.patch.yml(也可经 patch 合并进 profile):
- insert:
- id: blob-download
name: 'dsh-blob-download'
config:
downloadDir: '' # 默认目标目录,留空用系统下载目录
timeoutMs: 120000 # 单次等待上限(毫秒)
典型用法¶
在已启用浏览器工具与会话的前提下,让 agent 调用 blob_download,传入要拉的 http/https 地址即可。需要指定落盘位置时传 saveDir(绝对路径)或先在配置里设 downloadDir;大文件或慢链可调 waitSeconds(不超过 300)。
示例意图(参数名以工具 schema 为准):
url:https://example.com/path/to/file.zip- 可选
fileName:archive.zip - 可选
saveDir: 本机绝对路径
成功时关注返回里的 path、bytes 与 verified。
适用场景与注意¶
适合:DSH 桌面端或自托管浏览器场景下,agent 需要稳定把远程文件落到本机,且本机迅雷等扩展会抢 chrome.downloads 的情况。
限制(来自 README):
- 仅支持 http/https;
file:、data:等会被拒绝。 - 依赖页面上下文能
fetch到目标 URL;反爬、特殊 header、或跨源且无 CORS 时可能失败。 - 必须存在
browser服务(dsh-builtin-browser)。
DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证,自行评估 URL 与保存路径带来的风险。
结尾¶
dsh-blob-download 用页面内 blob 下载补齐桌面端无法用 dsh_browser_download 的空档,并针对迅雷类扩展的协议过滤做了对症路径。需要安装或 issue 时见 GitHub:https://github.com/adcgesdad/dsh-blob-download;目录介绍见 https://www.skillhub.cn/plugins/adcgesdad/dsh-blob-download。