Agent Memory Architecture(智能体持久记忆架构)

大多数智能体在重启后遗忘一切。真正可信赖的 Agent 系统需要跨会话、跨 Agent 的持久记忆基础设施。@matthewgunnin 在运行两个协调智能体(Ella on OpenClaw、Lyra on Hermes)数百次会话、历时 6 个月后,提炼出一套经过实战验证的 4 层记忆架构。

Source: 2026-07-04-x-x-com-matthewgunnin-status-2072772100973007203-s-46(来源未公开)

核心问题:上下文窗口管理 ≠ 记忆

典型的 Agent 记忆方案:把重要内容塞进 system prompt,祈祷上下文不溢出,重启后全部丢失。这是上下文窗口管理,不是记忆。真正的持久记忆需要多层、不同时间跨度的分层架构。

四层记忆架构

Layer 1:会话内上下文(In-session Context)

每次会话启动时读取两个文件:

  • 身份文件(Identity File):Agent 的常设身份定义——不是埋在配置里的 system prompt,而是可编辑的 Markdown 文件。内容包含:Agent 的行为模式、优先级、“从不在不询问情况下执行”的操作,以及与其他 Agent 的关系。
  • 记忆索引文件(Memory Index File):跨会话所有值得记住事项的目录。不是向量数据库,不是 embedding,而是一张纯文本目录表,指向各个独立的记忆文件。索引始终加载,单个记忆文件按需读取。

为什么用 Markdown? 人类可读、可编辑、可调试。当 Agent 行为异常,打开索引找到错误指令;想改变某个行为,直接编辑文件。无 API、无仪表盘、无需重训练。

Layer 2:会话后保留(Hindsight)

问题:纯 Markdown 记忆只能捕获被显式写下的内容,而最有价值的上下文往往是隐式的——运行过程中做出的决策、推断出的事实、事后才发现重要的细节。

Hindsight 是运行在 localhost 的本地事实保留后端。每次有意义的会话结束后,Agent 自动将一组精心筛选的事实推送到命名 bank 中(每个 Agent 各自的 bank)。

保留内容:

  • 会话中做出的决策
  • 关于用户或项目的非显而易见的事实
  • 失败模式及采用的修复方案
  • 用户确认或纠正的偏好

新会话启动时,在 Agent 回答之前先查询 Hindsight 获取相关上下文。这不是对 transcript 的全文搜索,而是按类型标记、经 Agent 判断值得携带的精炼事实集。

晋升路径:Hindsight 事实 → 人工审核 → 记忆索引条目。自动保留 + 人工批准门控。

Layer 3:共享长期状态(Nexus)

单 Agent 记忆在引入第二个 Agent 时就会崩溃——两个 Agent 各自持有矛盾的项目状态,一周内就开始相互冲突。

Nexus 是两个 Agent 共同读写的 Obsidian Vault(共享、可检查的状态文件):

  • 实时上下文日志(Live-context Log):两个 Agent 在每次有意义的轮次后追加写入。不变量:每次回复前必须读取;每次有意义的轮次后必须追加。
  • 项目状态文件
  • 决策日志(带时间戳和理由)
  • 每个 Agent 的工作上下文检查点:长任务期间每几次工具调用更新一次

当 Lyra 凌晨 2 点合并了一个 PR,Ella 早上回答问题时已经知道了——因为她读取了日志。无需消息传递,无需 inter-agent API,无需轮询。一个共享文件,两个 Agent,追加写入日志。

跨 Agent 同步不变量:

  • 每条日志条目需署名(Agent 名称、频道、类型、一行摘要)
  • 纯追加写入,永不编辑他人条目
  • 如果 Lyra 记录了相关内容,Ella 在下次回复中明确确认
  • 重大决策由两个 Agent 都写入决策日志

Layer 4:可搜索知识(gbrain)

前三层处理情景记忆(发生了什么、决定了什么、值得携带什么)。gbrain 是语义层。

gbrain 是运行在 Nexus Vault 上的 MCP 服务器,提供全文与语义搜索。当 Agent 需要回答研究问题、查找历史合成结论或检索某类问题的处理方式时,它查询 gbrain 而不是重读每一个文件。输出:带来源的相关页面排序列表——Agent 读取相关的,不把整个 vault 倾倒进上下文。

