Devin 学会记事了:记忆写进 Git 仓库,每晚自己整理一遍

一间明亮的工作室里,一架分格木柜整齐摆放着写满笔记的卡片,一位小小的机器园丁在夜色窗口边修剪多余的卡片枝条,象征编程助手的记忆被存进版本管理仓库并在夜里自动整理
内容摘要

编程助手最烦的一点,是每开一个新会话都得把同样的偏好和项目坑再讲一遍。十月五日 Cognition 给 Devin 上了长期记忆:每条教训写成带出处的短笔记,存进一座用版本控制管理的仓库,每晚再由后台任务合并、删重、补漏。规范已开源,别的助手可以照抄。本文拆解机制、五种记忆方案的差别与四类风险。

写代码的人大多有过这种体验:上周刚跟 AI 助手解释过一遍的东西——部署脚本要绕开哪个坑、为什么不能动那个配置——这周新开一个会话,它又忘得干干净净,你还得从头讲。

十月五日,Cognition 给自家的编程助手 Devin 上了长期记忆,名字很直白,就叫 Memory;配套还有一个每天在后台跑一遍的整理任务,叫 Dreaming。同时,它把这套记忆的底层规范也开源了出去。

一句话说清这次发了什么

Devin 现在会把跨会话学到的教训留下来,写成一条条短笔记,存进一座它自己维护的仓库;每天晚上,另有一个后台会话把这些笔记重读一遍、整理一遍。除此之外,Cognition 把记忆的存放格式整理成了一份公开规范,任何助手都能照着实现。

这里有个容易被忽略的信号:Devin 是站内早就写过的那个 Cognition 的编程 Agent。这家公司在九月刚用 SWE-2 编程模型把话题引到「少绕路、省成本」,这次的落点换成了「别老忘事」——两个方向其实是一件事的两面:让 Agent 干活更省人的力气。

记忆不是会话摘要,是带出处的短笔记

这一点值得强调,因为它决定了后面所有细节。

Memory 存下来的不是「某次会话做了什么」的流水账,而是 Devin 从协作里学到的教训,每条都很短,并且附上它是在哪次会话里学到的链接,方便回溯。Cognition 把教训分成两类:

  • 你告诉它的:你表态过的偏好,你纠正过它的错误。
  • 它自己琢磨出来的:项目里的硬知识,比如某个环境问题反复失败几次之后才摸清的解法。

还有一个边界要记住:记忆属于个人,不属于团队。 同一个组织里,每条记忆只服务于写它的那个人,不会自动变成整个团队共享的指令。想共享,得走仓库的权限设置,这个后面会讲。

Memory Drive:记忆库是一座 Git 仓库

存储方式是这次发布里最工程化的一笔,也是最值得抄的一笔。

所有笔记放在一个持久化的 Git 仓库里,官方叫它 Memory Drive。笔记本身是 Markdown 文件,可以按代码仓库、项目或主题分门别类;一个很短的索引文件 MEMORY.md 负责收拢通用偏好,并指向其余笔记。

运行时的细节很有讲究:每次会话开始,Devin 只把 MEMORY.md 这份索引带进上下文,需要细节时,再用它平时读代码的同一套工具去检索具体笔记,而不是把整座记忆库塞进提示词。每个会话在各自的检出副本上工作,改完提交、再和别的会话合并;如果合并时发现已有更新落库,版本检查会拒绝这份过期写入让它重试,冲突的修改会被摆出来交给人处理,而不是悄悄覆盖。

换句话说,记忆不再是藏在某个向量库里的黑盒,而是一个能看、能改、能回滚、能走代码评审的仓库。

Dreaming 每晚做四件事

只记不整理,任何记忆库最后都会变成一堆互相打架的旧笔记。Dreaming 就是那个负责收尾的角色:它每天跑一次异步会话,拿着跨会话的全局视角回看过去的对话和已有记忆,做四类动作:

  1. 合并内容重叠的笔记;
  2. 删掉只在当时成立的临时细节——官方举的例子是「某个下午测试服务器用过哪个端口」;
  3. 补上原会话里没被记下来的有用教训;
  4. 清掉长期没有被任何会话引用过的过期记录。

名字听着浪漫,实质要往回收一点:这里没有任何东西在睡觉或者做梦,它是一个定时脚本式的文本编辑过程,动手的还是同一个模型。真正需要盯的是官方那句「会有新知识涌现」——那意味着整理过程能写出单次会话没得出的结论。这种能力有用,但也意味着它可能把一次偶发的误判升级成一条「规律」。

真正想推的是那套开源规范

如果只是给 Devin 加个功能,热度大概率一周就过去了。Cognition 顺带做的事更值得注意:它把记忆格式整理成 Agent Memory Repo 规范并公开,许可为 MIT,同时放出了一个公开代码仓库。

规范的记忆循环只有四步:拉取最新的记忆仓库、检索或顺着链接查找、把新学到的东西写进去、推送更新。条目是 Markdown 的列表项,可以带来源链接、添加日期之类的元信息;条目之间用双方括号的路径写法互相链接,让整个仓库更像一个小型维基,而不是一张平铺的清单。

规范里有一句话,基本概括了它的设计哲学:Git 给了记忆历史、合并方式和权限。 这三件事分别对应三种能力——你可以把昨天的记忆和今天做 diff、把一个坏条目 blame 出来再回滚;多个 Agent 并行写入时冲突会被摆到台面上;个人、团队、项目三座记忆库可以并存而不被压成一个大桶。

目前已列出的实现支持里,除了 Devin 自己,还有几款主流编程 Agent 的名字。除了插件,还有一个通过包管理器分发的技能包,其他助手装上就能按同一套格式读写。

和现有几种记忆方案比一比

