总体分层
Run / Project / Registry
│ compile + resolve + validate
▼
ExecutionPlan + Lock
│
▼
FastSim Application ───── Plugin Host
lifecycle / services scoped capabilities
│
▼
UniRoboSim
Provider → Session → World
│
▼
Isaac Lab / MuJoCo / PyBullet / Custom
编译边界
Run 描述这次运行选择什么,Project 描述去哪里解析组件,Registry 把稳定 URI 映射到版本化 Manifest 与后端资源。编译器在物理引擎启动前完成格式校验、组件解析、资源摘要验证、插件绑定和来源记录,输出深层不可变的 ExecutionPlan。
Lock 在此基础上固化准确版本、variant、资源 digest 与 plan digest。运行时只消费已编译结果,不在 step 过程中再次搜索文件或猜测作者意图。
应用运行时
FastSimApplication 是异步公共门面。它拥有 prepare、start、pause、resume、reset、stop 与 close 生命周期,并向调用者提供 scene、frames、geometry、kinematics、control、checkpoint、visualization 与 output 等能力。
后端世界由唯一权威边界拥有。CLI、Python、Server、TUI 或插件的请求都必须经过应用运行时,避免接口层绕过生命周期直接修改物理世界。
插件边界
插件通过 Manifest 与 Python entry point 被发现;只有 Run 明确选择的实例才会创建。Plugin Host 管理它们的生命周期,Service Broker 根据编译后的 binding 授予最小范围的服务。
插件得到的是受 generation、实例身份和权限约束的服务,而不是 UniRoboSim World 或后端原生 handle。安装插件不等于启用插件,声明角色也不等于自动获得所有服务。
UniRoboSim 与后端
UniRoboSim 统一场景、实体、状态、传感器与物理控制的可移植合同;具体 Provider 保留各引擎真实支持的能力。FastSim 选择 Provider 并消费能力报告,但不会假设所有后端行为完全相同。
因此“跨后端”表示上层结构和调用边界稳定,不表示物理、渲染、材料、流体或传感器结果逐位一致。
离线数据边界
Record 等插件在在线 Run 中生产输出;封口后的 FSR、Viewer 与训练格式导出属于离线数据平面。离线工具读取不可变产物,不拥有在线物理世界,也不参与控制权威。