发布插件
在 monorepo 根目录执行:使用插件
在 Xpert AI 宿主系统中,通过环境变量PLUGINS 来声明启用的插件列表。多个插件用逗号分隔:
PLUGINS 环境变量并按顺序加载这些插件。
注意事项:
- 宿主项目通过 npm/yarn/pnpm 安装(
npm install @xpert-ai/my-plugin) 环境变量中配置插件包列表。 - 插件的
meta.name必须与 npm package name 保持一致。 - 如果插件未能正确加载,请检查日志中是否有
register或onPluginBootstrap的输出。 - 在启动XpertAI系统后在系统设置插件页面中查看已加载的插件列表。
安装 Scope
已安装插件都有明确的 level 和 scope。Level 决定能力及生命周期,scope 决定安装位置:
这里的 tenant level 不只是把普通插件安装到 tenant-global scope。它表示插件可以注册 Controller、TypeORM Entity 和进程级 Provider 等 system-level 技术能力,但产品归属和访问边界只限一个 tenant。
安装 Tenant-level 插件
安装前确认插件运行时meta 与 package.json 都声明了相同的 level 和命名空间:
- 使用目标 tenant 的 Super Admin 登录。
- 进入 tenant 管理作用域的插件页面并安装插件包。
- 安装成功后按照页面提示重启 API 服务。
- 重启后回到目标 tenant,确认插件状态、配置、工作台和 API 可用。
- 切换到另一个 tenant,确认插件列表和业务入口不可见;直接访问插件 API 应返回无权访问。
- 同名插件只能归属于一个 tenant,不能在另一个 tenant 再安装一份。
- 安装与更新只暂存制品,重启 API 后才会装载新的 Controller、Entity 和 Provider。
- 卸载先停用持久化注册,重启 API 后才完成运行时卸载。
- 已锁定到某个 tenant 的插件配置只能由该 tenant 的 Super Admin 管理。
artifactNamespace必须稳定,避免表名、路由和注册表标识与其他进程级插件冲突。
从 System Level 迁移到 Tenant Level
不能在旧 system 注册仍生效时直接把同一插件改成 tenant level,否则两份进程级模块可能同时注册。正确迁移顺序是:- 在 Default tenant 中由 Super Admin 卸载旧的 system 插件。
- 重启 API,确认旧运行时模块已经卸载。
- 发布或准备声明
level = 'tenant'的新插件版本。 - 使用目标 tenant 的 Super Admin 安装新版本。
- 再次重启 API,完成 tenant-level 插件激活。
- 在目标 tenant 验证业务数据和配置,并执行一次跨 tenant 隔离检查。
初始化插件资源
插件被宿主加载后,不只是“启用”这么简单,还可以把插件包内声明的资源初始化到对应运行时目标中。 在系统设置的插件页里,已安装插件卡片上会提供资源初始化入口。点击后会打开资源初始化弹窗,宿主会实时读取当前插件包中的资源定义,而不是依赖一份静态缓存列表。 资源目标分两类:- Workspace:初始化到工作空间,可用于
Skills、MCP和Apps - Xpert:初始化到已有的 Xpert,可用于
Hooks
- 已初始化的资源会显示为已安装,不能重复选择
- 插件包内容更新后,若资源定义发生变化,系统会提示可更新状态
assets/只作为包元数据和展示内容,不作为可初始化资源