智能体不需要记忆,它们需要文档

查看原文 HN 讨论

文章摘要

作者 Kevin Liao 在 2026 年 10 月 3 日发文(10 月 5 日更新),批评当下给编程智能体加「记忆」插件的流行做法。他认为整个记忆插件生态都在解决一个错误的问题,并借此推出自己开源的替代方案 Operator Memory。

记忆插件其实都是 RAG。 作者把市面上各种记忆插件拆开来看,发现套路几乎一样:扫一遍会话记录,切成上千条孤立的「记忆」片段,塞进向量数据库;每次提问时取相似度最高的五条注入上下文,不够的话再给智能体一个检索工具。有的插件会多加几样东西,比如逐字搜索历史记录、短期/长期分层记忆、夜里重写记忆的后台「做梦」进程、持续压缩上下文、重排序器等等。作者认为这些都是在消耗 token 给有缺陷的底层架构打补丁,所以没有一个真正靠得住。

召回式记忆的五个毛病。 第一,片段按嵌入空间里的相似度排序,可相似并不说明它是正确的、最新的,也看不出还缺了什么。第二,单条片段装不下背景、动机、教训和环境信息。第三,它把过去当成事实,可代码库每天都在变,关于认证的 500 条旧片段谁知道还有几条准确。第四,智能体不知道自己不知道什么,就算给了检索工具,它也判断不了什么时候该用。第五,存储没法审计:一万条嵌入躺在 SQLite 里,哪些过期了、哪些从没被取用过、哪些是错的还在暗中影响智能体,都看不出来。

该做的是文档,不是回忆。 作者打了个比方:没有人会为了想起某个功能的约束,去重看三年前的会议录像,大家都是把事情写下来,然后查记录。AGENTS.md 已经证明了给智能体提供上下文是有效的,但单个文件只够撑起黑客松级别的原型。智能体需要的是一整个「大脑」,也就是一个结构化工作区,里面有指令、规格、调研、映射关系等,干活前先读,干完再维护。他从 2025 年 8 月起让智能体往 internal/ 文件夹里写规格、计划和索引,后来逐步发展成 Operator。他把 Operator 定位为「上下文引擎」,不算传统意义上的记忆插件:它改造了智能体的工作循环,让「做事前查文档、做完后更新文档」成为每个任务固定的两个阶段。

一个好「大脑」要做到四点。 一是内容:代码已经说明了它在做什么,所以文档只记代码表达不了的东西,比如需求、决策、约束、映射关系、可复用的调研和规范。不然每个新会话都得先花约 8 万 token 去探索代码,最后只能有损地反推出原本的意图。作者拿自己举例:Operator 的 Claude Code 适配器不到 100 行 TS,因为早就定下「逻辑尽量放进 CLI」的架构原则。要是没写下来,智能体很可能图省事把逻辑塞进适配器。二是可发现性:每个会话开始时只注入一份精简目录,说明每份文档讲什么、什么时候该打开,深层内容由智能体按需去读;代码库也生成分层索引,不用反复 ls、grep。三是新鲜度:文档必须由正在干活的智能体趁上下文还完整时写,不交给后台进程;事实变了就直接改写,不追加。四是纪律:智能体写的文档最大的问题是膨胀,它们会反复总结代码、记流水账、编造没人提过的需求。Operator 用调好的指令要求它们只记代码给不了的东西,保持精简,内容跑题时就拆分或合并。不过作者也承认,多数智能体不愿主动拆分或合并文档,好在文档就是 Markdown,审文档和审代码是一回事。

其他好处。 记忆可以提交到 Git,能 diff、能审阅、能回滚;有一个 .operator-shared/ 共享分区可以随仓库提交,同事和云端智能体都能用;不绑定特定的 harness,Claude Code、Codex、OpenCode、Pi 都能接;不需要向量库、嵌入、重排序器,也没有后台守护进程,整套系统就是磁盘上的 Markdown 加一套调好的提示词。作者最后说 Operator 并不完美,他自己也经常要手动让智能体新建、重写或精简文档。

HN 评论精华

讨论有 300 多条,大致分成三派:赞同用文档代替记忆的、觉得这其实也是一种记忆系统的、坚持「代码就是文档」的。其中 kaydub 和多位用户的长篇争论占了很大篇幅。

理论层面的回应

对文章本身的质疑

「代码就是文档」之争

各种实践分享