SEO 指南 · 3k vs 30k

Claude Code 省 Token 指南

/cost、Prompt Cache、CLAUDE.md 与 settings.json

同样实现一个功能,有人 3k token 搞定,有人要烧掉 30k。差距通常不在模型,而在对话习惯、工具使用方式和项目基础设施。这篇文章把 Claude Code 里最容易被忽视的 Token 开销源拆开讲清楚,帮助你把账单压下来,同时让上下文更干净、产出更稳定。

一、为什么同样干活,有人 3k Token,有人 30k Token?

Claude Code 的账单,表面上看是模型价格,实际上更像你的工程习惯镜子。你怎么提问、Claude 怎么读文件、项目里挂了多少扩展能力、会话是否拖得太长,都会直接体现在 /cost 里。

真正决定 Token 消耗的,通常不是你这一句 prompt,而是 system prompt、CLAUDE.md、MCP / Skills / Plugins、历史对话、工具输出和这一轮消息一起构成的完整 input 包。

所以这篇文章不是讲“如何省一句 prompt 的 token”,而是讲如何控制整个对话系统的总开销。

二、先看懂:Claude Code 的 Token 花在了哪里

从计费角度看,Claude API 按 input 和 output 分开算账。Claude Code 里最容易膨胀的是 input,因为它会不断累积。

类别包含什么典型问题
系统侧System prompt、CLAUDE.md、MCP / Skills / Plugins 元数据固定开销越来越大
历史侧从 session 开始到现在的全部对话越聊越贵
工具侧Read、Grep、Bash 等工具结果最容易突然爆炸
当前侧你这一轮的消息通常最小,但最容易被误以为是全部

如果你问“为什么明明只发了一句话却这么贵”,答案通常就在工具侧和历史侧。

Prompt Cache 为什么这么重要

Claude Code 的前缀缓存命中后,system prompt 开始的一大段重复内容只需要付读取成本。简单说,如果你的前缀完全不变,这部分 input 的价格会明显下降。

命中条件解释
前缀完全一致任意一个字符变了,从变化点开始往后都可能 miss
同一个模型不同模型之间不共享 cache
TTL 内默认是短时缓存,长时间中断后常会失效

💡 如果你频繁改 CLAUDE.md、频繁切模型、长时间离开再 resume,就很容易把原本能命中的缓存打碎。

先学会看 /cost

/cost

input       # 全价 input
output      # 全价 output
cache read  # 命中缓存的 input,越高越好
cache write # 新写入缓存的 input,越低越好

判断是否在省 Token,不要只看总价,要看 cache read 有没有稳定提高,以及 cache write 有没有被无意放大。

三、你输入内容的方式,正在悄悄浪费 Token

1. 整段日志、整段 diff、整段输出直接贴

这是最常见也最贵的错误。几千行日志里,真正有价值的通常只有少数错误行和 stack trace,其余大部分是噪音。

# 不推荐:整段贴
adb logcat -d

# 更推荐:先过滤再给 Claude
grep -E "FATAL|Exception|^\s+at\s" crash.log
tail -100 build.log
git diff --stat

同样的原则适用于服务端日志、测试输出、构建报错、整段 Git diff。先筛一遍,再交给 Claude。

2. 开放式提问,而不是精准提问

帮我了解一下这个项目 这种问法,几乎是在邀请 Claude 读更多无关文件。你如果已经知道想看哪个目录、哪个模块、哪个函数,就直接说。

# 更省 token
src/services/ 下有哪些文件?分别 export 什么?

# 更费 token
帮我了解一下这个项目的整体结构

💡 你知道的信息越多,越应该前置给 Claude。这样工具调用次数会更少,Read 范围也更小。

3. 挤牙膏式多轮补需求

多轮对话不是多次独立请求。每一轮都会带着前面所有轮次的历史一起继续发,所以如果你一开始就知道需求,最好一次说清。

方式问题
5 轮逐步加需求每一轮都在重复支付前面所有历史
1 轮一次说清目标明确,通常代码更干净,历史更短

4. 无意中清空缓存

最常见的两种情况是:长时间中断后 resume,以及频繁切模型。前者会让缓存 TTL 过期,后者会因为模型隔离导致首轮重写缓存。

# 长时间离开前,如果还要继续当前任务
/compact

# 完全换主题
/clear

# 不要一句话一切模型
/model sonnet
/model opus

四、Claude 的干活方式,也会隐性消耗 Token

1. 改一个点,却 Read 整个大文件

如果只是改一个 handler、一个按钮回调、一个小函数,优先让 Claude 用 Grep 定位,再局部读取上下文,而不是把 1000 行以上的大文件整页读进来。

# 推荐流程
Grep 关键字 -> 拿到行号 -> 只读上下几行 -> Edit

