
我在看 Claude Code 的缓存表现时,最不想依赖的指标就是体感。某一轮响应变快了,可能是缓存命中了,也可能只是模型输出短,工具调用少,网络更顺,或者这次没有读取大文件。某一轮变慢了,也不一定是缓存失效,可能只是 Claude Code 正在跑 Bash、读取仓库、调用 MCP 工具,或者刚好模型端排队时间更长。真正能把这件事说清楚的,不是感觉,而是 API 每次响应里带回来的 usage 数据。在 Claude Code 里,最直接的观察入口是 statusline。官方文档说明,statusline 是 Claude Code 底部的一条可自定义状态栏,它会运行我们配置的 shell 脚本,并通过 stdin 把当前会话的 JSON 数据传进去,脚本打印什么,Claude Code 就在状态栏显示什么。它适合实时展示 context 使用率、成本、Git 状态,以及我们关心的缓存读写情况。更关键的是,statusline 的 JSON 数据里有context_window.current_usage,这个对象来自最近一次 API 调用,里面就包含input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens这些字段。这里最值得盯的不是总 token 数,而是两个缓存相关字段。cache_creation_input_tokens表示这一轮被写入缓存的 token 数。它不是免费午餐,因为写缓存需要按缓存写入价格计费。cache_read_input_toke