乐于分享
好东西不私藏

Claude Code 源码中那些省 token 的小巧思

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:隐藏推理链路

两套机制,既防抄袭又省钱:

  1. 注入假工具调用,污染抓取数据
  2. 工具调用只留类别统计,去掉细节 外部看不到完整推理,你也少传大量信息

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 Token3次工具调用
  • 先判时间→再判数量→最后判锁,不重复执行

七、你能直接抄走的7条极简实践(马上能用)

不用改架构,复制就能省Token:

  1. 给输出加字数硬上限,别用“简洁”
  2. 拆分Prompt为静态+动态,静态部分全局缓存
  3. 连续失败熔断,别让死循环烧钱
  4. 大输出写文件+留引用,不塞上下文
  5. 工具调用只返结果,不返思考过程
  6. 文件去重,没变不重读
  7. 长会话用定期压缩,别等爆仓

看完Claude Code源码才明白: 顶级Agent不是靠模型堆出来的,是靠省Token省出来的。

那些不起眼的字数限制、缓存拆分、自动压缩、外置存储,才是真正拉开成本差距的核心。

这次源码泄露,最值钱的不是架构,而是这套能落地、能省钱、能直接抄的Token优化细节。“一鲸落,万物生”。Claude Code的源码泄露,给国内Agent开发者铺就了一条捷径,国产Agent定能借此契机快速追赶、弯道超车。

而对于我们普通使用者来说,平时用国产Agent时,不妨把文中这些省Token、提效率的小巧思用起来,通过全局Prompt优化,让国产Agent的使用体验再上一个台阶,真正发挥其核心价值。