乐于分享
好东西不私藏

三种AI编码Agent,三种循环哲学,你的代码在用哪种方式写?

三种AI编码Agent,三种循环哲学,你的代码在用哪种方式写?
当所有 AI 编码 Agent 都能读代码、想方案、写代码、跑测试的时候,真正区分它们的东西已经不是能力,而是循环的设计。
2025 年起,Claude Code、OpenAI Codex CLI 相继面世,市面上有不少 AI 编码 Agent 方案。表面看都能干活,但循环结构才是真正区分它们的地方。就像同样是发动机,二冲程、四冲程、转子引擎的特性完全不同。
循环工程(Loop Engineering)不是指代码里的 for/while 语句,而是 Agent 感知→推理→行动→观察这个闭环的整体设计哲学。它涵盖循环的触发条件(什么时候走下一圈)、退出机制(什么时候停下来)、信息密度(每步消耗多少 token)、状态管理(上下文怎么继承)。

01

think() 先想清楚再动手
Anthropic 在 Claude Code 里把推理抽象成一个独立工具 think()。
普通 Agent 的循环是:用户输入 → 工具调用 → 观察 → 工具调用 → ... → 输出。
Claude Code 的循环是:用户输入 → think() → 工具调用 → 观察 → think() → 工具调用 → ... → 输出。
think() 把推理和执行在 token 层面隔离开了。推理步不消耗工具调用额度,纯靠模型内部思考;执行步才调用工具。双环设计:内环(think)负责推理规划纠偏,每次工具调用前执行;外环(tool)负责执行读取观察,按需调用。
设计意图是让模型在执行之前先想清楚。token 比工具副作用便宜,与其执行错了再回滚,不如先推演再动手。Anthropic 在 τ-Bench 测试中验证了这一点:加入 think 工具后,客服场景的任务成功率有显著提升。代价是简单任务上 token 浪费,补偿机制是 think() 输出不带到下一轮对话,用短暂 memory 换效率。

02

所有工具平级排列的扁平哲学
OpenAI 的 Codex CLI 不分推理环和执行环,所有工具平级排列。
Codex 的循环是:用户输入 → {read | write | edit | search | run} → 观察 → {read | write | ...} → 观察 → 输出。
没有 think(),没有 plan()。推理发生在每次工具调用前的隐式 token 预测中,模型边推理边决定下一步动作。
Codex 用 token budget 控制复杂度:可配置的 tool call 上限、失败时的指数退避重试、上下文溢出时的上下文压缩(Context Compaction)机制。不是直接截断,是先压缩后继续。
扁平大环适合快速迭代。缺乏独立推理步让它在高风险修改场景下更容易犯错,但日常编码差距很小。

03

三阶段环:生成之后必须审查
我基于原子智能体手搓的 CodeAgent 走了第三条路:按阶段划分循环,阶段内线性执行,阶段间反馈闭环。(见公众号上篇文章)
核心结构:think() → implement() → review()。
第一阶段设计,think() 输出计划假设和简化方案,DeepSeek V4 配温度 0.2。第二阶段生成,implement() 写代码,同模型配温度 0.3。第三阶段审查,review() 做静态评分加问题列表,用本地 ornith:latest 配温度 0.4。
评分低于 70 分时,审查反馈喂回 implement() 修正。
三个关键设计决策决定了性格。审查用本地模型,生成用云端模型,审查成本为零。静态测试生成用 ast.parse(0.001 秒),不依赖 LLM。最大 3 次迭代,不是无限循环。单次 implement() 初始评分 45-60,一轮审查修复后升到 65-78,第二轮提升掉到 5 分以下。3 轮是收益递减拐点。代码审查的边际收益曲线陡峭下降,第一轮发现约 70% 问题,第二轮约 20%,第三轮以后只剩 10%。3 轮不是保守,是务实。

04

三种循环的深层差异
Claude Code 双环,推理执行分开,推演先行。核心假设是推理比执行便宜。对应结构化方法:先设计后编码。
Codex CLI 扁平大环,推理在 token 流内隐式完成,执行试错。核心假设是强模型不需要显式推理。对应敏捷式开发,快速迭代,持续反馈。
CodeAgent 三阶段环,设计生成审查各司其职,审查驱动。核心假设是生成质量依赖审查反馈而非模型一次猜对。对应代码审查式工程:写完必须 review。
没有绝对优劣。高风险重构适合 Claude Code,探索编码适合 Codex,生产交付审查适合 CodeAgent。

05

循环工程的核心设计考量
无限循环的边际效用递减是实证规律。三种熔断答案:Claude Code 交互模式无显式上限,Codex 用可配置 tool call 上限,CodeAgent 用 3 轮迭代。四种熔断条件:质量熔断、退火熔断、方向熔断、token 预算熔断。
上下文管理是三系统最大分歧。Claude Code 靠 think() 压缩推理;Codex 用上下文压缩(Context Compaction);CodeAgent 靠阶段隔离。理想是三级分层:L1 全局(全会话携带),L2 当前循环(本阶段内携带),L3 瞬时(摘要后丢弃)。三个系统各覆盖一部分,没有一个完整实现。
模型分工是 CodeAgent 独有的探索。强推理做架构,中等推理做生成,本地模型做审查,规则引擎做测试。不单纯是省 token,而是工具归工具、推理归推理。
人机循环的接入点三个系统目前都没做好。应该提供三个介入点:执行前确认方向、自动修复失败时人工判断、最终输出前逐行审查。连续多次修复同一问题未解决就暂停等人类决策。
循环的价值不在于跑了多少圈,而在于恰好在需要的时候停下来。见过 40 次 tool call 的 runaway agent 以后你会明白,让 Agent 跑得快不稀缺,让 Agent 知道什么时间该停才是稀缺的,这可能是循环工程的下一个前沿。