Skip to content

插件清单详解 ​

清单是 Host 了解插件的唯一入口。它应该是多行、可读、可审查的 JSON,而不是压缩成一行。

一个完整示例 ​

{
  "id": "example.blog-model",
  "name": "Example Blog Model",
  "version": "1.0.0",
  "api_version": 1,
  "runtime": "executable",
  "commands": {
    "cl": "blog-model.exe",
    "g": "blog-model.exe",
    "d": "blog-model.exe"
  },
  "capabilities": [
    "project-model",
    "content",
    "pages"
  ],
  "permissions": [
    "project-read",
    "project-write"
  ]
}

字段解释 ​

id:稳定唯一的插件身份。name:显示名称。version:插件自己的版本。api_version:它支持的 luox 插件协议版本。runtime:插件如何运行。commands:命令到发布入口的映射。capabilities:插件提供的能力。permissions:插件需要的权限。

依赖和配置 schema 可以继续加入 dependencies、config_schema、assets、license、homepage 和 repository。增加字段时要保持向后兼容,破坏性变化应提升 api_version。

常见错误 ​

  • 把 package.json 当成 plugin.json:文件名和扫描规则要分开。
  • 命令入口写成开发机绝对路径:发布时路径应相对于插件目录。
  • 直接把 Rust trait object 放进 DLL 接口:原生边界只能使用稳定 C ABI。
  • 清单声明了 capability 却没有对应实现:加载时应尽早报错。
  • 多个插件注册同一命令:用户必须明确选择,不能依赖目录遍历顺序。

一切皆插件 · luox