Project 定义解析环境
项目根目录中的 .fastsim/project.yaml 声明 Registry、可信资源根、缓存、离线模式、已安装包发现与部署能力上限。CLI 从 Run 所在目录向父目录寻找这个准确文件,不递归扫描整个工作区。
Project 回答“允许从哪里解析”,Run 回答“本次选择什么”。两者分开后,同一个 Run 可以在受控部署环境中复现,而无需嵌入机器私有路径。
Registry 映射稳定身份
Registry index 将 component identity 映射到版本化 Manifest release,并明确默认 stable 版本。没有版本的 URI 只使用 Registry 指定的 stable;相同身份和版本出现不同内容时必须失败,不能采用“先找到的文件”。
Manifest 描述一个 release
Manifest 声明组件 kind、参数 schema、语义信息、后端 variants、资源摘要和能力需求。编译器校验 URI scheme 与放置位置,例如 robot 不能作为普通 object 静默加载。
常见 kind 包括 environment、object、articulation、robot、deformable、fluid、sensor、light、scenario 与 plugin。具体后端资源属于 variant,不改变组件稳定身份。
资源与来源
资源可以来自项目 Registry、固定远程 Registry 或已安装包。进入 Plan 之前必须落到受信任根或受控缓存,并记录 release、variant 和 digest。运行时不重新选择资源。
设计收益
- 项目作者写稳定 URI,不承担目录布局与版本选择细节。
- 资产维护者可以增加后端 variant,而不修改使用方 Run。
- 编译器可以在启动物理引擎前给出冲突、kind mismatch 和资源完整性诊断。
- Lock 能准确记录解析结果。
实际文件组织见组织组件与资产。