记忆 vs 召回:Layer 1-3 处理 Agent 携带什么;Layer 4 处理 Agent 能查找什么。

工具清单

工具用途链接
Hindsight本地事实保留后端github.com/vectorize-io/hindsight
gbrain编译 Wiki/语义搜索 MCPgithub.com/garrytan/gbrain
OpenClawAgent 运行时(Ella)openclaw.ai
HermesAgent 运行时(Lyra)hermes-agent.nousresearch.com

诚实的代价

这套系统需要纪律:必须把事情写下来、维护文件、审核保留内容后再使其永久化。它不是魔法的常开系统,而是结构化的人工纪律 + 接缝处的自动化。

Layer 1 和 Layer 3 只需一个周末即可搭建,从这里开始。完整 4 层系统历时约 6 个月才稳定。

Hermes 的轻量两层实现

Hermes Agent 的实用默认形态验证了“常驻信息必须少”的原则:

  • Tier 1:短小、显式的核心文件:memory.md 记录系统/项目事实,user.md 记录用户偏好,soul.md 定义 Agent 身份。三者承担启动时的稳定上下文,必须保持简洁。
  • Tier 2:按需检索的会话档案:完整历史存入 SQLite;只有在需要时通过 session search 召回,避免把全部历史塞入上下文窗口。
  • 可选增强:外部记忆服务可提取跨对话的隐含模式;Obsidian Vault 适合承载需要人类检查、可继续推进的项目与研究。

它不是对“四层架构”的替代,而是 agent-memory-and-dreaming 所强调的渐进式披露在单 Agent 场景中的最小可用实现。

Source: 2026-07-24-youtube-youtu-be-5_N84t1rUU0-si-9hzeimqyKkOFvsp3-c8ca3e25af(来源未公开)

与相关概念的关联

研究工作流中的记忆闭环

长期记忆应服务于决策而不是无差别累积:按日汇总关注源与书签,先按相关性分层,再将跨来源结论与后续反馈写回记忆。为避免信息茧房,外部来源应按主题轮换,并保留反方证据。定期复盘输出格式、错漏与实际决策价值,才能让记忆成为可校正的研究系统。

Source: 2026-07-28-x-x-com-0xjeff-status-2076631167152042204-s-46-0eb4279557(来源未公开)


5. 为什么盲目调 Prompt、切模型或堆上下文无法根治 Agent 脱轨

Source: 2026-09-03-x-x-com-0xwhrrari-status-2093685107534000560-s-46-c1633d832a.md(来源未公开)

开发者在遇到 Agent 运行失败时,最常见的三重误区是:

  1. 频繁修改 System Prompt;
  2. 切换更大的模型;
  3. 盲目塞入更大 Context Window。

这些做法无法解决核心瓶颈:

  • 注意力稀释与幻觉放大:上下文窗口越大,噪声和无关细节越多,模型的中间记忆检索(Lost in the Middle)越容易失效。
  • 缺乏显式状态机(State Machine):开环 Agent 容易进入死循环。必须将长程任务拆解为确定性步骤,由外部存储(如持久化 KV 缓存、向量索引与短期 Scratchpad)管理状态转移,而非依赖模型脆弱的隐式内部注意力。

6. Google Agent Memory 工程范式:Session(Events + State)与长期 Memory Bank

Source: 2026-09-28-xiaohongshu-xhslink-cn-o-8LT1ouk0THT-93cf41677f.md(来源未公开)

Google 官方在 Agent Memory 系列课程中进一步规范化了工业级短期与长期记忆的工程分层:

  1. 短期会话记忆(Session Memory)的双构件设计:
    • 一次连续对话(Session)被清晰切分为两个核心组件:
      • Events(全量事件时间线):完整记录每条用户消息与 Agent 动作回复,保留原始上下文与时间戳,专供大模型读历史、回溯追问与故障溯源;
      • State(结构化状态便签):以 Key-Value 键值对或轻量 JSON 维护高频取用的关键变量(如当前用户认证状态、购物车 ID、任务当前步骤)。Agent 在后续轮次中直接读取 State,完全免除通读并解析全量历史消息的 Token 损耗与延迟;
  2. 跨会话持久层:AI Memory Bank:
    • 跨越单次会话生命周期,将用户偏好、长程事实、多模态资产沉淀为全局多模态记忆库(Memory Bank),通过语义检索与实体图谱按需激活。