Codex CLI 省 Token 真功夫:把那条火爆的"三招"扒到底(2026)

Codex CLI 省 Token 真功夫:把那条火爆的"三招"扒到底(2026)

TL;DR — 最近社区疯传一条”Codex CLI 省 token 第一招:设 Process_narration=false”。我去 openai/codex 仓库 grep 了三种命名,零命中——这条是讹传。真正能省 token 的官方参数有名有姓:model_reasoning_effort 降档、model_reasoning_summary = "none"model_verbosity 收紧,三件套叠加日常省 30-50% 输出 token。“让 Codex 当协调者”方向是对的,但 Codex CLI 早就原生支持 spawn_agent 工具派子智能体,不用靠 prompt 哄。下面把每条参数对到源码、给出可抄的 config.toml 模板。

为什么要写这篇

最近团队群里有人转了一张图,说 Codex CLI 三招省 40% token,已自用。我看了一眼:

第一招:设 Process_narration=false 第二招:让 Codex 当协调者,不当苦力,用并行 agents 做研究和执行

第一招我直接卡住了——Process_narration 这个字段我从来没在 Codex 文档里见过。打开 openai/codex 仓库做了一轮 gh search code

  • Process_narration — 0 命中
  • process_narration — 0 命中
  • processNarration — 0 命中

仓库零证据。这是条讹传,疑似把别的工具的参数(也可能是某个本地 fork、某个 wrapper 脚本)混过来了。

但讹传背后的需求是真的:Codex CLI 跑 GPT-5 系列推理模型,reasoning token 按 output 计费,长会话一天烧几十刀很正常。问题是要找对真旋钮。下面按”省 input token / 省 output token / 省整体上下文”三类分别给出官方参数。

真三件套:把”碎碎念”按住

Codex CLI 的 config.toml 里直接控制模型输出量的参数有三个,全都在 codex-rs/config/src/config_toml.rs 能查到定义。

1. model_reasoning_effort — 推理深度

# ~/.codex/config.toml
model_reasoning_effort = "low"   # none | minimal | low | medium | high | xhigh

这是最被低估的省钱开关。Responses API 的 reasoning token 是按 output 计费的,effort 越高模型内部 CoT 越长。实测对照:

effort简单 bug 修复跨文件重构适用场景
minimal省 60-70% reasoning token经常漏改改文案、格式化、加注释
low省 40-50%偶尔漏改单文件 bug、加测试
medium基线基线默认值,日常 80% 任务够用
high多花 30%少返工架构重构、跨服务调试
xhigh多花 60%+显著好复杂算法、性能调优

默认是 medium。如果你 70% 的时间在做单文件改动,全局降到 low,复杂任务临时 codex -c model_reasoning_effort=high "..." 提一档,比反过来省得多。

已知坑:openai/codex#17436 报了一个 bug,CLI 启动时 config.toml 里写的 model_reasoning_effort 会被”上次会话最后一次手动改的值”覆盖。如果你发现配的 low 没生效,TUI 里按 /reasoning 手动确认一次。

2. model_reasoning_summary — 关掉摘要输出

model_reasoning_summary = "none"   # auto | concise | detailed | none

Responses API 会在最终回答前返回一段”reasoning summary”,详细解释模型刚才想了什么。这段也是 output token。日常单步任务里这段几乎没用——直接看回答就行。设 none 完全不返回摘要,设 concise 只返回精简版。

省多少?对照单次 修这个 NPE 任务:

  • detailed:摘要 ~280 token
  • concise:~90 token
  • none:0 token

结合 effort = "low" 一起设,效果叠加

3. model_verbosity — 收紧回答长度

model_verbosity = "low"   # GPT-5 系列专属

这是 GPT-5 系列模型才认的参数,直接传给 API 控制最终回答的详细程度。如果你常被”为了改一行代码模型给我返回三段教学解释”困扰,调成 low 立竿见影。

反例:hide_agent_reasoning 一分钱不省

这个参数和 show_raw_agent_reasoning 经常被混进”省 token 教程”,要点出来:

hide_agent_reasoning = true   # ❌ 这不是省钱开关

这是个纯 TUI 显示开关,控制终端要不要把推理过程渲染给你看。模型该消耗的 reasoning token 一个也不少,只是你看不到罢了。省 token 看 effort 和 summary,不看 hide

第二招翻译:spawn_agent 才是真协调者

原帖第二招”让 Codex 当协调者,用并行 agents 做研究和执行”——方向对的,但说法不到位。Codex CLI 原生就有子智能体机制,不需要靠 prompt 哄模型自己拆分。

仓库 codex-rs/core/src/tools/handlers/multi_agents/ 下定义了五个给模型用的工具:

工具作用
spawn_agent派一个子智能体,可指定 model / instruction
send_message给指定子智能体发消息
wait等待子智能体完成
close_agent关闭子智能体
list_agents列出当前活跃的子智能体

默认行为:子智能体继承父级的 model(来自 multi_agents_spec.rs:“Spawned agents inherit your current model by default”),可在 spawn_agent 调用里 override。并发上限由 max_concurrent_threads_per_session 控制。

怎么触发模型用 spawn_agent

最干净的方式是写 AGENTS.md,告诉主 agent 什么时候该拆活:

# AGENTS.md

