Hacker News 中文摘要

RSS订阅

展开Codex代理循环 -- Unrolling the Codex agent loop

文章摘要

OpenAI介绍了Codex CLI软件代理的核心机制,重点解析了其代理循环(agent loop)如何协调用户、模型和工具之间的交互,以实现高效可靠的软件修改。文章是系列首篇,后续将深入探讨Codex工作原理及实践经验,并提供了开源仓库链接供开发者参考细节。

文章总结

文章主要内容重述:

Codex CLI 代理循环解析

Codex CLI 是 OpenAI 推出的跨平台本地软件代理,旨在安全高效地生成高质量的软件变更。本文作为系列文章的首篇,深入探讨了 Codex 代理的核心逻辑——代理循环(agent loop),即协调用户、模型与工具间交互的核心机制。

代理循环的核心流程

  1. 输入处理

    • 用户输入被转化为模型的提示(prompt),包含文本指令。
    • 提示被转换为模型的输入令牌(tokens),通过推理(inference)生成输出令牌并转回文本。
  2. 工具调用与迭代

    • 模型可能直接返回最终响应,或请求调用工具(如执行 ls 命令)。
    • 若调用工具,代理将工具输出追加到原提示中,重新查询模型,直至模型返回最终用户消息(如“已添加 architecture.md”),标志循环终止。
  3. 上下文管理

    • 每次对话轮次(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 端点)、过细的事件类型描述。
  • 逻辑重组:按“流程-优化-实现”分层,提升可读性。

评论总结

以下是评论内容的总结,平衡呈现不同观点并保留关键引用:

  1. 对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)
  2. 性能与用户体验的对比

    • 高度评价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)
  3. 技术实现讨论

    • 关注推理令牌的持久性问题:"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)
  4. 功能需求与改进建议

    • 强烈要求检查点功能:"What I really want from Codex is checkpoints ala Copilot"(coffeeaddict1)
    • 赞赏开源和沟通:"Their communication is exceptional...Eric Traut is all over the issues"(postalcoder)
  5. 工具使用体验

    • 负面评价其他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)