Claude Code 省 token 指南:用好 /clear、/compact 和缓存

Claude Code 用久了,常见两种情况:API 账单比预想的高,或者订阅额度没到下午就见底。一个常被忽略的原因是:每问一句,Claude Code 都会把整段对话重新发一遍。

这篇按官方文档整理省 token 的做法:哪些命令该用、什么时候用,CLAUDE.md 怎么写才不白占上下文,以及哪些操作会让缓存失效。命令和配置项都对照了 Claude Code 官方文档(2026 年 10 月版本),版本差异以官方文档为准。

一、先弄明白 token 花在哪

Claude Code 每发一条消息就是一次新的 API 请求。模型本身不记事,所以每次请求都要带上完整上下文:

层 内容 什么时候变
系统提示词 内置指令、工具定义 加载的工具定义发生变化时
项目上下文 CLAUDE.md、自动记忆、无作用域的 rules 会话开始,或 /clear、/compact 之后
对话 你的消息、Claude 的回复、工具结果 每一轮

所以会话越长,每一轮的成本越高。哪怕你只问一句"这个变量叫什么",背后也是把一整天的对话又发了一遍。

缓存能抵掉一部分成本,也就是 prompt caching (提示词缓存):API 按请求开头(前缀)去匹配最近处理过的内容,没变的部分按缓存价格计费,比正常输入便宜得多。Claude Code 默认会自动开启缓存,你要做的是别去破坏它,下文第五节专门讲这个。

二、先看清用量:/usage 和 /context

先看清用量再动手,常用的是这两个命令:

text 复制代码
/usage      # 本次会话的 token 和估算费用,/cost 是它的别名
/context    # 用彩色格子显示当前上下文被什么占着,并给出优化建议

/usage 的 Session 区块大概长这样(官方文档示例):

text 复制代码
Total cost:            $0.55
Usage by model:
   claude-sonnet-4-6:  1.2k input, 5.3k output, 940.0k cache read, 50.0k cache write ($0.55)

看 cache read 和 cache write 的比例:读远多于写,说明缓存在起作用;如果每一轮写入都很高,说明前缀一直在变。新版本(v2.1.251 起)还会多一行 Prompt cache (main),直接显示命中率和缓存还热不热。

几点说明:

  • 金额是按官方定价在本地估算的,实际账单看 Claude Console 的 Usage 页面。
  • Pro / Max 订阅用户看的是额度条,Session 里的金额和计费无关。订阅用户的 /usage 还会列出 skill、子 Agent、MCP 服务器各占多少用量。
  • /context 适合排查"刚开会话就占了一大块"的问题,比如 CLAUDE.md 太长、MCP 工具太多。

官方还给过一个参考数据:在企业部署中,平均每位开发者每个活跃日约 13 美元,90% 的用户每天低于 30 美元(官方称)。自己的账单远高于这个数,就值得排查一下。

三、三个最省 token 的命令:/clear、/compact、/rewind

命令 做了什么 适合什么时候 成本
/clear 清空上下文,开新对话 换到不相关的任务 基本为零
/compact [说明] 把历史总结成摘要,继续同一个对话 同一任务做到一半,上下文太长 要发一次总结请求
/rewind 回退到之前某一轮(可连带代码) 走错了方向,想整段丢掉 回到已缓存的前缀,很便宜

/clear:换任务就清

最简单的一个习惯:做完一件事、开始不相关的下一件之前,先 /clear。 旧上下文留着没用,后面每一条消息都得为它付费。

怕之后找不到,可以先命名再清:

text 复制代码
/rename 修复登录接口
/clear

要回来时用 /resume 打开会话列表。/clear 也可以直接带名字:/clear 修复登录接口。

/compact:带上说明再压缩

/compact 会把对话总结成摘要。可以告诉它保留什么:

text 复制代码
/compact 重点保留 API 用法和代码改动,测试过程可以略过

也可以写进项目根目录的 CLAUDE.md,让每次压缩(包括自动压缩)都按这个来:

markdown 复制代码
# Compact instructions

When you are using compact, please focus on test output and code changes

几个容易误会的地方:

  • 压缩本身不是免费的。 它要读一遍整个对话来生成摘要。缓存还热时,这次请求大部分走缓存,比较便宜;隔了很久再压缩,缓存已经过期,就得按全价重新处理整段历史。
  • 在任务间隙手动压缩,比等自动压缩更好。 官方的建议是自己挑压缩的时机,不要等它在任务进行到一半时自动触发。
  • 压缩后会保留的东西:项目根目录的 CLAUDE.md 和自动记忆会从磁盘重新加载,最近修改过的最多 5 个文件会被重新读入,已调用的 skill 也会重新注入(每个最多 5000 token)。

