用 Claude Code 写了一天代码,账单超出预期两倍——大部分钱花在你看不见的地方。12 个操作可以直接砍掉一半以上,不需要换模型,不需要少用。
每轮都在跑表的——System Prompt 体积
System Prompt 每轮都带着,是固定开销里最大的一块。
一、Skill 用英文写
英文比中文少 30~50% token,中文 100 行 ≈ 800 tokens,英文同等内容 ≈ 500 tokens。Skill 触发时加载进当前对话,文件越长消耗越多,用英文写可以减少每次触发的消耗。
二、精简 CLAUDE.md
CLAUDE.md 每轮都加载,只写 Claude 不知道但需要知道的,不写显而易见的规则。
不该写(Claude 本来就知道):
# 写代码要规范
该写(Claude 无法自己推断的):
## My Role
Senior backend engineer, Java/Spring Boot stack.
Prefer explicit error handling, avoid magic/auto-config.
三、用 Skill+CLI 替代 MCP
MCP server 的全部工具 schema 每轮都带着,即使没用到。简单操作用 Skill + Bash 替代,触发时仅加载该 Skill 内容,通常 200~500 token,比 MCP 少 10 倍以上。用不到的 MCP server 在设置里临时禁用。
越聊越长越贵的——历史对话积累
四、用 /clear 和 /compact 管理对话长度
切换新任务: 用 /clear 清空历史,不发请求,输入 token 从最小值重新开始。上一个任务的历史在新任务里没有价值,却每轮都要带着。
子任务完成后,或 context 用了 50~70% 时: 用 /compact 生成摘要替换历史。本身消耗 token,但换来后续每轮少带大量历史,总体划算。
/compact是有损压缩。使用前先让 Claude 总结要点,不要在任务中途使用,会丢失关键中间状态。
本来能省 90% 却没省到的——缓存失效
缓存命中后费用降至 1/10,关键是别让它失效。
五、保持 Skill 和 CLAUDE.md 内容稳定
缓存按前缀匹配,内容变了该位置之后全部失效。频繁改动等于每轮重新按全价计。
六、需要反复参考的长文件,在对话开始时一次性读入
先帮我读 src/order/OrderService.java,接下来我们会一直修改它
后续每轮命中缓存只收 1/10 费用。每次用到时才读,缓存永远不会命中。
能少发就少发——输入输出量控制
七、精准描述需求
一次说清楚比三次来回省 token。用结构化需求描述:做什么、不做什么、验收标准。
八、减少解释输出
直接改代码,不需要解释。
输出 token 单价是输入的 5 倍(以常用模型为例),减少废话是最直接的省钱方式。
九、不让 Claude 重复确认
直接执行,遇到真正的问题再问我。
十、限制文件读取范围和片段
指定范围,不让 Claude 自主探索——中型项目累计可达 100K+ 输入 token:
# 贵
"帮我分析这个项目"
# 省
"只看 src/services/ 下,分析订单模块"
指定行号,不读整个文件——500 行文件 ≈ 每轮多 2000 tokens:
只看 UserService.java 的 processOrder 方法(约 120~180 行)
十一、压缩图片再输入
512×512 以下 ≈ 85 tokens,1080p 截图 ≈ 2500~3000 tokens。压缩到 720p 以下,视觉损失极小。
十二、切换轻量模型
/model claude-haiku-4-5 # 最省,适合简单改动
/model claude-sonnet-4-6 # 平衡,适合大部分任务
高频操作场景
高频场景速查,完整操作见上文各章节。
| 场景 | Token 消耗 | 建议 |
|---|---|---|
| 读整个大文件 | 高 | 指定行号或函数名 |
| 长对话继续 | 逐渐增高 | 定期 /compact |
| 让 Claude 自主探索项目 | 很高 | 直接给文件路径 |
| 来回修正模糊需求 | 很高 | 一次说清楚,写明做什么/不做什么 |
| 输入高分辨率截图 | 中高 | 压缩到 720p 以下再输入 |
| 配了很多 MCP | 固定高开销 | 用不到的临时禁用 |
| 切换新任务 | — | 先 /clear 清空历史 |
本人公众号「向好慢慢行」,欢迎大家关注。