绝大多数中国开发者装上 OpenAI 的 Codex CLI 之后,就停在原地了:敲一句"帮我写个函数",看它补全,然后感叹"也就这样嘛"。这就像买了一台九成功能被锁住的超跑,却只敢挂一挡挪车位。真实情况是——Codex CLI 早就不是一个聊天补全器,它是一台可以自动驾驶的终端 agent,只是它的开关几乎全部藏在 ~/.codex/config.toml 里,默认全关。今天这篇,我把这套配置里中国用户最容易错过的七个暗门一次性拆开。读完你会发现,你手里的 Codex 和你以为的 Codex,可能是两个东西。
90% 的 Codex 用户从头到尾只用一个默认 profile。但你其实可以在 config.toml 里预设好几套"档位",每套绑定不同的模型、审批策略和沙箱权限,然后用 codex --profile <名字> 一键切入。
# ~/.codex/config.toml
[profiles.audit]
model = "gpt-5-codex"
approval_policy = "untrusted"
sandbox_mode = "read-only"
reasoning_effort = "high"
[profiles.yolo]
model = "gpt-5-codex"
approval_policy = "on-failure"
sandbox_mode = "workspace-write"
reasoning_effort = "medium"
操作:codex --profile yolo "重构整个 auth 模块" 直接放手;审查别人 PR 时切 --profile audit,只读、高推理、每步都问你。
效果:不用每次手动调三个参数,一个 flag 把"工作模式"整体换档。
适用场景:一边做敢死队式重构、一边又要给别人做代码审计的人——靠 profile 物理隔离两种风险等级。
这是 Codex 最反直觉、也最被误解的地方。很多人以为 --full-auto 就是"全自动",于是要么不敢用、要么乱用一通。真相是:Codex 的自由度由两个独立轴共同决定,--full-auto 只是其中一个组合的快捷方式。
flowchart TD
A[Codex 接到一条命令] --> B{approval_policy?}
B -->|untrusted| C[每步都问]
B -->|on-failure| D[先跑 失败才问]
B -->|on-request| E[让它自己决定何时问]
B -->|never| F[永远不问]
C --> G{sandbox_mode?}
D --> G
E --> G
F --> G
G -->|read-only| H[只能看不能写盘]
G -->|workspace-write| I[只能改工作区 不能碰系统]
G -->|danger-full-access| J[想干嘛干嘛 含 rm -rf]
H --> K[执行]
I --> K
J --> K
style J fill:#f4cccc
style F fill:#f4cccc
四个审批档位:untrusted(每步都问)、on-failure(先跑、撞墙了再问)、on-request(agent 自己判断何时该问)、never(永不问)。三个沙箱档位:read-only、workspace-write(只准动当前工作区)、danger-full-access(裸奔,能执行 rm -rf,慎用)。
关键认知差:--full-auto 这个 flag 真正干的事,是 approval_policy=on-request + sandbox_mode=workspace-write 的组合预设。它不是最激进档——never + danger-full-access 才是。绝大多数日常场景,手动写 approval_policy = "on-failure" 配 sandbox_mode = "workspace-write" 才是最舒服的"放手但不裸奔"。
适用场景:在容器/虚拟机里跑长任务时,on-failure + workspace-write 让 agent 自己撞错自己改,你只在它真的卡死时介入。
AGENTS.md 是 Codex 约定俗成的"项目说明书",但大部分人只在仓库根目录放一个又臭又长的大文件。其实它支持三层作用域,Codex 永远只加载离当前文件最近的那一层(加上全局层):
~/.codex/AGENTS.md——全局层。写你个人风格的通用规则,比如"所有 commit message 用中文"、"永远先跑 pnpm test"。跨所有项目生效。<repo>/AGENTS.md——项目层。写项目架构、构建命令、禁忌。<repo>/子目录/AGENTS.md——子目录层。当 agent 进入这个子目录工作时,这层规则覆盖上面两层。操作:把"通用偏好"提到全局层,把"这个项目怎么跑"留在项目层,把"这个遗留模块千万别碰 X 文件"压到子目录层。
效果:你再也不用在每个 repo 重复粘贴同一套个人规范,同时又能给单个高危目录上锁。
适用场景:维护多个项目、又有祖传代码需要"划禁区"的独立开发者。
codex exec 无头模式——把 agent 塞进管道和 cron交互式聊天只是 Codex 的一个皮,真正进阶的玩法是它的无头模式 codex exec。它能把 Codex 当成一个 Unix 命令,吃 stdin、吐 stdout,完美接进 shell 管道、cron、CI。
# 非交互式跑一个任务,输出结构化 JSON 供脚本解析
codex exec "把 src/ 下所有 console.log 换成 logger.debug" \
--output-last-message /tmp/patch.txt --json
# 配合 cron:每晚自动跑一遍依赖升级并生成报告
0 3 * * * cd ~/myapp && codex exec "检查依赖更新 写一份升级风险评估" \
--profile audit > /tmp/dep-report.json
--json 输出可被 jq 解析,--output-last-message 把最终结论写到文件——这让 Codex 能被嵌进任何自动化流水线。
适用场景:批量代码迁移、定时维护任务、把 agent 当后端服务的一个处理节点。
Codex CLI 不止活在终端。OpenAI 提供了 GitHub App 和 Actions 集成,让 Codex 直接长在仓库里:在 issue 或 PR 下 @codex,它就能读代码、写修复、提交 PR。
# .github/workflows/codex.yml(简化)
on:
issue_comment:
types: [created]
jobs:
codex:
if: contains(github.event.comment.body, '@codex')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: codex exec "${{ github.event.comment.body }}" \
--full-auto --json
效果:你在 issue 里评论"@codex 这个登录页在 Safari 上按钮错位,帮我修",十几分钟后它自己开一个带修复代码的 PR 回来。
适用场景:开源项目维护者、想给团队配一个 7×24 值班"初级工程师"的小团队。
notify 钩子——任务跑完自动喊你长任务(大重构、依赖升级)交给 Codex 之后,你总不能盯着终端等。config.toml 里有个被忽略的 notify 选项,它是个钩子——当 Codex 需要你审批、或任务结束时,它会调用你指定的程序,并传一段 JSON 进去。
notify = ["python3", "/Users/you/codex-hook.py"]
Codex 会把事件类型(agent-turn-complete、approval-request 等)以 JSON 喂给你的脚本。于是你可以:mac 上接 osascript 弹原生通知 + say 语音播报"代码改完了";接 Slack webhook 推消息;接钉钉机器人。
适用场景:同时挂着好几个 Codex 长任务、又想去看别的活儿的人——把它变成一个真正的"异步后台工人"。
reasoning.effort 动态调档 + MCP 扩展最后两招合并讲,因为它们决定了 Codex 的"智商"和"手脚"。
推理调档:reasoning.effort 有 minimal / low / medium / high 四档。默认往往是中档,但你可以按任务切——改个错别字用 minimal 省时间省 token,调一个死锁用 high 让它多想。进阶是 reasoning.summary,控制它怎么把长思考压缩回给你看。
[profiles.quick]
model = "gpt-5-codex"
reasoning_effort = "minimal"
[profiles.deep]
model = "gpt-5-codex"
reasoning_effort = "high"
MCP 扩展:在 config 里挂 MCP server,给 Codex 装上文件系统、浏览器、数据库、企业知识库等"器官":
[mcp_servers.files]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/docs"]
[mcp_servers.pg]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-postgres"]
env = { DATABASE_URL = "postgresql://..." }
挂上数据库 MCP,Codex 就能边查 schema 边写迁移脚本;挂上浏览器 MCP,它就能自己点开页面验证改动。这才是它超越"补全器"的真正形态。
适用场景:需要 agent 直接对接真实数据源、做端到端验证的复杂任务。
| 维度 | 多数人的认知 | 真实暗门 |
|---|---|---|
| 使用方式 | 交互式聊天补全 | codex exec 无头、可塞 cron/CI |
| 自由度 | --full-auto 就是全自动 |
审批×沙箱两轴矩阵,full-auto 只是中等组合 |
| 配置 | 一个默认档 | Profiles 多档位一键切换 |
| 上下文 | 根目录一个 AGENTS.md | 全局/项目/子目录三层作用域 |
| 协作 | 只能在本地终端跑 | GitHub App 直接开 PR |
| 反馈 | 盯着终端等 | notify 钩子异步推送 |
| 智商 | 固定推理强度 | reasoning.effort 四档动态调 |
| 手脚 | 只能读写代码 | MCP server 装数据库/浏览器器官 |
~/.codex/config.toml,照着暗门一写一个 audit(只读高推理)和一个 yolo(on-failure + workspace-write)。以后所有项目都能 --profile 复用。~/.codex/AGENTS.md,从此告别复制粘贴。codex exec --json 跑一遍,用 jq 解析输出。这一步打通后,你就拥有了第一个"AI 后台工人"。本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!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 等场景全覆盖。
