关于缓存的一个问题, 各种agent是不是新对话必定命中?

cc codex opencode 甚至trae, 如果很多个人用的话, 原本的系统提示词是不是大家都是用的同一套, 岂不是代表新对话所有人都可以共用那一份缓存? 缓存是大家共用的还是按账号单独计算的啊


假如专门设计一个区域, 里面放cc/codex/opencode的系统提示词缓存, 对模型运营商来说, 比如ds, 新对话的冷成本岂不是几乎约等于0计算资源消耗? 每次后端接收到固定系统提示词直接让模型去读那份缓存

正好最近在研究优化token消耗的问题
个人理解:
假设这些提示词中没有动态内容(如系统类型、当前时间) 是完全静态的系统提示词 那么这部分确实会直接走缓存 但新对话中用户的第一轮问题几乎不可能相同 所以在这种情况下 新对话产生的成本约等于用户输入
但同时 我们还要算上本轮对话中 LLM的回复 这部分基本上没办法缓存 如果硬要缓存的话就相当于模板回答了
另外 LLM的可用工具数据 在某些厂商可能也会参与上下文计算 那么如果ide的工具列表是可变的 比如动态添加/删除? 那么这部分也没办法走缓存

还有skills mcp之类的 这些变数就更多了 具体要看ide是如何组装的

技术是技术,商业是商业。就像snowflake这种按量付费的产品一样,很多优化是可以不着急放出来的。 这里还涉及模型和脚手架两方实现,像A家好像会把apikey hash一下,这样用户间就是隔离的。kv cache还有过期时间,claue默认5分钟吧,但是也支持1小时过期,需要额外付费。

怎么可能,你去看看官方sdk就明白怎么回事了,每个会话都有session,而且有专门前缀,官方的ws这个不是全量发送上下文的,是增量