把模型下载请求交给本机 Motrix,失败时自动直连兜底
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Siselea/dsh-motrix-download该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 23 处,展示前 23 条)
- 读取本地文件index.js:115
if (existsSync(absPath)) { - 写入本地文件index.js:286
await mkdir(saveDir, { recursive: true }).catch(() => {}) - 读取本地文件index.js:299
const base64 = (await readFile(target.path)).toString('base64') - 读取本地文件lib/motrix.mjs:108
const raw = JSON.parse(await readFile(path.join(stateDir, 'bridge', 'endpoint.json'), 'utf8')) - 读取本地文件lib/motrix.mjs:138
const settings = JSON.parse(await readFile(path.join(stateDir, 'settings.json'), 'utf8')) - 读取本地文件lib/motrix.mjs:147
const owner = JSON.parse(await readFile(path.join(stateDir, 'aria2-owner.json'), 'utf8')) - 读取本地文件lib/motrix.mjs:151
if (existsSync(exe)) state.exePath = exe - 读取本地文件lib/motrix.mjs:168
if (existsSync(candidate)) { - 发起网络请求lib/motrix.mjs:199
const req = http.request( - 执行外部命令来自配置/变量lib/motrix.mjs:266
const child = spawn(exePath, [], { detached: true, stdio: 'ignore', windowsHide: false }) - 读取本地文件lib/motrix.mjs:291
if (!state.exePath || !existsSync(state.exePath)) { - 读取本地文件lib/fallback.mjs:51
await stat(target) - 读取本地文件lib/fallback.mjs:60
await stat(candidate) - 发起网络请求lib/fallback.mjs:82
const req = transport.request( - 写入本地文件lib/fallback.mjs:126
await mkdir(dir, { recursive: true }) - 写入本地文件lib/fallback.mjs:143
const out = createWriteStream(partPath) - 删除本地文件lib/fallback.mjs:174
await rm(partPath, { force: true }).catch(() => {}) - 写入本地文件lib/fallback.mjs:178
await rename(partPath, target) - 读取本地文件lib/fallback.mjs:179
const info = await stat(target) - 读取本地文件smoke.mjs:89
const info = await stat(motrix.finalPath) - 读取本地文件smoke.mjs:116
const info = await stat(direct.path) - 删除本地文件smoke.mjs:130
for (const file of created) await rm(file, { force: true }).catch(() => {}) - 删除本地文件递归smoke.mjs:131
await rm(tmp, { recursive: true, force: true }).catch(() => {})
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 插件:把模型下载请求交给本地 Motrix(aria2)应用处理,内置直接走 HTTP 的兜底方案。
README
由 DeepSeek 最新模型翻译生成dsh-motrix-download
DeepSeek Harness 插件:模型请求下载时,优先交给本机 Motrix(aria2)下载;Motrix 不可用时自动回退为内置直连下载。
下载任务会真实出现在 Motrix 应用中(可暂停/继续/删除、参与 Motrix 的队列与限速),而不是绕开应用直接塞给 aria2。
特性
- 优先 Motrix:download 工具默认把 URL / magnet / .torrent 交给 Motrix;任务可在 Motrix 中查看和管理。
- 自动回退:Motrix 未运行或桥接不可用时,http/https 链接自动改用内置直连下载,下载请求不会失败。
- 自动发现:端口、token、默认下载目录、安装位置全部从 Motrix 配置自动读取,token 轮换无需配置。
- 自动启动:桥接不可达时自动拉起 Motrix.exe(最多等 25 秒),成功后再提交任务。
- 目的地必填:save_dir 为必填参数,模型必须先明确"下载到哪";用户没说时模型会先询问。
- 零运行时依赖:只使用 Node 内置模块,不需要 npm install。
环境要求
- Windows(插件通过 %APPDATA%\Motrix 发现 Motrix;macOS / Linux 未验证)。
展开完整文档(README 剩余 1 节)
dsh-motrix-download
DeepSeek Harness 插件:模型请求下载时,优先交给本机 Motrix(aria2)下载;Motrix 不可用时自动回退为内置直连下载。
下载任务会真实出现在 Motrix 应用中(可暂停/继续/删除、参与 Motrix 的队列与限速),而不是绕开应用直接塞给 aria2。
特性
- 优先 Motrix:download 工具默认把 URL / magnet / .torrent 交给 Motrix;任务可在 Motrix 中查看和管理。
- 自动回退:Motrix 未运行或桥接不可用时,http/https 链接自动改用内置直连下载,下载请求不会失败。
- 自动发现:端口、token、默认下载目录、安装位置全部从 Motrix 配置自动读取,token 轮换无需配置。
- 自动启动:桥接不可达时自动拉起 Motrix.exe(最多等 25 秒),成功后再提交任务。
- 目的地必填:save_dir 为必填参数,模型必须先明确"下载到哪";用户没说时模型会先询问。
- 零运行时依赖:只使用 Node 内置模块,不需要 npm install。
环境要求
- Windows(插件通过 %APPDATA%\Motrix 发现 Motrix;macOS / Linux 未验证)。
- Motrix 2.x,且设置中的「浏览器桥接」(app.browserBridgeEnabled)保持开启——默认开启。
- DeepSeek Harness(Host 插件,通过 plugin_manager 安装为 bundle)。
安装
尚未发布到 npm;如需通过包名安装,可自行 npm login && npm publish --access public(包名 dsh-motrix-download 可用)。
方式一:clone 仓库
git clone https://github.com/Siselea/dsh-motrix-download.git
方式二:从 Releases 下载 dsh-motrix-download-0.1.0.tgz 并解压:
tar -xzf dsh-motrix-download-0.1.0.tgz
然后在 Harness 中安装为该 profile 的 bundle(把 <abs> 换成 clone 或解压出来的绝对路径):
plugin_manager action=install_bundle target=<abs>/dsh-motrix-download
安装后插件出现在 Plugin Manager 中(标题/描述来自 locale/en.json 与 locale/zh.json,图标为 icon.svg),三个工具立即生效。
本插件是用 link: 方式安装的本地包:之后修改源码,需要在 Plugin Manager 里把插件关闭再开启(或重启 Harness)来重载模块。
快速上手
// 下载网页图片到 D 盘(save_dir 必填)
download({ url: "https://www.example.com/logo.png", save_dir: "D:\\", filename: "logo.png", wait_seconds: 60 })
// 磁力链接(只能由 Motrix 下载)
download({ url: "magnet:?xt=urn:btih:...", save_dir: "D:\\Downloads" })
// 查询进度;wait_seconds > 0 时等待完成并返回 finalPath
download_status({ task_id: "01a18d9a-...", wait_seconds: 120 })
// 暂停 / 继续 / 取消(保留文件)/ 删除(连文件删)
download_control({ task_id: "01a18d9a-...", action: "pause" })
典型返回(节选):
{
"ok": true,
"backend": "motrix",
"taskId": "01a18d9a-1d41-73a6-ad7f-b1e24e3b627b",
"status": "completed",
"name": "baidu-logo.png",
"bytesTotal": 6617,
"finalPath": "D:\\baidu-logo.png",
"message": "已下载完成:D:\\baidu-logo.png(6.5 KB)" }
工具
| 工具 | 用途 |
| download | 提交下载:URL / magnet / 本地 .torrent。默认优先 Motrix,失败回退直连 |
| download_status | 查询任务:传 task_id 看详情并可等待完成;不传则列出任务队列与全局速度 |
| download_control | 控制任务:pause / resume / cancel(保留文件)/ purge(删除文件) |
download 参数
| 参数 | 说明 |
| url(必填) | http/https/ftp/ftps/sftp 链接、magnet:? 磁力链接,或本地 .torrent 文件路径 |
| save_dir(必填) | 下载到哪个目录(绝对路径或相对工作区路径)。用户未指定时,模型应先询问再下载 |
| filename | 单文件 HTTP 下载的另存文件名(磁力/种子忽略) |
| headers | 额外 HTTP 请求头,如 {"Referer":"https://example.com"} |
| engine | auto(默认,优先 Motrix)、motrix(只用 Motrix)、direct(跳过 Motrix 直连) |
| wait_seconds | 最多等待完成的秒数(0 = 提交后立即返回;完成时返回 finalPath) |
返回值关键字段:backend(motrix/http)、taskId、status、progress、bytesDone/bytesTotal、finalPath、message。
工作原理
1. 从 %APPDATA%\Motrix\settings.json 读取默认下载目录,从 %APPDATA%\Motrix\aria2-owner.json 推导安装位置。
2. 从 %APPDATA%\Motrix\bridge\endpoint.json 读取当前桥接端口(16802–16806 中实际绑定的那个)与 localToken;两者每次调用前重读,token 重启轮换也不影响。
3. 桥接不可达时自动启动 Motrix.exe,等待桥接就绪后重试。
4. 通过 Motrix 的 MDXP 桥(POST http://127.0.0.1:<port>/mdxp,Authorization: Bearer <localToken>)调用 download/add、task/get、task/list、task/pause|resume|remove、stats/get。
5. 非 http/https 的地址在 Motrix 不可用时无法回退,返回明确错误;http/https 则回退到内置直连下载(跟随重定向、按 Content-Disposition 命名、.part 临时文件;不支持断点续传)。
为什么用 MDXP 桥而不是 aria2 RPC
Motrix 会"接管" aria2 队列:直接向内嵌 aria2 的 16800 RPC 提交任务后,应用会在约 1 秒内把任务收编(adoptTask),原 gid 随即失效(tellStatus → GID ... is not found),且桥不暴露 gid 与 Motrix 任务 UUID 的映射。因此裸 aria2 RPC 只能"发完不管";要任务句柄、状态和控制能力,必须走 MDXP 桥。协议细节见 docs/mdxp-notes.md。
系统提示词
插件注册一个简短的全局提示词片段(motrix-download,order 5900),让"下载优先用 download 工具"在普通对话请求中也生效,并要求每次下载都附带 save_dir(用户没说保存位置时先询问)。片段注册失败只告警,不影响工具可用性。
配置
没有配置文件,全部自动发现。可选的环境变量:
| 变量 | 作用 |
| DSH_MOTRIX_EXE | 指定 Motrix.exe 路径(自动发现失败时使用) |
开发与测试
离线检查(不需要 Motrix,CI 也跑这个):
node scripts/check.mjs
端到端自检(需要本机 Motrix 正在运行,会真实下载并自动清理):
node smoke.mjs
smoke.mjs 覆盖:工具注册、提示词片段、Motrix 桥连通、真实下载并校验 finalPath、任务查询、任务删除、直连回退、非法输入与缺少 save_dir 的拒绝。
已知限制
- 需要 Motrix 的浏览器桥接开启;关闭时 Motrix 不可用,只能直连下载。
- 磁力链接与种子文件必须由 Motrix 下载:桥接不可用时直接报错,不会伪造回退。
- 直连回退仅支持 http/https,不处理 FTP、磁力、种子,也不支持断点续传。
- purge 会删除已下载的文件(等价于 Motrix 中"删除任务并删除文件")。
- 等待完成使用 500ms 轮询 task/get,不订阅 MDXP 通知(HTTP 桥只提供请求/响应)。
- 未在 macOS / Linux 上验证。
目录结构
dsh-motrix-download/
├── index.js # 插件入口:三个工具 + 提示词片段 ├── lib/motrix.mjs # Motrix 状态发现、MDXP 桥客户端、启动与轮询 ├── lib/fallback.mjs # 直连 HTTP(S) 下载回退 ├── cordis.patch.yml # bundle patch(insert 一行) ├── package.json # dsh.bundle.patch + locale/icon 导出 ├── locale/{en,zh}.json # Plugin Manager 标题/描述 ├── icon.svg # 图标 ├── .github/workflows/ # CI(离线检查)与 Release(打 tag 自动发布) ├── docs/mdxp-notes.md # MDXP 协议实测笔记 ├── scripts/check.mjs # 离线自检(CI) ├── smoke.mjs # 端到端自检(需要 Motrix) ├── CHANGELOG.md # 版本记录 └── LICENSE # MIT
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Siselea/dsh-motrix-download
把模型下载请求交给本机 Motrix,失败时自动直连兜底
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。