Claude Code 工程 · Codex 对照
学习舱 / Claude Code 工程 / Codex 对照

Codex CLI 与 Agent CLI 对照

整理中 深度 · 应用 更新 2026-09-09

前置 全景上手

Codex CLI 与 Agent CLI 对照

一句话定位:Codex CLI 是 OpenAI 的开源终端编码 Agent(Rust 实现)——本文拿它与 Claude Code 做一次分层对照:哪些差异在 harness 设计层、选型看哪几个维度,以及开源实现给你的「读源码」特权。前置:Claude Code 全景与日常使用——先有一个参照系。

先从「评测吵成一团」说起

你用熟了 Claude Code,同事强烈推荐 Codex CLI;网上评测一个说「Codex 更克制」,一个说「Claude Code 更能干」,各说各的。两个工具都能读写代码、跑命令、自主完成整个任务——表面上干的活一样,实际体验却处处不同。

麻烦在于评测者连「差异在哪一层」都没对齐:有的在比模型,有的在比权限机制,有的在比生态——鸡同鸭讲。而且工具迭代极快,这篇说它有的功能,下个版本可能就变了;照着单篇评测做选型,很容易买到过期的结论。

对照两个 Agent CLI,框架应该怎么搭?差异的根因到底在 harness 设计的哪一层?

答案是「分层对照」:两个工具在骨架层高度同构——都是模型加循环加工具加刹车(Agent 基础篇的四要素);差异集中在三个设计决策上——权限怎么给(审批与沙箱机制)、约定怎么记(记忆文件约定)、开放到什么程度(闭源反推与源码直读)。把这三层拆开,评测与选型立刻清晰。先看对照框架:

对照框架:同构的骨架,异构的三层 同构层:模型 + 循环 + 工具 + 刹车(四要素都有) 评测里吵的「能不能干活」,这一层其实分不出胜负 ① 权限机制 Codex:审批策略分级 +文件系统/网络沙箱 Claude Code:权限模式+钩子 ② 记忆约定 Codex 读 AGENTS.md Claude Code 读 CLAUDE.md CLAUDE.md 可单向导入 AGENTS.md ③ 开放程度 Codex:Rust 全开源 Claude Code:闭源,行为反推 决定你能不能读源码求证 选型四维度:权限模型 · 记忆约定 · 生态协议(MCP/技能标准) · 开源与否 模型能力另算——它换得快,harness 换得慢 读法:先认骨架同构,再把差异归位到①②③;选型按四维度打分,不靠评测站队

图:CLI 对照框架——骨架同构,差异归位到①权限机制 ②记忆约定 ③开放程度三层;选型按四维度打分

渐进拆解:两个外包团队的差异

类比:把两个 CLI 想成两个外包团队,都能替你写代码干活。差异在三份「合作条款」上:一支队伍开工前先交计划书等你点头(计划模式),干活的房间装了门禁分级(沙箱按可写范围分级,审批策略决定何时来问你);另一支靠授权档位加事件钩子管纪律。

文档约定也不同:一个认 AGENTS.md,一个认 CLAUDE.md——好在约定文件可以单向打通——CLAUDE.md 一行导入就把 AGENTS.md 收编,迁移成本没有想象中大。

最大的差别在「后厨」:一个后厨完全开放(源码可读,你甚至能进去核对菜谱),一个只给你看前厅(行为可观察,菜谱靠猜)。猜也能猜对——但猜出来的结论,和翻过菜谱验证过的结论,含金量不同。

先把差异全景铺成一张对照表,后面各节逐一展开:

维度Codex CLIClaude Code
权限模型「沙箱 + 审批」双轨:沙箱按可写范围分级,审批策略分档权限模式(授权档位)+事件钩子
记忆机制读 AGENTS.md读 CLAUDE.md,可用一行导入语法引入 AGENTS.md
扩展生态认 SKILL.md(目录发现制)、支持 MCP(配置在 config.toml)、/plugins 带市场浏览、/hooks 管生命周期钩子认 SKILL.md、支持 MCP;插件市场与钩子生态起步更早、积累更厚
开源情况Rust 实现,Apache-2.0 全开源,可读源码求证闭源,行为只能反推

Codex 常用功能:审批、沙箱与计划模式

Codex 的权限设计是「沙箱 + 审批」双轨(见表):

  • 沙箱按可写范围分级:只读、工作区内可写、完全访问。
  • 审批策略决定什么时候来问你:从「每次都问」到「放手去干」分档可调。

