Codex
沙箱、工作区、云端长任务与验证闭环。
一句话理解:Codex 把“沙箱 + 审批策略”做成了 Agent 的第一原则——本地在工作区边界内自由行动、越界才请求批准;云端在隔离容器里跑长任务,默认断网、密钥不进入 Agent 阶段,最后交付一个可审阅的 diff 或 PR。
Codex 是 OpenAI 的 Coding Agent。和上一课的 Claude Code 相比,它们要完成的 Job 几乎相同,但在 执行环境、安全边界与交付方式 上做出了不少不同的选择。把两者放在一起对比,是理解“同一类 Agent 有多种合理设计”的最好方式。
先说明产品现状(截至 2026 年 9 月,以 OpenAI 官方文档与更新日志为准):
- Codex 仍是独立的产品线,有开源的 CLI(仓库
openai/codex,Apache-2.0 许可)、IDE 插件、云端任务(chatgpt.com/codex)以及 GitHub、Slack 等集成。 - 2026 年 7 月 9 日的更新日志显示,Codex 桌面应用并入了新的 ChatGPT 桌面应用,在同一个应用里与 Chat、Work 并列使用。
- 原
developers.openai.com/codex文档地址现在重定向到learn.chatgpt.com/docs,Codex 与 ChatGPT Work 共用一套文档。
把 Codex 的入口、本地与云端两种执行形态和交付方式放进一张图:
用八个问题拆解
1. 它完成什么 Job?
在代码仓库中完成开发任务:写功能、修 Bug、回答代码库问题、审查代码。与 Claude Code 相比,Codex 的产品叙事更强调两种形态:
- 本地协作:在 CLI、IDE 或桌面应用里与开发者同步工作。
- 云端委派:把任务交给云端环境并行运行,完成后审阅 diff、追问或直接开 PR。
另一个被做成独立 Job 的是 代码审查:在 CLI 里用 /review 选择审查范围(对比基础分支、未提交变更、特定提交或自定义标准),或在 GitHub PR 里评论 @codex review,也可以开启对每个新 PR 自动审查。
2. 它能调用哪些工具?
- 本地:读写文件、在沙箱中执行命令、使用 Git;可以通过 MCP 接入外部工具,通过 Skills 复用工作方法,也支持配置自定义 Subagent。
- 云端:在容器中检出仓库、运行安装脚本、编辑代码和执行验证命令,完成后产出 diff,可以直接创建 PR。
- 入口集成:云端任务可以从网页、GitHub(PR 与 Issue)、Linear、Slack 发起,GitLab 集成处于 Beta。
3. 它拿得到什么上下文?
核心上下文载体是 AGENTS.md,官方文档描述的发现规则非常清晰:
这个设计让大型仓库可以“分层写规则”:根目录写全局规范,子服务目录写本服务的测试命令与注意事项。在云端任务中,Agent 会参考 AGENTS.md 找到项目的 Lint 与测试命令;在 GitHub 审查中,AGENTS.md 里的 ## Code Review Rules 小节会被用作审查规则。
4. 它在哪里执行?
本地执行 由两个独立的控制共同决定:
| 控制 | 选项 | 含义 |
|---|---|---|
| 沙箱模式 | read-only |
可以查看文件,未经批准不能编辑或运行命令 |
workspace-write |
可以读文件、在工作区内编辑、运行常规本地命令 | |
danger-full-access |
移除文件系统与网络边界 | |
| 审批策略 | on-request |
默认在沙箱内工作,需要越界时请求批准 |
never |
不停下来请求批准 |
官方文档说明,本地默认组合是 workspace-write + on-request。沙箱由操作系统机制实现:macOS 使用 Seatbelt,Linux 与 WSL2 使用 bubblewrap,Windows 有原生沙箱实现。
云端执行 的流程是:
容器状态最多缓存 12 小时,恢复缓存容器时可以运行可选的 maintenance 脚本更新依赖。
这个流程里有一个非常值得学习的安全设计:把“需要网络和密钥的准备阶段”与“模型自主行动的阶段”分开。模型在行动时既拿不到密钥,也默认无法联网,从根本上降低了被注入后外泄数据的可能。
5. 它如何决定下一步?
由模型在 Agent Loop 中动态决定读哪些文件、改哪里、跑什么命令。与之配合的是 规则(Rules):用 Starlark 编写 .rules 文件,通过 prefix_rule() 按命令前缀匹配,决定沙箱外的命令是 allow(直接运行)、prompt(每次询问)还是 forbidden(直接拒绝)。多条规则同时匹配时,取最严格的结果:forbidden 高于 prompt 高于 allow。
规则支持写 match 与 not_match 测试样例,用来验证规则本身是否写对——这是“把策略当代码管理”的好例子。
6. 它如何验证结果?
- 运行项目检查:云端任务参考 AGENTS.md 中的 Lint 与测试命令验证修改。
- 可审阅的交付物:结果以 diff 形式展示,由人决定是否创建 PR,而不是直接合入主分支。
- 独立审查环节:
/review在不改动工作区的前提下给出按优先级排列的问题;GitHub 审查默认只标记 P0 与 P1 级别的问题,避免噪音淹没重要风险。
把“写代码的 Agent”和“审代码的 Agent”分成两个环节,相当于在流程里加入了一次外部验证(参见「自我检查与外部验证」)。
7. 什么时候需要人确认?
默认在沙箱边界内自主行动,越界才需要确认。越界请求可以交给两种审阅者,由 approvals_reviewer 配置:
user:由用户直接批准。auto_review:交给自动审阅。官方文档说明,审阅者本身是一个 Codex Agent,职责比主 Agent 更窄——只判断某个越界动作是否应该执行。它审查的范围包括请求提升沙箱权限的命令、被策略拦截的网络请求、允许目录以外的文件编辑、需要批准的 MCP 或应用工具调用等;沙箱内的常规动作不会进入自动审阅。
自动审阅有两个值得注意的保护:被拒绝后,主 Agent 不应通过变通方式达成同样的目的;连续 3 次或在滚动窗口内累计 10 次被拒绝时,会中断当前回合。官方文档也坦承,自动审阅“不是确定性的安全保证”。
8. 失败如何恢复?
- 隔离即恢复:云端任务在独立容器中运行,失败不会影响本地或主分支;不满意可以追问修改或直接丢弃。
- diff 优先:所有变更先以 diff 呈现,人审阅后才进入 PR 与合并流程,Git 负责回滚。
- 熔断:自动审阅多次拒绝后中断回合,把控制权交还给人,而不是无限尝试。
与 Claude Code 的对比
| 维度 | Claude Code | Codex |
|---|---|---|
| 持久指令 | CLAUDE.md + 自动记忆 | AGENTS.md 分层合并(含 override 文件) |
| 本地安全模型 | 多种权限模式 + allow/ask/deny 规则 + Bash 沙箱 + Hooks | 沙箱模式 × 审批策略 + Starlark 规则 |
| 自动放行的判断者 | auto 模式下的后台分类器 | auto_review:一个职责更窄的审阅 Agent |
| 云端执行 | Anthropic 托管虚拟机或自托管环境 | 容器 + setup 脚本;Agent 阶段默认断网、无 Secrets |
| 审查 | 可通过 GitHub Actions 等集成审查 PR | /review 与 @codex review,GitHub 中默认只标 P0/P1 |
两者没有绝对优劣。更有价值的问题是:它们都在用“边界 + 越界审批”替代“每一步都问人”,只是边界的划法和审批者的实现不同。
可借鉴的设计决策
| 设计决策 | Codex 的做法 | 迁移到业务 Agent |
|---|---|---|
| 行动边界与审批策略分离 | 沙箱模式定义“能碰什么”,审批策略定义“越界时怎么办” | 数据范围与动作审批分两层配置,分别调整 |
| 准备阶段与自主阶段分离 | 联网与密钥只在 setup 阶段可用 | 凭据由确定性层使用,模型推理阶段拿不到凭据 |
| 策略可测试 | 规则文件自带 match/not_match 样例 | 审批规则、风险分级规则也要有测试用例 |
| 审阅者职责单一 | 自动审阅 Agent 只判断越界动作是否应执行 | 用专门的校验器审查高风险动作,而不是让执行 Agent 自评 |
| 降噪的审查输出 | GitHub 审查只标 P0/P1 | 给人看的风险提示要分级,只把真正需要判断的推给人 |
| 交付可审阅产物 | diff → 人审阅 → PR | 业务写入先生成“变更预览”,确认后执行 |
常见误区
- “云端 Agent 更危险,因为不在我眼前。” 设计得当的云端环境往往比本地更安全:隔离容器、默认断网、密钥不进入 Agent 阶段。风险取决于边界设计,而不是位置。
- “自动审阅等于安全。” 官方文档明确它不是确定性保证。高风险动作仍需要程序规则与人工兜底。
- “Codex 已经并入 ChatGPT,所以不再是独立产品。” 并入的是桌面应用形态;CLI、云端任务、IDE 插件与各类集成仍然存在,官方文档也仍以 Codex 为名组织这些能力。
设计要点
- 先定义行动边界,再定义越界时由谁、如何批准。
- 让模型自主行动的阶段拿不到长期凭据。
- 把审批与安全策略写成可测试、可版本化的配置。
- 执行与审查分成两个角色或两个环节。
- 交付物默认是“待审阅的变更”,而不是“已生效的变更”。
练习
用 45 分钟完成一次对比实验(可以只阅读文档,也可以实际使用):
- 为同一个小仓库分别写一份 CLAUDE.md 和一份分层 AGENTS.md(根目录一份,子目录一份),比较两者的组织方式。
- 为“禁止强制推送、允许运行测试、其余 Git 写操作需询问”分别写出 Claude Code 的权限规则思路和 Codex 的
.rules思路。 - 为「订单售后处理 Agent」借鉴 Codex 云端流程,设计“准备阶段”和“自主阶段”分别能拿到哪些凭据与网络权限。
延伸阅读
- Sandbox:沙箱模式、审批策略与各平台实现。
- Auto-review:自动审阅的职责范围与熔断机制。
- Rules:用 Starlark 控制沙箱外命令。
- Custom instructions with AGENTS.md:AGENTS.md 的发现与合并规则。
- Cloud environments:云端容器、setup 脚本、网络与 Secrets。
- Review GitHub pull requests with Codex:GitHub 中的代码审查。
- openai/codex:Codex CLI 开源仓库。
下一步
Coding Agent 有天然的反馈闭环。下一课「通用工作 Agent」会看离开代码仓库之后,ChatGPT Work、Manus 这类产品如何在搜索、浏览器与文件的世界里建立控制与验证。