输入 token 少了 28%,钱只省了约 4%

Read in English

Codex CLI 自带一份 21,769 个字符的指令模板,我把它换成了一个 899 字节的文件。在 24 次真实的编码运行里,总输入 token 减少了 28.03%。按公开费率估算,成本只降了 4.31%,而且精简版通过的任务更少。

这是一个负结果。我把它发出来,是因为前面那个数字才是会被人引用的那个。

精简指令相对默认指令的变化,每组 12 个任务求和
输入 token,全部
−28.0%
命中缓存的输入
−44.6%
未命中缓存的输入
−3.9%
输出 token
+16.9%
估算成本
−4.3%

Codex CLI 0.159.2,gpt-6.1-sol,low reasoning。成本是按公开费率估算的,不是账单。

我当时为什么觉得会有用

这份模板每次请求都会带上。默认的请求体是 57,049 字节,换成短文件后是 35,942 字节,小了 37.0%。每个任务的每一轮都少发这么多 token,看起来是白捡的节省。

实验设置

  • Codex CLI 0.159.2,模型 gpt-6.1-sol,low reasoning。两组的工具、权限和其余配置完全相同。
  • 六类小型代码修复任务:区间合并、LRU 容量、退避上限、拓扑排序、JSON merge patch、输出游标。
  • 每个任务每组跑两次,一共 24 次,串行执行,每次用全新的目录。
  • 改动用的是官方支持的选项 model_instructions_file。短文件保留了关于任务范围、权限、保护密钥、把活干完、测试和如实报告的规则。工具定义约 20,462 字节,原样保留。
  • 协议和通过门槛在运行之前就写好,并冻结在一次提交里。只跑一次,没有重试,也没有额外的诊断调用。

最后这一条,是我对这个结果的信任多过喜欢的原因。

结果

12 个任务求和 默认 精简 变化
输入 token,含缓存 463,258 333,427 −28.03%
命中缓存的输入 274,688 152,192 −44.60%
未命中缓存的输入 188,570 181,235 −3.89%
输出 token,含 reasoning 4,465 5,220 +16.91%
按公开费率估算的 credits 11.23 10.75 −4.31%
通过冻结检查的任务 12 个里 11 个 12 个里 9 个

12 对任务里,每一对的总输入都减少了,降幅在约 8.8% 到 32.4% 之间。估算成本有 6 对下降,另外 6 对上升。

省下的钱去哪了

我用的费率是 2026 年 10 月 1 日查到的 Standard 档:未命中缓存的输入每百万 token 50 credits,命中缓存的输入每百万 2.5,输出每百万 250。

  • 命中缓存的输入:少了 122,496 个 token,值 0.31 credits。缓存 token 的价格是未缓存的二十分之一,而我删掉的指令大部分本来就在走缓存。
  • 未命中缓存的输入:少了 7,335 个 token,值 0.37 credits。
  • 输出:多了 755 个 token,多花 0.19 credits。输出的单价是未缓存输入的五倍。

净额:11.23 credits 里省了 0.48。

质量门槛没过

默认组 12 个任务过了 11 个,精简组过了 9 个。这没有达到我事先定下的门槛。

事后逐个看那四次失败,代码本身都没问题:24 份提交的源文件,离线复核时全部通过了功能检查。其中三次失败是我的校验器拒绝了一个合法调用 int.bit_length(),因为它不在允许列表里。第四次是一条带环境变量前缀的测试命令,检查器没认出来。

但我保留了原始结论。门槛是运行之前定的,这次运行没达到。事后的复核另外记录,并标明是 post hoc,它不改变已经记录的结果。

我原本会怎么误读它

如果只看总输入 token,我会报告省了 28%。这个数字藏住了三件事:

  1. 少掉的是哪些 token。是便宜的那些。
  2. 输出发生了什么变化。输出才是贵的那一侧。
  3. 活还有没有干成。

局限

  • 24 次运行,六类小任务,一个模型,一个 CLI 版本,一种 reasoning 设置。
  • 成本是按公开费率估的。这些运行我没有发票,账户余额的变化也没法归到它们头上。
  • 短文件删掉了一些详细的流程指令,所以这不是对同一套指导做的等价压缩。
  • 没有控制缓存的冷暖状态。
  • 这次样本里,默认组的总耗时是 227.65 秒,精简组是 257.81 秒。我不从中得出任何结论。

接下来

这个实验的下一版,要先修好校验器,换成真实的仓库和更长的任务,控制并记录缓存是冷是热,然后把质量、未缓存输入、输出和总成本放在一起判断。值得验证的想法是:一份很短的、针对任务的指令文件,放在一段稳定的公共前缀后面,让前缀持续命中缓存。

这个实验目前放在一个私有仓库里。协议、冻结的提交和原始运行归档都在,我还没有公开。

来源

  • 我自己的实验记录:这个工作包的协议、运行归档和成本报告。
  • Codex 定价,费率出处。