新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何用 Motrix Plugin SDK 完成插件脚手架、manifest 校验与 .moext 打包

发布时间:2026/9/10 3:47:17来源:尧图网络
如何用 Motrix Plugin SDK 完成插件脚手架、manifest 校验与 .moext 打包
如何用 Motrix Plugin SDK 完成插件脚手架、manifest 校验与 .moext 打包【免费下载链接】MotrixA full-featured download manager.项目地址: https://gitcode.com/GitHub_Trending/mo/Motrix本文面向要为自己的下载流程写 Motrix 插件的开发者目标是走通一条完整链路用 Motrix Plugin SDK 的脚手架生成插件项目、在motrix-plugin.json中声明激活事件、能力与宿主权限、用 CLI 校验 manifest最后打包出可分发的.moext产物并用 lint 检查它。插件最终运行在 Motrix 的 QuickJS 沙箱中因此 manifest 里声明的内容决定了插件能否被激活、能请求哪些主机。前提条件按 README.zh-CN.md 的「开发与构建」一节需要 Node.js 22 或更高版本以及 pnpm项目侧的 pnpm 版本以package.json中的packageManager字段为准。用 create-motrix-plugin 生成插件脚手架Motrix 周边的 Plugin SDK 由 4 个 npm 包组成其中包括motrix/plugin-manifest-schema、motrix/plugin-api、motrix/plugin-cli和create-motrix-plugin分别提供 manifest schema、运行时 API、CLI 和项目脚手架见 README.zh-CN.md「周边生态」一节。创建项目的命令如下其中my-plugin是插件项目名pnpm create motrix-plugin my-plugin cd my-plugin pnpm install脚手架生成两种默认模板按项目名选择默认不加后缀创建一个使用beforeCreate钩子的 URL Resolver项目名后添加post-action创建一个使用afterComplete发送通知的插件。插件可以接入beforeCreate、beforeFinalize、afterComplete和onError四个生命周期钩子也可以提供可调用的命令和设置并通过motrix:plugin-api虚拟模块访问运行时 API。编写并核对 motrix-plugin.json脚手架生成后插件的声明文件是motrix-plugin.json。下面是一份来自本仓库测试夹具的真实 manifesttest.hook-sdk-2-0字段含义结合 插件 Hook 运行时规范 说明{ manifestVersion: 1, id: test.hook-sdk-2-0, name: Hook SDK 2.0 compatibility fixture, version: 1.0.0, description: Runtime guest fixture constrained to the published SDK 2.0 Hook surface, categories: [integration], engines: { motrix: 2.0.0 }, main: dist/plugin.js, permissions: [metadata, fs.task.write, storage], hostPermissions: [*://*/*], activationEvents: [onTaskType:http], contributes: { hooks: { beforeCreate: { role: enrich }, beforeFinalize: { role: post-process }, afterComplete: { role: audit }, onError: { role: audit } } } }写这份文件时有几个直接影响校验结果和运行行为的点contributes.hooks只接受四个 Hook 名beforeCreate、beforeFinalize、afterComplete、onError每个 Hook 带一个 role。role 决定失败时的行为pre-resolve、resolve和post-process失败会中止串行 Hook 链enrich与audit失败会被隔离、链继续执行且audit插件不能产生变更效果见运行时规范第 5.2 节。hostPermissions只授权插件自己发起的网络请求不授权也不拒绝交给下载引擎的返回 URL。pattern 语法是scheme://host/path-globscheme为http、https或**仅表示 HTTP 与 HTTPShost为*、规范化后的精确 DNS/IP或*.example.test形式的子域通配符Manifest v1 没有 port 组件scheme/host 匹配时任意合法端口都匹配all_urls等价于*://*/*。无效 pattern 一律 fail closed。activationEvents声明激活条件需匹配任务类型或 URL 协议beforeCreate的 HTTP resolver 还要求至少一个hostPermissionspattern 匹配用来选择它的 source URL而beforeFinalize、afterComplete、onError只根据 Hook 声明、task-type activation、role 和 capability grant 选择不经 HTTP host pattern 过滤。permissions声明所需 capabilityMotrix 会在授权前向用户展示这些请求main指向打包入口插件会被打包为单个 ES2020 模块。校验 manifestmanifest 修改完成后在项目根目录执行pnpm exec motrix-plugin validate该命令校验的是motrix-plugin.json本身。校验通过说明 schema 与声明结构没有问题接下来用pnpm dev可以一边监听构建、一边启动 Motrix 加载插件确认插件在真实主进程中能加载pnpm dev注意区分两层验证看到插件加载、注册事件只能说明 bundle 被读入按运行时规范的问题陈述真正可用的 Hook 必须由真实构建后的插件包通过真实PluginHost和 QuickJS Worker 执行完整生命周期才成立。pnpm dev提供的是后一种验证环境。打包 .moext 并用 lint 检查产物确认插件能加载后执行打包pnpm run pack产物路径固定为dist/id-version.moext其中id与version取自motrix-plugin.json的id和version字段。本仓库的测试夹具目录也采用这一命名例如 test.allcaps-1.0.0.moext 对应tests/fixtures/plugins/test.allcaps/下的夹具插件。打包完成后检查产物pnpm exec motrix-plugin lintlint检查的是打包后的产物而非源码。至此脚手架、manifest 校验、打包三条命令都通过且dist/id-version.moext存在即完成了一个可分发的插件包。限制与边界插件运行在 QuickJS 沙箱中不能使用 Node.js API也不能直接访问文件或网络网络访问由hostPermissions限定初始 URL 与每一跳重定向都会校验见 2.0.0-beta.19 发布说明。沙箱内的 Hook DTO、metadata 写入等都有明确的字节与深度上限如完整 Hook 消息 2 MiB完整清单在运行时规范第 9.1 节超出上限的 payload 会被拒绝。本文的命令链面向 Plugin SDK 生成的项目manifest 模板、运行时 API 参考与分发方式的更完整说明在 Plugin SDK 仓库的文档中README.zh-CN.md「编写插件」一节给出了入口。若要修改本仓库内的插件 Manifest 契约而非普通插件贡献流程要求另跑pnpm run check:schema-parity见 CONTRIBUTING.zh-CN.md这属于仓库开发校验不是插件开发链路的一部分。【免费下载链接】MotrixA full-featured download manager.项目地址: https://gitcode.com/GitHub_Trending/mo/Motrix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

