帖子说了什么
@lenny_enderle 提到一个容易忽略的差别:Claude Code 在订阅(套餐额度内)时,提示缓存保留 1 小时;用 API key 时默认只有 5 分钟,想要 1 小时得为缓存写入付更高的费率。他的结论是:长时间离开后发的第一条消息,是 Agent 会话最贵的地方。
官方怎么说
对照官方 How Claude Code uses prompt caching:
- 缓存在一段时间不活动后过期;每次命中都会重置计时。过期后的第一条请求要把整段历史重新处理一遍,所以「回来第一句」会明显慢、也更费用量。
- API 提供两种时长:5 分钟,和 1 小时(缓存写入费率更高)。
- 没手动指定时,Claude Code 只在 Claude 订阅、且在套餐用量内时,为主对话请求 1 小时;子代理、压缩等其余请求默认 5 分钟(少数由服务端控制的辅助请求除外)。
- 用 API key、云厂商,或订阅超出套餐、开始消耗 usage credits 时,主对话默认降到 5 分钟。
怎么查、怎么设
查当前用的是哪种:官方给的方法是运行
claude -p "hello" --output-format json
看结果里 usage.cache_creation:1 小时写入记在 ephemeral_1h_input_tokens,5 分钟写入记在 ephemeral_5m_input_tokens。
手动设置(需要 Claude Code 2.1.242 或更新):
- 主对话:设置项
promptCacheTtl,或环境变量CLAUDE_CODE_PROMPT_CACHE_TTL,取值5m或1h; - 其余请求:
subagentPromptCacheTtl或CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL。
用 API key、又经常开着会话离开一阵再回来的,官方建议把 promptCacheTtl 设为 1h。反过来,如果你都是连续干活、很少停超过 5 分钟,1 小时的更高写入费率反而用不上。
走自建网关(ANTHROPIC_BASE_URL)的要注意:1 小时缓存的部分信息在 anthropic-beta 请求头里,网关要原样转发,否则拿不到。
小结
- 订阅额度内默认 1 小时,API key / 超额默认 5 分钟。
- 用
claude -p ... --output-format json看实际写入了哪种缓存。 - 按自己的工作节奏决定要不要设
promptCacheTtl,别为了省钱反而多花。
帖子里还和其他工具做了比较,那部分我们没有核实,这里不展开。
如果你想让 Claude Code 跑在一台常开、整机独享的新加坡 Mac mini 上,会话不断、回来接着干,可以了解 Zumac.Ai,咨询 Telegram @singatao。
