Skip to content
Go back

Claude Code vs Codex:两种 Agent 编排哲学

Claude Code vs Codex:两种 Agent 编排哲学

一句话结论

市面上常把「Claude Code」和「Codex」对立成「本地可编程 vs 云端黑盒」——这是错的。两者的 CLI 都是运行在本地的 coding agent,而且都支持 Skill、Hook、MCP、AGENTS.md、memory 这一整套可编程机制。 真正的差异在三个地方:实现栈(TypeScript/Bun vs Rust)、执行模型(Claude Code 全程本地,Codex 能把子任务丢到云端沙箱并行跑)、以及集成深度(Claude Code 有 IDE Bridge + 企业权限体系,Codex 主打多模型 provider)。理解这三个差异,才不会被「谁更强」这种伪问题带偏。


一、先澄清一个常见误解:Codex 到底指哪个

「Codex」这个词对应至少四个产品,很多对比文章把它们混为一谈:

产品是什么在哪
Codex CLI本地 coding agent(openai/codex 仓库,Rust 写的 codex-rs你本机
Codex Web云端 agentchatgpt.com/codex
Codex App桌面应用(codex app桌面
Codex in IDEVS Code / Cursor / Windsurf 里的 Codex编辑器

和 Claude Code 对比的是「Codex CLI」(本地那个),不是 Codex Web。Codex CLI 的 README 原话就是 “a coding agent from OpenAI that runs locally on your computer”。所以「Codex = 云端黑盒」这个印象,其实是把 Codex Web 张冠李戴到了 Codex CLI 头上。

💭 思考:为什么这篇要先花一整节澄清「Codex 到底指哪个」?—— 因为「对比」这个动作的前提是双方处于同一类。如果对比对象是 Codex Web(云端 agent),那「本地 vs 云端」的结论成立,但这句结论套到 Codex CLI(本地 coding agent)头上就是错的。这个错误有实际代价:它会把你导向「要可编程就选 Claude Code、要云端就选 Codex」这种错误选型。所以先对齐「在比哪个 Codex」,不是咬文嚼字,而是让后面的差异(实现栈、执行模型、集成深度)建立在同一基准上——否则「谁更强」从一开始就比错了对象。


二、Claude Code:TypeScript 写的本地全能 agent

从恢复的客户端源码(约 51 万行,来自 @anthropic-ai/claude-code 的 source map)能看出它的完整骨架:

一句话:Claude Code 是一个用 TypeScript/Bun 写成的、深度集成本地环境与 IDE 的 agent runtime,扩展点(skill/hook/subagent/MCP)是它的公开能力。


三、Codex CLI:Rust 写的本地 agent + 云端沙箱并行

Codex CLI 的 codex-rs 是一个 Rust workspace,从目录结构能看出它的设计重心:

一句话:Codex CLI 是一个 Rust 写成的本地 agent,它的杀手锏是「云端沙箱 + 并行 delegation + 多模型」,而不是「可编程性」(可编程性它也有)。

💭 思考:为什么 Codex 的杀手锏落在「云端沙箱 + 并行 delegation」,而不是可编程性?—— 从「它押注的约束」反推:Codex 的差异化能力在 cloud-taskscodex_delegatesandboxing 这些目录里,它们解决的是同一个问题——「一次改几十个文件、跑一堆测试」这种吞吐密集型任务。这类任务的瓶颈不在「规则多、要模型读懂」,而在「循环够不够鲁棒、能不能无人值守并行跑完」。所以它把子任务派出去后强制 never 审批、把执行丢进隔离沙箱,人只守在验收端。可编程性(skill/hook/MCP)它也全有,但那不是它要和你比的地方——比可编程性,两者打平;比并行吞吐,它才有独门。


四、真正的差异:不是「可编程 vs 黑盒」

把两边拆开对齐后,差异集中在三点:

维度Claude CodeCodex CLI
实现栈TypeScript + Bun + React/InkRust + 自定义 TUI
执行模型全程本地;subagent 在同机隔离上下文可把子任务丢到云端沙箱并行跑(cloud-tasks)
模型绑定主打 Anthropic 自家模型多模型:OpenAI + 本地(Ollama/LM Studio)
集成深度IDE Bridge + 企业权限/策略/同步GitHub/IDE + 桌面 app
扩展机制Skill / Hook / Subagent / MCPSkill / Hook / MCP / AGENTS.md / memory

三个最值得记住的判断:

  1. 可编程性两者打平。 skill、hook、MCP、memory 这些,双方都有。所以「Claude Code 可编程、Codex 是黑盒」这个说法站不住。
  2. Codex 的独门是「云端沙箱并行」。 它能 codex_delegate 把任务拆出去、丢到云端沙箱并行执行——这适合「一次改几十个文件、跑一堆测试」这种能并行的活。Claude Code 的 subagent 主要是在同机、同账号下做上下文隔离,没有这种「真·云端并行任务」。
  3. Claude Code 的独门是「本地 + IDE + 企业」深度。 Bridge 接 IDE、权限体系、策略限制、团队同步,这些是它作为「面向企业开发者的一体化工具」的护城河。

💭 思考:为什么「可编程性打平」这个结论比「谁更强」更重要?—— 因为它拆掉了一个伪问题。很多人问「Claude Code 和 Codex 谁更可编程」,但双方都支持 skill/hook/MCP/AGENTS.md/memory,这个问题没有区分度。真正有区分度的,是两者在「同一个 Tool Loop 骨架之外各自长了什么」:Claude Code 长的是本地 IDE 与企业治理(权限、策略、团队同步),Codex 长的是云端沙箱并行与多模型。一旦你把「可编程性」从差异清单里划掉,剩下的差异才是指向选型的:你的任务是知识密集编排还是并行吞吐,决定你选谁——而不是「谁的可编程能力更强」这种永远比不出结果的问法。


五、选型判据


总结

回到上一篇的核心:两者都跑在同一个 while Tool Loop 骨架上。差异不在「谁更可编程」,而在这个骨架之外各自长了什么——Claude Code 长了「本地 IDE 与企业治理」,Codex CLI 长了「云端沙箱并行与多模型」。把这三点讲清楚,比背「可编程 vs 黑盒」这种过时的二分法有用得多。

说明:本文的 Claude Code 事实来自恢复的客户端源码镜像,Codex 事实来自 openai/codexcodex-rs 源码与官方 README。两者都是独立的工程分析,非官方背书,具体数字(工具数、命令数)随版本变化。

章末提问

追问 1:「Claude Code 可编程、Codex 是黑盒」这个说法错在哪?

结论先行:错在把「Codex Web」的云端黑盒印象张冠李戴到了「Codex CLI」头上——两者的 CLI 都是本地 coding agent,且都支持 Skill、Hook、MCP、AGENTS.md、memory 一整套可编程机制。

因为:Codex 至少对应四个产品(CLI / Web / App / IDE),和 Claude Code 对比的是本地那个 Codex CLI(Rust 写的 codex-rs)。它的 skills/hooks/codex-mcp/mcp-server/agents_md.rsmemories/ 一个不少。所以「可编程性」两边打平,这不是差异点。

追问 2:两者的执行模型差在哪,为什么 Codex 能并行而 Claude Code 的 subagent 做不到同一种形态?

结论先行:Claude Code 全程本地、subagent 在同机上下文隔离;Codex 能把子任务派到云端沙箱、作为真正的云端并行任务跑(cloud-tasks / codex_delegate)。

因为:Codex 的 codex_delegate 拉起一个子 Codex 线程、强制审批策略为 never,并把执行放进隔离沙箱,所以它能把「一次改几十个文件」拆成多个子任务并行跑、人守在验收端;Claude Code 的 subagent 主要解决同账号下的上下文隔离,没有这种「真·云端并行任务」的形态。这决定了「大批量可并行任务」是 Codex 的主场。

追问 3:怎么选型,本质上是回答什么问题?

结论先行:不是「谁更强」,而是「你的瓶颈在知识密集编排还是在并行吞吐」。

因为:Claude Code 把编排复杂度放在提示词与文件上(声明式,人要写清规则,模型在上下文里自主执行),适合「一堆规则和能力怎么被一个模型正确调用」;Codex 把复杂度放在循环与沙箱上(执行式,系统要跑得稳),适合「并行跑 100 个独立任务」。本地 IDE 深度配合 + 企业权限治理选 Claude Code;大批量并行 + 接本地模型省钱选 Codex CLI;纯云端不碰本地那是 Codex Web,别混。

追问 4:Codex 的 compact(上下文压缩)为什么自己会弹「降低准确度」的警告?

结论先行:因为压缩(Memento 策略)是把旧历史总结成摘要,本质是「有损的止损阀」——省 token 但丢精度,所以它提示「能开新线程就开新线程」。

因为:compact 把旧历史压成带 SUMMARY_PREFIX 的摘要,同时倒序保留最近若干条用户消息,总预算硬控在 20,000 token 内。摘要丢了细节,压缩越多次精度越低,所以它硬编码弹 WarningEvent 提示开新线程。这印证了「循环是免费的,工程是昂贵的」:压缩解决 token 爆炸,但它自己不是免费的。


Share this post on:

Previous Post
海盗分金币——逆向归纳法的博弈论经典
Next Post
长任务状态管理:跑两小时的任务怎么不丢状态