OpenAI工程师迈克尔·博林日前发布了该公司CodexCLI编程智能体内部工作机制的详细技术解析,为开发者深入了解这类能够编写代码、运行测试并修复Bug的AI编程工具提供了宝贵洞察。这一技术披露补充了我们此前关于AI智能体工作原理的报道,详细揭示了OpenAI如何实现其"智能体循环"机制。
AI编程智能体正在经历类似"ChatGPT时刻"的突破,Claude Code配合Opus 4.5以及Codex配合GPT-5.2已经在快速编写原型、界面和生成样板代码方面达到了全新的实用水平。OpenAI此时发布Codex设计理念的详细信息,正值AI智能体成为日常工作中更加实用的工具之际。
这些工具并非完美无缺,在一些软件开发者中仍存在争议。虽然OpenAI此前向Ars Technica透露,他们使用Codex作为编程工具来帮助开发Codex产品本身,但我们通过实际体验发现,这些工具在简单任务上表现惊人的快速,但在超出训练数据范围时仍显脆弱,在生产环境工作中需要人工监督。项目的大致框架往往能快速生成且效果令人惊叹,但填充细节则涉及繁琐的调试和解决智能体无法独立克服的局限性。
博林的文章并未回避这些工程挑战。他讨论了提示词二次方增长的低效性、缓存未命中导致的性能问题,以及团队发现并修复的Bug(比如MCP工具枚举不一致的问题)。
这种技术细节的透明度对OpenAI来说颇为罕见,该公司此前并未发布过ChatGPT等其他产品内部工作机制的类似详细分析。但我们已经在12月的采访中看到OpenAI对Codex的不同态度,他们指出编程任务似乎非常适合大语言模型处理。
值得注意的是,OpenAI和Anthropic都在GitHub上开源了他们的编程CLI客户端,允许开发者直接检查实现代码,而他们并未对ChatGPT或Claude网页界面采取同样做法。
智能体循环的官方内幕解析
博林的文章重点关注他所称的"智能体循环",这是协调用户、AI模型以及模型调用执行编程工作的软件工具之间交互的核心逻辑。
正如我们在12月的报道中所述,每个AI智能体的核心都是一个重复循环。智能体接收用户输入并为模型准备文本提示词。随后模型生成响应,要么为用户产生最终答案,要么请求工具调用(如执行shell命令或读取文件)。如果模型请求工具调用,智能体会执行该操作,将输出追加到原始提示词中,并再次查询模型。这个过程重复进行,直到模型停止请求工具并为用户生成助手消息。
这个循环过程需要一个起点,博林的文章揭示了Codex如何构建发送给OpenAI响应API(负责处理模型推理)的初始提示词。提示词由几个组件构建而成,每个组件都有指定的角色来确定其优先级:系统、开发者、用户或助手。
指令字段来自用户指定的配置文件或CLI捆绑的基础指令。工具字段定义模型可以调用的功能,包括shell命令、规划工具、网络搜索功能,以及通过模型上下文协议(MCP)服务器提供的任何自定义工具。输入字段包含一系列描述沙盒权限、可选开发者指令、当前工作目录等环境上下文以及用户实际消息的项目。
随着对话继续,每个新回合都包含之前消息和工具调用的完整历史记录。这意味着提示词随着每次交互而增长,这带来了性能影响。根据文章描述,由于Codex不使用可选的"previous_response_id"参数(该参数允许API引用存储的对话状态),每个请求都是完全无状态的(即每次API调用都发送完整的对话历史,而不是服务器从内存中检索)。博林表示,这种设计选择为API提供商简化了操作,并使支持选择"零数据保留"(OpenAI不存储用户数据)的客户变得更容易。
对话中提示词的二次方增长虽然低效,但博林解释说提示词缓存在一定程度上缓解了这个问题。缓存命中仅适用于提示词内的精确前缀匹配,这意味着Codex必须小心避免可能导致缓存未命中的操作。在对话中途更改可用工具、切换模型或修改沙盒配置都可能使缓存失效并影响性能。
不断增长的提示词长度与上下文窗口直接相关,后者限制了AI模型在单次推理调用中能处理的文本量。博林写道,当Token计数超过阈值时,Codex会自动压缩对话,就像Claude Code一样。早期版本的Codex需要通过斜杠命令手动压缩,但当前系统使用专门的API端点来压缩上下文,同时通过加密内容项保留模型对所发生事件"理解"的摘要部分。
博林表示,他系列文章的后续部分将涵盖CLI架构、工具实现细节以及Codex的沙盒模型。
Q&A
Q1:什么是Codex CLI编程智能体?它有什么功能?
A:Codex CLI是OpenAI开发的AI编程智能体,能够编写代码、运行测试并修复Bug。它通过"智能体循环"机制与用户、AI模型和软件工具协调交互,可以快速生成原型、界面和样板代码,但需要人工监督来处理复杂任务和生产环境工作。
Q2:AI编程智能体的"智能体循环"是如何工作的?
A:智能体循环是一个重复过程:接收用户输入并准备提示词,模型生成响应或请求工具调用,如果需要工具调用就执行并将结果追加到提示词中再次查询模型,这个过程持续进行直到模型产生最终答案。每次交互都包含完整的对话历史。
Q3:Codex在使用过程中有什么技术局限性?
A:主要局限包括提示词随对话增长导致的性能问题、缓存未命中影响效率、在超出训练数据范围时表现脆弱。虽然能快速处理简单任务,但填充细节时需要繁琐调试,且无法独立克服某些技术限制,仍需人工监督。
下一篇:没有了