自动压缩的阈值可以用 /autocompact 调,范围是 100K 到 1M token:

text 复制代码
/autocompact 200k     # 上下文到 200K 就压缩
/autocompact auto     # 恢复为模型默认值

如果你用的网关不接受超过 200K 的请求,官方建议设置环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000。

/rewind:走错路就回退,别硬压

Claude 往错误方向跑了十几轮,与其 /compact 把错路也总结进去,不如直接回退。按两下 Esc 或者输入 /rewind,选一个之前的节点,对话和代码都能一起恢复。

官方文档专门提到:回退后剩下的历史和当时建缓存的内容一样,下一次请求能直接命中旧缓存,压缩则要重新建一份。所以回退往往比压缩便宜。

/btw:问个题外话,不进历史

临时想问"这个函数在哪个文件",可以用 /btw 提一个旁支问题,它不会加进当前对话。主对话就不会被零碎问题撑大。

四、让启动时的上下文变小

每次会话一开始就加载的东西,会在每一轮重复计费,这部分最值得精简。

CLAUDE.md 控制在 200 行以内

官方建议每个 CLAUDE.md 不超过 200 行。太长不光占上下文,Claude 遵守规则的效果也会变差。

两个常见误区:

  1. 用 @path 拆文件不能省 token。 被导入的文件也是启动时一起加载,只是看起来整齐了。
  2. 只在部分场景用到的规则不要放进 CLAUDE.md。 比如 PR 审查流程、数据库迁移步骤,平时写前端时它们也一直占着位置。

更好的做法是放进带 paths 的规则文件,或者做成 skill。

按路径加载的规则 :放在 .claude/rules/ 下,只有 Claude 读写匹配的文件时才加载:

markdown 复制代码
---
paths:
  - "src/api/**/*.ts"
---

# API Development Rules

- All API endpoints must include input validation
- Use the standard error response format

Skill:只在被调用时才加载正文。适合流程性的说明,比如"怎么发版""怎么写迁移脚本"。还可以写一个介绍项目结构的 skill,让 Claude 不用每次都翻好几个文件才弄明白目录是怎么分的。

注意一点:带 paths 的规则在压缩后不会自动保留,要等再次碰到匹配文件时才重新加载。某条规则必须一直生效的话,就去掉 paths 或放回根目录的 CLAUDE.md。

少开用不上的 MCP 服务器

现在 MCP 工具定义默认是延迟加载的:启动时只放工具名,用到某个工具时才加载完整定义,比以前省很多。但依然有两条建议:

  • 能用命令行工具就用命令行。 gh、aws、gcloud 这类 CLI 不需要在上下文里登记工具列表,比对应的 MCP 服务器更省。
  • 用 /mcp 关掉暂时用不上的服务器。

大段输出交给 hook 或子 Agent

跑测试、看日志这类操作,输出动不动就几千行,全塞进主对话很浪费。两个办法:

  • Hook 预处理 :用 PreToolUse hook 改写命令,比如测试只输出失败的部分。官方文档给的示例是在 settings.json 里给 Bash 挂一个脚本,遇到 npm test、pytest、go test 时在命令后面接上 grep 只保留 FAIL / ERROR 附近的行。
  • 交给子 Agent :让子 Agent 去跑测试、查文档,详细输出留在子 Agent 自己的上下文里,主对话只收到一段总结。子 Agent 也要花 token,简单任务可以在子 Agent 配置里写 model: haiku。

五、别让缓存白白失效

这部分成本不太显眼。缓存按前缀精确匹配,前面任何一处变了,后面全部重算。官方文档列出的会让缓存失效的操作有这些:

操作 影响 建议
中途用 /model 切模型 每个模型有独立缓存,下一轮整段重算 开会话时就定好模型
中途改 effort 多数模型整段重算;Opus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1 走 API Key 或订阅时不受影响 同上
打开 fast mode 第一次开启时整段重算,按 fast mode 价格计 要用就在会话开头开
连接或移除 MCP 服务器 工具延迟加载时一般不受影响;工具预先加载时会失效 别在任务中途折腾 MCP
/compact 对话层重建 放在任务间隙
截图太多 超出限制后会删掉最早的一批图片,从那里开始重算 截图按需发
升级 Claude Code 新版本的第一次会话从头建缓存 无需处理

还要注意 opusplan:它在计划模式用 Opus、执行时用 Sonnet,每切换一次计划模式都等于换模型,会重新建缓存。

