90% 的人用 Codex CLI,就是打开终端、打一行问题、等它回答——把它当成"命令行版的 ChatGPT"。这是巨大的浪费。Codex CLI 真正的价值不在"问答",而在它能自己动手:改文件、跑测试、删旧代码、提交修复。它和纯聊天工具最大的区别,是一整套被默认折叠起来的"自动驾驶开关"——审批策略、沙盒隔离、会话续跑、脚本化输出、MCP 外接。这篇文章把这八道暗门一次性扒开,读完你会知道:为什么海外开发者能让它在 GitHub Action 里无人值守地改 PR,而你还卡在一问一答。
大多数人第一次跑 codex ,agent 上来就猜你的测试命令:它可能会跑 npm test,但你项目其实是 pnpm test:unit;它会乱碰 dist/ 目录,因为没人告诉它那是构建产物。
解法是在项目根目录放一个 AGENTS.md 文件。这不是普通的 README——它是专门写给 agent 看的"操作手册"。Codex CLI 启动时会自动读取它(优先级高于普通文档),里面该写:
pnpm test:unit、cargo test --lib、make lintdist/、build/、.next/ 是生成物,别改预期效果:agent 不再瞎猜命令,第一次就能跑对测试;不再误碰生成物,改完就干净。 适用场景:任何多人协作或长期维护的项目;尤其当你发现 agent 总在"常识性命令"上翻车时,八成是缺这个文件。
关键细节:还有两层——全局规则放 ~/.codex/AGENTS.md(或官方的 ~/.codex/instructions.md,你所有项目通用的偏好,比如"永远用中文写注释"),项目级 AGENTS.md 覆盖全局。两层叠加 = 你不用每次重复交代。
💡 信息差:这个文件后来被 Cursor、Aider、Claude Code 等工具陆续兼容,变成了事实标准。谁先写好它,谁的 agent 就先变聪明。
suggest / auto-edit / full-auto默认模式下,Codex CLI 是个"嘴强王者":它给你看 diff 建议,然后你手动复制粘贴。很多人因此误以为"它不能改代码"。
真相是它有三档审批策略(approval_policy),藏在配置里:
| 策略 | 改文件 | 执行 shell 命令 | 适合 |
|---|---|---|---|
suggest(默认) |
只给建议 | 不执行 | 新手、谨慎审查 |
auto-edit |
✅ 自动改 | 需你逐条确认 | 日常开发(推荐起步档) |
full-auto |
✅ 自动改 | ✅ 自动执行 | 重复任务、CI、无人值守 |
操作:在 ~/.codex/config.toml 里设 approval_policy = "auto-edit",或启动时加参数 codex --full-auto 直接进全自动驾驶。
预期效果:auto-edit 让它直接落地代码改动,你只把控"要不要执行这条命令"这一关——审查负担从"看每一行 diff"降到"看每一条命令",效率翻倍。
适用场景:auto-edit 是性价比最高的甜点档;full-auto 留给下一道暗门。
很多人不敢开 full-auto,怕 agent 跑 rm -rf / 把家给扬了。但 Codex CLI 的 full-auto 模式强制运行在沙盒里,这是它敢"放权"的底气:
seatbelt (sandbox-exec) 机制Landlock LSM沙盒做两件事:文件系统白名单(只能读写项目目录,碰不到 ~/.ssh、~/.aws、系统配置)和网络可控(默认可关,防止 agent 偷偷外发数据或乱装包)。
操作:~/.codex/config.toml 配 sandbox_mode,以及 workspace_auto_enable(进入工作区自动开沙盒)。
预期效果:你可以放心让 agent 跑任何命令——删文件、装依赖、执行测试脚本,翻车了也只在项目目录里翻,一键 git reset 回滚。
适用场景:跑长串重复任务(批量重命名、依赖升级、格式化全仓库)、在 CI 里让它自动改 PR。
⚠️ 注意:沙盒保护的是"项目目录之外"不被破坏;项目目录内的改动仍可能激进,所以务必先
git commit或在新分支上跑。
flowchart TD
A[启动 codex] --> B{approval_policy?}
B -->|suggest| C[只给 diff 建议<br/>你手动应用]
B -->|auto-edit| D[自动改文件<br/>命令逐条确认]
B -->|full-auto| E[进入沙盒]
E --> F[文件系统白名单<br/>只能动项目目录]
E --> G[网络可控<br/>默认禁止外发]
F --> H[自动改文件+自动执行命令]
G --> H
H --> I[翻车? git reset 即可]
D --> I
codex resume——别让它每次从零猜这是最被低估、又最该天天用的一道暗门。每次重新打开终端敲 codex,它不知道你昨天在干什么——上下文清零,你得重新解释一遍项目背景。这既费 token 又费时间。
codex resume 会列出你的历史会话让你挑;codex resume --last 直接接上最近一次对话,完整上下文都在。
操作:
codex resume # 列出历史会话,选一个
codex resume --last # 直接接上最近的
预期效果:跨天/跨终端续写功能,agent 记得"昨天我们决定用这个方案重构",省下大量重复解释和 token。 适用场景:下班前没收尾的任务、跨设备继续工作、长周期重构任务。
🔑 信息差:
--last这一个 flag,每天能给你省下 10-15 分钟的"重新布道"时间。
codex exec --json——把 agent 变成脚本的一个环节这是从"用工具"到"造流水线"的分水岭。codex exec(非交互模式)不在终端里开聊天,而是接受输入、跑完、退出,并可用 --json 输出结构化结果。
为什么重要?因为它能接 pipe、进 CI、做批处理。几个真实场景:
# 场景1:批量为一批旧 PR 生成修复建议
codex exec "review the diff in this PR and suggest fixes" --json | jq '.[]'
# 场景2:接进 GitHub Action,给新开的 issue 自动开 PR
on: issues
# codex exec 接收 issue 内容,自动在沙盒里改代码、提交 PR
# 场景3:扫描一个目录的 lint 报错,让它批量修
预期效果:你不再"陪聊",而是把 Codex 嵌进自动化管线——这恰好是海外开发者拿它"无人值守改 PR"的核心机制。 适用场景:CI/CD 集成、批量代码任务、需要可复现、可版本控制的 agent 工作流。
光会改代码还不够。Codex CLI 支持 MCP(Model Context Protocol),可以外接各种工具:数据库、浏览器、内部 API、文档知识库。一旦接上,agent 就能"看见"代码仓库之外的世界。
操作:在 ~/.codex/config.toml 配置 MCP 服务器:
[mcp_servers.my-db]
command = "npx"
args = ["-y", "@some/mcp-postgres"]
(具体服务器用 codex mcp add 添加)
预期效果:agent 能直接查数据库 schema 再写 SQL、能调你的内部 API、能读 Notion 里的需求文档。它从"懂代码"升级成"懂你的业务"。 适用场景:全栈开发(前端 agent 直接查后端 API 定义)、企业内部工具集成、需要查实时数据的场景。
💡 MCP 是 Anthropic 推的开放协议,现在 Codex、Cursor、Claude Code 都支持——你搭一个 MCP 服务器,所有 agent 工具通用,这是复利资产。
model_reasoning_effort——调思考强度砍账单Codex CLI 背后跑的是推理模型(如 GPT-5 系列),思考强度可调,直接影响速度、token 消耗、价格。配置项是 model_reasoning_effort,通常四档:
| 强度 | 特点 | 适合任务 |
|---|---|---|
minimal |
快、省、浅 | 改个 typo、加注释、格式化 |
low |
较快 | 简单 bug、写单元测试 |
medium |
平衡 | 日常开发(默认甜点) |
high |
慢、贵、深 | 复杂架构、难调的 bug |
操作:~/.codex/config.toml 设 model_reasoning_effort = "low",或为不同任务配不同 profile(见暗门八)。
预期效果:杂活用 low/minimal 省钱省时间,硬骨头切到 high 保质量。一刀切用 high 是拿顶配跑杂活——典型账单黑洞。
适用场景:任何按 token 付费的 API 用户;尤其批量任务务必压到 low。
profiles 多套配置——一键切换工作人格最后一道暗门,是给前面所有开关做"预设组合"。你可以在 config.toml 里定义多个 profile:
[profiles.fast]
model = "gpt-5"
approval_policy = "auto-edit"
model_reasoning_effort = "low" # 跑杂活
[profiles.deep]
model = "gpt-5"
approval_policy = "suggest" # 深度任务,保留审查
model_reasoning_effort = "high" # 砸算力求质量
[profiles.yolo]
approval_policy = "full-auto" # 全自动,沙盒兜底
sandbox_mode = "workspace-write"
操作:codex --profile fast "把这个函数加上 JSDoc",codex --profile deep "重构这个认证模块"。
预期效果:不用每次记一堆 flag,一个 --profile 切换整套"模型+审批+思考强度"组合。快活用快档、难活用深档、放手干用 yolo 档。
适用场景:任何人在多种任务类型间反复横跳的日常。
| 维度 | 90% 的人 | 懂暗门的人 |
|---|---|---|
| 用法定位 | 命令行问答机 | 无人值守的编码 agent |
| 代码改动 | 复制粘贴 diff | auto-edit 自动落地 |
| 安全顾虑 | 不敢开自动 | full-auto + 沙盒放心跑 |
| 上下文 | 每次从零开始 | resume --last 续跑 |
| 集成方式 | 只在终端手动用 | exec --json 进 CI 管线 |
| 工具能力 | 只会改代码 | MCP 外接数据库/API |
| 成本意识 | 一刀切高思考强度 | 按任务调 reasoning_effort |
| 切换成本 | 每次手敲一堆参数 | profile 一键切人格 |
auto-edit:在 ~/.codex/config.toml 配好,体验"代码自动落地"。fast 和 deep,以后杂活和难题分开跑,直接砍账单。⚠️ 命令的精确 flag 拼写会随版本微调,务必以你本机
codex --help和官方仓库文档为准。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
tips-tricks(隐藏技巧)codex --help 与官方 docs 为准——发布前建议人工核对一遍 config.toml 字段名与 --profile / --json 等参数[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
