在线生产与离线消费
Record 作为 data consumer 获取已授权的状态、事件、控制与媒体。它不阻塞物理权威线程来完成昂贵编码,也不直接读取后端私有缓冲区。每个通道应携带 run、generation、tick/时间与必要校准信息。
输出先写入 staging,完成结构与完整性校验后再原子发布。失败、取消或磁盘错误不得留下看似完整的正式目录;终结状态应说明哪些通道成功、失败或被省略。
Replay 读取已封口输入,并作为受控来源恢复状态或提交控制。它仍受生命周期、generation、目标发现和控制仲裁约束,不通过私有后端 API 绕过 Runtime。
Core CLI 提供受边界限制的输出发现、检查和清理能力。输出根必须是明确可信路径;清理操作不得扩展到项目根或用户目录。
Viewer 和导出器只读取不可变数据产物。可视化、训练数据导出或分析失败不应改变原始 FSR。格式转换需要记录源 digest、工具版本、字段映射与结果验证。
相关信息按用途分布在以下页面:
在线路径必须服从实时预算、generation 与 Run 终结;离线路径面向已封口文件,可以重试、并行和重新计算。把编码、格式转换或训练集导出全部塞进物理 callback,会同时破坏实时性与失败隔离。
Record 与事务发布
先确定需要的通道、频率、编码和是否为 required。数值状态、控制、事件、相机与校准具有不同体积和丢失语义;“全部录制”不是无需成本的安全默认。相机编码应在 writer worker 中进行,物理线程只发布有界数据。
Record 是 data_consumer,不拥有仿真控制权。安装包只有在 Run 明确启用 plugin://fastsim/record 后才产生开销;它通过授权服务消费便携数据,不读取 Provider 私有缓冲。
事务发布的检查点。 写入端取得私有 staging lease,完成并关闭准确 writer;Core seal 文件身份与尺寸;Validator 通过 readback lease 检查 FSR Container、Manifest、Footer、Index 和 Record Inventory;确认回执后 commit 执行同步与原子发布。
默认 structural 模式验证结构、inode/link/size 与已校验字节;部署威胁需要检测等长字节篡改时使用 SHA-256 模式。两者都要求关闭 lease、结构有效与原子发布,严格摘要不是对其他门禁的替代。
Stop、Close 与 Terminal Cut。 用户请求停止后,Runtime 先阻止新工作并建立终结语义切面。Record 必须消费完切面内所有 required 数据源、flush writer、验证并提交,最终把 finalizer 结果返回 Core。只有这些步骤完成,Run 才能报告相应终态与正式输出。
进程被强杀、磁盘耗尽或 Validator 失败时不能把 staging 改名成正式 FSR。保留的 incomplete 证据需要明确状态与有界清理策略。
Replay 与离线派生产物
Replay 读取封口数据后,作为受控来源把状态或命令带回当前 Application。它需要验证源格式、通道、时间和目标映射,并服从新 Run 的 generation、control targets 与 authority。Replay 不是“把后端状态数组直接写回去”的旁路。
跨 Provider 回放时,稳定实体/joint/frame 与单位是可迁移基础;物理轨迹逐帧相等并不是自动保证。应分别记录解析、映射、控制接纳和可见结果。
离线派生产物。 Viewer cache、视频、LeRobot/RLDS/robomimic/Zarr 等导出和分析结果都应记录源 FSR digest、工具/格式版本、字段映射、排除项与 reopen 验证。失败可以重跑,但不得修改源 FSR。
容量、背压与验收
为每类通道设定有界队列和过载策略。critical 控制/生命周期事件通常需要无损或明确失败;预览画面可以 latest-only;高频状态可按 tick 原子聚合。任何丢失都应有 gap/计数证据,不能默默表现为时间轴自然变稀。
最终至少验证:FSR 结构与 Inventory;run ID/plan digest/generation;通道计数和时间单调性;控制与状态关联;相机 shape/编码/校准;终态与 finalizer;源文件只读;派生格式可由其原生库重新打开。