这个案例把便于人工编写的 run.yaml 生成内容寻址锁文件,然后校验锁,
并证明通过锁重新编译得到的是同一个 ExecutionPlan。
锁文件保护什么
Run lock 会记录完全解析后的计划、选中的组件版本、资源位置和 SHA-256。
当一次成功实验需要在之后复现时,应当使用锁文件。若 run.yaml、组件选择
或资产内容发生变化,校验会明确失败,而不是悄悄运行另一套内容。
锁文件是生成物,不应手工编辑。
前置条件
- Python 3.11 或 3.12
- FastSim
0.1.0a6 - 本案例不会启动仿真器
在当前目录执行:
bash
python main.py
预期包含:
text
Valid: True
Same plan: True
生成文件位于 output/run.lock.yaml,output/ 已被 Git 忽略。
代码流程
python
project = load_project(RUN_FILE)
向上找到 .fastsim/project.yaml,从而得到受信任的 demo registry。
python
compiler = project.compiler()
compiled = compiler.compile_file(RUN_FILE)
把可读配置解析成不可变执行计划。
python
compiled.write_lock(LOCK_FILE)
原子地写入计划和资源完整性信息。
python
verification = compiler.verify_lock(LOCK_FILE)
检查锁结构、计划摘要以及全部本地资源。
python
locked = compiler.compile_locked(RUN_FILE, LOCK_FILE)
只有当前配置仍与锁完全一致时,才返回编译结果。
等价 CLI 命令如下:
bash
fastsim config lock run.yaml --output output/run.lock.yaml
fastsim config verify-lock output/run.lock.yaml
fastsim run run.yaml --lock output/run.lock.yaml --duration 3
最后一条命令会启动 Isaac Lab,因此需要匹配版本的后端 adapter。Python 案例只验证可复现性,不承担仿真器启动开销。
验证等级
自动验证 Python 编译、Run 编译、锁写入、资源完整性校验和锁定重编译; 不依赖原生仿真器。
下一步:12 · 同步生命周期 API。