← Knowledge Atlas · Source
Unrolling the Codex Agent Loop
Codex agent loop 内部机制:prompt 构建、推理流程、prompt caching、compaction
源
Unrolling the Codex Agent Loop
The loop is driven by model tool calls — a turn ends on an assistant message
1System messageserver-controlled
2Instructionsgpt-5.2-codex_prompt.md
3ToolsCodex built-ins + Responses API + MCP
4Developer messagesandbox permissions · approval modes
5User instructionsAGENTS.md hierarchical merge · skills
6Env contextcwd · shell
7User messagethis turn’s input
Prompt CachingEach request is an exact prefix of the next — O(n²) sampling cost → O(n). Cache-breakers: change tools · swap model · alter sandbox. MCP tools/list_changed is especially tricky.
→ implicit-loop-architecture · codex · context-management · prompt-cachingopenai.com/index
Unrolling the Codex Agent Loop
- 来源:
sources/openai_official/unrolling-codex-agent-loop.md - URL: https://openai.com/index/unrolling-the-codex-agent-loop/
- 作者: OpenAI Codex Team
概述
本文详细拆解 Codex 的 agent loop 内部机制——prompt 构建、推理流程、工具调用循环、性能优化和上下文管理。是理解 隐式循环架构 工程实现的核心参考。
Agent Loop 详解
循环机制
- 用户输入 → 构建 prompt → 发送到 Responses API
- 模型返回:final response(结束 turn)或 tool call(继续循环)
- Tool call → 执行 → 输出追加到 prompt → 重新查询模型
- 重复直到模型产出 assistant message(turn 结束信号)
Prompt 构建
按优先级递减排列:
- System message(由 server 控制)
- Instructions(model-specific,如
gpt-5.2-codex_prompt.md) - Tools(Codex 内建 + Responses API + MCP 工具)
- Developer message(sandbox 权限、审批模式)
- User instructions(AGENTS.md 层级聚合 + skills 元数据)
- Environment context(cwd、shell)
- User message
Prompt Caching
关键性能优化:后续请求的 prompt 是前序请求的精确前缀,使得 prompt caching 可以将采样成本从二次方降为线性。破坏 cache 的操作:改 tools 列表、切换模型、改 sandbox 配置。MCP 工具尤其棘手——notifications/tools/list_changed 会导致中间 cache miss。
Compaction
演进过程:
- 手动
/compact→ 用 LLM 总结对话 → 替换 input - Responses API
/responses/compact端点 → 更高效,包含type=compaction+encrypted_content保留模型对原始对话的潜在理解 - 自动触发:超过
auto_compact_limit时自动调用
与 Anthropic SDK 的对比
两者都采用 隐式循环架构,但实现细节不同:
- Codex:Responses API + SSE 流 + stateless(支持 ZDR)
- Claude Agent SDK:Messages API + compaction 内建
- 共同点:循环由模型 tool call 驱动,以 assistant message 结束
References
sources/openai_official/unrolling-codex-agent-loop.md