# 不推荐
先看看这个文件(然后 Read 1500 行)

如果你在编辑器里能直接选中代码范围,效果通常更好,因为 Claude 不需要再为了定位而读整文件。

2. Plan mode 不是每次都该开

Plan mode 会先出方案再动手,这本身就要花一笔 token。对于小需求、已知范围、明确修改点,直接做通常更便宜。

场景建议
目标明确、改动范围小直接做
跨模块、方向不确定、方案可能跑偏先 plan

3. 脏活适合交给 Subagent

像“全项目扫某类 export”“统计废弃 API 调用点”这种任务,往往会读很多文件。如果放在主会话里做,这堆 Read 结果会污染后续所有轮次。

更好的方式是让 subagent 在独立上下文里完成扫描,主会话只接收最终总结。这样后续连续追问时,主上下文会干净得多。

4. /compact 和 /clear 都是工具,不是习惯

/compact 会读完整段历史,再写一份摘要替换原来的消息,这本身也要花钱。只有你 compact 后还会继续聊很多轮,这笔成本才容易摊平。

💡 继续当前任务但历史太大,用 /compact。彻底换主题,直接 /clear。

五、你的基础设施,也在每一轮静默扣钱

1. 没屏蔽构建产物、依赖目录和 generated 文件

如果项目里有超大的自动生成文件、构建产物、依赖目录,一次随手的 Grep 或 Read 就可能把它们带进上下文。

项目根目录建议加一份 .claude/settings.json,限制明显不该读取的区域。

{
  "permissions": {
    "deny": [
      "Read(**/node_modules/**)",
      "Read(**/dist/**)",
      "Read(**/build/**)",
      "Read(**/.next/**)",
      "Read(**/generated/**)",
      "Read(**/*.generated.*)",
      "Read(**/Pods/**)",
      "Read(**/DerivedData/**)",
      "Read(**/*.lock)",
      "Read(**/*-lock.json)",
      "Read(**/*.lock.yaml)"
    ]
  }
}

如果业务允许,配合 .gitignore 一起用效果更好。

2. MCP、Skills、Plugins 的“入场费”税

每个已启用的 MCP 工具、Skill 或插件,都会以元数据形式进入 system prompt。装得越多,每轮固定开销越大。

建议做法
这周常用保留在全局配置
只在某项目需要只在项目级启用
半年没用过直接删掉,需要时再装

不要把 Skill 和 MCP 当收藏夹。它们不是免费挂件,而是每轮对话都在付费的能力声明。

3. CLAUDE.md 写得太大、太动态

CLAUDE.md 是 prompt cache 的主战场,也是 system 侧最容易膨胀的部分。两个最常见错误:

错误为什么贵
写成超长项目知识库哪怕只说 hi,也要带着整份内容一起走
放时间戳、TODO、动态状态每次变化都会击穿前缀缓存
# 推荐放进 CLAUDE.md
- 代码规范
- 目录约定
- 常用命令
- 禁用写法

# 不推荐放进 CLAUDE.md
- Last updated: 2026-03-22 12:30
- Current sprint: Sprint 40
- Active TODOs
- 历史决策长文档

💡 CLAUDE.md 不是项目知识库,而是给 Claude 的开场白。只放“它不知道就会犯错”的规则。

六、Claude Code 省 Token 的实战清单

动作为什么有效
先学会 /cost你得先知道钱花在哪
过滤日志和长输出减少工具侧爆炸
一次说清需求减少历史侧重复支付
改一个点先 Grep 再局部 Read减少无关文件进入上下文
大任务才开 plan mode避免小任务预付过多 output
脏活交给 subagent避免主会话臃肿
项目级 deny 规则屏蔽 generated/dist/node_modules减少误读大文件
定期清理不用的 MCP / Skills降低固定 system 开销
精简且稳定地维护 CLAUDE.md提高 Prompt Cache 命中率

当你把这些习惯建立起来,省下来的不只是 token,还有会话上下文的干净度和后续修改的稳定性。

总结

Claude Code 省 Token 的核心,不是学一个神奇命令,而是控制四件事:

输入更干净

过滤日志、一次说清、少贴原始大段内容

读取更克制

Grep 定位、局部 Read、别轻易读整文件

上下文更轻

合理 compact、subagent 隔离、少带无关历史

基础设施更瘦

精简 CLAUDE.md、屏蔽 generated、少装闲置扩展

下次看到 /cost 里的数字,别只把它当账单。它本质上是在提醒你:哪些工程习惯,正在被你自己放大成本。

还没配置好 Claude Code 中转接入?

先完成安装和中转设置,再回来按这套方法优化 Token 成本

查看 Claude Code 接入指南
Claude Code 省 Token 指南:/cost、Prompt Cache、CLAUDE.md 与 settings.json | ProxyCC