全球程序员都在给Anthropic白送钱!官方终于看不下去了

栏目:互联网 | 来源:新智元 | 2026-08-15 12:59

新智元报道

就在刚刚,Anthropic发了一篇博客。

核心信息就是:各位,别再烧冤枉token了,我们都看不下去了!

为此,官方详细列举了六条省钱心法,先贴为敬:

1. 任务做完就/clear。修完一个bug就清掉当前对话,别让上一个任务读过的文件和命令输出拖进下一个任务里,白白占着上下文。

2. 开局就定好模型和推理强度(effort level)。中途切换的话,之前积累的提示缓存会全部失效,整段对话历史要按全价重新计算一遍。

3. 用@引用文件,别手打路径。用@直接把文件附到消息里,Claude不用再花一次工具调用去读。如果你只打文件名,Claude可能先搜一圈再打开好几个文件试探,这些操作全部会进入对话历史,之后每一轮都带着。

4. 给输出多的命令加静默参数(quiet flag)。在CLAUDE.md里写一句类似--reporter=dot的配置,让测试输出只打印几行摘要,不是几百行详情。输出越短,占的上下文越少。

5. /compact在休息前做。对话还在缓存里的时候压缩,成本只有正常的十分之一。等你回来缓存过期了再压,就得按全价重新读一遍再压缩。

6. 大输出任务扔给子Agent。子Agent在一个独立的上下文窗口里运行,做完只把结论传回来,过程中读的文件和跑的命令输出不会进入你的主对话。

一个token的前世今生

用Claude Code干活,API按量走,订阅制月费从20美元到200美元分三档。

根据官方推算,开发者日均消耗13美元token,月均花在150到250美元之间。

这还只是平均水平。同样修一个bug,问法不同,花费能差出好几倍。

而且每一轮对话都在拖着前面所有轮的全部内容重新发送,会话越长,每一轮就越贵。

这些钱花在哪,得从token的计价逻辑说起。

每次你在Claude Code里输入一条指令,背后发生两件事。

第一件叫预填充(prefill),也就是模型一口气读进你的整个请求,包括系统提示词、CLAUDE.md、你的消息,以及之前对话里积累的一切。这些都是输入token。

第二件叫解码(decode),也就是模型一个字一个字往外写的过程,包括它的思考、工具调用和你最终看到的文字。这些都是输出token。

关键区别在这里。

预填充是并行的,一次性把所有输入token过一遍GPU。解码是串行的,每吐一个token都要跑一次模型。200个token的回复,就是200次独立运算。

所以也就不难理解,为什么输出token要比输入token贵5倍了

在这个基础上,最终账单取决于两件事。

第一是模型,决定每个token的单价。

  • Opus 5,输入5美元/百万token,输出25美元。

  • Sonnet 5,输入2美元,输出10美元。

  • Haiku 4.5,输入1美元,输出5美元。

第二是推理强度,决定token的数量。

一个会话里大部分输出token都是思考token,推理强度控制的就是这个量。推理强度越高,模型想得越久,输出的思考token越多。max和low之间能差好几倍。

简单活用Sonnet,硬骨头才上Opus。牛刀杀鸡的钱,花得最冤。

提示缓存,是最大的省钱利器

token定价里还有一个巨大的变量,就是缓存

Claude Code的每次请求都从相同的前缀开始,也就是系统提示词、工具定义、CLAUDE.md和对话历史。

如果这次请求的前缀和上次逐字节一样,服务器就不重新算,直接加载上次的计算结果。

缓存读取只要正常输入价的0.1倍,直接省掉90%。

写入缓存贵一点,最高2倍。但写入只发生一次,后面每一轮都享受0.1倍读取。

举个例子。

假设你的对话历史有5万个token。不走缓存的话,每一轮光是重读这5万token就得付全价。但只要命中缓存,同样的5万token只需要花十分之一的钱。

一个会话跑二三十轮,缓存命中攒下来的折扣是天文数字。

这是你最大的薅羊毛杠杆。

但缓存有个致命弱点。它必须从请求的第一个字节开始连续匹配,中间任何地方变了,从那里往后全部作废。

具体来说,一共有六种情况:

1. /model切模型:每个模型的缓存独立。从Sonnet切到Opus,整个对话历史按Opus的价格重新预填充,没有折扣。

