2026-08-21 · 主题:成本控制(cost control) 为什么是今天:v2.1.237(8/20)刚修了 LLM gateway 下 prompt caching 失效的问题,同版本还内置了 Concise 输出风格——两项都是直接冲着账单去的。趁热把成本这条线一次讲透。
前 14 课讲的是「怎么让 Claude Code 干得更好」,这一课讲「怎么让它干得更便宜」。四条技巧由浅入深:先学会看账,再改输出,再改上下文习惯,最后是模型与 effort 的分层调度。
技巧 1(入门):先看账,再谈省 —— /cost 与 /usage
省钱的第一步不是砍什么,是知道钱花在哪。/cost 会给出当前会话的累计 API 花费(美元,四位小数),并按模型拆分 input / output / cache read / cache write 四类 token 与各自小计。
/cost
关键读法:
- cache read 占比高 = 好事。缓存读只按基础输入价的 0.1× 计费,占比越高说明你的前缀越稳定。
- cache write 反复出现 = 坏事。写缓存要 1.25× 基础输入价,反复写说明前缀在被不断打破(见技巧 3)。
- input 远大于 output = 上下文太胖,不是模型太啰嗦。
估算月度成本的实操做法:跑一个有代表性的任务 → /cost → 乘以你预计的会话数,比任何定价表都准。
📎 Manage costs effectively — Claude Code Docs
技巧 2(基础):用 Concise 输出风格砍掉「过程叙述」
v2.1.237(2026-08-20)新增了内置的 Concise 输出风格:Claude 直接给结果,跳过前言(preamble)和过程叙述(narration)。
这条省的不只是当次的 output token。Claude Code 的每一轮都会把历史带上,今天多写的 300 token 叙述,会在后面每一轮里被重新计价一次——省一次,省的是「一次 × 剩余轮数」。
启用方式(输出风格是会话级设置,可在会话内切换):
/output-style
在列表里选 Concise。想让它成为默认,写进项目级设置:
// .claude/settings.json
{
"outputStyle": "Concise"
}
配套的 CLAUDE.md 一句话约束,效果叠加:
## 输出约定
- 不要复述我的需求,不要写「我将要…」的开场白。
- 改完文件不要贴全文 diff,只列改了哪些文件 + 一行原因。
- 只在我问「为什么」时才解释设计取舍。
📎 Claude Code changelog · 📎 Claude Code 成本优化实践
技巧 3(进阶):养成「任务完成 → /clear」的肌肉记忆,并保护缓存前缀
成本的最大驱动项是上下文体积——每发一条新消息,累积的对话历史都要跟着走一遍。会话越长,每次交互越贵。
最贵的一个习惯是:把一个已完成任务的庞大上下文,原封不动带进一个不相关的新任务。旧上下文对新任务零价值,却在每条消息上继续计费。
# 任务完成 → 清空 → 开新任务
/clear
/clear 与 /compact 的成本取舍:
| 做什么 | 成本影响 | |
|---|---|---|
/clear |
丢弃全部历史,重新开始 | 上下文归零,但缓存前缀也重建(一次 cache write) |
/compact |
压缩历史成摘要后继续 | 保留连续性,但压缩会改写前缀 → 缓存整段失效 |
所以:任务之间用 /clear,任务内部尽量别频繁 /compact。频繁 compact 是长会话里悄悄烧钱的典型模式——每压缩一次,后面所有缓存都得重写。
同理,任何会在每轮变化的东西都不该进 CLAUDE.md 或系统提示的前部。一个时间戳、一个会话 ID 放在前缀里,就足以让整段缓存每轮失效。CLAUDE.md 保持精简、把目录级指引下沉到嵌套 CLAUDE.md,既省 token 也保缓存。
📎 Claude Code Token Optimization · 📎 Prompt caching — Claude Platform Docs
技巧 4(高阶):模型与 effort 的分层调度
单项收益最大的动作是给每类任务配对的模型,而不是全程用最贵的那个。
v2.1.236(2026-08-19)新增了 ANTHROPIC_DEFAULT_MODEL,可以指定新会话的默认启动模型——把默认设成便宜档,需要时再手动升档,比「默认最贵、忘了降档」的模式稳得多:
# ~/.zshrc 或 ~/.bashrc
export ANTHROPIC_DEFAULT_MODEL="claude-sonnet-5"
会话内按需升降:
/model # 查看/切换当前模型
思考预算同样可调。复杂重构值得深思,改个 typo 不值得:
/effort # 调低/调高思考强度
固定思考预算的模型上,可用环境变量兜底:
export MAX_THINKING_TOKENS=8000
第三层是用 subagent 隔离上下文(见第 3 课)。让 subagent 去啃「读 30 个文件找出调用点」这种脏活,主会话只收一份结论——脏上下文留在子会话里,不会污染主会话的后续每一轮。这既是质量手段,也是成本手段。
📎 Manage costs effectively · 📎 Claude Code Cost Tracking
一页速记
看账 /cost # 关注 cache read 占比
输出 /output-style → Concise # settings.json: "outputStyle": "Concise"
上下文 任务完成 → /clear # 少用 /compact(会毁缓存)
模型 ANTHROPIC_DEFAULT_MODEL # 默认便宜档,按需 /model 升档
思考 /effort、MAX_THINKING_TOKENS=8000
隔离 subagent 啃脏活,主会话只收结论
一句话: 账单不是被模型价格决定的,是被「你每轮重复发送多少字节」决定的。
下一课预告方向(候选):调试工作流、git worktree 并行、skills 的组织与复用。
主页