成本只有四个价:输入、缓存命中、缓存写入、输出。四者差几十倍,所以「省哪一样」大有讲究。 实测三十轮会话:只换模型省八成、只开缓存省七成六、只砍上下文省三成八。 三样都做省九成六,但顺序不能反。
前九章讲的是「机制怎么运转」,第 10 章讲的是「敢不敢真让它跑」。第一篇是最实际的一笔账。 这一节有真跑:一场三十轮的会话,五种改法各算一遍,看钱到底花在哪一样上。
一、四个价
输入:每一轮都要重新付。因为每一轮都得把上下文整个再送一遍,不是只送新增那一句。 缓存命中:前缀没变的那一段,按输入价的一折算。这是唯一一个「打一折」的价。 缓存写入:第一次把前缀写进缓存,按输入价的 1.25 倍算。所以缓存不是免费,它是先垫后省。
输出:按输入价的五倍算。原因是它要一个 token 一个 token 生成,而输入是一次读完。 四个价摆在一起,第一个结论就出来了:主战场在输入, 因为它在数量上占绝对多数——一轮对话可能只输出几百 token,却要送进去几万。
二、真跑:三十轮会话,五种改法
造一场形状很普通的会话:三十轮,开头两千 token 的背景,每轮新增八百 token,每轮输出三百。 基线是 453000 个相对单位。只开缓存降到 0.24,只换便宜模型降到 0.20,只砍一半上下文降到 0.62。 换成百分比:换模型省八成,缓存省七成六,砍上下文省三成八。
三个数一摆,顺序就有了:换模型是一次决定、影响全局、最省;缓存几乎免费,但要靠前缀稳定; 砍上下文最费劲,省得最少。 所以先做的不是最「高级」的那项,是最便宜、收益最高的那项。
三、优化会换挡:钱从读转到写
再看一项容易被忽略的数:输出占总成本多少。 基线里输出只占一成。三样都做之后,它占到五成五——因为读的账被压得太低了。 这就是「换挡」:一开始输出是小头,压到最后它成了大头。
含义很直接:前期别管输出,让它多说两句没关系; 后期必须管,比如要求「只给结论不复述过程」「不要重复我贴的代码」。 反过来做——一上来就抠输出——是白费力气,那时它只占一成,抠到零也只省一成。
四、缓存的前提是前缀稳定
缓存按「前缀完全一致」判断。前缀从哪一位变了,就从那一位往后全部重算。 实测:从不打断 0.24;每十轮打断一次 0.31;每五轮 0.41;每三轮 0.55。 一次打断能吃掉一多半收益。而这件事在日常使用里天天发生。
前缀为什么会变?三种:工具结果插进了中间、上下文压缩后重排、临时追加了一句指令。 所以「上下文管理是成本控制的核心」这句话,不是因为它省的钱最多, 而是因为它是缓存能兑现的前提——前缀不稳,打折就不存在。
五、落地的四步顺序
第一步定模型:一句话的事,省得最多,而且不改变别的行为。 第二步开缓存:几乎零成本,但要接受「前缀一变就归零」。 第三步管上下文:把背景压短、把工具结果截断、别把整份文件往里面贴。
第四步才管输出:这时候它已经是第一杠杆了,要求「只给结论」才有效。 每一步都要配一个观测量:模型看单价、缓存看命中率、上下文看前缀长度、输出看平均长度。 没有观测量,优化就退化成猜。
六、动手 Demo:同一场会话,五种改法各要花多少
一场三十轮的会话,按分层计价算五遍:基线、只开缓存、只换模型、只砍上下文、三样都做。 重点不在绝对金额,在五项之间的比例——以及比例为什么会随着优化而变。
prefix = base + step * i # 第 i 轮要送进去的全部内容
if i == 0:
ic += prefix * pin * WRITE # 第一次写进缓存,比原价贵
else:
ic += (prefix - step) * pin * HIT + step * pin
实跑输出:
--------------------------------------------------------------------
同一场会话,五种改法各要花多少
--------------------------------------------------------------------
算成本先得知道钱花在哪四样上:输入、缓存命中、缓存写入、输出。
四样的价格差得远,所以「省哪一样」大有讲究。
① 四个价
--------------------------------------------------------------------
| 项目 | 相对单价 | 说明 |
|---|---|---|
| 输入 | 1.0 | 每一轮都要重新付 |
| 缓存命中 | 0.1 | 前缀没变的那段,打一折 |
| 缓存写入 | 1.25 | 第一次写进去,比原价还贵点 |
| 输出 | 5.0 | 一个 token 顶五个输入 |
这是相对倍数,不是绝对价格。价格随时会变,看比例才有意义。
② 真跑:三十轮会话,五种改法
--------------------------------------------------------------------
| 改法 | 输入 token | 输出 token | 相对成本 |
|---|:---:|:---:|:---:|
| 基线 | 408000 | 9000 | 1.00 |
| 只开缓存 | 408000 | 9000 | 0.24 |
| 只换便宜模型 | 408000 | 9000 | 0.20 |
| 只砍一半上下文 | 234000 | 9000 | 0.62 |
| 三样都做 | 234000 | 9000 | 0.04 |
基线一共 453000 个相对单位。三样都做只剩 4%——省掉 96%。
单做一项的时候,换模型省 80%、开缓存省 76%、砍一半上下文省 38%。
注意顺序:换模型最省且是一次决定,缓存次之且几乎免费,砍上下文最费劲也省得最少。
③ 优化到最后,钱从「读」转到「写」
--------------------------------------------------------------------
| 改法 | 读的支出 | 写的支出 | 写占多少 |
|---|:---:|:---:|:---:|
| 基线 | 408000 | 45000 | 10% |
| 只开缓存 | 63980 | 45000 | 41% |
| 只换便宜模型 | 81600 | 9000 | 10% |
| 只砍一半上下文 | 234000 | 45000 | 16% |
| 三样都做 | 7228 | 9000 | 55% |
两列都是加权后的支出,单位是相对单位;输入单价为 1.0 那一行,数字恰好等于 token 数。
基线里输出只占 10%,三样都做之后占 55%。
这就是优化会「换挡」:读的账压到很低之后,第一杠杆变成「让它少说废话」。
反过来,一开始就盯着输出抠是白费的——那时它只占一成。
④ 缓存的前提:前缀得稳定
--------------------------------------------------------------------
| 前缀情况 | 读的支出 | 相对成本 |
|---|:---:|:---:|
| 从不打断 | 63980 | 0.24 |
| 每 10 轮打断一次 | 94740 | 0.31 |
| 每 5 轮打断一次 | 140880 | 0.41 |
| 每 3 轮打断一次 | 202400 | 0.55 |
一次都不打断,缓存把读的账从 408000 压到 63980。
但只要每五轮被打断一次,收益就少掉一大半——因为整段要按写入价重付。
而「前缀为什么会变」就是上下文管理的事:工具结果插进中间、压缩重排、临时追加指令。
所以上下文管理是核心,不是因为它省的钱最多,而是因为它是缓存能生效的前提。
⑤ 落地的四步顺序
--------------------------------------------------------------------
- 先定模型:一句话的事,省得最多,而且不影响别的。
- 再开缓存:几乎零成本,但只有前缀稳定时才兑现。
- 再管上下文:把背景压到最短,让前缀既短又稳。
- 最后才管输出:前面都做完,它才成为第一杠杆。
! 单价是相对倍数,取自公开定价的大致比例;不同厂商、不同代际会变,结论看排序不看绝对值。
①四个价:输入 1.0、缓存命中 0.1、缓存写入 1.25、输出 5.0。主战场在输入,因为它在数量上占绝对多数。 ②三十轮基线 453000 个相对单位。只换模型降到 0.20、只开缓存 0.24、只砍一半上下文 0.62。 三样都做只剩 4%。 ③优化会换挡:输出占成本的比例从一成涨到五成五。前期别管输出,后期必须管。 ④缓存的命门是前缀稳定:每五轮打断一次,收益就从 0.24 掉到 0.41。 而前缀会变,正是上下文管理要解决的事。
30 秒实验
- 把轮数从三十改成十,重跑一遍。哪一项的相对成本变化最大?这说明会话越长,哪一项越重要?
- 把每轮输出从三百改成一百,重跑一遍。基线那一行省了多少?三样都做那一行又省了多少? 两个数为什么差这么远?
- 给「每五轮打断一次」再加一个「打断时保留摘要」,重跑一遍。前缀短了但变了,成本是升还是降?
常见误区
- 一上来就抠输出。基线里它只占一成,抠到零也只省一成。
- 以为开了缓存就一定省。前缀一变就归零,而前缀天天在变。
- 把整份文件贴进对话。读进来就进了前缀,后面每一轮都在为它付钱。
- 只换便宜模型不看任务。省八成是真的,但难题上返工两次就赔回去了。
- 不做观测就算账。没有命中率和前缀长度,所有优化都只是感觉。
自测三问(点开对答案)
1. 成本有哪四个价,哪个最贵? —— 输入、缓存命中、缓存写入、输出。输出最贵,是输入的五倍;缓存命中打一折。 2. 为什么说「优化会换挡」? —— 读的账压到很低之后,输出占总成本的比例从一成涨到五成五,第一杠杆就从「少读」变成「少写」。 3. 上下文管理为什么是成本控制的核心? —— 不是因为省得最多,而是因为它是缓存能兑现的前提:前缀不稳,一折就不存在。钱算清了,下一节讲出问题时怎么查——三层证据,各能看出多少。
- ☐ (本篇完,下一篇 10.2 调试:打开黑盒)
相关笔记
- 常用 MCP 服务器生态:常驻 token 那笔账
- 调试:打开黑盒:出问题时怎么查
- Claude Code 橙皮书 · 索引
- 🐎 Claude Code 实战 · 索引