AI Agent 工作负载的缓存层级:多数团队止步于第二层的五层架构
大多数部署 AI Agent 的团队在实现了提示词缓存 (Prompt Caching),或许再加上语义缓存之后,就认为大功告成了。但他们实际上错失了 40-60% 的潜在节省空间。原因并非在于懒惰 —— 而是 Agent 工作负载产生的缓存问题在简单的请求-响应式 LLM 调用中并不存在,其解决方案需要从传统 Web 缓存从未涉及的层级进行思考。
单个 Agent 任务可能涉及一个 4,000 Token 的系统提示词、三个分别返回不同结构数据的工具调用、一个在结构上与昨天完全相同的多步计划,以及一个需要在对话中持久化但绝不能跨用户共享的会话上下文。其中每一项都代表了不同的缓存机会,具有不同的 TTL (生存时间) 要求、不同的失效触发机制,以及在缓存失效时不同的故障模式。
以下是生产级 Agent 系统需要的五个缓存层级,以及为什么每一层都能解决独特的问题,以及为什么在更高层级搞错缓存键 (Cache Key) 会导致最昂贵的失败。
第 1 层:提示词缓 存 —— 每个人都有的基础
提示词缓存是最直接的一层。现在所有主要的 LLM 供应商都提供此功能:Anthropic 缓存提示词前缀 5-60 分钟,OpenAI 默认启用自动缓存,Google 的 Gemini 支持显式的缓存上下文。其机制很简单 —— 供应商存储提示词前缀的计算内部状态 (KV 缓存),以便在后续请求中不再重新处理这些 Token。
数据非常有说服力。根据供应商的不同,输入 Token 的成本可节省 50% 到 90%,首个 Token 响应时间 (TTFT) 延迟降低 13-31%。对于一个拥有 4,000 Token 系统提示词且每个会话进行 20 次调用的 Agent 来说,这就是处理 80,000 个输入 Token 与仅处理一次 4,000 Token 外加 20 次较小的增量调用之间的区别。
但这里有一个让大多数 Agent 构建者掉入的陷阱:盲目地启用全上下文缓存反而会增加延迟。针对长周期 (Long-horizon) Agent 任务的研究发现,缓存整个对话(包括工具调用和结果)会针对那些永远不会被重复使用的内容触发缓存写入。工具结果通常包含特定于用户的数据,跨会话价值为零。缓存中充满了垃圾内容,写入开销超过了读取节省的收益。
解决方法是选择性缓存。 仅缓存稳定的前缀:系统提示词、工具定义和静态上下文。将工具调用、结果和动态对话视为临时内容。将动态内容放置在提示词的末尾,以最大化可缓存的前缀长度。这一看似显而易见的建议,却被大多数仅通过连接消息而忽略缓存边界的 Agent 框架所违背。
