3月下旬起,大量 Claude Code 用户在 Reddit、GitHub Issues 上反馈同一个问题:Token 额度消耗速度异常,有人 Max 5x(100 美元/月)的额度 90 分钟就耗尽,有人 Max 20x(200 美元/月)单条 Prompt 就从 21% 跳到 100%。这不是个别现象——GitHub 上相关 Issue(#38239、#38335)持续涌入新的报告,Reddit 的 r/ClaudeCode 和 r/Anthropic 社区讨论退款和取消订阅的帖子此起彼伏。 要理解为什么消耗会暴增到这个量级,首先需要知道 Claude Code 的"省钱命脉"——Prompt 缓存是怎么工作的。 Prompt 缓存的基本原理
每次你在 Claude Code 中发送一条消息,整段对话历史(系统提示词、CLAUDE.md 配置文件、工具定义、所有历史对话)都会被重新发送给 API。如果没有缓存,第 50 条消息就需要从头重新处理前面所有内容的 Token。
Prompt 缓存的本质是"前缀缓存"(Prefix Caching)。模型在处理每个 Token 时会生成 Key 和 Value 向量(KV Cache),只要对话前缀没有变化,之前计算好的 KV 值就可以直接复用,不需要重新计算。缓存命中的 Token 价格大约是未缓存 Token 的十分之一到二十分之一。这就是为什么一个长时间的 Opus 编码会话,有缓存时可能花 10-19 美元,没缓存就可能飙到 50-100 美元。
关键点在于:前缀缓存是从头开始往后匹配的。一旦前缀中某个位置的内容发生了变化,从该位置往后的所有缓存全部失效,必须重新计算。哪怕只改了两个字母,后续所有 Token 的 KV 值都会作废。
社区发现的两个关键 Bug
知名开发者 Theo(t3.gg)在 X 上转发了一位 Reddit 用户的发现——这位用户通过中间人攻击(MITM)逆向分析了 Claude Code 的二进制文件与 API 通信,找到了两个可能导致缓存大面积失效的 Bug。
第一个问题与二进制版本的计费头部(Billing Header)有关。Claude Code 在系统提示词中嵌入了一个计费标识字符串,类似 x-anthropic-billing-header: cc_version=2.1.39; cch=56445,其中的参数值每次请求都会变化。通过官方 Anthropic API 调用时,这个头部会被单独处理,不影响缓存。但在某些使用场景下,这个字符串的变化会被当作提示词前缀的变化,直接导致整段系统提示词的缓存全部失效——几万个 Token 的 KV Cache 瞬间作废,每条消息都要从头重新计算。
第二个问题出在 --resume 恢复会话命令上。GitHub Issue #27048 详细记录了这个问题:当用户退出会话后用 --resume 恢复时,工具调用内容(比如文件读取结果)无法从缓存中正确恢复,系统会将之前缓存的内容全部重新写入。在测试中,原本有 98K 缓存读取的会话,恢复后缓存读取大幅下降,缓存写入反而激增至 91K,相当于整个会话历史被完全重新处理了一遍。官方 Changelog 也确认修复过相关问题:"Fixed --resume silently truncating recent conversation history due to a race between memory-extraction writes and the main transcript"。
为什么消耗恰好是 5-20 倍?
这个倍数不是巧合。Anthropic 的 API 定价中,缓存命中的 Token 比未缓存的 Token 便宜约 10-20 倍。正常工作时,一个长会话中绝大部分 Token 是缓存命中的(有用户记录显示缓存读取占比超过 99%)。一旦缓存失效,这些原本低价的 Token 全部变成全价重新处理,消耗自然就翻了一个数量级。
再叠加上 Anthropic 3 月中旬推出的高峰期策略——工作日太平洋时间早 5 点到上午 11 点期间,5 小时会话额度的消耗速度加快——两个因素叠加,一些用户的体感就是额度"瞬间爆炸"。
这不是第一次了
Claude Code 的缓存问题有着长期的历史。2025 年 10 月就有用户记录过自动压缩循环导致的 Token 消耗飙升——同一个系统,正常时 5.14 亿 Token 花 2.15 美元,异常时 1.07 亿 Token 花了 78 美元,成本效率相差 36 倍。2026 年 1 月的 v2.1.1 版本也引发过类似的 4 倍消耗投诉。2 月底 v2.1.62 版本的一次"修复缓存命中率"的服务端更新,反而导致了压缩后的过期缓存被继续使用,产生了模型基于过时上下文做出错误判断的 P1 级回归 Bug。
Anthropic 的官方回应
Anthropic 技术团队成员 Thariq Shihipar 在 3 月 26 日发布了公开声明,确认了高峰期额度分配调整:"为了管理日益增长的 Claude 需求,我们正在调整免费/Pro/Max 订阅在高峰时段的 5 小时会话额度。您的每周总额度不变。"他表示约 7% 的用户会受到影响,并建议将 Token 密集型任务转移到非高峰时段。
但对于用户报告的异常消耗问题,截至目前 GitHub 上的相关 Issue 仍然处于打开状态,部分甚至被标记为"invalid"。社区对此反应强烈——当用户无法理解自己的额度为何消失,问题标签却显示"无效",信任就开始流失了。
实用避坑指南
根据社区验证和技术分析,目前可以采取以下措施降低异常消耗风险:
尽量使用 npx 安装的版本而非独立二进制文件。独立二进制版的计费头部变化更容易触发缓存失效,通过 npx @anthropic/claude-code 运行可以减少这一风险。 避免使用 --resume 恢复会话。这个命令目前仍然存在缓存无法正确恢复的问题。如果需要继续之前的工作,考虑新建会话并手动提供上下文。
控制 CLAUDE.md 文件的大小。系统提示词越长,缓存失效时重新处理的代价越大。保持 CLAUDE.md 精简有效,移除不必要的项目说明。
将高 Token 消耗的任务安排在非高峰时段。太平洋时间早 5 点到上午 11 点是高峰期,额度消耗速度更快。
关注 /cost 命令的输出。Claude Code 的 /cost 命令可以显示当前会话的 Token 消耗明细,如果发现缓存读取比例异常低,说明缓存可能已经失效,此时新开会话比继续当前会话更划算。
避免在会话中途频繁启用/禁用插件。GitHub Issue #27048 确认,插件状态变化会触发用户内容的完整重写,导致缓存失效。