如果你还在为 OpenAI API key 充值、再拿它喂编码工具,那你可能白花钱了。OpenAI 自家的开源终端编码 agent Codex CLI(Apache-2.0 协议,仓库 github.com/openai/codex)有一个被国内开发者普遍忽略的入口:直接用你的 ChatGPT Plus / Pro / Business / Edu / Enterprise 订阅登录,跑代码、改仓库、跑命令,全部走订阅额度,完全不需要单独的 API key,也不走 API 计费。装上 codex → 选 Sign in with ChatGPT 就行。
但问题来了——绝大多数人装完只会敲一句 codex "帮我改个 bug",连它三层安全闸门、PR 自审、云端 best-of-N 这些核心能力都没摸到。这轮情报我挖了 Codex CLI 的 8 个隐藏开关,每个都能直接抄、立刻省事省钱,而且国内基本没人系统讲过。
这是最大的信息差。很多人以为 Codex CLI 必须配 API key,于是充了值才发现额度飞快。
操作步骤:
# macOS / Linux 一键安装
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# 或:npm install -g @openai/codex / brew install --cask codex
codex # 启动后选 "Sign in with ChatGPT"
真正需要 API 计费的只有一种情况:大批量非交互跑批(见开关七的
cloud exec),那时切 API key 才更划算。
你印象里"Codex 会问我要不要执行"——那只是最外层。它其实是沙箱和审批两个独立维度叠加,组合出完全不同的安全姿态。
沙箱模式(sandbox_mode) 决定它能碰什么:
| 取值 | 行为 |
|---|---|
read-only |
只读探查,不改文件、不跑命令,等你批 plan(咨询模式) |
workspace-write(默认) |
工作目录内自由读写+跑命令;碰目录外或联网才停下来问 |
danger-full-access |
全机器 + 网络放开,不问。仅在你信任仓库和任务时慎用 |
审批策略(approval_policy) 决定何时停:
| 取值 | 行为 |
|---|---|
untrusted |
几乎每步都问 |
on-failure |
失败才问 |
on-request(默认) |
按需问 |
never |
不问(配合沙箱才有意义) |
granular |
见开关三,按类别细控 |
怎么用:陌生仓库先用 read-only 探一遍(让它先看懂代码、产出 plan,一个字都不改);确认方向对了,再升到 workspace-write 让它动手。两种模式都能在交互会话里随时切换,不必退出重启。
flowchart TD
A[收到任务] --> B{信任这个仓库吗?}
B -- 陌生/不信任 --> R[read-only 探查<br/>只读 + 出 plan]
R --> C{plan 看着靠谱?}
C -- 否 --> A
C -- 是 --> W[workspace-write 执行<br/>目录内自由动手]
W --> D{需要联网/跨目录?}
D -- 是 --> P[弹出审批确认]
D -- 否 --> E[自动完成]
P -->|批准| E
B -- 高度信任 + 离线脚本 --> F[danger-full-access<br/>不问, 谨慎]
F --> E
style R fill:#e8f4ff,stroke:#1f6feb
style W fill:#fff4e8,stroke:#d97706
style F fill:#ffe8e8,stroke:#dc2626
默认审批是"一刀切问/不问"。但 Codex 支持把不同类别的审批各自独立开关,写进 ~/.codex/config.toml:
approval_policy = { granular = {
sandbox_approval = true, # 沙箱升级请求允许弹出
rules = true, # execpolicy 规则命中的命令允许弹出
mcp_elicitations = false, # MCP elicitation 直接拦掉
request_permissions = false,
skill_approval = false # skill 脚本执行要问
} }
granular 就是干这个的。这是整篇里 99% 国内用户没听过的功能。你可以在配置层旁的 .codex/rules/ 目录里写命令规则,精确控制哪些命令能在沙箱外跑:
# 每次跑 `gh pr view` 前先问我
[[rules]]
pattern = ["gh", "pr", "view"]
action = "prompt"
justification = "查看 PR 需要批准"
# 这些是"内联单元测试",加载时校验规则是否真的命中
match = ["gh pr view 7888", "gh pr view --repo openai/codex"]
not_match = ["gh pr --repo openai/codex view 7888"] # pattern 必须是精确前缀
三个关键点让它比一般 allowlist 强:
allow(直接跑)/ prompt(每条问)/ block(直接拒)。多条规则命中时取最严格那条。bash -lc "git add . && rm -rf /",它不会把整串当成一条放行,而是用 tree-sitter 解析成两条命令分别评估,最严格结果胜出——git add 放行也没用,rm -rf / 那条会把它整体拦下来。等于堵死了"用安全命令走私危险命令"这条路。npm test、make、pytest 这类只读无害的命令 allow 掉,省掉大量无聊确认,同时危险命令一条都漏不掉。很多人不知道 Codex 自带一个只读 code reviewer。它读你的 diff、按优先级给可执行的修改建议,全程不碰工作树。
四种触发方式:
每次 /review 在 transcript 里都是独立一 turn——代码演进后你可以重跑对比,看建议有没有变化。
Codex 支持 subagent workflow 把大任务拆给多个子 agent 并行干。但有个反常识的设定:它只有在你明确要求时才 spawn(比如直接说"用 subagent 并行处理这几个模块"),不会自作主张。
权衡要点:每个 subagent 各自独立调用模型和工具,token 消耗明显高于单 agent 跑同样的事。
这是把它从"聊天工具"升级为"自动化工人"的三个命令:
1. codex exec —— 非交互,可接脚本
codex exec "fix the CI failure" # 跑完把最终 plan + 结果 pipe 回 stdout
最终输出能被 shell 接走,常见玩法:自动更新 changelog、给 issue 排序、PR 合并前跑编辑检查。
2. codex resume —— 续传,不丢上下文
codex resume # 弹出最近会话选择器(可看摘要)
codex resume --last # 直接跳到当前目录最近那次
codex resume <SESSION_ID> # 指定某次
codex resume --cd ../backend # 续传时换个工作目录
续传保留原 transcript、plan history 和审批记录,你可以接着给新指令。本地会话存在 ~/.codex 下,断点续跑不用重喂上下文。
3. codex cloud exec —— 云端 best-of-N
codex cloud exec --env ENV_ID --attempts 3 "Summarize open bugs"
--attempts 1–4 让云端生成多条解;提交失败会非零退出,正好能塞进 CI/脚本判定成败。环境 ID 来自你的 Codex cloud 配置。注意:这一档走的是云端,才适合切到 API key 计价(见开关一)。
sequenceDiagram
participant U as 你/CI
participant L as 本地 Codex
participant C as Codex Cloud
U->>L: codex exec "fix CI"
L-->>U: plan + 结果(stdout, 可接管道)
U->>L: codex resume --last
L-->>U: 恢复 transcript, 等新指令
U->>C: codex cloud exec --attempts 3 "..."
C-->>C: 并行生成 3 条解
C-->>U: 返回最优 / 失败非零退出
Note over U,C: 失败非零退出 → 直接接 CI 判定成败
最后这一组是"用了就回不去"的小开关:
shell_environment_policy 默认过滤掉名字里含 KEY/SECRET/TOKEN 的环境变量,防止泄给模型。但调试时如果你的脚本就靠这些变量(比如要读 DATABASE_TOKEN),会被悄悄滤掉导致 Agent 看不到——这时开 ignore_default_excludes 把它们保留下来。model_reasoning_effort 调模型推理强度,难任务拉高、简单活压低省额度。web_search = "cached" | "live" | "disabled",默认 cached;要最新结果设 live,完全不联网设 disabled。codex completion zsh 再把 eval "$(codex completion zsh)" / autoload -Uz compinit && compinit 写进 rc 文件,命令补全+省敲键。/model 随时切模型;/clear 清屏、/status 看状态、/mcp 管 MCP server;Codex 运行中可以把下一条输入(普通 prompt、斜杠命令、shell 命令都行)排队给下一轮;composer 里 上下箭头翻草稿历史;写长 prompt 可以调出 $EDITOR 在编辑器里写完再发回 composer;模糊文件搜索能把工作区路径直接塞进你的消息。| 维度 | 大多数人以为 | 实际(信息差) |
|---|---|---|
| 计费 | 必须买 API key | ChatGPT 订阅登录直接吃额度,0 额外 API 费 |
| 安全 | 会问要不要执行 | sandbox_mode × approval_policy 两层独立叠加 |
| 细控 | 一刀切问/不问 | granular 按类别(rules/mcp/skill…)各自开关 |
| 规则 | 不知道有 | .codex/rules/ + 内联单元测试 + tree-sitter 防走私 |
| 自审 | 手动让 AI 看 | /review 四模式只读 reviewer,可重跑对比 |
| 并行 | 不会自动拆 | subagent 显式触发,但更费 token |
| 自动化 | 只能聊天 | exec / resume / cloud exec 三件套可接 CI |
| 额度 | 不知道哪里烧的 | 图片生成吃 3–5x 额度;环境变量默认脱敏会坑调试 |
curl -fsSL https://chatgpt.com/codex/install.sh | sh,codex 选 Sign in with ChatGPT,把充值的 API 留给真正需要计费追踪的批量任务。~/.codex/config.toml 配 sandbox_mode = "workspace-write",再在 .codex/rules/ 加一条把 npm test / pytest 设成 allow、把 rm 设成 block 的规则,用 match 单测校验。/review 按本地分支自查,把"无障碍回归""并发安全"这类自定义措辞存成常用 prompt。codex cloud exec --attempts 3 跑通,非零退出接 CI 判定。ignore_default_excludes。本文由「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 等场景全覆盖。
