Claude Code 省 token 小妙招:一个真实会话实测省了 86%
导读用 Claude Code 久了迟早撞上两件事——越聊越笨、越聊越贵。这篇不讲道理空转我把自己做这套教程的那个真实会话日志翻了出来99.5 万 token、3 次自动压缩、6.4 亿缓存读取、单轮成本涨 8.5 倍。全是本机实测不是别人 PPT 上的演示值。看完你会拿到一套能照搬的省 token 操作清单。我用 Claude Code 做这套教程的时候顺手把它自己的会话日志翻了出来——不看不知道做内容这一个会话上下文不知不觉涨到了 99.5 万 token逼近 100 万的窗口上限期间自动压缩触发了整整 3 次光是缓存读取这一项累计就刷了6.4 亿token。这不是我手敲记下来的是从本机~/.claude/projects/的会话日志里一行行算出来的真实数字模型 claude-opus-4-8Claude Code 2.1.1812026 年 6 月。本篇里凡是带实测的数据都来自这份真实日志不是别人 PPT 上的演示值。为什么要盯着这个看因为一个用久了的人迟早会撞上两件事越聊越笨聊到后面它开始忘记你早先定的约束、把改过的错误又拾起来、答非所问。越聊越贵同样一句话在一个空会话里问和在一个塞满历史的会话里问花的钱差着数量级。这两件事是同一个根上下文管不管得住。这个系列反复说的那条主线——Claude Code 用得好不好本质是你能不能管住上下文——这一篇就是它的正面战场。下面我们先把上下文窗口里到底装了什么讲透再用本机实测的数字把为什么变笨、为什么变贵、它怎么自动救场、你能主动做什么一条条说清。一、先搞清楚上下文窗口里到底装了什么很多人有个困惑我才说了两句话token 怎么就上去了因为在你敲第一个字之前上下文里已经装了一大堆东西。官方文档how-claude-code-works说得很直白上下文窗口里装着你的对话历史、文件内容、命令输出、CLAUDE.md、自动记忆、加载的 skill以及系统指令。**开局就占用的至少有这几层**系统提示词核心指令 所有工具定义 输出风格永远第一个加载你看不见但它最大。项目上下文根目录 CLAUDE.md、自动记忆MEMORY.md 前 200 行或 25KB谁先到算谁、全局规则。环境信息当前目录、平台、shell、操作系统、git 状态。MCP 工具名 / skill 描述默认只列名字和一行简介真正用到时才加载完整定义。所以没说几句 token 就涨很正常——你的项目知识在你开口前就占了大头。这正好是第 4 篇讲CLAUDE.md 越短越好的成本依据那个文件从会话第一秒占到最后一秒每一轮都在为它付费。写得臃肿等于全程多交税。记住这个画面上下文是一块有限的、每轮都要重新计费的工作台不是一个能无限堆东西的档案柜。后面所有的变笨变贵都从这块工作台被堆满开始。二、为什么会越聊越笨噪声累积不是容量不够第一反应可能是窗口有 20 万 token我才用了几万离满还远着呢怎么会变笨问题不在容量在噪声。业界有一份很有代表性的研究Chroma 2025测了 18 个前沿模型注意这是第三方研究、不是 Anthropic 官方结论模型的回答质量会随着输入变长而显著下降而且呈一条U 形曲线——放在开头和结尾的信息准确率高夹在中间的信息准确率要低 30% 以上。业界给它起了个名字叫 lost in the middle迷失在中间。换句话说一个 20 万窗口的模型可能在 5 万 token 时就开始明显退化了。不是它装不下是有用的信号被越来越多的陈旧内容、过时的工具输出、已经修正过的弯路稀释掉了模型的注意力被摊薄。落到体感上长会话变笨有三个典型信号你一旦发现就该警觉重复问你已经解释过的问题忘掉你早先定的关键约束把已经修正过的错误又当成对的拾起来绕回老路工具调用变得嘈杂目标抓不住开始瞎试。业界还流传过一个极端例子有人对着同一个会话连续聊了将近 500 轮这是个人经验、不是官方指标当画面看就好。聊到那个程度会话早就不是更懂你了而是被自己的历史拖进了退化区。说到底长上下文不是越多越好关键是信噪比。 减内容、保相关不是抠门是让模型保持清醒的科学要求。后面讲的/clear、/compact、subagent 隔离本质都是在对抗这条 U 形曲线。三、为什么会越聊越贵看懂 prompt cache才知道钱花在哪变笨之外长会话还有个更隐蔽的代价——贵而且贵得有规律。要讲清楚得先搞懂 Claude Code 省钱的底层机制prompt cache提示词缓存。缓存是怎么省钱的官方 prompt-caching 文档的原话没有缓存API 每一轮都要把你的完整历史重新处理一遍有了缓存它复用已经处理过的部分只为变化的部分做新计算。机制有两个要点前缀精确匹配API 从请求开头逐字匹配上次处理过的内容前缀里任何一处变了后面全部重算。没有逐文件缓存这种事。三层结构按变动频率从低到高排就是为了让前缀尽量长时间不变层内容什么时候会变系统提示词核心指令、工具定义、输出风格工具集合变了或 Claude Code 升级项目上下文CLAUDE.md、自动记忆、全局规则会话开始或/clear、/compact之后对话你的消息、Claude 回复、工具结果每一轮缓存的价格是关键官方 API 定价精确**缓存命中Cache Read 标准输入价的 10%**0.1 倍缓存写入5 分钟有效 1.25 倍缓存写入1 小时有效 2 倍以 Opus 为例输入约 百万那么缓存命中只要0.50/百万。命中和不命中差 10 倍。实测缓存到底省了多少回到开头那个会话。整个会话 1625 次 API 调用累计新输入43 万 token缓存命中复用6.4 亿 token缓存写入1600 万 token生成输出255 万 token缓存命中率 97.5%。我按 Opus 口径估算了一下仅作量级参考订阅用户不按这个扣实际花费约$487可如果完全没有缓存、每轮历史都按全价重算要花$3356。缓存替这一个会话省了约 86%。这说明 prompt cache 不是个小优化是数量级的省钱。也就引出一个反直觉但极其实用的点任何让缓存失效的动作都在偷偷烧钱。官方明确列出的会清空缓存的动作包括中途切模型/model、改 effort 档位/effort、开关 fast mode、连接或断开 MCP server、/compact、升级 Claude Code。一旦触发你下一轮的整段历史会按全价重新写一次缓存。官方给的建议很干脆在会话开头就把模型和 effort 选定/compact留给任务之间的自然断点。中途改得越少缓存命中率越高。那种聊两句切个模型试试不满意换个档位的随手操作看着免费其实每次都在让你下一轮多掏钱。顺带说一句切模型的单次代价我本想直接实测但翻遍本机日志每个会话都从头到尾只用一个模型、没有中途切换的记录所以这组没有真实数字可拿。按上面的缓存账推算切一次模型≈把整段历史的缓存折扣作废、全价重写一遍——这是机制层面的必然不是我测出来的具体值就不编数了。实测长会话为什么越来越贵更要命的是上下文本身就是每轮都要重复付费的存量——哪怕命中缓存6.4 亿 token 的命中也是真金白银。我把同一个会话里每轮的成本按当轮上下文大小分了档当轮上下文每轮平均成本估算~5 万 token$0.10~25 万 token$0.19~50 万 token$0.31~95 万 token$0.85从 5 万到 95 万每问一轮的成本涨了约 8.5 倍。这就是长会话越聊越贵的硬证据你不清理上下文就一直在那儿每一轮都按它的体量收一次费。所以贵不是因为你问得多是因为你背着一个越来越重的上下文在问。治它的办法只有一个方向该清就清。四、它怎么自动救场compaction 三层机制 实测压缩比上下文快满了会怎样不会崩、不会终止会话Claude Code 会自动压缩。官方把这套机制分了三层从轻到重第一层 microcompact按时间清掉最旧的工具输出不调用模型最轻量。它对应 API 那个上下文编辑特性——把过时的工具结果替换成一个占位符让模型知道这里曾经有内容、已经被移走了。第二层服务端策略压缩。第三层 完整总结调用模型把整段对话总结成一份结构化摘要——你手动敲/compact走的就是这一层。官方文档把压缩后什么活下来列得很清楚值得记住内容压缩后系统提示词、输出风格不变根目录 CLAUDE.md、全局规则从磁盘重新注入自动记忆从磁盘重新注入带路径条件的规则丢失直到再读到匹配的文件子目录里的嵌套 CLAUDE.md丢失直到再读该目录的文件调用过的 skill 正文重新注入但每个上限 5000 token、总共 25000 token超了丢最旧的注意那两个丢失——这也是为什么重要的约束要写进根目录 CLAUDE.md而不是只在对话里说一句对话里的细节压缩后可能就没了磁盘上的 CLAUDE.md 会被重新读回来。实测真实的压缩比和流传的数字不一样开头那个会话触发了 3 次自动压缩真实数字是这样的第几次压缩前压缩后压缩比第 1 次995,49557,22417.4 : 1第 2 次418,22755,7527.5 : 1第 3 次250,38849,9855.0 : 1我盯着这三行看出一个有意思的规律三次压缩后都落在 55.7 万 token 这个地板上跟压缩前有多大几乎无关。也就是说摘要后的体量大致是恒定的约 5 万压缩比完全取决于你把上下文撑到多满——撑到 99.5 万才压就是 17:125 万就压只有 5:1。我特意提这个是因为网上包括我听的那场培训流传一个压缩能从 10 万压到 2-3 千、约 40:1的说法。在我这台机器上没复现本机的摘要地板是 5 万不是 2-3 千。差异可能来自模型、版本、窗口大小我这台是 1M 扩展窗口。所以这篇里我只用自己跑出来的数不把别人 PPT 上的数字当事实——亲手一测就发现和流传值对不上这种事比背一个漂亮的数字重要得多。诚实补一个边界如果某个文件或工具输出大到每次刚总结完又立刻被它填满Claude Code 试几次后会停止自动压缩并报错不会陷在死循环里——这时候得你自己出手清。五、你能主动做什么一份省 token 操作清单自动压缩是兜底但等它兜底时你已经付了一路的高价、还可能聊笨了。真正省钱省脑的是主动管理。下面这些都来自官方 costs 文档可以直接照做。最高频的三招1. 任务切换就/clear。这是最重要的一条。上一个任务的上下文对下一个任务全是噪声留着既花钱又干扰判断。怕丢就先/rename给它起个名需要时/resume回去。2./compact带聚焦指令。想留住当前对话但腾空间用/compact而不是/clear。还能告诉它保留什么/compact 重点保留 API 用法和代码示例丢掉调试过程3./context常看占用。它会把当前上下文画成一张彩色网格告诉你谁在吃 token、memory 有没有膨胀、快不快满了。养成习惯瞄一眼别等它自动压缩才发现。实测最有效的一招派 subagent 去干脏活subagent子代理有自己全新的、和主对话完全隔离的上下文。它读的文件、跑的命令、翻的资料都留在它自己的窗口里干完只把一段摘要返回给主会话。官方原话把啰嗦的活交给 subagent让冗长的输出待在子代理的上下文里只有摘要回到你的主对话。这一招到底多有效我也是实测的。就在做这套教程的这一个会话里我派了 8 个 subagent——5 个去读 43 张培训截图、3 个去研究这个系列的几篇选题素材子代理它自己烧掉的 token读图 ×5各约 2.12.3 万研究第 7 篇8.3 万研究本篇素材9.7 万研究第 8 篇6.9 万合计约 36 万这36 万 token的读图、搜索、读文档全在各自隔离的上下文里烧掉了主会话只收到了 8 段几百字的摘要。如果不隔离、全堆在主会话里干这 36 万 token 的工具噪声会一股脑挤进主上下文把窗口迅速撑爆、还把信噪比搅烂。这次读 43 张图 研究 3 篇主会话几乎没怎么涨全靠它。所以遇到需要大量翻查、但你只要个结论的活——调研代码库、读一堆日志、查资料——默认派 subagent别让脏活弄脏你的主上下文。其余还能省的选对模型Sonnet 能干大多数活且更便宜Opus 留给复杂架构subagent 的简单任务可以指定用 haiku。少喂 MCPMCP 工具定义默认是用到才加载的能用 CLI 工具gh、aws就别用 MCP更省/mcp关掉不用的 server。探索方式也影响占用与其让它一口气整文件读好几个候选不如引导它先 grep 定位再分块读相关段。typed 语言可以装 code intelligence 插件用跳转定义替代grep 翻一堆文件。用 hook 预处理PreToolUse hook 可以把一万行日志先 grep 成几百 token 再喂给 Claude。CLAUDE.md 做减法专用指令搬进按需加载的 skillCLAUDE.md 控制在 200 行内详见第 4 篇。复杂任务先 plan modeShiftTab方向不对早按Esc、/rewind回退——别等走错一长段才发现那些弯路全是要付费的上下文详见第 5 篇。六、一套可以照搬的日常习惯把上面的拆解收成一套动作日常照着做就行时机动作为什么开会话选定模型和 effort别中途改中途改会清空缓存、全价重算换任务/clear怕丢先/rename旧上下文对新任务是纯噪声任务做长了到自然断点/compact重要约束写进 CLAUDE.md摘要会丢细节磁盘上的会被读回来要大量翻查派 subagent只收摘要36 万 token 的脏活不进主上下文随时/context瞄一眼占用别等自动压缩才发现满了走错路Esc//rewind弯路也是要付费的上下文一句话总括把上下文当消耗品不当档案库。该清的清、该隔离的隔离、该写盘的写盘越早干预越省钱、越不容易聊笨。结尾管住上下文是这件事的全部手艺回到开头那个 99.5 万 token、3 次压缩、6.4 亿缓存读取、单轮成本涨 8.5 倍的真实会话。它其实把这一篇的所有道理都演了一遍上下文会无声地膨胀让你越聊越笨、越聊越贵而你手里的每一招——/clear、/compact、subagent 隔离、不乱切模型——都是在替这块工作台减负。这也是这个系列那条主线最实打实的一次落地Claude Code 用得好不好本质是你能不能管住上下文。 不是一句口号——它是 86% 的缓存账、是 17:1 的压缩比、是 36 万 token 被隔离在主会话之外的差别。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →