记忆层每轮改写前缀悄悄击穿 prompt 缓存,成本最高多付 12.5 倍

inbask · reddit · 2026-09-07

作者指出一个隐蔽且严重的工程问题:LLM 提供商的 prompt cache 依赖精确前缀匹配,前缀中改动任意一个字节都会使其后全部失效。而记忆层按定义注入的内容是会变化的,一旦把 recalled memory 放进 system prompt 或消息前部,就会每轮请求都击穿缓存。

代价有多大

为何难以察觉:没有任何报错,每次请求都成功返回,你也看不到缓存正常工作的对照版本。

诊断方法:观察 usage.cachereadinputtokens,多次重复请求后若接近零、而 cachecreationinputtokens 每次接近完整 prompt 大小,说明上游在改写你的前缀。

修复方案:按变更频率切分注入的记忆——稳定内容(技能、长期指令、定义)放最前,设置断点,易变的 recall 放后面。

作者自己的架构因 prompt-injection 防御(固定指令与攻击者可控内容隔离)恰好形成了正确的缓存布局,但他们的上下文组装器把 block 交给宿主应用时不声明放置位置,宿主可能把好 block 塞进缓存前缀中间而永久多付钱。作者向社区提问:记忆库该只写文档,还是直接返回稳定/易变两个分区让调用方无法用错。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →