FunTester Anthropic 解法:记忆分层,让 Agent 越用越聪明

FunTester · 2026年05月19日 · 86 次阅读

Agent 的记忆默认是一次性的

你有没有发现,每次重新打开一个 Agent 会话,它对你的项目几乎一无所知。上次踩过的坑,这次还可能再踩;上次摸索出来的路径,这次还要重新推一遍。

这不是 Agent 不够聪明,而是它缺少一个可靠的位置,用来保存上次真正学到的东西。在很多工作流里,Agent 只是临时帮你完成一个任务,却没有能力把任务中的经验沉淀下来。

大多数 Agent 的记忆只存在于当前会话的 context window 里。会话还在,信息就能被引用;会话结束,信息就会被清空。下一次启动时,它又像刚加入项目的新人,需要重新理解目录结构、项目偏好、常见坑点和协作规则。

这个设计对简单任务没有太大问题。让 Agent 改一个函数、解释一段代码、整理一份短文,临时上下文通常就够用。但一旦 Agent 要处理长期、连续、跨项目的工作,问题就会变得很明显:它无法积累经验,无法记住团队偏好,也无法从过去的错误中形成稳定改进。

两种记忆,解决两个问题

要让 Agent 真正越用越顺手,不能只把所有信息塞进一个大上下文里,而是要把记忆拆成两层:会话记忆和长期记忆。这两层记忆处理的是完全不同的问题。

┌─────────────────────────────────────────────┐
│  会话记忆(Session Memory)                   │
│  当前任务的临时状态                            │
│  会话结束后不自动保留                          │
├─────────────────────────────────────────────┤
│  长期记忆(Long-term Memory)                 │
│  跨会话的经验积累                             │
│  持久化存储,下次启动仍然可用                   │
└─────────────────────────────────────────────┘

会话记忆解决的是现在正在做什么。比如当前修改到了哪个文件、用户刚刚纠正了什么、这轮任务有哪些约束、哪些命令刚刚失败过。这些信息对当前任务非常重要,但不一定值得永久保存。

长期记忆解决的是之前已经学到了什么。比如某个项目的文档必须放在 docs/ 目录、用户不希望自动创建测试类、某类文章标题不能带序号、某个工具在当前环境里经常有权限问题。这些信息不是一次性上下文,而是下次还会影响决策的经验。

两者缺一不可,但也不能混为一谈。只保留会话记忆,Agent 每次都要从头开始;什么都写进长期记忆,长期记忆又会很快变成杂乱仓库。真正有用的设计,是让短期信息保持轻量,让长期经验持续精炼。

从会话记忆到长期记忆

光有分层还不够,关键问题是:会话里发生的事,怎么沉淀到长期记忆里?

如果每件事都直接写进长期记忆,时间长了就会产生大量噪音。临时失败、重复提醒、已经过时的路径、互相矛盾的经验,都会混在一起。Agent 下次读取长期记忆时,不但不能更快决策,反而要先从旧信息里筛选什么还能用。

一些托管 Agent 平台会把这类异步整理过程设计成 Dreaming,也可以理解为一种会话结束后的梦境整合。它不是在任务执行中不断打断 Agent,而是在会话结束后异步运行,专门把本次会话中真正有价值的经验提炼出来。

┌──────────────────────────────────────────────┐
│  会话结束                                      │
└──────────────┬───────────────────────────────┘
               │
               ▼
┌──────────────────────────────────────────────┐
│  梦境整合(Dreaming)                          │
│                                              │
│  1. 回顾本次会话,提炼有价值的经验              │
│  2. 与现有长期记忆对比,去除重复和冲突          │
│  3. 将精炼后的内容写入长期记忆                  │
└──────────────┬───────────────────────────────┘
               │
               ▼
┌──────────────────────────────────────────────┐
│  长期记忆(更新后)                             │
│  供下次会话直接使用                             │
└──────────────────────────────────────────────┘

这个名字很贴切。人会在睡眠中整理白天接收到的信息,把重要内容巩固成长期记忆,把无关内容逐步过滤掉。Agent 的梦境整合做的是类似的事情:不是简单记录一切,而是把可复用经验从会话噪音里提炼出来。

什么值得进入长期记忆

不是所有会话内容都值得留下来。长期记忆最适合保存的是跨任务、跨会话仍然会影响决策的信息,尤其是那些下次不希望 Agent 重新摸索的经验。

  • 反复出现的错误模式,以及已经验证过的解决方法
  • 团队或用户的明确偏好,例如项目文档目录、注释语言、提交信息风格
  • 更适合当前项目的工作流,而不是泛泛的通用建议
  • 工具、接口或环境的特殊行为,避免下次重新踩坑

反过来,单次任务的中间状态、已经解决的临时问题、某一轮对话里的短期上下文,就不应该随手塞进长期记忆。比如某次命令失败但马上修好了,或者某个临时文件只在当前任务中有意义,这些信息留在会话记忆里就够了。

判断一条信息是否值得沉淀,可以问一个很简单的问题:下次遇到相似任务时,知道这件事是否能明显减少试错? 如果答案是肯定的,它才更适合进入长期记忆。

多个 Agent 共享长期记忆

记忆分层的另一个价值,在多 Agent 场景下会更明显。

如果团队里有多个 Agent 并行工作,它们的会话记忆通常是相互独立的。一个 Agent 正在改代码,另一个 Agent 正在写文档,第三个 Agent 在排查环境问题。它们当前关注的文件、命令和状态不同,不应该共享同一份短期上下文。

但它们可以共享同一份长期记忆。一个 Agent 踩过的坑,经过梦境整合写入长期记忆之后,其他 Agent 下次启动就能直接看到这条经验,不需要再走一遍相同的弯路。

这也是单个 Agent 很难独立做到的事情。单个 Agent 只能看到自己经历过的会话,多 Agent 共享长期记忆后,系统才能逐渐形成团队层面的经验积累。这时,聪明不再只是单个模型的能力,而是整个工作流的复利。

长期记忆也需要维护

长期记忆不是写进去就万事大吉。随着项目演进,有些经验会过时。比如项目换了技术栈,之前的构建命令不再适用;团队调整了规范,原来的文档目录不再是默认选择;用户偏好也可能随着工作流变化而更新。

如果长期记忆只增不减,它会逐渐降质。信息越积越多,但信噪比越来越低,Agent 反而要花更多时间判断哪条记忆还可信。更麻烦的是,过时记忆可能比没有记忆更危险,因为它会让 Agent 带着错误确信做决策。

所以,梦境整合的价值不只是往长期记忆里写,也包括清理旧的、重复的、矛盾的内容。新增和清理是一组动作,少了任何一边,长期记忆都会慢慢失真。

小结

记忆分层的本质,是把现在做什么和已经学到什么分开管理。会话记忆负责当前任务的临时状态,长期记忆负责跨会话的经验沉淀,中间通过梦境整合完成筛选、去重和更新。

这套设计让 Agent 不再只是每次临时响应请求,而是能把一次次任务转化为稳定经验。当会话记忆足够轻、长期记忆足够准,Agent 才会从每次重头开始,变成真正越用越顺手。


FunTester 名片|万粉千文,百无一用
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册