先开个头儿,说一下核心判断:Claude Code 是个效率利器,但如果不注意 Token 消耗,账单可能会让人有些意外。这篇文章就是围绕如何系统性地降低 Token 成本展开的,从底层计费逻辑到具体操作策略,一应俱全。

一、理解 Token 计费
1.1 输入 Token vs 输出 Token
Claude 的计费逻辑其实很清晰,分输入和输出两块:
Token 类型 | 说明 | 价格相对 |
|---|---|---|
输入 Token | 发送给 Claude 的内容(你的消息、文件、系统提示) | 较低 |
输出 Token | Claude 生成的回复 | 较高(约 3-5 倍) |
关键认知:让 Claude「多说」,成本会比让 Claude「多读」高得多。
1.2 缓存命中的力量
缓存命中带来的折扣高达 90%,这才是省钱的真正杠杆。
1.3 缓存计费规则
Prompt Caching 的逻辑并不复杂,理解它就能理解省钱的关键:
- 首次请求:按完整输入 token 计费;
- 5 分钟内再次请求:缓存命中,只计费 10%;
- 缓存过期(5 分钟后):重新按完整输入计费。
核心就一句话:让固定的内容被缓存,让可变的内容尽量精简。
1.4 实时监控:/cost
任何时候想看看花了多少钱,跑一下这个命令:/cost
它会显示当前会话的 Token 总量、输入/输出拆分明细、预估费用、缓存命中率。建议养成习惯,每完成一个大任务就跑一次,建立成本感知。
二、零成本优化:用好免费额度
2.1 识别高消耗场景
哪些场景是消耗 Token 的「大户」?看这张表就清楚了:
场景 | 典型消耗 | 说明 |
|---|---|---|
读取大文件 | 10-100K Token | 一次请求就吃掉大量输入 Token |
长对话历史 | 累计增长 | 每轮对话都带着前面所有内容 |
反复读取相同文件 | 浪费 | 没有利用缓存 |
输出生成 | 高额 | 输出 Token 价格更高 |
MCP 工具定义 | 每个 1-5K Token | 每个 MCP 都有固定开销 |
2.2 建立监控习惯
关键命令就三个:/context、/cost、或者简单写下 /context && /cost。知道钱花在哪儿,才能对症下药。
三、Prompt Caching 策略:省 90% 的秘诀
3.1 缓存原理
Claude 的 Prompt Caching,核心是缓存「稳定的上下文前缀」。什么意思?就是固定的内容优先缓存:
- 缓存的内容(稳定):系统提示、CLAUDE.md、被加载的 Skills、MCP 工具定义、对话历史的早期部分。
- 不缓存的内容(多变):最新几轮对话、新读取的文件、工具调用结果。
核心原则:越靠前的内容越容易被缓存。
3.2 CLAUDE.md 优化
CLAUDE.md 是缓存的「黄金地段」——每次请求都带上它,而且位置很靠前。所以它的写法直接决定缓存效率。
不好的写法:频繁修改、内容冗长。比如一段 50 行的示例代码,加上过时的备注,每次改动都让缓存失效。
好的写法:精简、稳定、核心规则。例如:
React 18,TypeScript,Vite 项目。## 规范
- 组件用箭头函数 - 样式用 Tailwind - 测试放 __tests__/
## 命令
- 开发: npm run dev
- 测试: npm test
关键在于稳定性——修改 CLAUDE.md 会让缓存失效,重新计费。保持不变,缓存命中,只计费 10%。
3.3 Skills 延迟加载
Skills 默认在会话开始时加载,这会占用上下文。可以设置延迟加载:
--- disable-model-invocation: true ---- 效果:不会自动加载到上下文,只有手动调用 /skill-name 时才加载,减少预热成本。
- 适合延迟加载的 Skills:不常用的功能、大型 Skills、专用工具。
3.4 缓存刷新策略
缓存的 TTL 是 5 分钟。理解这个窗口,就等于掌握了省钱的时间密码:
- 连续工作模式(推荐):任务 A 开始(首次计费)→ 5 分钟内任务 B 开始(缓存命中)→ 再一个 5 分钟内任务 C 开始(缓存命中)。成本只有第一次全额,后续都是 10%。
- 断续工作模式(浪费):任务 A 开始(首次计费)→ 休息 10 分钟(缓存过期)→ 任务 B 开始(重新全额计费)。
最佳实践:
场景 | 策略 | 效果 |
|---|---|---|
有多个相似任务 | 集中处理,保持缓存热度 | 高命中率 |
长时间休息前 | 用 /compact 压缩对话 | 下次恢复更快 |
休息后回来 | 先 /cost 看缓存状态 | 了解是否需要重新预热 |
3.5 缓存命中率检查
/cost 命令会输出缓存相关信息。如果命中率低,检查一下:CLAUDE.md 是否频繁修改?是否大量读取新文件?会话是否中断太久?
四、模型选择策略:按需付费
4.1 任务复杂度匹配
任务类型 | 推荐模型 | 原因 |
|---|---|---|
简单查询、格式转换 | Sonnet | 成本低,速度快 |
代码补全、小修改 | Sonnet | 足够智能 |
复杂重构、架构设计 | Opus | 理解能力强 |
调试疑难问题 | Opus | 推理深度够 |
大规模代码分析 | Opus[1m] | 需要大上下文 |
4.2 Sonnet 为主,Opus 为辅
默认用 Sonnet:claude --model sonnet。复杂任务临时切到 Opus:/model opus,完成后 /model sonnet 切回来。成本对比很直观:Sonnet 是 $3/百万输入,$15/百万输出;Opus 是 $15/百万输入,$75/百万输出—— Opus 价格是 Sonnet 的 5 倍。
4.3 Opus[1m] 的成本权衡
1M 上下文的扩展版,什么时候用?
- 分析整个代码库:用 Opus[1m],一次读完。
- 长时间多轮重构:用 Opus[1m],保持上下文。
- 简单的日常任务:不需要,200K 就够。
- 读取少量文件:不需要,标准模式更省。
权衡公式:单次大任务用 Opus[1m] 可能更省(避免多次启动),多个小任务用 Sonnet + /clear 更省。
4.4 模型切换快捷方式
命令行:claude --model sonnet、claude --model opus、claude --model "opus[1m]"。会话内:/model sonnet、/model opus、/model "opus[1m]",或者直接 /model 查看当前模型。
五、工作流优化:减少浪费
5.1 批量处理 vs 逐个处理
差的模式:修复 Bug A → 新会话;修复 Bug B → 又新会话;修复 Bug C → 再来一个新会话。每次都有启动开销,加载 CLAUDE.md、Skills、MCP。好的模式:一次会话,修复 Bug A、B、C,每个完成后 /compact,启动开销只一次,缓存持续命中。
5.2 子 Agent 成本隔离
大文件分析是 Token 消耗大户。用子 Agent 隔离:主会话保持小上下文,子 Agent 专门读取大量文件,分析后返回摘要。这样主会话不会被撑爆。
5.3 /compact vs /clear
命令 | 作用 | 成本影响 |
|---|---|---|
/compact | 压缩对话历史 | 保留关键信息,继续利用缓存 |
/clear | 清空一切 | 缓存失效,重新开始 |
使用时机:/context 显示 70% 时 /compact,显示 90% 时 /clear。任务切换时,用 clear 居多。
5.4 避免重复读取
Claude 会记住当前会话读取过的文件。比如读取了 package.json,后续直接问“修改刚才读取的 package.json,把 react 升级到 19”,不需要重复发送文件内容。
5.5 精简指令
输出 Token 价格是输入的 3-5 倍,所以让 Claude 少说话就是省钱。比如把“详细解释一下这个函数是做什么的”改成“这个函数的作用是什么?一句话回答”;把“有什么建议?”改成“列出 3 个最可能的性能瓶颈”。
六、Skills 与插件推荐
6.1 内置优化功能
功能 | 命令 | 作用 |
|---|---|---|
上下文查看 | /context | 了解当前上下文消耗 |
成本查看 | /cost | 查看当前会话成本 |
上下文压缩 | /compact | 压缩对话历史 |
会话清空 | /clear | 重新开始 |
模型切换 | /model | 按需选择模型 |
6.2 推荐的开源工具
几个开源项目专门用于降低 Token 消耗:
项目 | 用途 | 效果 |
|---|---|---|
ca veman | 让 Claude 用简洁方式回复 | 减少 65% Token |
code-review-graph | 构建代码知识图谱,只读关键文件 | 减少 6.8x-49x Token |
claude-token-efficient | 一个 CLAUDE.md 文件,让回复更简洁 | 减少输出冗余 |
项目地址:ca veman、code-review-graph、claude-token-efficient
简单来说,ca veman 通过改变回复风格节省 Token;code-review-graph 让 Claude 只读需要的文件;claude-token-efficient 最简单,把它的 CLAUDE.md 内容加到项目里就能奏效。
6.3 MCP 服务选择
每个 MCP 都有工具定义开销(1-5K Token)。策略是:只启用必需的。比如文件系统访问是必需的,GitHub 集成是常用的,数据库访问是常用的,某个特定 API 或者实验性工具就按需启用。不用的直接不列出。
6.4 CLAUDE.md 模板优化
一个省钱的 CLAUDE.md 结构应该很精简:项目简介 2-3 行,技术栈用列表简洁说明,代码规范核心规则不超过 10 条,常用命令不超过 5 个。避免放大量示例代码、详细教程、频繁变动的临时信息——这些都会破坏缓存。
七、团队成本管理
7.1 用量监控
Anthropic Console 提供详细的用量数据:按日期的 Token 消耗趋势、按模型的消耗分布、API 调用次数和成功率、缓存命中率。定期查看是团队管理的基础。
7.2 预算预警
在 Console 里设置月度预算上限、预警阈值(50%、80%)、超限通知方式。这就不用等账单出来才心疼了。
7.3 成本归因
团队使用建议:项目级 CLAUDE.md 里标注项目名称,使用统一的命名规范,方便账单中识别。给会话命个名:claude --name "项目A-功能X开发",后续追溯谁花了多少就一清二楚。
7.4 团队 CLAUDE.md 规范
统一规范能减少返工:包括代码风格、Git 提交规范、PR 审查清单、禁止事项等。每个项目在此基础上扩展自己的内容。
八、成本优化检查清单
8.1 每日检查
- □ /cost 查看当日消耗
- □ 是否有缓存命中率低的问题
- □ 是否有重复读取同一文件
- □ 是否在用正确的模型
8.2 每周检查
- □ CLAUDE.md 是否可以精简
- □ 是否有不需要的 MCP 在运行
- □ 是否有不需要的 Skills 自动加载
- □ 本周账单是否异常
8.3 配置优化
- □ CLAUDE.md 保持精简(< 200 行)
- □ 不常用的 Skills 设置延迟加载
- □ 只启用必需的 MCP
- □ 项目 CLAUDE.md 保持稳定(少修改)
8.4 工作流优化
- □ 相似任务批量处理
- □ 大任务用子 Agent 隔离
- □ 长会话适时 /compact
- □ 切换任务时 /clear
- □ 按任务复杂度选择模型
九、总结
省钱的三个层次
第一层:监控——知道钱花在哪,用 /cost、/context、Console。
第二层:缓存——让固定内容被缓存,精简稳定的 CLAUDE.md,Skills 延迟加载。
第三层:策略——按需选择模型,优化工作流,子 Agent 隔离。
核心原则
1. 能缓存就缓存:CLAUDE.md 稳定、内容精简、不频繁修改。
2. 能省就省:简单任务用 Sonnet,输出精简,避免重复。
3. 能隔离就隔离:大任务用子 Agent,批量处理减少启动开销。
4. 能监控就监控:定期 /cost,检查缓存命中率,关注账单异常。
从现在开始
立即执行:
1. 运行 /cost,建立成本意识。
2. 检查 CLAUDE.md,删除冗余内容。
3. 检查 Skills,设置延迟加载。
4. 检查 MCP,禁用不需要的。
持续习惯:
1. 按任务选模型。
2. 批量处理相似任务。
3. 长会话定期 /compact。
4. 每周检查账单。
参考
- Claude Code 官方文档
- Prompt Caching 文档
- Claude 模型定价
- 上下文窗口管理
