从 LLM Wiki 到 GBrain:我对 Agent 长期记忆的一些新理解

在这里插入图片描述

最近看了几篇关于 Agent Memory、LLM Wiki、Obsidian-Wiki 和 GBrain 的文章,发现自己之前对 Agent 长期记忆的理解还是偏窄了。

以前我更容易把 Memory 理解成两类东西:一类是聊天记录,也就是把历史对话保存下来;另一类是 RAG,也就是把外部文档切成 chunk,查询时再检索出来塞给模型。

这两个理解当然不能说错,但它们好像都只解释了一部分问题。

如果一个 Agent 只是保存了很多聊天记录,它未必真的知道哪些内容重要、哪些已经过期、哪些经验下次还能复用。如果一个 Agent 只是接了一个向量数据库,它也未必真的把知识沉淀了下来,很多时候仍然是每次提问都重新检索、重新拼接、重新推理。

这也是我最近重新理解 Agent Memory 的一个切入点:长期记忆不只是“存东西”,更重要的是把过去的信息整理成下次还能用的状态。

1. 为什么最近大家又开始关注 Agent Memory

Agent 这两年的变化很快。

早期我们聊 Agent,经常会围绕几个关键词:Prompt、Tool Use、Function Calling、Planning、RAG。后来随着 Claude Code、Codex、OpenClaw、Hermes Agent 这类工具和框架出现,大家又开始讨论更长程的任务执行、更复杂的工作流、更稳定的运行环境,以及 Agent 如何在真实项目里持续工作。

这时候 Memory 的重要性就变得更明显了。

因为 Agent 一旦从“回答问题”变成“持续做事”,它就会遇到几个很现实的问题:

  • 这个用户之前有什么偏好?
  • 这个项目里有哪些约定?
  • 上次任务失败在哪里?
  • 哪些知识已经被验证过?
  • 哪些文档已经过期?
  • 哪些流程下次可以直接复用?

这些问题都不是单次问答能解决的。

比如写代码时,Agent 可能这次知道你喜欢先写测试、再改实现;但换一个会话后,它又忘了。再比如一个项目里已经踩过某个接口兼容问题,如果这个经验没有沉淀下来,下次遇到类似问题还会重新排查一遍。

这就是长期记忆的价值:它让 Agent 不只是“当下会推理”,还要能“把做过的事变成经验”。

在这里插入图片描述

2. Agent 的 Memory 到底在解决什么问题

如果简单说,Agent Memory 解决的是“信息如何跨任务、跨会话、跨时间复用”的问题。

我现在更倾向于把它拆成四类来看。

2.1 短期记忆

短期记忆主要对应当前上下文,比如当前用户的问题、前几轮对话、正在执行的任务、临时约束、已经调用过的工具结果。这部分信息通常会直接进入模型上下文窗口,也最容易受到 token 数量的限制。

2.2 工作记忆

工作记忆更像任务执行过程中的临时状态,比如当前计划做到第几步、哪些文件已经检查过、哪些测试已经跑过、哪些假设还没验证。它不一定需要长期保存,但在一个任务周期内很重要。

2.3 事件记忆

事件记忆记录过去发生过什么,比如某次排障过程、一次代码改动、一次用户反馈、一次失败案例。这类记忆的价值在于复盘和复用,它不一定是通用知识,但对某个用户、某个项目、某个团队很有意义。

2.4 语义记忆

语义记忆更接近知识库,比如某个概念的解释、某个系统的架构、某个业务领域的规则、某个开源项目的用法。RAG、Wiki、文档库、知识图谱,很多都可以归到这一类。

2.5 程序性记忆

还有一种容易被忽略的记忆,我觉得可以叫程序性记忆。它不是“知道什么”,而是“知道怎么做”。比如一个代码审查流程、一个排障 checklist、一个写作流程、一个数据分析步骤。现在很多 Agent Skill,本质上就在沉淀这种程序性记忆。