配合计划模式,它会在动手前先给你一份结构化的计划(读哪些文件、做哪些动作),批准后才执行。目标式使用是它的常见姿势:给一个目标而非逐步指令,让它在沙箱边界内自主推进——计划模式负责先对齐「怎么做」,沙箱负责兜住「做坏了」。账号与形态也值得知道:支持 ChatGPT 账号登录(按订阅计划使用),另有桌面应用形态;Rust 重写后 config.toml 的配置结构与早期版本有差异——升级前先对照当前文档。

插件、Skill 与记忆约定

扩展与记忆的全景见表:两家都认 SKILL.md、都支持 MCP、都有插件与钩子,差别不在「有没有」,在起步时间与生态积累;记忆约定功能同构(项目级持久指令),CLAUDE.md 一行导入就把 AGENTS.md 收编、事实源只维护一份,AGENTS.md 侧暂无对应语法,需要等效效果时用软链接。

本仓库自己就在用这套约定——根目录的 AGENTS.md 正是给所有编码 Agent 看的项目说明书;记忆之外还有第二条通道,上下文压缩:长会话逼近窗口上限时,双方都会把历史折叠成摘要续命——压缩管「对话能继续」,约定文件管「约定不丢」,正好接住前置篇的分层。

开源实现的对照价值

这是本篇最想交给你的视角:闭源一方的行为只能反推——观察它在什么场景做什么动作、输出什么日志,像做黑盒测试;开源一方可以直接读源码求证——审批策略怎么判定、沙箱边界画在哪、循环怎么退出,答案就在仓库里(开源情况见表)。读之前给自己立两条规矩:

  • 每次只带一个具体问题去读(如「它怎么决定拦截」)。
  • 读完就回到自己的工具验证——漫无目的地通读,两周也读不完一个仓库。

两个工具对照着用,等于「行为反推 + 源码直读」双通道:反推得到的假设,可以去开源实现里找同构机制验证。这个方法不止用于这两个产品——任何闭源 Agent 的行为假设,都能在某个开源实现里找到同构参照,因为它们要解决的问题是同一批。反推是隔着一道门猜菜谱,直读是走进后厨翻菜谱——两种本事都练,才不迷信任何一篇评测。

大白话:骨架一样,条款不同。选哪家看条款合不合你的规矩,看后厨开不开——别只听菜品的广告词。

技术定义与生态现状:Codex CLI 是 OpenAI 的开源终端编码 Agent——早期为 TypeScript 实现,后以 Rust 重写(基本信息见表与文末谱系图);同赛道常见的还有 Google 的 Gemini CLI、Aider 等,Agent CLI 已是一个多玩家的品类。

生态协议在收敛:MCP 成为工具接入的通用协议,Agent Skills 开放标准让技能格式跨工具通用——你写的技能与工具配置,迁移成本在持续下降。

另一个现实是版本节奏:这类 CLI 的 breaking changes 不罕见——升级前扫一眼变更说明,自动化脚本里锁版本,是两条被反复验证的教训。选型还有一条朴素经验:跟着自己的任务形态选,而不是跟着功能清单选——清单会趋同,任务形态不会变。

动手:同一任务,两条 CLI 对照跑

