前言¶
在 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。