安装、选择与授权是三件事

  1. 安装包通过静态 Manifest 和 Python entry point 声明自己。
  2. Run 在 plugins 中选择一个具体实例。
  3. 编译器根据 Manifest、Run access 与部署上限计算最终 binding。

只有三步都成立,Plugin Host 才会创建实例并授予服务。已安装但未选择的插件不会被导入或启动。

四类角色

角色 典型插件 核心职责
control_producer Rule-based、Model、Teleop、Replay、Agent 读取授权状态并提交控制 Chunk
data_consumer Record、评价、监控 消费事件、观测和输出
extension 几何、运动学或项目能力 在稳定服务边界上增加功能
interface Server、TUI、Debug、MCP 把同一 Application 能力呈现给用户或外部系统

一个插件可有多个角色,但权限仍按服务逐项计算。

范围化服务

常见服务包括 scenario.read、scene、frames、planning geometry、kinematics、observations、control.targets、control、visualization、artifact/output 与 run info。服务对象绑定到插件实例和 generation,并可在生命周期结束时撤销。

为什么不暴露后端对象

若插件直接持有 Isaac Lab 或 MuJoCo 对象,它就能绕过 pause、reset、记录、权限与控制仲裁,也无法跨后端工作。FastSim 只允许后端特有行为通过明确的 Provider 能力或独立扩展合同出现。

插件不是页面开关

TUI、Server 等接口插件仍是完整运行时参与者,需要声明生命周期和访问范围。独立 Web Client 通过 Server 公共协议工作,不直接导入仿真 SDK。

现有软件包见官方插件目录