对照实验比读十篇评测有用。亲手跑一遍(# 后是注解;装好两个 CLI 与各自凭据,在同一个项目目录里跑):

claude -p "读 src/auth/ 目录,列出三个最值得重构的点"   # Claude Code 侧
codex "读 src/auth/ 目录,列出三个最值得重构的点"        # Codex 侧
# 对照观察三处,再做归位:
# 1. 审批粒度:各自在动手前问了什么、没问什么(对应①权限机制)
# 2. 约定文件:各自加载了什么(AGENTS.md 还是 CLAUDE.md)
# 3. 产出格式:同为「三个重构点」,结论结构是否可互相移植
# 归位:把观察到的每条差异,归到①权限 ②约定 ③开放哪一层
git clone https://github.com/openai/codex        # 源码直读:克隆 Codex 仓库
# 在源码里搜审批与沙箱的实现,验证你观察到的行为:
# grep -ri "approval" --include="*.rs" .

克隆源码那步是本篇的点睛:你观察到的「它先问了再删文件」这类行为,在开源实现里能找到对应的判定代码——反推的结论有了可验证的落点。对照实验做完,①②③三层差异就不再是评测文章的形容词,而是你亲手摸过的机制。

边界与取舍:对照的价值与边界

同一任务的行为差异,根因都能归到 harness 层

  • 审批粒度不同,是①权限机制的设计差异(沙箱分级 vs 权限模式加钩子)。
  • 「它怎么知道团队约定」,是②记忆约定的差异(AGENTS.md 与 CLAUDE.md 同构)。
  • 「这个功能怎么触发的」,是③开放程度的差异(能读源码还是只能观察)。

下次看到评测里的玄学结论,先问一句:你说的是哪一层的差异?

哪些开源实现值得读

Codex(Rust,Apache-2.0——一种开源许可证)是大厂开源终端 Agent 里实现最完整的一个,主循环、工具调度、沙箱、审批全在仓库里;Gemini CLI 同样开源可读。读法有两条:

  • 带着行为疑问去搜实现(「它怎么决定拦截这条命令」)。
  • 按模块通读:先找主循环,再看工具注册与会话管理——主循环是所有行为的发源地。

在那之前,权限机制、工具执行 这些专篇就是行为反推做深的范本——本篇的对照实验,是它和源码直读的第一次热身。

选型别用单维度

只看「谁更强」会永远摇摆——模型在换、版本在更。按四维度打分再加权:权限模型合不合你的安全规矩、记忆约定迁入成本、生态协议是否开放、开源与否是否影响你求证问题的能力。工具是雇来干活的,合适比名气重要。举个例子把维度用起来:

  • 安全规矩严格(要细粒度审批与沙箱)→ ①权重高。
  • 团队双工具混用 → ②权重高(CLAUDE.md 可导入 AGENTS.md,混用成本低)。
  • 喜欢较真机制、读源码求证 → ③权重高。

每个人的权重表不同,结论自然不同,这不是谁对谁错。

Agent CLI 谱系:两个维度看玩家 开源 → ↑ 全家桶(生态完整) Claude Code 闭源 · 插件生态起步最早 Codex CLI 开源 Rust · 沙箱+审批 · 可直读 Gemini CLI 开源 · 通用终端助手路线 Aider 开源 · 轻量结对风格 读法:位置会随版本演进漂移,别当永久图用;按四维度打分,不按象限站队

图:Agent CLI 谱系——闭源到开源 × 轻量到全家桶;本篇只负责把坐标画准,不负责评判高下

自测

合上文章先自己答,再展开对照:

同一任务在 Claude Code 与 Codex 上的行为差异,根因在 harness 设计的哪一层?

骨架层(模型+循环+工具+刹车)两者同构,行为差异集中在三个设计决策:其一,权限机制——Codex 走「沙箱分级+审批策略」双轨,Claude Code 走「权限模式+事件钩子」,所以审批粒度与放行体验不同;其二,记忆约定——AGENTS.md 与 CLAUDE.md 功能同构(CLAUDE.md 可单向导入 AGENTS.md),团队约定的加载行为不同;其三,开放程度——闭源只能行为反推,开源可以源码直读,这决定了差异能不能被验证。评测里的分歧多半是没说清自己在比哪一层。

开源 CLI 的哪些实现可以直接读源码验证行为反推的结论?

Codex CLI(Rust、Apache-2.0)是代表性实现:主循环、工具调度、沙箱与审批策略的判定代码全部开放,克隆仓库后直接 grep 关键词就能定位行为对应的实现;Gemini CLI 同样开源可读。读法两条:带着行为疑问搜实现(验证反推假设),或按模块通读(循环、工具注册、会话管理)。Claude Code 闭源,只能行为反推——反推出的假设正好拿开源实现做同构验证,这就是「行为反推+源码直读」双通道。

参考与延伸

下一站:Tokenizer——CLI 之上是模型,模型的第一道门是分词:文本如何变成 token。

本节点大纲与自测题(4 个子点 · 2 问)

大纲

  • Codex 常用功能:权限模式、计划模式、目标模式
  • Codex 的插件与 Skill 机制、上下文压缩与记忆
  • 开源实现(Rust)的对照价值:闭源反推 vs 源码直读
  • Agent CLI 竞品谱系与选型维度

自测——答不上来就是缺口

  • 同一任务在 Claude Code 与 Codex 上的行为差异,根因在 harness 设计的哪一层?
  • 开源 CLI 的哪些实现可以直接读源码验证行为反推的结论?