Appearance
代理循环是 Codex 的核心执行引擎,负责接收用户指令、调用 LLM、解析响应、执行工具并循环迭代。
为什么需要 Agent Loop
LLM 本身只能生成文本,无法直接操作文件系统或执行命令。Agent Loop 将 LLM 的文本输出转化为实际操作,并在操作结果的基础上迭代,直到任务完成。这种"思考-行动-观察"的循环让 AI 代理能够完成复杂的多步骤编程任务。
Codex 的 Agent Loop 采用事件驱动的队列对架构(tx_sub/rx_event),支持异步并发操作和实时事件推送,使得 TUI、Exec、SDK 等不同界面层可以统一消费代理事件。
核心原理
- 队列对架构:
Codexstruct 通过Sender<Submission>接收操作、Receiver<Event>发送事件,实现完全异步的事件驱动模型 - 迭代执行:每次 LLM 响应可能包含工具调用,工具执行结果回传给 LLM 进行下一轮推理,直到模型不再调用工具
- 状态机管理:Agent 的状态(Idle → Streaming → ToolCall → Executing → Completed)由 Session 管理,确保状态转换的一致性
- 中断控制:
steer_input()允许用户在 turn 执行过程中插入新指令或中断操作
在源码中的实现
codex-rs/core/src/session/mod.rs(3404 行)—Codexstruct 定义,核心的spawn()、submit()、next_event()方法codex-rs/core/src/codex_thread.rs—CodexThread封装,提供submit()/next_event()高级 APIcodex-rs/core/src/client.rs(2254 行)—ModelClient和ModelClientSession,负责 LLM API 的流式调用codex-rs/core/src/session/turn.rs— Turn 执行逻辑,控制单次迭代的完整流程