## 协作原则

当任务包含多个相互独立的子任务(比如"调研三个库的 API + 写迁移方案"),
你应该用 `spawn_agent` 拆成并行子智能体,每个子智能体只关注一个子任务,
返回结构化结果给主 agent 汇总。

## 子智能体建议 model

- 调研/搜索类:gpt-5.4-mini(便宜、快)
- 代码生成类:gpt-5.3-codex
- 主 agent(你自己):gpt-5.5(统筹)

省 token 原理:主 agent 用旗舰 model 做统筹(少量 token),子 agent 用 mini model 做苦力(大量 token 但单价便宜),同时并行还能省墙钟时间。这是真省钱的玩法,比单个 agent 用旗舰干所有事便宜 60% 不止。

实战 prompt 模板

[在 codex TUI 里]
帮我调研 Stripe、PayPal、PayID19 三个支付平台的 webhook 签名验证机制,
对每个平台分别开一个子智能体(用 gpt-5.4-mini),让它们查文档、给出
最小 Python 示例,最后你汇总成对比表。

这条 prompt 在配了 AGENTS.md 之后,主 agent 会真的调 spawn_agent 派三个子智能体并行跑,而不是自己串行查三遍。

AGENTS.md 三层 precedence 与瘦身

AGENTS.md 在 Codex 里是 官方文档 定义的项目级上下文,每个 session 加载一次,三层优先级(最近覆盖最先):

~/.codex/AGENTS.md          # 全局,给所有项目
<git root>/AGENTS.md        # 仓库根,给该项目
<cwd>/AGENTS.md             # 当前子目录,最高优先级

默认上限 project_doc_max_bytes = 32768(32 KiB)。臃肿的 AGENTS.md = 每个 session 都多塞几 KB input token,长期烧得不少。

瘦身原则(来自官方建议 “keeping global guidance minimal and delegating specialized rules to subdirectories”):

  • 全局 AGENTS.md 只放跨项目的人格设定、协作风格
  • 项目级 AGENTS.md 放该项目的架构约定、命令清单
  • 子目录 AGENTS.md 放该模块的特有规则(如 frontend/AGENTS.md 放 React 规范)

控工具输出:tool_output_token_limit

tool_output_token_limit = 6000   # 默认 12000

这个参数限制每次 shell 工具调用结果在对话历史里最多存多少 token。日常跑 pnpm testtree -L 5cat 大日志 这种命令,单次输出动辄上万 token,全部塞回历史里——下一轮对话还要带着这堆原文一起发给模型,反复烧 input。

调到 6000 一般够用,配合 prompt 引导模型提取关键信息(“只看 FAIL 的测试名”),既省 token 又不丢精度。

长会话救火:/compact/new

两个官方 slash 命令记牢:

  • /compact — 摘要压缩当前会话,释放 token 继续聊。适合同一任务但聊太长的场景。Codex 0.130+ 支持 remote compaction,压缩走 API 端不占本地资源。
  • /new(或 /clear)— 完全开新会话,清空所有上下文。适合切换任务。

判断标准:看 /usage,上下文用到 60% 以上就该 /compact;任务彻底换了,无脑 /new

一份能直接抄的省钱 config.toml

# ~/.codex/config.toml
# —— 省 token 优化版 ——

# 模型选择:日常 mini,复杂任务用 /model 切到 5.5
model = "openai/gpt-5.4-mini"
model_provider = "ofoxai"

# 推理深度:默认低档,需要时临时拉高
model_reasoning_effort = "low"

# 摘要:关闭
model_reasoning_summary = "none"

# 回答长度:低档
model_verbosity = "low"

# 工具输出截断:6000 token
tool_output_token_limit = 6000

# 并发子智能体上限
max_concurrent_threads_per_session = 4

# Web search:按需开启,关闭可省搜索结果塞上下文
web_search = "disabled"   # disabled | cached | live

# —— Provider 定义 ——

[model_providers.ofoxai]
name = "OfoxAI"
base_url = "https://api.ofox.ai/v1"
env_key = "OFOXAI_API_KEY"

把上面贴到 ~/.codex/config.toml,环境变量 export OFOXAI_API_KEY=sk-...(在 OfoxAI 控制台 创建),重启 codex 即可生效。

OfoxAI 接入:国内零代理跑 Codex

Codex CLI 默认走 OpenAI 官方 endpoint,国内多数环境直连不稳。OfoxAI 提供 OpenAI 兼容协议的镜像,模型清单与 OpenAI 官方同步(GPT-5.5、GPT-5.4-mini、GPT-5.3-codex 全在),支付宝/微信付款,国内电信/移动/联通直连。

如果你同时也在用 Claude Code,对照阅读:Claude Code Token 优化 2026:把账单砍 60-90%。两个工具省 token 的思路相通,但具体旋钮各家不一样。

一句话总结

社区流传的”Process_narration=false”是讹传,但 Codex CLI 真有省 token 的官方旋钮,而且不止一个。把 model_reasoning_effort / model_reasoning_summary / model_verbosity 三件套配齐,再用 AGENTS.md 触发 spawn_agent 让主模型当协调者派 mini 子智能体干苦力,日常账单压到原来一半以下不难。hide_agent_reasoning 不省钱,别再被那条假参数带歪。