Skip to content

代理循环是 Codex 的核心执行引擎,负责接收用户指令、调用 LLM、解析响应、执行工具并循环迭代。

为什么需要 Agent Loop

LLM 本身只能生成文本,无法直接操作文件系统或执行命令。Agent Loop 将 LLM 的文本输出转化为实际操作,并在操作结果的基础上迭代,直到任务完成。这种"思考-行动-观察"的循环让 AI 代理能够完成复杂的多步骤编程任务。

Codex 的 Agent Loop 采用事件驱动的队列对架构(tx_sub/rx_event),支持异步并发操作和实时事件推送,使得 TUI、Exec、SDK 等不同界面层可以统一消费代理事件。

核心原理

  1. 队列对架构Codex struct 通过 Sender<Submission> 接收操作、Receiver<Event> 发送事件,实现完全异步的事件驱动模型
  2. 迭代执行:每次 LLM 响应可能包含工具调用,工具执行结果回传给 LLM 进行下一轮推理,直到模型不再调用工具
  3. 状态机管理:Agent 的状态(Idle → Streaming → ToolCall → Executing → Completed)由 Session 管理,确保状态转换的一致性
  4. 中断控制steer_input() 允许用户在 turn 执行过程中插入新指令或中断操作

在源码中的实现

  • codex-rs/core/src/session/mod.rs(3404 行)— Codex struct 定义,核心的 spawn()submit()next_event() 方法
  • codex-rs/core/src/codex_thread.rsCodexThread 封装,提供 submit()/next_event() 高级 API
  • codex-rs/core/src/client.rs(2254 行)— ModelClientModelClientSession,负责 LLM API 的流式调用
  • codex-rs/core/src/session/turn.rs — Turn 执行逻辑,控制单次迭代的完整流程

相关概念