OpenAI 的 Codex CLI 是开源终端编码 Agent 的代表。它有趣的地方不在模型,而在工程边界的设计:审批分级、沙箱、项目合约。这些设计值得所有终端 Agent 使用者理解——不管你最终用哪家的工具。
安装与基本形态
npm install -g @openai/codex # 或 brew install codex
codex # 交互模式
codex "修复登录页在移动端的溢出" # 直接给任务
codex exec --full-auto "跑通测试" # 非交互,全自动
交互模式下默认需要逐步确认动作,这是刻意保守的默认值。
审批模式:三级安全梯度
Codex 的核心设计是审批分级(--ask-for-approval / --sandbox 可调):
| 模式 | 行为 | 适用 |
|---|---|---|
| suggest(默认) | 每次写操作都问 | 不熟悉的仓库、生产相关 |
| auto-edit | 自动改文件,命令仍需确认 | 日常开发的主力档 |
| full-auto | 全自动,但沙箱内执行 | 测试通过即信得过的任务 |
工程习惯:从 suggest 开始,对仓库建立信任后升到 auto-edit;full-auto 只在沙箱约束下用。 信任是跑出来的,不是声明出来的。
AGENTS.md:给 Agent 的项目合约
仓库根目录的 AGENTS.md 是 Codex 约定的项目说明书,Agent 每次启动先读它。一份好的 AGENTS.md 长这样:
# 项目约定
- 构建: pnpm build;测试: pnpm test(单文件: pnpm test -- path)
- 代码风格: 遵循现有命名;新组件放 src/components,不放根目录
- 禁止: 修改 generated/ 下任何文件;禁止引入新依赖除非明确说明
- 已知坑: 本地测试需先起 docker compose up -d db,否则集成测试全红
注意它写的全是机器执行任务时真正会踩的坑:命令是什么、东西放哪、什么不能动、什么会假失败。这比任何团队 wiki 都有效,因为它是给"每次都是新员工"的执行者看的。
沙箱:full-auto 的前提
Codex 的沙箱在 Linux 用 landlock/seccomp、macOS 用 Seatbelt,限制文件系统写入范围与网络访问。要点:
- 沙箱内网络默认关——
npm install会失败,需要配置允许或显式放行 - 工作目录外的写入被拦截,这是 full-auto 敢开的原因
- 沙箱不是安全边界(官方也这么说):代码可以诱导你执行沙箱外的命令,review 依然必要
工作流:PR review 机器
实际用得最顺的模式不是"帮我写完",而是分工:
# 人类写大方向,Agent 补测试
codex "为 src/auth/ 补齐单元测试,覆盖 token 过期分支"
# Agent 当 reviewer,人当 arbiter
codex "review 当前 diff,按严重度列出问题,只报告高置信度的"
第二个用法被严重低估:让模型以审查者身份看 diff,和以作者身份写代码,是两种完全不同的任务,前者往往更稳。
结语
Codex CLI 的价值不在"模型多强",而在它把"人如何在终端里安全地让渡执行权"做成了可配置的梯度。审批分级、项目合约、沙箱三件套,是所有终端 Agent 工具的通用范式——下一篇讲另一个实现:Claude Code。