Claude Code 源码中那些省 token 的小巧思
最近Claude Code源码意外“开源”,全网都在扒架构、反蒸馏、电子宠物。但真正懂行的人,都在抄它的Token优化细节。
Anthropic把51万行代码里的每一寸Token都算到极致,很多技巧小到一行注释、一个配置,却能让你少花一半钱。
一、Prompt硬规则:少1个Token都算赚
Claude Code直接把省Token写进系统指令,不是建议,是强制约束。
1. 字数硬上限,比“简洁”有效10倍
源码注释实锤:
用明确字数限制,比模糊描述降低约1.2%输出Token。
它是这么干的:
-
工具调用之间文本 ≤ 25词 -
最终回答 ≤ 100词 -
拒绝长篇解释、拒绝冗余铺垫
2. 禁止过早抽象,少写一堆无用代码
不要为一次性操作创建helper、工具函数或抽象结构不要为假想的未来需求做设计
少一层封装,就少几十~几百Token,还降低理解成本。
3. 默认不写注释,只留“必要信息”
源码标注:对抗模型过度注释问题
-
只在WHY不明显时才允许加注释 -
干掉无意义注释,输入直接瘦身
4. 内外提示词分层,对外极简、对内完整
-
对外用户:只保留核心指令 -
对内员工:完整策略+约束 -
静态+动态拆分,可缓存部分最大化
二、全局缓存杀招:把重复计算直接“清零”
Claude Code最复杂的非UI逻辑之一,就是Prompt缓存,堪称省Token教科书。
1. 精细化哈希校验,只变不同的部分
promptCacheBreakDetection.ts核心逻辑:
-
对system prompt、工具schema、模型名、beta headers等逐一哈希 -
任何变动精准定位,只更新差异部分 -
不变内容全程复用缓存
2. 静态/动态边界拆分,缓存永不失效
用SYSTEM_PROMPT_DYNAMIC_BOUNDARY一刀切:
-
上半:静态可缓存(永久复用) -
下半:动态随会话变(只算增量) -
MCP指令从prompt剥离,用增量附加,避免缓存雪崩
3. 子Agent继承缓存,不重复算父类账
子Agent直接继承CacheSafeParams
-
不用重新发送完整prompt -
父类缓存直接用,省掉大量重复输入
三、上下文自动瘦身:不让Token无限滚雪球
长会话必死——Claude Code用一套自动压缩+熔断机制,把上下文锁死在安全区。
1. 自动压缩:从每天浪费25万次调用里救回来
源码真实血泪注释:
单会话连续失败最高3272次,每天浪费约25万次API调用
于是有了硬规则:
-
MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3 -
连续3次失败直接停,不做无效燃烧
2. 三级压缩阈值,精准卡预算
预留摘要:20,000 Token(p99.99安全线)自动压缩触发:context_window - max_output_tokens - 13,000强制压缩阈值:context_window - max_output_tokens - 3,000
不等窗口炸掉,提前瘦身。
3. 大结果外置:不把巨量文本塞上下文
-
工具输出过大→写入磁盘 -
上下文只留摘要+文件引用 -
几M日志→几行摘要,省99%Token
四、输出反向净化:干掉模型“自言自语”
很多Token浪费在模型思考过程、冗余工具细节,Claude Code直接从源头砍掉。
1. 抗蒸馏=省Token:隐藏推理链路
两套机制,既防抄袭又省钱:
-
注入假工具调用,污染抓取数据 -
工具调用只留类别统计,去掉细节 外部看不到完整推理,你也少传大量信息
2. 思考过程直接抹除
-
剥离 thinking content -
工具只留:搜索/读取/写入/命令等分类统计 -
输出长度直接砍半
五、文件与工具:只读有用的,不扫全仓库
读文件是Token重灾区,Claude Code做了最小权限读取。
1. 构建期金丝雀:敏感字符串直接拦截
excluded-strings.txt的逻辑:
-
内部代号、API前缀、敏感信息列入黑名单 -
构建时 grep扫描,不合格直接失败 -
避免把内部信息带到线上,少传一堆废文本
2. 专用工具>裸命令,更省更安全
-
优先 Grep工具> 裸grep -
专用 Glob工具做文件发现 -
集成 LSP工具做代码分析 结构化调用,少传参数、少返无用结果
3. 文件读取去重:没变就不重新读
自动检测文件变更
-
未变化→不重复处理 -
从根源减少重复读取、重复解析
六、后台记忆机制:把长上下文变成结构化文件
Claude Code最被低估的神设计:Auto Dream后台记忆。
1. 跨会话压缩:把历史变成MEMORY.md
autoDream.ts的逻辑:
-
后台子Agent静默运行 /dream -
把历史压缩成10个固定模块 -
每个模块≈2000 Token,总大小锁12000内
2. 动态触发,不浪费算力
-
首次:上下文达10000 Token -
之后:每+5000 Token或3次工具调用 -
先判时间→再判数量→最后判锁,不重复执行
七、你能直接抄走的7条极简实践(马上能用)
不用改架构,复制就能省Token:
-
给输出加字数硬上限,别用“简洁” -
拆分Prompt为静态+动态,静态部分全局缓存 -
加连续失败熔断,别让死循环烧钱 -
大输出写文件+留引用,不塞上下文 -
工具调用只返结果,不返思考过程 -
做文件去重,没变不重读 -
长会话用定期压缩,别等爆仓
看完Claude Code源码才明白: 顶级Agent不是靠模型堆出来的,是靠省Token省出来的。
那些不起眼的字数限制、缓存拆分、自动压缩、外置存储,才是真正拉开成本差距的核心。
这次源码泄露,最值钱的不是架构,而是这套能落地、能省钱、能直接抄的Token优化细节。“一鲸落,万物生”。Claude Code的源码泄露,给国内Agent开发者铺就了一条捷径,国产Agent定能借此契机快速追赶、弯道超车。
而对于我们普通使用者来说,平时用国产Agent时,不妨把文中这些省Token、提效率的小巧思用起来,通过全局Prompt优化,让国产Agent的使用体验再上一个台阶,真正发挥其核心价值。
夜雨聆风