Appearance
Rollout 控制代理的执行策略,包括迭代次数限制、终止条件和完整的执行轨迹记录。
为什么需要 Rollout
Agent Loop 如果不加控制,可能陷入无限循环(如反复尝试修复一个无法修复的错误)。Rollout 提供执行策略层,限制单次 turn 的最大迭代次数,控制代理行为的边界。同时,RolloutRecorder 记录完整的执行轨迹,用于调试、回放和分析代理行为。
核心原理
- 迭代控制:
max_turns参数限制单个 turn 内的工具调用轮次,防止无限循环 - 轨迹记录:
RolloutRecorder记录每一步的模型输入/输出、工具调用和执行结果,持久化到磁盘 - 会话恢复:通过
Cursor(会话位置)和SessionMeta(会话元数据),支持从任意检查点恢复执行 - 多线程管理:
ThreadManager管理多个并发线程的创建、恢复、分叉和归档
在源码中的实现
codex-rs/core/src/rollout/—RolloutRecorder、RolloutRecorderParams、Cursor、SessionMetacodex-rs/core/src/thread_manager.rs—ThreadManager、NewThread、StartThreadOptions、ForkSnapshotcodex-rs/core/src/session/rollout_reconstruction.rs— 从 rollout 记录重建会话状态codex-rs/core/src/session/mod.rs— Session 集成 Rollout 控制