Agent 记忆层不调用 LLM 行不行

Agent 记忆层不调用 LLM 行不行,看清零边际写入成本与离线隐私买到什么,以及时间推理与蒸馏精度要付什么。

Agent 记忆层不调用 LLM 行不行

搭 agent 记忆时,最容易默认「写入也要过一遍模型蒸馏」。若你在问 agent 记忆层不调用 llm 行不行,答案是行,但买到的是成本与可审计,不是时间推理上的满分。

作者CodePass 技术编辑

写入路径上要不要请模型

dev.to 上 gde03 的系列文把分界说得很短:Mem0 一类系统在写入记忆时调用 LLM,存蒸馏后的结果;作者的 RE-call 则从不调用 LLM,只存原始对话轮次。这一刀切下去,后面的账单、延迟、数据出境和某几类题的准确率,几乎都跟过来了。

所以「不调用 LLM 的记忆层」不是神话功能,是架构选择:检索与嵌入可以本地做,写入不再为每条记忆付一次推理。作者把代码标成 MIT(recall-rag),数字写在公开 findings 里,方便对照,不是口号。栈本身也很克制:Postgres + pgvector,不另起一套向量库,也不靠队列把写入摊成黑盒。

不调用 LLM 买到什么

同一套基准工作量上,作者报的对照很硬:构建记忆时 RE-call 的 LLM 调用为 0、token 为 0、费用为 $0;Mem0 一侧是 272 次调用、约 260 万 token、约 $7.29。写入墙钟约 67 秒对 288 秒。文档与对话内容留在你自己的 Postgres,不必为「每写一条记忆」再塞一个模型子处理方。那 $7.29 不是订阅价,是单次基准工作量上的边际账;记忆条数涨,蒸馏架构会按条继续要推理。

对个人开发者,这首先是边际成本故事:记忆条数涨,写入侧不会按条涨推理费。对公司场景,更常变成采购故事。客户对话能不能离开己方基础设施,往往比 BEAM 某一格高几分先被问到。空气隔离、离线箱、合同里塞不下又一个子处理方时,写入路径上只要出现「必须调外部模型」,整条方案在合规评审就会停。

作者也把云端 embedder 做成可选开关:17 个语料里 16 个更好,中位 hit@5 大约 +0.059,代价是文档与查询都出机,p50 延迟从本地约 45 ms 到约 246 ms。Reranking 默认关,打开后 hit@5 从约 0.671 到 0.777,单次查询大约多 1 秒量级。开关两边都给出数,而不是只推默认。

准确率上要付什么

作者没有粉饰短板。在 BEAM 的 temporal_reasoning 上,RE-call 报 0.408,Mem0 报 0.567(该格在未开 reranker 时测的)。失败形态很集中:天数算术往往没错,错在捞到了「哪一次截止日期」。原始轮次里同一日期以设定、修订、随口提及等多种角色散落;蒸馏成一行「Sprint 1 deadline: February 15, 2024」反而更好查。

这就是写入时请 LLM 真正买到的东西:更干净的表示,尤其吃「多跳 + 时间线」的题。作者后来更正:不能把整格失败都甩给「没做 supersession」;七道题里机制并不单一,有的是错实例,有的是修订,有的是把断言时间当成事件时间。结论只能收窄:这一类题上,蒸馏架构有真实优势;能不能便宜修回来,仍是开放问题。

另一侧风险也不在准确率表里。作者用 Mem0 自己的答案与裁判看 abstention:70 题里 32 题仍答了不该答的,答错时均值接近 0;有一例把语料里助手臆测的「90% 满意度」读成用户测试事实。RE-call 的弃权策略也远谈不上完美,但失败形状不同:一个爱编造,一个爱沉默。你要怕的是哪一种,决定你能不能接受「略低一点的分」。

和会话压缩不是同一层

Claude Code 官方 context window 文档写的是会话内预算:接近上限时自动压缩,/compact 用结构化摘要替换对话;系统提示、CLAUDE.md、memory、MCP 工具名等会重载,skill 描述列表有例外。这是「当前窗口怎么腾地方」。每次压缩本身还要再读一遍历史,等于多花一次大请求;只想清空重来,用 /clear 更直接。

不调用 LLM 的记忆层管的是「跨会话、可检索的事实库怎么写盘」。压缩解决的是窗口涨满;记忆层解决的是下次还能查到。把两者混成「多压几次就等于有记忆」,会掉进 自动总结丢信息 里写过的坑:金额、ID、栈信息在摘要里蒸发。持久规则仍应进 CLAUDE.md;易变事实进可检索存储,别赌摘要还能保住小数点。

和文件计划怎么分工

用文件做 Agent 规划 适合阶段、下一步、已否决项。那是给人看的任务状态,压缩或换会话还能接着干。原始对话轮次记忆适合「当时到底怎么说的」;蒸馏记忆适合「当前认定的截止日期是哪天」。token 账单上,重复把整段历史塞进提示,仍会撞上 别再浪费 token 那套账。记忆层省的是写入蒸馏,不是无限上下文。

选型可以很直。时间线密、多跳多、数据可以出境、愿意按条付写入推理:选蒸馏型。边际写入必须为零、要离线或空气隔离、要审计检索路径、宁可少答也不要假统计:选不调用 LLM 的写入路径。中间态也常见:计划文件扛意图,原始轮次扛审计,会话里该 /compact 就压,三套各管一段。别用「记忆产品」三个字把写入蒸馏、会话摘要、仓库计划糊成一层。

参考资料