Skip to main content
运行时能力(Runtime Capability)是插件与 Xpert 宿主服务之间的类型安全边界。插件无需导入宿主实现类或重复搭建基础设施,即可使用工作区文件、知识库、产物、沙箱任务、操作者令牌和项目预配等平台能力。 本页涉及的公共类型和能力键均由 @xpert-ai/plugin-sdk 导出。

能力模型

能力键是一个冻结对象,包含稳定 ID、说明和仅用于 TypeScript 推导的 API 类型:
请使用 SDK 导出的能力键对象,不要直接使用字符串。能力键既能让 get()require() 推导出准确 API 类型,也能让宿主与动态加载的插件通过稳定 ID 对齐同一份契约。 能力注册表提供四个操作:

在智能体中间件中解析能力

智能体中间件可通过 context.runtime.capabilities 访问当前执行范围内的能力注册表:
功能可以隐藏或降级时使用 get();只有在插件已确认该能力是当前操作的必要前提时,才使用 require()
能力注册表由宿主按执行上下文提供。能力方法仍会执行租户、组织、用户、工作区、项目和 Xpert 范围校验;调用者传入 ID 并不能绕过这些边界。

在 NestJS 服务提供器中解析能力

服务端插件的服务提供器可以注入平台能力注册表。若插件需要兼容尚未提供该能力的宿主版本,请将依赖声明为可选:
应在实际操作附近解析能力,以便准确报告可用性。不要跨请求缓存与用户或执行上下文绑定的结果。

运行时包中的能力

继续阅读详细参考:

定义能力与测试消费者

createRuntimeCapability<T>() 可为宿主或插件子系统创建类型化能力键。不要复用现有 platform.* ID 来承载不同契约。如果消费者不应注册实现,请使用只暴露 get() 的只读 RuntimeCapabilityResolver
单元测试可使用 DefaultRuntimeCapabilityRegistry 注册类型化模拟实现:
生产插件通常只消费平台能力键,其实现由宿主基础设施注册。对于可选能力,应同时测试“可用”和“不可用”两条路径。

兼容性规则

  • @xpert-ai/plugin-sdk 导入能力键和 API 类型,不要在插件中复制接口。
  • 将能力可用性视为运行时条件。插件安装成功,并不代表宿主服务、提供器、绑定或已注册沙箱操作一定就绪。
  • 在异步边界传递可移植引用和结构化 DTO,不要通过队列或持久化聊天元数据传递原始文件字节、持有者令牌、宿主路径或实现实例。
  • 将能力返回值限制在当前授权范围内;后续任务或回调应重新解析所需资源。