另外,会话中途改 CLAUDE.md 不会让缓存失效,但也不会立即生效 ,要等下一次 /clear、/compact 或重启。改完觉得"没反应",多半是这个原因。

缓存多久过期

计费方式 主对话默认 TTL
Claude 订阅(在套餐额度内) 1 小时
使用超额额度、API Key、云服务商 5 分钟

用 API Key 的话,离开 5 分钟以上再回来,第一轮就要整段重算。如果你经常中途离开,可以在 settings.json 里改成 1 小时(需要 v2.1.242 及以上):

json 复制代码
{
  "promptCacheTtl": "1h"
}

也可以用环境变量 CLAUDE_CODE_PROMPT_CACHE_TTL=1h。代价是 1 小时缓存的写入单价更高,如果你一直连续工作、很少空闲超过 5 分钟,改了反而更贵。

用第三方地址(自定义 ANTHROPIC_BASE_URL)的读者要多留意:缓存能不能生效取决于网关会不会原样转发 cache_control 标记。如果网关把它去掉了,每一轮都会按全价计整段历史。拿 /usage 看一下 cache read 是不是一直为 0,就能判断。

六、模型和思考预算

  • 日常编码用 Sonnet,复杂设计再用 Opus。 官方的说法是 Sonnet 能处理大多数编码任务,价格也更低。用 /model 切换,或者在 settings.json 里写 "model": "sonnet" 作为默认。
  • 简单任务调低 effort。 思考 token 按输出 token 计费。用 /effort low 或 /effort medium 调低;Opus 5.5、Sonnet 5.5、Haiku 5.5 默认就是 medium。
  • 固定思考预算的旧模型 可以用环境变量 MAX_THINKING_TOKENS=8000 限制上限;自适应推理的模型会忽略这个值,要用 effort 控制。

七、写提示词的习惯

下面几条不需要任何配置:

  1. 说具体。 "改进一下这个项目"会让 Claude 大范围扫描文件;"给 auth.ts 里的 login 函数加输入校验"只需要读一两个文件。
  2. 复杂任务先进计划模式。 按 Shift+Tab 切到计划模式,先看方案再动手,避免做到一半推倒重来。
  3. 发现跑偏立刻按 Esc。 越早打断,浪费越少。
  4. 给出验证标准。 附上测试用例或期望输出,Claude 能自己检查,省掉你来回提修改意见的几轮。

常见问题速查

现象 可能的原因 处理
一句简单问题也很贵 会话太长,整段历史都在计费 换任务前 /clear
离开一会儿回来第一轮特别慢 缓存过期,整段重算 API Key 用户考虑 promptCacheTtl: "1h"
切模型后突然变慢 新模型没有缓存 会话开头就定好模型
改了 CLAUDE.md 没效果 中途修改要等 /clear、/compact 或重启 改完 /clear
/context 显示启动就占很多 CLAUDE.md 太长或 MCP 太多 拆到 rules / skill,关掉不用的 MCP
cache read 一直是 0 网关没有转发缓存标记 换支持缓存的服务商,或联系服务商
订阅额度消耗快 子 Agent、定时任务、长上下文 看 /usage 的用量分布

简单说:换任务就 /clear,走错路用 /rewind,任务间隙才 /compact,会话中途别乱切模型。 这四条做到了,常见的浪费基本能避开。

参考资料

相关推荐
从小白到软工1 小时前
C语言(中)预告
c语言·数据结构·经验分享·ai编程
Solara1 小时前
库连续 35 天只写自己的日记:第 36 天的外采,进得了索引,进不了版本库
人工智能·程序员·ai编程
HjhIron1 小时前
从 Naive 到 Agentic RAG:引入 Elasticsearch 打造工业级混合检索(Hybrid Search)
ai编程
姜楠聊AI转型1 小时前
团队AI编程落地第 8 篇:AI 编程 Rules 规则模板(可直接复制):分层写法 + 5 个原则 + 维护机制
人工智能·ai编程·研发管理·vibe coding·ai coding·coding agent
桃西西呀1 小时前
LangGraph4j之七:子图与组合
人工智能·llm·ai编程
张伽蓝ErosJane1 小时前
AI 客服 Agent 搭建实战:从提示词 Demo 到可治理产线
ai编程
半调子的社畜1 小时前
记账 App 我装了删、删了装,最后自己写了一个:本地语音识别 + R8 踩坑复盘
android·ai编程
桃西西呀1 小时前
LangGraph4j之六:消息状态与消息通道
人工智能·llm·ai编程
程序员鱼皮1 小时前
Personal Agent 是什么?为什么大厂都抢着做?连 DeepSeek Bot 都来了。。
前端·后端·ai编程