-
auo4 AI 观察 用户
Cognition 给 Devin 加了两个新能力:Memory(记忆)和 Dreaming(做梦)。前者让 Devin 把你喜欢的工作方式、你纠正过的地方、项目里踩过的坑跨会话带下去;后者是一个每天跑一次的后台流程,负责整理已经攒下来的记忆,让它们变得更好用。
更有意思的是,Cognition 顺手把这套记忆系统的标准开源了,代号 Agent Memory Repo,地址是 cognition.ai/agent-memory-repo。任何 agent 都能照着接,也欢迎贡献。
记忆不是会话摘要
很多人第一反应是「不就是把聊天记录存下来吗」,但 Devin 的做法不是这样。
官方的说法很清楚:Memories are not summaries of sessions。记忆不是会话的摘要,而是 Devin 从跟你协作的过程中学到的教训,写成一条条短笔记,每条都带一个回链,指向它当初是在哪次会话里学到的。
什么样的内容会被记下来?一类是你主动给的反馈——你纠正了它一个错误假设,你解释为什么某个方案在当前项目里行不通,你明确了某个个人偏好。另一类是从工作本身里冒出来的——某个环境配置的坑卡了好几次才搞对,某个项目决策以后还会用到。
关键在于「主动」。以前这类上下文要么丢掉,要么你得暂停手上的活儿去更新一个 skill 文件。现在 Devin 可以自己留下来。而且它是个人维度的:同一家组织里,你的记忆是你的,不会变成组织共享的指令。
记忆盘:一个 Git 仓库
记忆存放在你的个人 Memory Drive 里,本质上就是一个持久化的 Git 仓库,里面全是 Markdown 文件。
笔记可以按仓库、项目或主题分门别类,另有一个简短的 MEMORY.md,放的是通用偏好和其余文件的索引。会话启动时,Devin 先拿到 MEMORY.md 作为上下文;之后它用平时导航代码的那套工具去搜索和读取相关笔记,而不是把整个记忆库塞进 prompt。这个取舍很关键——记忆越攒越多,但每次进模型上下文的量是可控的。
并发这块处理得比较细。每个会话拿到的是记忆盘自己的一份 Git checkout。改完笔记后,Devin 提交自己的改动,合并其他会话的更新,再写回持久化的记忆盘。如果在同步过程中另一个会话也存了更新,版本号检查会拒绝这次过期的写入,让 Devin 基于新版本重试。冲突不是静默覆盖,而是被摆出来让你解决。
效果就是:多个并行会话可以往同一个记忆盘里写东西,但没有任何一个会话的本地副本被当成唯一真相。
Dreaming:每天整理一遍
光在干活的时候往里塞笔记只完成了一半。这些笔记还需要放到你所有会话的全局上下文里重新看一遍,这就是 Dreaming 的活儿。
Dreaming 是每天跑一次的后台会话,Devin 会对照过去的对话和现有的记忆,改善供未来会话使用的索引。具体做四件事:
- 合并重叠的笔记(consolidates overlapping notes)
- 去掉临时性的细节(removes transient details)
- 找出原本干活时没抓到、但其实有用的教训(looks for useful lessons that weren't captured during the original work)
- 删掉没有任何会话再用过的过期记录(removes stale memories records that weren't used by any sessions)
官方 blog 给了个直观的例子。一周下来,每次会话都留下短笔记,一开始它们是平铺的一堆文件:有的内容重叠,有的已经过时。比如笔记里既有「Web apps are NextJS」,又有「NextJS and TypeScript for web apps」和「Tailwind for styling」,还有一条「Dev server was on port 3001 this afternoon」——最后这条明显是当天才有效的临时信息。
Dreaming 跑完之后,重复项被合并,临时细节被清掉,索引重新组织,同时保留来源引用和你明确说过的偏好。整个过程的定位有点像「定时垃圾回收 + 从会话历史里做回顾抽取」的组合。
和 skill 不是一回事
Cognition 专门解释了记忆和 skill 的区别,这点值得单独拎出来说。
Skill 捕获的是可重复的工作流程,记忆捕获的是 Devin 跟你协作时学到的东西。举个例子:一个发布用的 skill 会描述测试和上线变更的步骤;而记忆可能记下你的技术栈偏好,以及你当初给出这个偏好的原因。
两者是配合关系:skill 提供流程,记忆提供把流程用在你这个项目上所需的上下文。它们都可以包含指令,但生命周期不同——skill 是被刻意打包出来复用的,记忆是在会话中逐渐积累、再通过 dreaming 反复回看整理的。
顺带把标准开源了
Agent Memory Repo 是 Cognition 用来搭 Devin 记忆系统的那套标准,现在公开了。
规范刻意做得很轻:MEMORY.md 是入口,每个会话都会加载它,它保持简短并索引其他文件;每条记忆是一个单行的 Markdown 条目,可以带可选元数据,比如来源链接和添加日期;条目之间用双方括号的 wiki 风格路径互相引用,所以这个仓库更像一个小 wiki,而不是一个平铺的清单。
有意思的是 Git 在这里承担的角色。官方的说法是「Git 给记忆提供了历史、合并的方式和权限」。展开来说有三层:历史意味着 agent 信念的每一次变化都是一次 commit,你可以 diff 昨天和今天的记忆、blame 出某条坏记录、或者直接 revert;合并意味着一群 agent 并行工作时,Git 会合并它们的改动并把冲突摆出来,而不是用一个 agent 的笔记静默覆盖另一个的;权限和组合意味着多个记忆仓库可以一起加载进同一个会话,各自保留所有权、权限和历史。
一个附带发现是:在早期测试中,多个 Devin 会话共享同一个记忆盘时,它们开始自发地用文件来交换发现。仓库变成了一个并行 agent 之间的协调平面,而这个行为并不是被设计出来的。官方文档里举的例子是四个做性能排查的 agent,分别负责数据库、运行时、缓存和负载均衡,它们把观察写进共享的 findings.md 和 questions.md,拼起来的部分证据能暴露出每个 agent 局部视角看不到的跨系统问题。
怎么上手
对现有 Devin 用户,在 devin.ai 打开 Customize → Memory 就能浏览 Devin 从跟你协作中学到了什么,也能查看最近的 dreaming 会话。记忆在组织内部是个人维度的。
对不打算用 Devin 的人,这套规范可以单独用。它提供了 Devin CLI 的插件,文档里也写了 Claude Code、Cursor 等 agent 的接入步骤。整个格式刻意宽松:文件和目录怎么组织随你,仓库里也可以放 SQL 查询、脚本和其他文件。
流程是四步循环:克隆最新的记忆仓库,搜索或顺着链接找到需要的内容,agent 学到东西时更新条目,每次编辑后推送。
值得留意的地方
有一类风险官方没有完全回答:由 agent 自己推断出来的记忆,在被用上之前怎么验证。Cognition 描述了针对矛盾的来源检查(source-checking),但公告里没有说明每一条新推断出来的条目是否有面向用户的审批环节。如果你的场景对记忆准确性要求高,这一步可能要自己在流程里补上。
另外,记忆仓库里可能包含项目细节、个人偏好和回源会话的链接,在分享或克隆到原本设定的范围之外之前,先过一遍仓库内容和访问控制是合理的。
来源:Cognition 官方博客 Devin Blog(Memory and dreaming: how Devin learns from working with you,2026 年 10 月 5 日)