Reading Archive
← 返回文章列表
KK.aWSB @KKaWSB · 2026-05-05

优化这七个Token消耗陷阱,你的Claude Code可以多用三倍

如果你最近觉得Claude Code怎么用得这么快——周一开干,周三就撞限额,周末干脆没法用。

你的第一反应大概率是:"是不是模型变笨了?" 或者 "是不是订阅档位不够?"

这两个反应都是错的。

3月底,Anthropic自己出来承认:"用户撞到Claude Code额度限制的速度,比预期快得多。"Discord和Reddit当时炸开了锅。Max 5订阅用户报告"19分钟就用完了一天的额度"——而预期是5小时。一个Pro $200订阅的用户写道:"30天里我只能用12天——周一开始用,周二就满,要等到周六才重置。"

Anthropic给出了部分解释——"高峰时段配额下调"影响约7%的用户,加上prompt缓存层有两个独立bug,让某些会话的实际成本悄悄膨胀了10到20倍(这两个bug还不是Anthropic自己发现的,是用户逆向工程Claude Code二进制文件挖出来的,GitHub issue #40524)。

但所有这些外部因素加起来,只能解释一部分撞额度的现象。剩下大半,是用户自己造成的——只是绝大多数人不知道。

我用几百小时的时间跟踪了这件事。在Claude Code和Anthropic API之间架了HTTP代理,把每次请求的完整数据全部记录下来——时间戳、prompt、响应、token数、模型、退出原因——攒下几百万级的input token记录。

然后做了一件大部分人都没做过的事:把所有token按用途分类。

哪些是真正在帮我干活的(产出token)?哪些是各种"隐形开销"(overhead)?

数据出来的时候我自己都愣了一下——

真正有产出的token,只占大约三成。剩下近七成,全部被7个我自己几乎没意识到的模式吃掉了。

不是因为我prompt写得烂——这点我很清楚。也不是因为我在小任务上动用了Opus这种贵模型——这种低级错误早避开了。

是7个深一层的、博客文章基本不讲的、只有把数据扒出来才看得见的模式。

如果你每周不止一次撞额度,你身上至少有3个这样的模式。如果你还订了一堆插件、装了好几个MCP——可能5个都不止。

好消息是:把这7个陷阱全部修完,产出token占比能从三成升到六成五左右。综合体感,很多人会觉得"额度突然多了2到3倍"。

下面是这7个陷阱的完整拆解,每一个都附30秒就能上手的修复方法。

心智模型先升级:会话不是白纸,是发票

在讲7个陷阱之前,必须先建立一个新的认知。否则你会修完发现自己又装回去了。

大部分人对Claude Code会话的想象是这样的:一张白纸,你写什么它读什么,按你打的字算token。

错。

每一次会话其实是一张超长的发票,在你按下回车之前就已经预扣了一大堆费用:

→ 你的CLAUDE.md(永远在加载) → 每个激活的插件Hook(永远在注入) → 每个激活的Skill的SKILL.md(一旦"沾边"就加载) → 每个连接的MCP的工具schema(永远在传输) → 当前会话之前的全部历史(永远在重读) → 缓存失效后的重新tokenize(5分钟没动就发生)

所谓"产出token",是这些预扣完之后的余数。

关键认知是:要让额度多用三倍,你不能优化prompt,必须优化overhead。

Prompt写得好,只在overhead小的时候有用。当overhead已经吃掉七成的时候,你prompt再精炼也救不了你。

这就是为什么2026年到处都在吐槽"Claude变笨了"。模型没变笨。是用户的overhead在过去半年里悄悄膨胀了。

7个隐形陷阱(按吃token的重量级排序)

陷阱一:CLAUDE.md的"层层叠加"

这个是杀伤力最大的,单独就能吃掉超过一成的总token。

我的CLAUDE.md在半年里从几百字一路膨胀到接近5000个token。每写一条规则都觉得"这个以后可能用得上",于是越垒越厚。

问题是:这5000个token,每一轮对话都要完整加载一次。每开一个新会话,再来一遍。 一周200轮对话——光CLAUDE.md就吃掉100万token。绝大多数规则跟当前任务一点关系都没有。

怎么修:

打开终端,跑两条命令看看你的CLAUDE.md到底多大:

wc -w ~/.claude/CLAUDE.md wc -w .claude/CLAUDE.md

目标:合计不超过1200个英文词(约1500个token)。

超了就重构。重构原则有四条:

第一,框架特定的规则下沉到项目级CLAUDE.md——只在那个项目加载,不污染全局。

第二,重复出现的复杂模式抽出来变成Skill——只在被调用时才加载,不调用就是零成本。

第三,删掉那些你都想不起来为什么写的规则——你想不起来,Claude也不会用对。

第四,把"解释为什么"的啰嗦句子改成3个词的祈使句。Claude不需要理由,需要的是命令。

我把自己的从4800砍到了900。Claude的行为完全没变,但每一轮的baseline成本立刻降了三成。

陷阱二:会话历史的指数级重读

这个陷阱的可怕之处在于它随着对话长度指数增长。

每发一条新消息,Claude会把之前的整段历史全部重新tokenize。第30条消息的时候,它正在为前29条消息付费——而每条消息你按500个token算,第30条消息花的token相当于第1条的30倍。

我有过60+轮的会话。最后一条消息的成本是第一条的60倍。看到这个数字时我整个人是麻的。

怎么修:

最有效的做法不是"克制使用",而是改变操作习惯:

第一,错的时候改之前的消息,别追加新消息。 上箭头→编辑→重发。错的那一轮被替换,而不是被堆叠在历史顶上。

第二,给会话定一个硬上限——20条消息。 超了就让Claude总结进度,开新会话,把总结当第一条消息。

第三,需要保留连续性时用 /compact,不要 /clear。 /compact是总结后重启,保留精华丢弃冗余;/clear是直接清空,连有用的也丢了。

我从平均60条降到平均15条之后,会话重读的成本下降了大约四成。

陷阱三:插件的"群体性偷塞"

这个陷阱有一个特别隐蔽的特征——它是悄悄发生的,没有任何提示。

我装了4个插件。其中3个注册了UserPromptSubmit Hook——意思是每次你提交prompt之前,它们会自动往上下文里塞一段"自认为有用"的内容:当前git分支、最近改过的文件、记忆片段……每个都不大,每个都看起来"挺贴心"。

但加起来:在Claude还没读到你的问题之前,已经被强行塞了6000多个token。

更糟糕的是,插件还会在会话启动时通过SessionStart Hook塞各种"加载完毕"的通知消息——9个插件能累积到1400个token,全是"我已经准备好了!"这种废话。

怎么修:

先看看你被偷偷塞了什么:

cat ~/.claude/settings.json | jq '.hooks.UserPromptSubmit' cat ~/.claude/settings.json | jq '.hooks.SessionStart'

然后用一条铁律审计:任何你没法当场说清楚"为什么需要它每次都触发"的Hook,全部禁用。

/plugin disable <plugin-name>

我从4个UserPromptSubmit Hook减到1个(只留git分支),从9个SessionStart Hook减到2个。每次prompt少吃5800 token,每次会话启动少吃1200 token。

陷阱四:缓存5分钟一过就失效

这个陷阱让人读完直接想骂街——因为它纯粹是机制设计的问题。

Anthropic的prompt缓存默认只有5分钟寿命。

意思是:你停下来喝杯咖啡,超过6分钟回来——缓存失效。

下一条消息触发的时候,系统prompt + CLAUDE.md + 工具schema这一整套约8000个token的东西,全部按原价重新tokenize——而不是按缓存读取价(仅基础价的10%)。

我自己跟踪下来,这种"喝杯咖啡导致缓存失效"的事件,发生了600多次。

怎么修:

临时绕过法: 设个热键,绑一个超简单的"ping"命令。要离开桌面时随手发一个,让缓存活着。粗暴,但有效。

正经解法: 升级到1小时缓存。机制是:缓存写入token按基础价的2倍计费(一次性的),缓存读取按0.1倍计费。算下来,只要你一次会话里有10次以上的缓存恢复,1小时缓存就回本了——而稍微长一点的工作日基本都会超过这个数。

我换成1小时缓存之后,缓存失效的成本下降了八成左右。

陷阱五:"以防万一综合症"

这个陷阱合并了两件事——表面看是不同的,本质是一个毛病:装了一堆备而不用的东西,让它们永远在线。

第一种表现是Skill过载。 我装了11个Skill。每个都设置了"检测到相关性自动调用"。Skill检测的逻辑非常保守——拿不准就加载。所以我做后端任务时,UI设计的Skill在加载;我写纯文本时,视频生成的Skill在加载。每个Skill的SKILL.md大约1500个token,9个全部沾边加载就是13500个token——而其中一个都没真用上。

第二种表现是MCP工具schema常驻。 我连了12个MCP服务器。每个MCP都把自己的工具schema塞进每次请求——一个PostgreSQL MCP的schema就1200个token。12个加起来,每次请求7000多个token的工具定义。但80%的任务我只用到3个MCP。

两件事合起来,每次请求多吃两万左右的token——纯粹是为了"以防万一"。

怎么修:

跑一个7天审计,看哪些Skill真的被调用过:

grep -h "skill_invoked" ~/.claude/logs/*.log | sort | uniq -c | sort -rn

不在输出里的Skill → 全部禁用。

MCP同理:

/mcp # 看看你连了多少 /mcp disable <server> # 不常用的当前会话禁用

永久控制:编辑 ~/.claude/settings.json,把不常用的MCP从自动加载列表里删掉,需要时再单独启用。

我从11个Skill砍到4个,从12个MCP砍到3个。两项加起来,每次请求省下大约15000个token。

陷阱六:Extended Thinking的全局开关

这个陷阱是最容易修的,但也最容易被忽略——因为大部分人不知道它默认是开着的。

我全局开着Extended Thinking(高级推理模式)。Claude在那种完全不需要推理的小任务上——比如"把这个变量改成驼峰式"、"加个空行"——也会烧掉3000+的thinking token,先在脑子里"深度思考"半天。

Extended Thinking在真正需要推理的问题上(架构决策、复杂debug)确实有价值。但在小任务上——它就是纯粹的浪费。

怎么修:

默认关闭Extended Thinking。需要时按消息开(Claude Code里是Alt+T)。

判断什么时候开的标准很简单:你试一次,如果Claude的第一次答案不令人满意,就开Extended Thinking重试。 八成的任务你不需要它,剩下两成你会自己感觉到。

陷阱七:让"跑偏的回答"跑完

这个陷阱是输出端的浪费,也是大家最不会想到的。

Claude开始写一段400行的回答。你看到前50行就发现它走错方向了。但大部分人会让它写完,然后再重新prompt一次。

剩下那350行——纯浪费的输出token。而输出token是按基础价计费的,比输入token还贵。

我估算了一下,让Claude把错的方向写完,每个月白扔$15以上。

怎么修:

Cmd+. (Mac) / Ctrl+. (Windows) 立刻停止生成。 Claude会保留它已经写的部分,你从那里接着改方向。

训练自己在响应明显跑偏的前5秒就按下停止键——别"再看看说不定后面就对了"。它不会的。

Claude Code终端用户还有一个特权:双击Esc打开checkpoint回滚——可以倒回任何一个之前的状态,重新换个方向尝试。

三倍产能怎么算出来的

把这7个陷阱全部修完,账面上的变化是这样的:

修复前: 产出token大约只占三成,剩下七成全是overhead。 修复后: 产出token占比能稳定在六成五左右,overhead压到了三成五。

光看这个比例,已经是单次请求有效产出翻了一倍多。

但实际感受会更好。原因是修复带来的是复合收益——

CLAUDE.md精简之后,每一轮对话都受益。会话长度收住之后,每一条新消息都受益。缓存稳定之后,每次离开回来都不再"重新付款"。Skill和MCP瘦身之后,每次请求都轻装上阵。

这些收益不是简单相加,是叠加复利。 一次请求节省的token越少,但每天的请求次数越多——综合下来,很多人会有"额度突然多了2到3倍"的实际体感。

也就是说,标题里说的"多用三倍"——不是营销话术。是数据上能算出来、操作上能跑出来的真实结果。

不是100%——overhead永远有不可避免的下限。但三倍产能这个事情,对绝大部分Claude Code用户来说,是已经够用的。

哪些"网传偏方"其实没用

这里值得说一下,那些标准博客里反复推荐的"老生常谈",我都试过,效果其实不大:

"简单任务用Haiku。" 帮了一点点,约3%。但真正吃token的不是模型选择,是上下文膨胀。便宜模型跑膨胀的上下文,比贵模型跑精简的上下文还要贵。

"每个任务之间都/clear。" 反作用。会丢掉你真的需要的上下文,反而让你不得不重新解释一遍。更好的策略是每个项目一个长会话,但配上精简的CLAUDE.md和审计过的Hook。

"把所有Skill都禁用。" 一开始确实省token,但你会发现自己在每个prompt里都开始手动重写200个token的指令。净亏。 正确做法是保留3-4个真正在用的Skill,禁用其余的。

"避开高峰时段。" 部分有效(约影响7%的用户)。但对大多数人,前面那7个杠杆比时段调整重要得多。

一段审计脚本:一次扫出全部7个陷阱

如果你想自己跑一遍,这是我整理出来的诊断脚本:

!/bin/bash

在你的项目根目录运行

echo "=== 1. CLAUDE.md大小 ===" wc -w ~/.claude/CLAUDE.md 2>/dev/null wc -w .claude/CLAUDE.md 2>/dev/null echo "目标:合计 < 1200个词"

echo "=== 2. UserPromptSubmit注入 ===" cat ~/.claude/settings.json 2>/dev/null | jq '.hooks.UserPromptSubmit' echo "目标:1-2个,越少越好"

echo "=== 3. SessionStart Hook ===" cat ~/.claude/settings.json 2>/dev/null | jq '.hooks.SessionStart' echo "目标:只保留必要的"

echo "=== 4. 已装Skills ===" ls ~/.claude/skills/ 2>/dev/null echo "目标:3-5个匹配日常工作的"

echo "=== 5. 已连接MCPs ===" cat ~/.claude/settings.json 2>/dev/null | jq '.mcpServers // {} | keys' echo "目标:3个always-on,其余按需启用"

存下来,跑一遍,对着每一项修。每周复跑一次,直到每一行都达标。

最后的认知升级:你不是在打字,是在签订单

读到这里如果你只把它当成"省钱攻略",那就低估了它的价值。

这篇文章背后的核心认知是:

你以为你在跟一个AI对话——但实际上你是在向一个庞大的系统提交订单。这个订单的最终价格,不是由你打了多少字决定的,而是由你在这个系统的各个角落布置了多少东西决定的。

CLAUDE.md、各种Hook、各种插件、各种Skill、各种MCP连接、缓存策略——这些都是你过去几个月里"为了让Claude更好用"而装上去的。每一个都有它当初被装上去的理由。

但没有任何一个工具或文档会告诉你:它们加起来的总成本是多少。

直到某天你撞了限额,开始怀疑"是不是模型变笨了"。

不是。是你给这个系统装了太多东西,但没人在管这些东西到底有没有真正被用上。

这跟你的电脑越用越卡是同一个道理——不是CPU变慢了,是你装的东西越来越多,每一个都觉得自己很重要,每一个都在后台默默吃资源。

真正的优化,从来不是"让自己用得更聪明"。是"删掉那些其实没在帮你的东西"。

今晚就能兑现的三倍产能

如果你只能记住一件事:

七成的"Claude变笨了",是overhead造成的。剩下三成才是模型本身。

今晚抽15分钟,跑一遍前面那段审计脚本:

把不必要的删掉。 把膨胀的精简掉。 把默认开着的关掉。

然后明天再开Claude Code的时候,你会发现:同一个订阅,突然多出来一倍以上的产能。综合体感大概率是2到3倍。

不是因为Anthropic给你升级了什么。

是因为你终于把那些一直在背后偷偷吃token的东西,关掉了。

❤️一键点关注 https://x.com/intent/follow?screen_name=kkawsb

我在硅谷每周为你带来几篇最新的AI学习深度文章,让你轻松快人一步赶超这个时代。

查看原文 ↗