Agent 的记忆不该是插件:把状态写成文档,才查得清、回得滚

结论:把记忆塞进向量库,是把「可审计的状态」换成了「碰运气的相似度」
开发者 kmeh 在一篇被 Hacker News 顶起来的文章里提出:市面上的 Agent 记忆插件架构是错的。它们的通用做法是——把会话记录切片段、存进 RAG 库,每次提示词检索最相似的片段注入。问题有三:相似度检索无法判断正确性、片段天然丢失上下文、整个过程无法审计。
三个要点
一、相似不等于正确。 向量检索回答的是「这段话和当前问题像不像」,不是「这个结论现在是否仍然成立」。当记忆里同时存在旧方案和新方案,检索很可能把过期的那个捞出来,而且没有任何信号提醒你。
二、片段切碎了因果。 一个决策的成立依赖前置条件。「用 A 方案」这句话被单独检索出来时,它附带的时间、约束、被否决的替代项全丢了。Agent 于是会稳定地做出一致但不合时宜的决定。
三、文档式记忆天生可审计。 如果 Agent 的状态就是一份可读、可对比、可版本化的文档(比如项目里的 AGENTS.md、STATE.md),那么:出错时你能看到它当时「记得」什么;改错了可以回滚;换模型、换框架时状态可以整体搬走。
对读者的实际影响
- 现在就改:把关键状态从隐式向量库搬到版本控制里的 Markdown。哪怕只是把每次决策追加一行「日期|结论|理由」,可追溯性就会大幅提升。
- 工具选型:能用「读一个文件」解决的事,不要引入一个检索服务。多一个组件就多一层不可见状态。
- 一个折中:检索可以留着做「发现」,但写入记忆必须是显式的、有人能看懂的。
需要保留的怀疑
文档式记忆的代价是上下文窗口占用与人工维护。任务规模大了之后,「谁能写、写到哪」仍需要规则。这不是银弹,是更诚实的取舍。
参考来源
- kmeh:Agents don't need memory plugins — https://liao.gg/blog/agents-dont-need-memory
- Hacker News 讨论(buzzing.cc 中文翻译)— https://aihot.news/items/oactlhauxke4xq1kl9xt97qol
延伸阅读:官方文档变成 API:Google 想让智能体不再抓网页 · 在 ChatGPT 里直接构建并部署 MCP 服务器:插件分发的门槛被拆掉一道