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

网传 Process_narration=false 仓库零命中,系讹传。本文按 openai/codex 源码逐条核实,model_reasoning_effort 降档、model_reasoning_summary 和 model_verbosity 三件套叠加可省 30-50% token,并讲清原生 spawn_agent 子智能体用法。

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

摘要 — 最近社区疯传一条”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.5GPT-5.4-miniGPT-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 不省钱,别再被那条假参数带歪。

常见问题

Codex CLI 真的有 Process_narration=false 这个参数吗?
没有。在 openai/codex 仓库对 Process_narrationprocess_narrationprocessNarration 三种命名做全仓库搜索都是 0 命中。这是一条流传开的讹传,疑似把别的工具参数串过来了。真正「减少模型碎碎念」的官方参数是 model_reasoning_summary = "none"(关闭推理摘要输出)和 model_verbosity(控制最终回答长度)。
Codex CLI 怎么真省 token?最直接的三个旋钮是什么?
都在 ~/.codex/config.toml:① model_reasoning_effort = "low"(或 minimal),降模型内部 CoT 深度,reasoning token 也计费;② model_reasoning_summary = "none",关掉摘要输出;③ model_verbosity 设小一档(GPT-5 系列专属),直接缩短最终回答。三件套叠加,日常单文件改动通常能省 30-50% 输出 token。
hide_agent_reasoning = true 能省 token 吗?
不能。这是个 TUI 显示开关,模型该消耗的推理 token 一个也不少,只是不在终端里给你看。这个参数和 show_raw_agent_reasoning 经常被误当成省钱开关,要注意区分。真省 token 看 model_reasoning_effortmodel_reasoning_summary
让 Codex 当协调者派 sub-agents 是怎么回事,要怎么配?
Codex CLI 原生支持,不是 prompt 戏法。仓库 codex-rs/core/src/tools/handlers/multi_agents/ 给模型提供了 spawn_agent / send_message / wait / close_agent / list_agents 五个工具,模型可以自己派子智能体并行跑。子智能体默认继承父级的 model,可显式 override;用 max_concurrent_threads_per_session 限并发。日常用法:写一份 AGENTS.md 描述拆分原则,主 agent 看到复杂任务自动 spawn 子 agent。
tool_output_token_limit 是什么?
限制每个工具/函数调用结果在对话历史里占多少 token,默认 12000。如果你常跑大输出命令(pnpm testtreecat 大日志),调小到 4000-6000 能显著省 input token,代价是模型只看到截断后的尾段,需要靠 prompt 引导提关键信息。
Codex 的 prompt caching 怎么开?
不需要开,Responses API 后端自动处理。Codex CLI 没暴露开关。命中条件是 system prompt 和 AGENTS.md 保持稳定——所以频繁改 AGENTS.md 会反复打破缓存。让你的 AGENTS.md 瘦身且少改,缓存自然命中。
/compact/clear 怎么用?
/compact 把当前可见对话摘要压缩,释放 token 继续聊;/new(或 /clear)开新会话彻底清空。规则:跨任务用 /new,同一任务聊太长(超过 60% 上下文窗口)用 /compact。两者都是官方 slash 命令,/compact 还能接 remote compaction 走 API 端处理。
国内能用 OfoxAI 跑 Codex CLI 吗?
能。~/.codex/config.toml 里加一段 [model_providers.ofoxai]base_url = "https://api.ofox.ai/v1"env_key = "OFOXAI_API_KEY",顶层 model_provider = "ofoxai" 即可。免代理、支付宝/微信付款、GPT-5 系列同步上架。详细配置看 Codex CLI 进阶配置