标价一分没涨,我同一份代码在 Claude 上多烧了三成 token

哈喽,我是飞飞。
前阵子写 Sonnet 5 的时候,我在文末顺手撂过一句话:别信标价页那个便宜价,它换了新 tokenizer,名义上省下的会被悄悄削回去。
当时那句话我说得挺虚,没数,就是个体感。
昨天刷到一篇实测,有人真把这笔账从头到尾算了一遍。我盯着那张表看了半天,后背有点发凉。
硌得我难受的地方在于,这笔账我早该自己算,却让别人先算明白了。
我早说过别信标价
先把话说前头,免得你觉得我在替 Anthropic 洗地或者砸场子。
我是 Claude Code 的重度用户,天天开着它干活,一个月给 Anthropic 的钱不算小。
我对成本这事敏感到什么程度?早年我逮着最强的 Opus 什么活都上,月底账单肉疼,才逼自己改成按任务手动分模型。
省钱模式我手动跑过,prompt caching 我把账单从 106 美元压到过 33,连把文本渲染成图钻图片计费空子那种野路子我都写过。
我甚至给自己立过一条「过秤」的规矩:派 agent 干活前,先在心里掂量这活值不值得上贵模型,纯体力杂活手动切便宜档。有回我从 Claude 换到 Gemini,仗着它上下文装得下,一直不开新窗口,一个月消费直接高了六成。那次我才明白,多花的钱常常不在模型贵,在用法悄悄变了。
所以这篇不是唱衰,是我这个抠成本抠到骨头里的人,发现自己漏算了一层。
token 长度不固定
先说清楚这层到底是什么,不然后面的数字你没法自己判断。
你付的钱,是两个数相乘:内容被切成多少个 token,乘以每个 token 多少钱。
标价页只告诉你后面那个单价,默认前面那个是定死的。
它不定死。
同一段文字,交给不同的 tokenizer,切出来的 token 数能差出一大截。
打个比方。你去菜市场买肉,店家报的是每份多少钱,可这个「份」是他自己拿刀切的。
刀法一变,同一块肉切成更多份,单价没动,你付的总数就上去了。
token 就是那个「份」,tokenizer 就是那把刀。
同样代码切得更碎
Anthropic 就是换了刀法。
从 Opus 4.7 开始,它上了一套新 tokenizer,4.8 和 Sonnet 5 都沿用这套;4.6 和更早的还是旧刀。
新刀切同一份内容,比旧刀多切出不少 token。
按 Anthropic 自己文档的说法,新 tokenizer 对同样文本大概是旧版的 1 到 1.35 倍,代码尤其是重灾区。
那篇实测更狠,直接拿官方接口把同一批文件在新旧两把刀下各切一遍。
一个 TypeScript 文件从 898 涨到 1178,一段英文散文从 476 涨到 636,他们那份 agent 系统提示从一万零七百多涨到近一万五。
Python 从 831 涨到 1022,Rust 从 1019 涨到 1312,一份 JSON 工具定义从 2631 涨到 3306,几乎每一类都是两三成往上走。
代码为什么最惨?符号、缩进、驼峰命名这些零件,新刀切得比旧刀更碎,而代码里满满都是这些。
综合下来,一次真实请求大概多产三成 token。
关键在于,每 token 的标价一分没动。
Opus 4.6 和 4.8 都是每百万输入 5 美元、输出 25 美元,数字一模一样。
可同样一份代码丢进去,4.8 计的 token 就是比 4.6 多。
那篇文章拿真实账单核过:同一份内容,Opus 4.6 计 2541 个 token,4.8 计 3191,多了四分之一还拐弯。
换算成有效价格,4.8 那个 5 美元 25 美元,花起来其实像 7.5 美元 37.5 美元。
那篇实测还拿 GPT 当尺子比了一圈,同一个 TS 文件,Claude 新刀切出来是 GPT 的 1.73 倍。这个跨厂对比我没法自己复核 GPT 那半边,就当那篇博客的实测数摆着看。
中文党躲过一劫
看到这你先别急着卸载 Claude Code。
有个细节那篇实测标得很清楚,我觉得对咱们特别重要:这三成的涨幅,几乎全砸在英文和代码上,中文基本没动。
他们测的那段中文散文,旧刀 435 个 token,新刀 433,差了两个,基本可以忽略。
换句话说,吃亏的是你的代码文件、你那一大坨英文系统提示、你的 JSON 工具定义。
你写在代码里的中文注释、你跟 agent 的中文对话,这部分几乎没被多切。
所以别一听「涨三成」就慌。
你要是主要拿它写中文内容、做中文对话,这刀基本没落在你身上。
可只要你天天用它跑代码,尤其是 TypeScript 这种,那这三成就实打实压在你账单上。
我这条自动写作流水线,十几个 skill 全是英文系统提示加中文正文混着跑,英文那半边是躲不掉的。
光那份写作规则手册就攒了一百多条,全是英文骨架。每跑一篇稿子,这些英文系统提示都要重新计一次费,这刀落下来,我是正面挨的。
促销价 8 月底到期
还有一层叠加的,得单独拎出来提醒你,因为它是一条带日期的坑。
Sonnet 5 上线时挂的是每百万输入 2 美元、输出 10 美元,比 Sonnet 4.6 的 3 美元 15 美元便宜,当时不少人当降价欢呼。
那是促销价,写死了到 2026 年 8 月 31 日。
促销期内,这个低价刚好略微盖过多出来的那些 token,所以现在用 Sonnet 5 跑代码,确实还比 4.6 略便宜一点点。
问题是 9 月 1 号一到,价格恢复成 3 美元 15 美元,可多出来的 token 不会跟着退回去。
到那天,同样的活,用 Sonnet 5 会比当初用 Sonnet 4.6 贵大概三分之一。
这条我建议你直接记进日历。省得 9 月账单出来,才发现单价和 token 两头一起涨了。
拿 count_tokens 自己量
讲了半天别人的数,说个你今天就能上手的事。
想知道这刀到底落在你身上多少,别猜,也别拿 tiktoken 去估。
tiktoken 是 OpenAI 家的尺子,拿它量 Claude 会低估百分之十几,代码上错得更多。
Anthropic 有个官方接口叫 count_tokens,你传哪个 model,它就用那个 model 对应的 tokenizer 来数,数出来的就是账单要扣的。
你把自己最常跑的那类文件,比如项目里最大那个 TS 文件,分别按 model 传 claude-opus-4-6 和 claude-opus-4-8 各数一遍,两个数一减,差多少一目了然。
那篇实测就是这么干的。他们还嫌 count_tokens 只是预测,干脆发了几个 max_tokens 设成 1 的真实请求,直接读账单上的 input_tokens 来对,两个数分毫不差。整套核对下来,一共花了八分钱。
老实说,我手头这台机器没配 Anthropic 的 API key,这一遍我还没亲手跑上。
方法我给你了,数我不替你编。你要是跑了,欢迎回来告诉我你那份代码差了几成。
我配好 key 也会拿自己这条流水线量一遍,到时候真有了数,再单开一篇跟你摊。
一个模型到底贵不贵,其实不在标价页那两个数字,在你自己那份代码被它切成多少 token、月底实扣多少。
标价从来不等于你月底实扣的那个数。
我为 TTS 那套按字符计费的坑肉疼过,当时照正文字数估成本,结算下来多出七成,标点、空格、停顿全按字符算。
这次 tokenizer 这刀,是同一个陷阱换了层皮:计费的口径在你没留神的地方,把标价悄悄放大了。
你有没有过那种感觉,单价明明没涨,月底账单却莫名其妙厚了一截?或者你已经拿 count_tokens 量过自己代码的 token 口径?评论区说说你那份差了几成。