把常见的几种做法摆在一起看,路线差别会更清楚:

  • 项目说明文件(比如各类 Agent 的指令文件):主要是人写的,一个作用域一个文件,靠约定进版本管理。
  • MEMORY.md 式持久化:人和 Agent 都会写,同样是 Markdown 文件,提交了才有历史。
  • 本地记忆库:由 Agent 自己写进一个本地数据库,能不能版本化取决于工具。
  • 托管记忆层:由平台托管,按 Agent 或用户划分作用域,格式由平台说了算。
  • Agent Memory Repo:Agent 写、Dreaming 整理,存进 Git 仓库,版本化和可合并是设计前提。

它最接近的其实是「让模型自己维护一份文档」那条思路。站内写过的 DeepSeek Harness 插件体系和 Claude Code 的扩展方式解决的是「Agent 能做什么」,这次的规范解决的是「Agent 记得什么」——前者的扩展靠插件市场,后者的互通靠一份文件格式。

上手:五步建一个自己的记忆库

不用等 Devin,也不用有服务器,官方说本地试用不需要任何远端配置。一个稳妥的起步顺序是这样:

  1. 新建一个独立的 Git 仓库专门放记忆,不要塞进项目仓库里;
  2. 写一个 MEMORY.md,先放几条关于你项目的条目:构建命令、测试命令、部署时的坑;
  3. 让助手按「拉取、检索、更新、推送」四步走,正常干一周活;
  4. 一周后翻一遍提交记录,逐条判断哪些有用、哪些是噪音、哪些干脆是错的;
  5. 确认前三步靠谱之后,再考虑加一个自动整理任务。

第四步是绝大多数人会跳过的,但它恰恰是唯一能告诉你「自动记忆是在帮忙还是在悄悄污染上下文」的一步。

三个实在的好处,和四个要留神的地方

先说好处,都是设计上能直接兑现的:

  • 可审计:一条带来源链接和日期的条目,人能逐条核对;一个向量嵌入,人根本读不出来。
  • 可回滚:整理任务合并错了、删错了,一次回退就恢复,失败模式比「没有历史的托管记忆」好得多。
  • 可迁移:格式是纯文件,换工具不用从某个专有存储里导出。

再说要留神的地方,这部分官方几乎没展开,但每一条都可能真踩到:

  • 自信的错误教训:模型从一次偶发失败里得出的结论,整理时可能被升级成「规律」。来源链接有帮助,但帮不到判断对错。
  • 「过期」按使用次数判定,不按事实是否成立:清理逻辑测的是「这条笔记有没有被读过」,不是「它是不是还成立」。一条一直被你引用、但其实已经错了的笔记,能躲过每一轮清理。
  • 上下文膨胀:MEMORY.md 每次会话都要加载,条目一多,每个会话都在为它付 token。规矩是「索引用链接,别把内容堆进索引」。
  • 记忆里的提示词注入:Agent 在浏览网页、读 issue 时看到的任何东西,都可能被写进记忆,然后被加载进之后每一次会话。这件事和站内写过的 MCP 工具投毒是同一类风险——要当成会被执行的代码来评审,而不是当成笔记。

最后补一句:这次发布没有附带任何跑分、用户研究或效率数字。靠谱的做法是把试用第一周当成厂商没做的那次实验——用几天之后打开记忆页面,数一数有几条是错的、几%是过期的,再决定要不要让一个会照着它行动的 Agent 继续用下去。

谁适合现在用,谁先别急

适合现在动的:已经在日常用编程 Agent 干活、并且被重复解释同一件事折磨过的人。哪怕你不用 Devin,先按那套四步循环手搓一座记忆库,成本也就十几分钟,收益立刻能感知。

建议再等的:团队协作场景。个人记忆的权限模型很简单,一旦要把私有笔记合并进团队仓库,就涉及「哪些记忆允许被谁读」这种新问题,而官方目前对编辑、删除、以及整理过程推导出的结论怎么标注,给的都是部分答案。

老达点评

第一,这次最有价值的不是「会记事」,而是记事的载体选得对。绝大多数 Agent 记忆的失败不是「想不起来」,而是「说不清为什么这么想、什么时候学的、现在还成不成立」。把它变成一份能 diff、能 blame、能回滚的仓库,等于把三种怀疑一次性回答掉了。

第二,那个每年都在重演的老问题它没有解决:什么值得记,仍然是难题。 存储免费之后,判断力就成了唯一的成本。Dreaming 这种「离线整理」的角色大概会是下一轮 Agent 产品的标配,因为线上的会话只适合干活,不适合决定什么该被记住。

第三,规范这件事比功能更值得押注。今天每家的记忆格式各自一套,换个工具就等于丢掉助手在你代码库里学到的一切。有一份大家都读得懂的文件格式,切换成本会掉一个数量级——这和 MCP 当年把「工具接入」统一掉是同一个套路。但也要清醒:一家厂商发布的规范还不等于行业标准,真正说了算的是有多少工具原生支持它,而不是靠一个插件或技能包外挂。

第四,第一周别偷懒,去数错条数。 对自动记忆这种东西,最贵的不是存储费,是它把一条错信念固化下来之后,你在后面每一轮对话里都在为它买单。站内聊 Agent 基础设施的稿子不少,但真正能落地检查的,大概就是这一次。

上手第一步

今天就做最小的一步:建一个空仓库,放一个 MEMORY.md,先写三条——构建命令、测试命令、部署时踩过的坑。然后让助手按「拉取、检索、更新、推送」四步用一周。一周后翻提交记录,错误率能忍,再考虑自动化。

想顺着这条线往下看的,可以从 AI 智能体与自动化专题 和 AI 编程工具专题 翻起。

发表评论

您的电子邮箱地址不会被公开,必填项已标注 *