Published on

Codex 终极省 Token 方法:我实际跑过的一套配置

Authors
  • avatar
    Name
    Pony Ma
    Twitter

用 Codex 写代码,最明显的感受就是:好用,但烧 Token。

我之前一直用 gpt-5.6-sol + xhigh。难题挺稳,问题是改个小配置、搜几处代码也全程满功率,额度掉得比活儿快。

看完那篇讲模型分流的公众号文章,我照着改了一遍,又把 RTK、Ponytail 和 Caveman 都跑了跑。下面这套就是最后留下来的。

一、先看懂 Codex 的 Token 花在哪

很多人只盯着主模型。其实一条任务跑下来,主线程、/review、子 Agent、Shell 输出和 MCP 塞进来的上下文,都会吃 Token。

主线程决定日常开销;/review 只有手动调用才会跑;子 Agent 能省时间,但每个 Agent 都有自己的上下文,总 Token 往往更高。日志、JSON、搜索结果如果整段灌进对话,也很容易把上下文撑胖。

所以我现在的思路是:模型先分工,命令输出先压缩,代码能少写就少写。Caveman 这种更激进的方案,跑完对照再决定。

二、Codex 终极省 Token 方法

第一步:配置主模型和 Review

先改 ~/.codex/config.toml

model = "gpt-5.6-sol"
model_reasoning_effort = "high"
review_model = "gpt-5.6-terra"

主线程还是 Sol,只把默认推理从 xhigh 降到 high。日常开发够用,碰到复杂任务再临时拉高。

review_model 只管 /review,不会自动给每个任务加一轮审查。官方配置文档就是这么定义的。

service_tier、自动压缩阈值和自定义 provider 我都没动。只嫌回答太长,可以先试 Codex 原生选项:

codex -c 'model_verbosity="low"'

改配置前先备份,改完跑检查:

cp ~/.codex/config.toml ~/.codex/config.toml.bak
codex doctor --summary --no-color --ascii

我这里 configauthstatethreads 都通过了。MCP、网络警告要单独看,配置加载成功不等于整个环境全绿。

另外,我用的是 ChatGPT 登录。这里说的省 Token,主要是少占上下文、少撞限额、少等模型长考,不能直接拿 API 价目表换算省了多少钱。

第二步:配置子 Agent

[agents]
max_concurrent_threads_per_session = 3
default_subagent_model = "gpt-5.6-terra"
default_subagent_reasoning_effort = "medium"

子 Agent 默认用 Terra Medium,并发最多 3 个。它省的是单个 Agent 的开销,总 Token 通常还是会上升,因为每个 Agent 都要单独推理、读文件、跑工具。OpenAI 的子代理文档也提醒了这一点。

第三步:用 RTK 压缩命令输出

RTK 专门压缩 Shell 输出。测试只展开失败项,git status 只留有用状态,搜索结果按文件分组,重复日志直接折叠。原命令照常执行,排错时还能回看完整输出。

安装并接入 Codex:

brew install rtk
rtk init -g --codex --dry-run
rtk init -g --codex
rtk init --show --codex

Codex 里的 RTK 依赖 AGENTS.md + RTK.md 指令,让模型主动使用 rtk git status 这类命令。当前这条接入路径没有透明 Hook 强制改写。RTK 的说明也标注为 prompt-level guidance。

我机器上目前记录了 559 条命令:原始输出估算 753.1K Token,过滤后 466.7K,少了 286.8K,显示 38.1%。

这个比例只代表命令输出,而且是 bytes / 4 估算。我这份数据还被几次超长 psgit pull 拉高了。它能证明 RTK 确实删掉了大量噪声,证明不了 Codex 总开销下降 38.1%。

平时看看这两个就够:

rtk gain
rtk discover --all --since 7

后一个会找出还在裸跑的 findcurlgit log 等命令。

第四步:用 Ponytail 少写代码

Ponytail 管的是 AI 最后写进仓库的代码。

需求只要日期选择,AI 很容易装组件库、包组件、加样式。Ponytail 会先查现有代码、标准库和平台原生能力。浏览器的 <input type="date"> 够用,就停在这里。

它不会为了少几行代码删掉输入校验、安全处理或无障碍,也要求 Bug 尽量从公共入口修。

Codex 安装:

codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail

重启后去 /hooks 检查它的 Hook。Codex 中这样用:

@ponytail lite
@ponytail full
@ponytail-review

我会先用 lite,合拍以后再开 fullultra 适合专门清理过度设计,不适合长期全局开。

它的公开 benchmark 用 Claude Code、Haiku 4.5 跑了 12 个功能任务,报告平均少写 54% 代码、少用 22% Token。完整报告

这数字很吃任务。日期选择器这种容易造轮子的需求收益大,已经很短的 CRUD 几乎没变化。自己用时看 git diff、依赖数量和返工次数。

不合适就卸掉:

codex plugin remove ponytail

第五步:Caveman 先测再开

Caveman 现在有三块:缩短回答的 Skill、压输入的本地代理,以及分析历史用量的 learn

我会先装 CLI,只跑 learn

npm install -g @caveman-ai/cli
caveman telemetry off
caveman setup --install
caveman status
caveman learn

learn 会在本地只读扫描 Codex 等工具的历史,先告诉你上下文肥在哪里。想让 Codex 根据报告提修改方案,再运行:

caveman learn implement codex

回答压缩 Skill 的安装方式是:

npx skills add JuliusBrussee/caveman --skill '*' -a codex --yes

但 Caveman 自己的 Honest Numbers 写明,这个 Skill 每轮大约增加 1~1.5K 输入 Token。原本回答就很短时,它可能越省越贵。先试 model_verbosity="low",再决定要不要装。

本地代理这样启动:

caveman codex
caveman trial -- codex
caveman trial report

找一个固定 commit 和固定任务,分别用直接 Codex、caveman codex 跑新会话。比较正确性、轮数、恢复调用、总 Token 和时间。

Caveman 仓库公布的 33.2% 输入减少,来自 Claude Code 和几组固定的大型工具输出。报告里有一个 HTML 用例反而多用了 9.9%,原始运行产物也没公开,目前无法独立复现。报告原文

当前仓库不同文档对 Codex 命令压缩的接入方式还有出入,所以启动成功以后仍要看 status 和实际命令结果。

许可证也要留意:Skill、CLI 等部分是 MIT;Engine、Proxy、Browse、MCP 等运行时是 BSL-1.1,变更日期前属于 source-available。

第六步:关掉暂时用不到的 MCP

不用的 MCP 我没有删除,只是先关掉:

[mcp_servers.example]
enabled = false

需要时再开。某个 MCP 只用得到几个工具,就配 enabled_tools 白名单。

子代理也一样。小任务不开;大仓库里确实有两三条独立调查线,才交给 Terra Medium 并行。这样主要省时间,总 Token 多半会上升。

三、我现在实际怎么用

  • 普通任务:Sol high + RTK
  • 容易过度设计:加 Ponytail lite/full
  • 超长日志和 JSON:先 RTK,仍然太大再试 Caveman。
  • 高风险改动:测试后手动 /review
  • 大仓库探索:最多 2~3 个 Terra Medium 子代理。

别一次把所有东西打开。固定同一个任务,每次只增加一个变量,先看任务做对没有,再看 Token、时间、代码量和返工次数。

我会长期保留模型分流和 RTK。Ponytail 按任务用,Caveman 等自己的对照数据说话。

省 Token 最怕走到最后,先装出一套比 Codex 还复杂的系统。


本文核验于 2026-08-25。相关版本:Codex 0.147.0、RTK 0.45.0、Ponytail 4.9.0。