用好 CoreCode
Claude Code 省钱指南
Claude Code 一天花掉几十美元并不少见。大部分钱不是花在“写代码”上,而是花在每一轮都要重发的上下文上。这一页先讲钱花在哪,再给出不影响效果的省钱做法。缓存的细节见 缓存与计费。
- 账单的大头是每一轮重发的上下文,也就是输入侧,而不是输出。
- 按 Anthropic 定价,Opus 5.5 和 Sonnet 5.5 的缓存读取是输入价的 0.05 倍(Haiku 5.5 为 0.1 倍),5 分钟缓存写入 1.25 倍,1 小时缓存写入 2 倍。
- 日常任务用 Sonnet,难题再用 Opus,并在任务开头定好模型。
- 换任务就
/clear,长会话适时/compact,精简CLAUDE.md和 MCP。 - auto 模式每次调用工具前的分类器请求几乎不命中缓存,可能占掉很大一部分花费。
钱花在哪里
Claude Code 每一轮都把系统提示、工具定义、读过的文件和整段对话重新发给模型。一个进行了一会儿的会话,每轮发出去的是几万到几十万 token,模型回复的只有几百到几千。所以:
- 输入远比输出多。账单的大头通常是输入侧,而不是输出。
- 缓存决定输入侧的价格。命中缓存的部分在 Opus 5.5 和 Sonnet 5.5 上只按输入价的 5% 计,没命中的要按写入价重来,是读取价的 25 到 40 倍(倍率见 Anthropic 的 提示缓存定价)。
- 上下文越长,每一轮越贵。同样一句“再改一下”,在一个 30 万 token 的会话里比在 3 万 token 的会话里贵十倍。
省钱就是三件事:用合适的模型,让缓存一直命中,别让上下文无谓地变长。
一、选对模型
- 日常任务用 Sonnet。改 bug、写测试、补文档、按清楚的需求实现功能,Sonnet 足够,单价远低于 Opus。用
/model切换,或启动时claude --model claude-sonnet-5-5。 - 难题再用 Opus。架构设计、跨很多文件的重构、Sonnet 反复做不对的问题,值得用 Opus。
- 在新会话开始时定模型。缓存按模型区分,会话中途切模型,下一轮要把整段上下文按写入价重来一遍。要换就在任务开头换,或者换完先
/compact。
二、让缓存一直命中
- 一个任务在一个会话里做完。中途不切模型、不切思考强度、不连接或断开 MCP 服务,这些都会让缓存失效。
- 经常停顿就开 1 小时缓存。默认缓存只保留 5 分钟,开会回来第一轮就要整段重写。在
settings.json的env里加"CLAUDE_CODE_PROMPT_CACHE_TTL": "1h",见 1 小时缓存。 - 选会话粘性好的中转。同一个会话的请求如果在多个上游账号之间跳,缓存几乎每轮都失效,花费能翻好几倍。CoreCode 按会话 ID 固定账号;别家可以用 检测脚本 的缓存一项看出来。
三、控制上下文
- 换任务就
/clear。上一个任务的文件和对话对新任务没用,每轮却照样要发。 - 长会话适时
/compact。压缩后第一轮要重写缓存,之后每轮都更便宜。不要为了“清爽”新开会话把上下文重新铺一遍,那比压缩更贵。 - 考虑关掉 1M 上下文。在
env里加"CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",上下文上限变成 200K,会更早触发自动压缩,每轮发送的上下文更短。 - 精简 CLAUDE.md 和 MCP。
CLAUDE.md每轮都会发;写清规则即可,不要贴整份文档。用不到的 MCP 服务断开,并保持默认的 MCP 工具搜索开启(不要设置ENABLE_TOOL_SEARCH=false)。
auto 模式要算一笔账
auto 权限模式要判断每个操作能不能放行。CoreCode 透传 Claude Code 的服务端审查,正常情况下不会多出请求。但如果设置了 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS,Claude Code 会改为每次调用工具前另发一个分类器请求:这些请求几乎不命中缓存,在真实案例里只占三分之一的请求数,却花掉了六成的额度,而且在 CoreCode 上按你会话的模型计费。CoreCode 不需要这个变量,删掉即可。Claude Code v2.1.283 起新会话默认就从 auto 开始,不需要无人值守时,按 Shift+Tab 切到 Manual 或“自动接受编辑”模式。详细分析见 auto 模式的开销。
自查:钱到底花在哪了
- 在 Claude Code 里输入
/usage(或/cost)看本会话的用量和费用,/context看上下文被什么占满了。 - 在控制台 使用日志 里按时间看连续几条请求:缓存读取稳定增长、缓存写入只有几百到几千是正常的;某一条缓存写入突然接近整段上下文,就是前缀变了。
- 日志里大量“非流”请求、每条写入几万 token,多半是 auto 模式的检查。
- 账单里出现没选过的模型,通常是后台摘要、子代理或 auto 分类器,见 账单里的其他模型。
Anthropic 官方的 Claude Code 成本说明 也列了一些控制花费的做法。对着日志还是看不出原因,把那几条请求的时间发给我们,我们可以查上游的账号和路由。
常见问题
Claude Code 为什么这么费 token?
因为它每一轮都把系统提示、工具定义、读过的文件和整段对话重新发一遍。会话越长,每轮发出去的越多;命中缓存时这部分在 Opus 5.5 和 Sonnet 5.5 上只按输入价的 5% 计。
怎么知道一个会话花了多少?
在 Claude Code 里输入 /usage(或 /cost),/context 看上下文被什么占满;控制台的使用日志里每条请求都有用量和费用。
开 1 小时缓存一定更省吗?
不一定。1 小时缓存的写入价是 5 分钟的 1.6 倍(2 倍对 1.25 倍)。经常停顿五分钟以上才划算,停顿少反而更贵。
只用 Opus,账单里为什么有 Haiku 或 Sonnet?
后台摘要、子代理和 auto 模式的分类器会用其他模型,见 账单里的其他模型。