YooAsset实战指南:Unity资源管理与热更新工程化落地 2026/9/10 4:38:24

YooAsset实战指南:Unity资源管理与热更新工程化落地

1. 什么是YooAsset?它为什么在Unity项目里越来越常见YooAsset不是Unity官方出品的工具,但它正在成为中大型Unity团队资源管理方案里的“隐形基础设施”。如果你最近在技术群、招聘JD或开源项目文档里频繁看到YooAsset这个词,大概率不是偶然—…

阅读更多 →
Python 打包实战精要:基于 pyproject.toml 的现代分发、CLI 与 PyPI 发布全流程 2026/9/10 4:38:24

Python 打包实战精要:基于 pyproject.toml 的现代分发、CLI 与 PyPI 发布全流程

Python 打包实战精要:基于 pyproject.toml 的现代分发、CLI 与 PyPI 发布全流程 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址: https://gitco…

阅读更多 →
从 CI 启用 Nx 远程缓存读写访问:NX_CLOUD_ACCESS_TOKEN 完整配置指南 2026/9/10 4:38:24

从 CI 启用 Nx 远程缓存读写访问:NX_CLOUD_ACCESS_TOKEN 完整配置指南

从 CI 启用 Nx 远程缓存读写访问:NX_CLOUD_ACCESS_TOKEN 完整配置指南 【免费下载链接】nx The Monorepo Platform that amplifies both developers and AI agents. Nx optimizes your builds, scales your CI, and fixes failed PRs automatically. Ship in half t…

阅读更多 →
Axmol v3 Lua绑定:AST+sol2重构告别tolua++ 2026/9/10 4:38:24

Axmol v3 Lua绑定:AST+sol2重构告别tolua++

1. 项目概述:为什么一个游戏引擎的 Lua 绑定系统值得你花十分钟读完如果你正在用 C 写跨平台游戏、工具或嵌入式 UI,又想让策划、关卡设计师甚至 QA 同学能快速改逻辑、热重载脚本、不编译就能验证想法——那 Lua 几乎是绕不开的选择。而过去十年里&…

阅读更多 →
Carbon 语言 `Main//default` 默认库的文件类型演进:为何 `main.carbon` 取代 `main.impl.carbon` 2026/9/10 4:38:24

Carbon 语言 `Main//default` 默认库的文件类型演进:为何 `main.carbon` 取代 `main.impl.carbon`

Carbon 语言 Main//default 默认库的文件类型演进:为何 main.carbon 取代 main.impl.carbon 【免费下载链接】carbon-lang Carbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see…

阅读更多 →
Agentic Engineering实战指南:从Demo到高可用生产的全套装备 2026/9/10 4:35:23

Agentic Engineering实战指南:从Demo到高可用生产的全套装备

在 AI 工程这个圈子里泡得久了,你会发现一个特别有意思的现象:很多团队都能在两周内做个惊艳的 Agent 演示,但一问到线上跑多久了、有没有出过事故、一天烧多少钱,场面立刻安静下来。我自己的 2000 小时 Agentic Engineering 实战…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