一句话定位:Motrix 是一款现代化的全功能下载管理器,沉寂三年多的 v1.x 系列最近突然"诈尸",2.0 版本用 Electron 44 + React 19 + TypeScript 完全重写,支持 HTTP、FTP、BitTorrent、magnet 链接,同时推出桌面应用和 Docker 无头服务器两种运行模式。

昨天看到推文说,Motrix 沉寂三年多,这两天突然开始疯狂更新——从 beta.1 一口气推到 beta.14,最新的 commit 到今天还在继续发。

我去 GitHub 看了一眼:agalwood/Motrix,这个项目最近一个月确实非常活跃,10 月 2 号刚发了 v2.0.0-beta.46,提交数超过 1400 个,看起来是真在往正式版冲刺。

一、v1 到 v2 发生了什么

先说说背景。Motrix v1.x 用的是旧版 Electron,架构比较传统——UI 和下载引擎耦合在一起,功能虽然有但扩展性有限。v1.8.19 是最后一个正式发布的稳定版,之后项目沉寂了大约三年,中间只有零星的 issue 回复,基本处于无人维护的状态。

然后今年 8、9 月开始,项目突然加速。README 里也提到了一个关键信息:Motrix Turbo 就是 v2 的代号——整个从地面重建,下载核心完全独立出来,不再绑死在 UI 层。

这个架构拆分带来了几个直接好处:

  • 浏览器扩展可以独立存在——Chrome、Edge、Firefox(Manifest V3)都能装,拦截下载链接后通过 MDXP 协议交给桌面应用处理。
  • 命令行工具也有了——npm install -g @motrix/cli 装完就能用,脚本化下载变得可行。
  • 插件系统是正经的沙箱机制——用 QuickJS-Emscripten 隔离运行,不是随便塞个 JS 文件进去就跑。

二、技术栈有多新

这次重写把能用的最新框架全用上了:

组件 版本 说明
Electron 44 比 v1 的 Electron 22 整整跨了两代
React 19 用了 Concurrent Features 等新特性
TypeScript strict mode 全量严格模式,类型安全有保障
构建工具 Vite 8 分离 main / preload / worker / renderer 四个目标
下载引擎 aria2 fork Motrix 自己维护的 aria2 分支
数据持久化 better-sqlite3 下载会话恢复靠它
插件沙箱 QuickJS-Emscripten 隔离运行,不能乱访问系统
服务端运行时 Node.js + Fastify Docker 无头模式的后端

亮点:架构分了四层——renderer(React UI)、app core(任务/设置/插件/桥接)、engine adapter(引擎适配器)、aria2(下载引擎)。CI 会强制检查依赖边界,为将来可能的 Rust 重写留好了路。

三、MDXP 是什么

这个协议名听起来挺唬人,其实就是 Motrix Download eXchange Protocol——基于 JSON-RPC 2.0 的一套通信协议,专门让浏览器扩展和 CLI 客户端跟桌面应用对话。

典型场景是这样的:

  1. 你在浏览器里看到一张图片,右键选"用 Motrix 下载"
  2. 浏览器扩展拦截到这个请求,把 URL 通过 MDXP 发给桌面应用
  3. 桌面应用接过来,交给 aria2 引擎去下载
  4. 进度实时反馈回浏览器扩展的侧边栏

整个过程不需要你切到 Motrix 窗口,浏览器扩展就像个遥控器一样。

协议层用了 Zod 4 做所有数据类型校验——设置、IPC 消息、wire schema 全部有严格类型约束,不会出现"传了个错字段结果崩掉"的问题。

四、两种运行模式

桌面应用

这是最常见用法——macOS、Windows、Linux 都有安装包。

Windows 用户注意:x64 版本目前未签名,第一次打开可能会触发 SmartScreen 警告,点"仍要运行"即可(这也是开源桌面软件的常见状况)。ARM64 和 32 位版本暂时不提供。

macOS 有 Universal 包(Intel + Apple Silicon 通用),Linux 除了 x86_64 还支持 arm32、arm64 和 armv7l。

Docker 无头服务器

这个才是 v2 真正的杀手锏之一。你可以把 Motrix 跑在任何一台有 Docker 的机器上——NAS、树莓派、家用服务器都行——然后通过 Web UI 或者远程客户端来管理下载任务。

官方推荐的启动方式:

1
2
3
4
5
mkdir -p motrix-data downloads
export MOTRIX_IMAGE='docker.io/motrixapp/motrix-server:2.0.0-beta.46'
export MOTRIX_PUBLIC_URL='http://nas.example.lan:8080'
docker compose pull server
docker compose up -d --wait

运行时的容器非 root,根文件系统只读,还有挂载点权限校验——安全性和普通下载管理器不是一个量级的。

Web 服务跑在 8080,MDXP 协议端口是 16801。如果公网 URL 暂时不可达,还可以用 SSH 手动审批远端客户端配对码,不需要额外开端口。

场景建议:如果你有一台 24 小时开机的 NAS 或者 VPS,把 Motrix Server 部署上去,手机、电脑、浏览器都能看到下载进度,回家也能随时管理任务,比单纯用桌面应用灵活得多。

五、生态工具链

v2 不只是改了桌面应用,整个生态都重新梳理了一遍:

  • @motrix/mdxp——共享协议库,定义 JSON-RPC 2.0 的 wire schemas 和 Zod 类型
  • @motrix/cli——命令行工具,motrix 命令,自动发现本地桌面应用或远端实例
  • Motrix Extension——浏览器扩展,Chrome / Edge / Firefox(Manifest V3),拦截下载并对接桌面应用
  • Motrix Plugin SDK——四个 npm 包,包括 manifest schema、API、CLI 和脚手架工具
  • 内置插件——目前三个:文件名模板(下载前按规则重命名)、页面爬虫(从 HTML 提取直链)、URL 解析器(媒体解析基础组件)
  • 插件注册表——dl.motrix.app/registry/plugins.json,官网和应用内市场都从这里拉取

插件机制设计上走的是"签名"路线——官方插件用 .moext 打包,经过签名验证后才允许安装,防止恶意插件注入。

六、开发环境怎么搭

项目对 Node.js 版本有硬性要求:22 或以上,包管理器用 pnpm(具体版本看 package.json 的 packageManager 字段)。

1
2
3
4
5
git clone https://github.com/agalwood/Motrix.git
cd Motrix
pnpm install # 装依赖 + 下载 aria2 + 重建原生模块
pnpm start # 启动开发模式,带 Vite HMR
pnpm build # 拉取签名插件,构建四个目标

测试套件用 Vitest 做单元测试,Playwright 做 E2E,代码规范用 Biome 检查。开发体验和主流前端项目没差。

七、值得等正式版吗

Motrix 这次的重写不是小修小补——从 Electron 22 跳到 44,架构彻底翻新,协议层全新设计。项目最近一个月 Commit 密度非常高,beta 版本已经推到 46,说明核心团队确实在全力推进。

如果你之前用过 v1.x,这次 v2 的改动值得你重新试试看;如果你一直没接触过 Motrix,beta.46 已经能正常下载 HTTP / FTP / 种子 / magnet,基础体验是完整的。正式版什么时候发布不好说,但看这个速度,应该不会太久。

Motrix开源Apache-2.0

Electron 44 + React 19 重写的现代化下载管理器,支持 HTTP / FTP / BT / magnet,桌面 + Docker 双模式运行。

—
GitHub Star
1400+
Commits
beta.46
当前版本
ElectronReact 19TypeScriptaria2