夜雨聆风学习资料网

ARTICLE · 1126947

Agent 不需要记忆,需要的是文档

Agent 不需要记忆,需要的是文档

一个AI记忆插件的典型工作方式:分析你的对话,生成1000条碎片,塞进向量数据库。每次你发指令,它检索最相似的5条附加上去。如果Agent搞不清楚,它再手动搜一波。这套东西,名字叫"记忆"。

听起来很熟悉。几乎所有记忆插件都长这样:

  1. 翻会话记录
  2. 生成"记忆"碎片
  3. 存入RAG数据库
  4. 每次prompt检索Top 5注入
  5. 不够?给Agent一个搜索工具让它自己翻

有的更花哨,搞长期短期记忆分层,加后台daemon做去重,加"梦境者"夜里重写记忆,加reranker。但插件们拼命烧token,修来修去还是同一套有缺陷的架构。

仔细想一下你真正要解决的问题:你希望Agent理解你的项目,知道某个功能在哪、为什么这样设计、你们之前达成了什么共识。结果你得到的是一堆RAG碎片的抽奖,每次prompt注入5条,赌它们正好能浮上来。

即使偶尔赌对了,Agent仍然不理解你的项目。

liao.gg (https://liao.gg/blog/agents-dont-need-memory) 上的一篇文章对这一现象给出了明确的诊断:记忆插件整个生态都在解决错误的问题。

RAG式记忆的五个硬伤

所有记忆插件都绕不开这几个问题:

相似性检索只看距离,不看对错。 向量检索只关心两条embedding离得近不近,不关心哪条是对的、哪条是新的、缺了什么关键信息。

碎片脱离上下文。 一条RAG片段能塞的信息有限。动机、环境、当时的约束、踩过的坑,全丢了。

过去被当成事实。 代码每天都在变。那500条关于authentication(认证)的碎片,现在还有几条是准的?你没法知道。

Agent不知道自己不知道什么。 就算给Agent一个搜索工具,它怎么会知道自己该搜什么?不知道就是不知道。

存储不可审计。 一万条embedding躺在SQLite里。哪些是旧的?哪些从没被检索过?哪些正在偷偷带偏Agent的判断?你连错在哪都查不出来。

这些问题指向同一个根因:所有记忆插件都默认"Agent忘了东西,所以得帮它记住更多"。于是拼命抓取、索引、检索。但这不是人类处理知识的方式。没人会去翻三年前的会议录像来确认一个功能的约束条件。大家把事情记下来,然后查记录。

换个思路:文档,不是记忆

代码项目里,人们写README、写spec、写决策记录,干活前查阅,干完活更新。Agent也可以这样。

给Agent一个可读可写的Markdown工作区,里面有指令、规格、决策、索引、调研笔记。干活前先查阅相关文档,干完活更新过期的内容,把新结论记下来。

工作循环从 prompt → build → forget 变成 prompt → consult → build → update。

不需要向量库,不需要embedding,不需要一堆后台进程。每个文档你都能直接看、直接改、直接提交、直接跟团队分享。

这个思路作者已经用了一年多,还开源了一个插件叫 Operator Memory (https://github.com/aerovato/operator-memory),支持Claude Code、Codex、OpenCode等多个平台。安装就是一行npm命令,初始化后Agent会自动在工作区里维护文档。

它把知识分三层存放:.operator/ 是私有项目知识,.operator-shared/ 可以跟仓库一起推送,~/.operator/user/ 放个人规则跨项目共用。每次会话都是同一套循环:查阅已有知识、干活、更新文档。

也有人不同意

游戏开发者 Mario Zechner(libGDX作者)说:

推荐阅读,但我仍然不同意。对代码来说,记忆和文档都不高效。你的代码库就是全部所需。让它模块化,让模块足够小,最多维护一张小地图指路。

有人支持这个说法:"代码库就是地图,Agent却老是问地图在哪。"

也有人反对:"文档和注释过期太快,会严重误导。"

Mario 回复了一条关于"agent不擅长写模块化代码"的评论:"你要是明确告诉它们怎么做,它们其实可以。"

还有人提了一个更微妙的角度:"大多数知识工作根本没有代码库,痕迹散布在十几个网站里,所以记忆插件才干了仓库该干的活。"

这倒是点出了关键。对纯代码项目,文档精简到一张地图确实够了。但那些没法用代码表达的东西,用户偏好、产品决策、跨系统依赖、调研结论,一个可维护的文档空间比抓取对话历史靠谱得多。

记忆插件本质上是在跟"遗忘"较劲。文档不是。文档是面向未来写的,只记录此刻值得留下的结论。Agent有了文档,至少你还能审阅它知道什么。那一万条embedding,你连错在哪都查不出来。

这场争论没有标准答案,但至少它逼你重新想一个问题:你到底希望Agent记住什么?是过去的聊天记录,还是当下的项目事实?

原文链接 :https://liao.gg/blog/agents-dont-need-memory

GitHub: https://github.com/aerovato/operator-memory

关注公众号回复“进群”入群讨论

相关学习资料