2. /effort切推理强度:推理强度也是cache key的一部分,切换之后整个对话历史都要重新计算。

3. 开关Fast mode:效果和前两种一样,缓存直接失效。

4. /compact压缩对话:对话被重写成摘要,原来的内容全部对不上,旧缓存直接作废。

5. 时间过期:订阅用户的缓存保活1小时,API用户默认5分钟。超时后下一轮全量重算。

6. 恢复旧会话:隔了太久缓存早就没了,几乎100%要全价重新计算。

坏消息是,只要中一个就意味着整个对话历史从0.1倍打回原价。

好消息是,当你知道什么会让缓存失效时,就能知道怎么保住它。

比如,会话开头就锁定模型和推理强度,全程不切。不在缓存还热的时候做/compact,等到准备休息的时候再跑。

这里,还有个隐藏坑。

opusplan模式每次进出plan都切模型。进一次,缓存失效一次。出来,又失效一次。来回跳的话,每跳一次都是一笔全价prefill。

你的会话,正在偷偷变胖

缓存帮你把重复发送历史的成本压到十分之一。

但有一件事它帮不了。你的历史本身在一轮一轮地膨胀。

每次Claude读一个文件,文件内容追加到对话里。每次Claude跑一个命令,输出也追加进去。从追加那一轮起,后面每一轮都带着。

第40轮对话在重新发送第1到39轮的全部累积内容。

这种增长,是接近平方级别的O(n²)

CClaude Code有个兜底机制。

命令输出超过30000字符,就不往对话里塞了,而是写到一个临时文件里,对话里只放一句摘要。但30000以下的输出没人管。

比如一个测试框架跑完,打印400行通过记录,每行几十个字符,总量不到3万,够不上这个阈值。

于是这400行就原封不动地留在了对话历史里,后面每一轮都跟着重新发送一遍。

对此,Anthropic博客里给了几招很实用的瘦身方法。

1. @引用文件。

不要手动输入路径让Claude自己去找。@引用会把文件直接附到消息里,省掉一次读取操作。

你只说文件名的话,Claude可能先grep搜一圈,打开好几个文件看哪个对。然后这些试探就会全部进入对话历史,徒增成本。

2. 给noisy命令加quiet flag。

在CLAUDE.md里写一句「run tests with npx vitest run --reporter=dot」,以后每次跑测试只输出几行点状结果,不是几百行详情。一分钟的配置,以后每个会话省几百行上下文。

3. subagent隔离大输出任务。

subagent在自己独立的上下文窗口里跑,做完只传答案回来,过程中读的文件和命令输出全部丢弃。适合「去翻翻日志有什么异常」「帮我过一遍这个大文件」这种活。你只要结论,不要过程。

还有最重要的一条。

4. /clear切任务。

修完一个bug就/clear,开始下一件事。上一个bug的文件、命令输出、中间探索,全部和下一个任务无关,但如果不清,它们在后面每一轮都占着位置、吃着token。

不想彻底清空的话,/compact可以把对话压成摘要。一万到两万个token能压到一千到三千。

此外,博客里还提了一个冷门但免费的操作,/rewind

如果最后几轮跑偏了,/rewind直接砍掉那几轮,前面的缓存完全不动。

管token,也是一种开发者素养

上面这些操作拆完,你会发现一个规律。写代码的人正在长出一套新技能。

跟框架和语言没关系,而是知道该选什么模型、怎么管上下文、怎么保住缓存、推理强度开多高合适。

这些能力一年前并不存在。但它现在却决定了你在同一个任务上,是花3美元还是30美元。

Anthropic自己就是最好的例子。

他们80%的代码靠AI写,代码合并量一年翻了8倍,基准测试加速52倍。AI用到这个强度,如果没人管token,光推理成本就能把预算吃穿。

从这个角度看,与其说这篇博客讲的是省钱技巧,不如说是AI时代写代码的人需要长出来的一种新本能——

知道你的每一个操作在消耗什么,知道怎么让同样的预算干出更多的活。

读懂它的人,薅到的不只是几美元的token。

参考资料:

https://claude.com/blog/maximizing-the-value-of-your-claude-code-sessions

编辑:摩西

了解更多

猜你想看

← 返回首页