Agent Memory
├── 短期记忆:当前上下文和近期对话
├── 工作记忆:当前任务执行状态
├── 事件记忆:历史经历、反馈、偏好、失败案例
├── 语义记忆:概念、文档、领域知识
└── 程序性记忆:流程、Skill、检查清单、操作习惯

这样看 Memory,会比“保存聊天记录”更接近真实的 Agent 系统。

3. 传统 RAG 为什么还不够像“长期记忆”

RAG 很重要,但它和长期记忆不是一回事。

RAG 的典型流程是:先把资料切分、向量化、建立索引;用户提问时,根据问题检索相关 chunk;再把检索结果放进上下文,让模型生成答案。

这个流程很适合处理海量文档,也很适合做问答系统。但如果从“长期记忆”的角度看,它还有一些天然限制。

第一个限制是,每次查询都像重新查资料。

即使上一次已经综合过几篇文档,下一次遇到类似问题时,系统仍然可能重新检索、重新拼接、重新推理。中间产生的理解、对比、判断,如果没有被写回到某个稳定的知识层,就很难形成积累。

第二个限制是,chunk 不等于知识结构。

向量检索擅长找“相关片段”,但片段之间的关系、概念之间的层级、旧结论和新资料之间的冲突,通常不会自动整理好。模型每次都要在上下文里临时拼装这些关系。

第三个限制是,RAG 更偏“查询时增强”,Memory 更偏“持续状态维护”。

方式主要动作优点典型问题
RAG查询时检索资料适合海量文档,接入相对成熟每次都重新找,知识不一定沉淀
聊天记录保存历史对话实现简单,保留上下文痕迹噪音多,缺少结构化整理
Wiki Memory把知识整理成页面可读、可追溯、容易修改需要维护索引、链接和一致性
GBrain 类系统文件、检索、图谱组合更适合复杂长期记忆工程复杂度更高

所以我现在会把 RAG 看成 Memory 的一部分能力,而不是 Memory 本身。

4. LLM Wiki 的启发:让模型维护一套会生长的 Markdown 知识库

LLM Wiki 给我的最大启发,是它把知识管理从“查询时检索”往前推了一步。

它不是等用户提问时再从原始资料里找片段,而是让 LLM 在资料进入系统时,就把它整理成一套长期可读、可更新、可互相链接的 Markdown Wiki。

这个思路很像把知识先“编译”一遍。

原始文章、PDF、会议记录、笔记,都是输入材料。LLM 读取这些材料后,不只是把它们存起来,而是提取要点、更新相关主题页面、补充交叉引用、记录矛盾和变化。下次再问问题时,Agent 先读整理后的 Wiki,而不是每次都从原始资料重新开始。

层次作用类比
Raw Sources保存原始资料,尽量不改动原始输入和证据
Wiki PagesLLM 维护的结构化知识页经过整理的知识层
Schema / Instructions告诉 Agent 如何命名、整理、更新、引用知识库的维护规范

这个设计有几个很有意思的点。

首先,它保留了人类可读性。Markdown 文件可以直接打开、审查、修改,也可以放进 Git 做版本管理。相比完全黑盒的向量库,这种方式更透明。

其次,它强调知识之间的连接。一篇新资料可能不只生成一篇摘要,还会影响已有的概念页、人物页、项目页、对比页。也就是说,知识不是孤立堆放,而是在进入系统时就被放到已有结构里。

最后,它把“维护”也变成了 Agent 的任务。传统知识库最大的问题往往不是创建,而是维护。页面过时、链接断掉、重复内容越来越多、不同页面说法不一致,这些都很常见。LLM Wiki 里的 lint 思路,就是让 Agent 定期检查这些问题。

在这里插入图片描述

5. Obsidian-Wiki 的启发:知识库也需要工程化维护

如果说 LLM Wiki 更像一个思想原型,那么 Obsidian-Wiki 让我看到的是:这件事要真正用起来,还需要不少工程化细节。

因为只靠“让模型整理 Markdown”,很容易遇到几个问题:

  • 哪些资料是新增的?
  • 哪些资料被修改过?
  • 同一份资料是否已经处理过?
  • 哪些内容是原文提取,哪些是模型推断?
  • 哪些信息涉及隐私,不应该进入公开知识库?
  • 页面之间的链接是否足够完整?

