关闭 prompt caching 不是优化手段,而是一把调试用的手术刀

我今天在看 Claude Code 的缓存策略时,最容易被误用的一组参数,恰好不是开启缓存的参数,而是关闭缓存的参数。因为很多性能问题看起来都像缓存问题,模型忽快忽慢,/cost里的 token 数字忽高忽低,切到 Bedrock、Vertex、Foundry 或内部网关之后,缓存命中又变得不稳定。这个时候,我们很容易下意识地想把缓存关掉,觉得这样结果更干净。但在 Claude Code 的真实工作流里,关闭 prompt caching 更像是调试用的隔离开关,而不是日常开发里的性能优化按钮。

Claude Code 官方环境变量文档明确列出了一组开关,DISABLE_PROMPT_CACHING可以对所有模型关闭 prompt caching,而DISABLE_PROMPT_CACHING_HAIKUDISABLE_PROMPT_CACHING_SONNETDISABLE_PROMPT_CACHING_OPUSDISABLE_PROMPT_CACHING_FABLE则分别只影响对应模型系列。官方文档还写得很清楚,DISABLE_PROMPT_CACHING的优先级高于这些按模型粒度设置的变量。也就是说,一旦全局开关被设为1,再单独讨论 Sonnet、Haiku、Opus 或 Fable 是否缓存,就没有意义了。(