GoForum › 🌐 V2EX
「缓存命中率」是个伪指标,应该看未命中的缓存
heimoshuiyu ·
2026-06-27 16:53 ·
0 次点赞 · 0 条回复
https://i.imgur.com/vIiY7Qa.jpg
命中率的问题很简单:它是一个百分比,分母是你的总 token 数。上下文越长、子 agent 开得越多、工具调用越频繁,分母就越大,命中率自然就越低——但这跟 provider 的缓存质量没关系,是你自己用得多。一个百分比把「你怎么用」和「 provider 缓存好不好」混在一起,根本看不出问题出在哪。
换成绝对值就清晰了:
未命中 = 上一条的总 token 数 − 这一条从缓存读回的 token 数
就是这一轮有多少 token 被白白重新处理了。理想情况是 0 ,值越大浪费越多,用户在为这些 token 付钱。要是这个值突然飙上去,说明缓存挂了——可能是有问题的插件打断了缓存,或者 provider 的缓存过期了。
跑了下自己 16 万条消息,发现不同模型差异巨大:DeepSeek-v4 有 85% 的对话连上一轮的输出都能缓存住,GLM-4.7 有 63%,但 GPT-5.5 只有 0.3%。vLLM 和 SGLang 本来就支持输出侧 KV 复用,那些不支持的模型纯粹是没开这个能力,用户的钱就这么烧了。
把这个指标做成了可视化看板,点击某天还能下钻到具体会话,看每条消息的缓存命中细节:
https://i.imgur.com/dsmyIkR.png
直接读 OpenCode 的 SQLite ,本地一个二进制就能跑。
GitHub: https://github.com/heimoshuiyu/opencode-token-dashboard
如果你也在用 OpenCode ,可以看看自己的缓存未命中是多少。
0 条回复
添加回复
你还需要 登录
后发表回复