文章摘要
OpenAI介绍了Codex CLI软件代理的核心机制,重点解析了其代理循环(agent loop)如何协调用户、模型和工具之间的交互,以实现高效可靠的软件修改。文章是系列首篇,后续将深入探讨Codex工作原理及实践经验,并提供了开源仓库链接供开发者参考细节。
文章总结
文章主要内容重述:
Codex CLI 代理循环解析
Codex CLI 是 OpenAI 推出的跨平台本地软件代理,旨在安全高效地生成高质量的软件变更。本文作为系列文章的首篇,深入探讨了 Codex 代理的核心逻辑——代理循环(agent loop),即协调用户、模型与工具间交互的核心机制。
代理循环的核心流程
输入处理
- 用户输入被转化为模型的提示(prompt),包含文本指令。
- 提示被转换为模型的输入令牌(tokens),通过推理(inference)生成输出令牌并转回文本。
工具调用与迭代
- 模型可能直接返回最终响应,或请求调用工具(如执行
ls命令)。 - 若调用工具,代理将工具输出追加到原提示中,重新查询模型,直至模型返回最终用户消息(如“已添加
architecture.md”),标志循环终止。
- 模型可能直接返回最终响应,或请求调用工具(如执行
上下文管理
- 每次对话轮次(turn)会累积历史记录,导致提示长度增长。
- 代理需管理模型的上下文窗口(最大令牌数限制),通过自动压缩(compaction)技术(如调用
/responses/compact端点)优化长对话性能。
性能优化关键
- 提示缓存:通过静态内容前置(如指令)和动态内容后置(如用户输入)最大化缓存命中率,避免重复计算。
- 无状态设计:Codex 未使用
previous_response_id参数,以支持零数据保留(ZDR)配置,确保请求独立性。 - 工具调用一致性:工具列表的变动(如 MCP 工具动态更新)可能导致缓存失效,需谨慎处理。
技术实现细节
- 模型推理:通过 HTTP 请求调用 Responses API,支持多种认证方式(如 ChatGPT 登录、API 密钥、本地 OSS 模型)。
- 提示结构:包含系统消息、工具定义、用户输入等,按角色(
system>developer>user>assistant)优先级排序。 - 流式处理:使用 Server-Sent Events (SSE) 实时接收模型响应,支持动态更新。
后续内容预告
未来文章将探讨 Codex CLI 的架构设计、工具调用实现细节,以及沙盒安全模型等进阶主题。
精简说明:
- 保留重点:核心代理循环流程、性能优化策略(缓存与压缩)、技术实现(API 调用与提示结构)。
- 删减冗余:移除重复的代码库链接、部分技术参数(如具体 HTTP 端点)、过细的事件类型描述。
- 逻辑重组:按“流程-优化-实现”分层,提升可读性。
评论总结
以下是评论内容的总结,平衡呈现不同观点并保留关键引用:
对Codex CLI价值的认可
- 认为内容虽无惊人之处但仍有价值,建议改进历史记录查询功能:"I wish it was easier/native to reflect on the loop and/or histories"(mkw5053)
- 赞赏其"learning by doing"的类人学习方式:"The best part is how the program acts like a human who is learning by doing"(dfajgljsldkjag)
性能与用户体验的对比
- 高度评价Codex CLI的性能和用户体验:"It's performance is quite literally insane, its UX is completely seamless"(written-beyond)
- 但Amp用户指出速度问题:"Amp finishes the task in the time it takes Codex to build context"(tecoholic)
技术实现讨论
- 关注推理令牌的持久性问题:"reasoning tokens persist during the agent tool call loop, but are discarded after every user turn"(jumploops)
- 对压缩技术的兴趣:"compaction is done using an encrypted message that preserves the model's latent understanding"(westoncb)
功能需求与改进建议
- 强烈要求检查点功能:"What I really want from Codex is checkpoints ala Copilot"(coffeeaddict1)
- 赞赏开源和沟通:"Their communication is exceptional...Eric Traut is all over the issues"(postalcoder)
工具使用体验
- 负面评价其他CLI工具:"Gemini cli just randomly breaks and starts spamming content"(written-beyond)
- Claude用户遭遇内容拦截的趣事:"I asked Claude to summarize the article and it was blocked haha"(ppeetteerr)