这些问题如果不处理,长期记忆很容易从“知识沉淀”变成“知识堆积”。

这里面我觉得最值得借鉴的是四点:增量追踪、来源标记、交叉链接、隐私过滤。

长期记忆不是“记得越多越好”,而是要记得清楚、记得有边界、记得能更新。

6. GBrain 的启发:长期记忆可能需要“文件 + 检索 + 图谱”

GBrain 给我的启发更偏工程化。

如果知识量比较小,Markdown + index + grep 可能已经够用。但当资料越来越多,页面越来越多,单纯靠目录和全文搜索就会变得吃力。

这时候 GBrain 这类系统会走向一种组合架构:文件系统保存知识本体,搜索系统负责快速定位,图谱关系负责表达连接,LLM 负责理解和综合。

文件系统适合保存可读、可审查、可版本化的知识。

关键词和向量检索适合在大量资料里快速筛选候选内容。

图谱适合表达实体之间的关系,比如人、公司、项目、概念、事件之间的连接。

LLM 适合做阅读、解释、归纳、综合、判断。

代码适合做确定性维护,比如更新反向链接、检查引用格式、计算 hash、同步索引、执行图查询。

能力更适合谁来做原因
判断资料是否相关LLM需要语义理解
生成摘要和综合观点LLM需要归纳和表达
计算文件是否变化代码确定性强
更新反向链接代码规则明确
找候选页面搜索系统速度快
维护关系网络图谱/数据库适合结构化查询

我比较喜欢这种思路:不要让 LLM 做所有事情,也不要把所有知识都交给检索系统。长期记忆更像一个组合系统,每一层都做自己擅长的事情。

在这里插入图片描述

7. 如果自己做一个轻量版 Agent Memory,可以先从什么开始

如果只是个人学习或者个人工作流,我觉得不一定一开始就要上复杂系统。

一个很轻量的版本,可以先从 Markdown 目录开始:

memory/
  index.md          # 知识目录,告诉 Agent 有哪些页面
  log.md            # 记忆更新时间线
  profile.md        # 用户偏好和长期约定
  projects/         # 项目知识、架构、决策记录
  concepts/         # 概念笔记和学习资料
  incidents/        # 排障、失败案例、复盘
  skills/           # 可复用流程、检查清单、操作经验

再配几条简单规则:

第一,任务结束后不要保存完整聊天,而是保存“可复用结论”。

第二,区分事实、推断和偏好。

第三,给记忆加时间,避免过期知识被误用。

第四,定期 lint,检查过期、重复、冲突和孤立页面。

第五,不要一开始追求全自动。尤其是涉及项目决策、业务规则和个人隐私时,人最好仍然在环。

在这里插入图片描述

8. 我目前的理解:Agent 长期记忆的关键不在“存”,而在“整理”

看完 LLM Wiki、Obsidian-Wiki 和 GBrain 之后,我对 Agent Memory 最大的理解变化是:长期记忆的关键不在于存储,而在于整理。

只保存聊天记录,Agent 可能会被噪音淹没。

只接向量数据库,Agent 可能每次都在重新找资料。

只做一个 Markdown 文件夹,知识可能越堆越乱。

真正有价值的长期记忆,需要同时考虑几个问题:

  • 什么信息值得进入长期记忆?
  • 进入之后放在哪里?
  • 如何和已有知识建立连接?
  • 如何标记来源和可信度?
  • 如何发现过期、重复和冲突?
  • 如何在下一次任务里被正确加载?

LLM Wiki 提醒我,知识可以被整理成一个持续生长的 Markdown Wiki;GBrain 提醒我,当规模变大后,文件、检索、图谱和代码规则可能需要组合起来。

它们不一定是最终答案,也不一定适合所有场景。但它们给了我一个很清晰的方向:Agent 如果要从一次性工具变成长期助手,就不能只靠更强的模型或更大的上下文窗口,还需要一套能沉淀经验、维护知识、更新状态的长期记忆机制。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值