首页 › tips-tricks › 别把Codex当补全用:七个暗门

别把Codex当补全用:Codex CLI 的七个暗门

绝大多数中国开发者装上 OpenAI 的 Codex CLI 之后,就停在原地了:敲一句"帮我写个函数",看它补全,然后感叹"也就这样嘛"。这就像买了一台九成功能被锁住的超跑,却只敢挂一挡挪车位。真实情况是——Codex CLI 早就不是一个聊天补全器,它是一台可以自动驾驶的终端 agent,只是它的开关几乎全部藏在 ~/.codex/config.toml 里,默认全关。今天这篇,我把这套配置里中国用户最容易错过的七个暗门一次性拆开。读完你会发现,你手里的 Codex 和你以为的 Codex,可能是两个东西。

暗门一:Profiles——一键切换"全速狂奔"和"安全审计"

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 的三层作用域

AGENTS.md 是 Codex 约定俗成的"项目说明书",但大部分人只在仓库根目录放一个又臭又长的大文件。其实它支持三层作用域,Codex 永远只加载离当前文件最近的那一层(加上全局层):

  1. ~/.codex/AGENTS.md——全局层。写你个人风格的通用规则,比如"所有 commit message 用中文"、"永远先跑 pnpm test"。跨所有项目生效。
  2. <repo>/AGENTS.md——项目层。写项目架构、构建命令、禁忌。
  3. <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 当后端服务的一个处理节点。

暗门五:GitHub 集成——让 Codex 自己开 PR

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 直接对接真实数据源、做端到端验证的复杂任务。

信息差总结:你以为的 vs 真实的 Codex

维度 多数人的认知 真实暗门
使用方式 交互式聊天补全 codex exec 无头、可塞 cron/CI
自由度 --full-auto 就是全自动 审批×沙箱两轴矩阵,full-auto 只是中等组合
配置 一个默认档 Profiles 多档位一键切换
上下文 根目录一个 AGENTS.md 全局/项目/子目录三层作用域
协作 只能在本地终端跑 GitHub App 直接开 PR
反馈 盯着终端等 notify 钩子异步推送
智商 固定推理强度 reasoning.effort 四档动态调
手脚 只能读写代码 MCP server 装数据库/浏览器器官

行动指南:今晚就能做的三件事

  1. 先建两个 profile:打开 ~/.codex/config.toml,照着暗门一写一个 audit(只读高推理)和一个 yolo(on-failure + workspace-write)。以后所有项目都能 --profile 复用。
  2. 把个人规范上提到全局:把你在每个 repo 重复写的 AGENTS.md 内容,搬一份到 ~/.codex/AGENTS.md,从此告别复制粘贴。
  3. 跑一次无头任务:找个真实小任务(比如"扫描全项目把 var 换成 const"),用 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 等场景全覆盖。

51学通信知识星球海报-扫码加入