Claude Code 的强大伴随着 Token 消耗。一个不加控制的 Agentic 循环可以在几分钟内消耗数万 Token。本文是 Claude Code 成本优化的完整指南,涵盖 Token 节省策略、模型选择、API 用量追踪和 Prompt Cache 配置。
理解 Claude Code 的 Token 消耗来源
每次请求的组成
每次 API 请求 =
系统提示(CLAUDE.md 内容等)
+ 完整对话历史(所有消息)
+ 工具目录(所有可用工具的描述)
+ 当前用户消息
+ 工具调用和结果(文件读取、命令输出等)
消耗最大的来源(按影响排序):
- 长时间会话积累的对话历史
- 大文件读取(整个文件内容进入上下文)
- 冗长的工具输出(测试日志、命令输出)
- 过多的 MCP 服务器(每个服务器的工具描述都占用 Token)
- 过长的 CLAUDE.md
策略 1:主动管理对话历史
最高影响的单一操作。
/compact:压缩而不丢失状态
# 每 30-40 条消息主动运行
/compact
# 指定保留重点(压缩质量更好)
/compact 保留:正在实现 OAuth 的 callback handler,
已完成 login 端点,还需要处理 refresh token 和 logout压缩效果:通常能把上下文缩小到原来的 1/5 到 1/3,但保留关键决策和状态。
/clear:完全重置
# 切换到完全不相关的任务时
/clear完全重置后,CLAUDE.md 重新加载,但对话历史清空,Token 消耗从最小状态重新开始。
实测数据
一个 2 小时的开发会话,不清理上下文,对话历史可能积累到 100k+ Token。主动每 30 分钟 /compact 一次,相同工作量的 Token 消耗可以降低 60-70%。
策略 2:精确的 @ 文件引用而不是模糊描述
低效(Claude 需要广泛搜索,读取不需要的文件):
> 优化用户认证相关的错误处理
高效(精确指定,只读取必要文件):
> @src/api/auth.ts 优化第 142-180 行的错误处理,
参考 @src/types/errors.ts 的错误类型定义
精确指定减少 Claude 的"探索性读取",每次探索可能读取 5-10 个不必要的文件。
策略 3:控制 MCP 服务器数量
每个 MCP 服务器的工具描述在每次请求时都会出现在上下文里:
安装了 10 个 MCP 服务器,每个平均 8 个工具
= 每次请求多出 80 个工具描述
= 约 2000-5000 Token 的固定开销(每次请求)
最小化原则:只安装实际使用的 MCP 服务器。
# 查看当前安装的 MCP 服务器
/mcp
# 移除不用的
claude mcp remove unused-server-name策略 4:选择正确的模型
Claude Code 支持三种模型,价格和能力差距显著:
| 模型 | 输入价格 | 输出价格 | 适合任务 |
|---|---|---|---|
| Haiku 4.5 | $0.80/MTok | $4/MTok | 简单查询、代码搜索、文件发现 |
| Sonnet 4.6 | $3/MTok | $15/MTok | 日常开发、代码审查、中等复杂任务 |
| Opus 4.7 | $15/MTok | $75/MTok | 复杂架构、长时间 Agent 任务 |
实际用量建议:
主要开发工作 → Sonnet 4.6(性价比最高)
复杂架构决策、大型重构 → Opus 4.7
简单代码搜索、快速问答 → Haiku 4.5
Sub-agent 的探索任务 → Haiku 4.5(在 Sub-agent 配置里指定)
# 切换模型
/model haiku # 临时切换到 Haiku
/model sonnet # 切回 Sonnet
claude --model haiku # 启动时指定策略 5:努力等级(/effort)按需调整
努力等级影响推理 Token(Extended Thinking)消耗:
low → 最少推理 Token,最快,成本最低
medium → 标准推理
high → 深度推理,成本增加约 30-50%
xhigh → 更深推理(Opus 4.7 默认),成本较高
max → 最大思考预算,仅用于最复杂问题
使用原则:
- 明确的任务(改个配置、写个简单函数)→
low或medium - 日常开发 →
high(Sonnet 4.6 默认) - 复杂架构、棘手 Bug →
xhigh(Opus 4.7 默认) - 最难的问题才用
max
/effort low # 快速任务临时调低
/effort high # 回到常规策略 6:Prompt Cache(API 用户)
对于使用 Anthropic API 的用户,Prompt Cache 可以大幅降低重复内容的成本:
# 开启 1 小时缓存 TTL(默认 5 分钟)
export ENABLE_PROMPT_CACHING_1H=1缓存命中率高的内容(收费仅为原价的 10%):
- CLAUDE.md 内容(每次会话开始都一样,缓存命中率极高)
- System Prompt(稳定不变)
- 较早的对话历史(稳定的部分)
实际效果:
- 有长 CLAUDE.md 的项目:缓存可以节省 40-60% 的输入 Token 成本
- 频繁
/compact后:压缩摘要被缓存,之后的请求成本大幅下降
v2.1.129 修复:之前 1 小时缓存 TTL 被静默降级为 5 分钟的 Bug 已修复,升级后缓存才能真正生效。
策略 7:CLAUDE.md 精简
CLAUDE.md 在每次请求时都会加载。一个 2000 字符的 CLAUDE.md vs 一个 200 字符的,每次请求就差了约 500 Token。乘以会话里的请求次数,一天下来差异显著。
精简原则:
- 每行问自己:"去掉这行,Claude 会犯什么错?"
- 能推断的不写(如"用 TypeScript",Claude 看到
.ts文件就知道) - 用
@引入长文档,而不是把内容直接写入
策略 8:/usage 监控和分析
/usage # 查看当前计划用量和速率限制细分/usage 显示(v2.1.105+):
- 并行会话占比
- Sub-agent 调用占比
- 缓存未命中率
- 长上下文占比
根据 /usage 数据采取行动:
- 缓存未命中率高 → 开启
ENABLE_PROMPT_CACHING_1H,稳定 CLAUDE.md - Sub-agent 调用多 → 检查是否可以减少不必要的 Sub-agent 调用
- 长上下文占比高 → 更频繁地
/compact
不同使用场景的成本估算
个人开发者(每天 4 小时使用)
日常开发(Sonnet 4.6):约 $2-5/天
复杂重构日(Opus 4.7):约 $5-15/天
月均成本(混合使用):$50-150/月
优化后(启用缓存、主动 /compact):减少 40-60%
小团队(5 人,每人每天 4 小时)
未优化:$250-750/月
优化后(AI 网关 + 缓存 + 模型路由):$100-300/月
企业团队(50 人工程团队)
未优化:$2500-7500/月
优化后(完整策略):$1000-3000/月
订阅 vs API 的成本比较
Claude Code 订阅(推荐大多数开发者):
- Pro ($20/月):轻度使用
- Max ($100/月):中度使用,包含更多 Claude Code 配额
- Team ($25/seat/月):团队共享,有管理功能
Anthropic API(推荐重度用户和企业):
- 按实际 Token 计费,没有固定月费
- 有完整成本可见性和归因
- 适合重度使用(>$100/月的 Token 消耗)
临界点:如果每月 API 费用超过 $100,API 模式开始有竞争力;如果是团队并且需要治理,企业计划更合适。
来源:Claude Code 官方文档 - Costs | Best Practices | 整理:ClaudeEagle