Agent 记忆系统架构设计

Agent 记忆系统架构设计

记忆系统的本质是解决"LLM 上下文窗口有限"和"长任务 / 跨会话需要历史信息"这对核心矛盾。本文从架构演进的角度,系统梳理 Agent 记忆系统的分层设计、长期记忆的动静拆分、记忆治理与防爆炸机制。


一、为什么两层架构不够用?

早期 Agent 的记忆设计非常朴素,只有两层:

  • 短期记忆:当前会话内的对话历史,直接塞进上下文窗口
  • 长期记忆:跨会话的历史信息,存入向量库按需召回

这套架构放在简单问答、闲聊场景勉强够用。但一到复杂长任务、企业级场景,三个致命问题就暴露了:

  1. 粒度太粗:短期记忆是对话流水账,无法区分"任务目标"和"闲聊内容"
  2. 边界模糊:什么该进短期、什么该进长期,缺乏清晰判定标准
  3. 缺少治理:只存不治,三个月后记忆库必然熵增成一团浆糊

真实踩坑案例:某团队做调研报告 Agent,用户要求"写一份 10 章的行业报告",跑了 3 小时后,Agent 忘了要写 10 章,只输出 3 章就结束了。这就是传统两层架构的死穴——长任务跑着跑着就忘了最初的目标。

三大痛点

传统两层架构

会话结束
全部丢弃

短期记忆
(对话历史 → 上下文窗口)

长期记忆
(跨会话 → 向量库检索)

❌ 粒度太粗
无法区分目标和闲聊

❌ 边界模糊
缺乏判定标准

❌ 缺少治理
只存不治,必然熵增


二、四层记忆架构:从热到冷的分层设计

2025-2026 年的工业级实践,已经收敛到四层记忆架构。核心思路是按访问频率和生命周期,从热到冷清晰分层:

第 0 层:上下文窗口记忆(In-Context Memory)  →  热记忆,直接推理
第 1 层:工作记忆(Working Memory)           →  任务认知黑板
第 2 层:会话记忆(Episodic Memory)          →  单会话完整历史
第 3 层:长期记忆(Long-term Memory)         →  跨会话持久沉淀

四层核心参数对照

记忆层级定位存储介质典型容量访问延迟核心职责
第 0 层 上下文窗口热记忆/当前交互LLM 原生上下文4k~128k tokens最低(直接推理)承载当前对话的直接输入
第 1 层 工作记忆任务认知黑板内存/文件/任务状态无硬限制锚定任务目标、中间产物、实体关系
第 2 层 会话记忆单会话完整历史SQLite/本地文件单会话无限承接上下文溢出的历史内容
第 3 层 长期记忆跨会话知识沉淀文件/DB/向量索引理论无限较高持久化用户偏好、关键事实、可复用知识

❄️ 冷记忆(低频访问)

🌤️ 温记忆(中频访问)

🔥 热记忆(高频访问)

上下文溢出
降级 ↓

会话结束提炼精华
降级 ↓

任务完成
核心结论沉淀
降级 ↓

检索命中
升级 ↑

第 0 层:上下文窗口记忆
In-Context Memory
━━━━━━━━━━━━━
📦 LLM 原生上下文
⚡ 延迟:最低(直接推理)
📏 容量:4k~128k tokens

第 1 层:工作记忆
Working Memory
━━━━━━━━━━━━━
📦 内存 / 文件 / 任务状态
⚡ 延迟:低
📏 容量:无硬限制
🎯 任务目标 实体关系 中间产物

第 2 层:会话记忆
Episodic Memory
━━━━━━━━━━━━━
📦 SQLite / 本地文件
⚡ 延迟:中
📏 容量:单会话无限
📝 滚动摘要 + 会话内检索

第 3 层:长期记忆
Long-term Memory
━━━━━━━━━━━━━
📦 向量库 / DB / 文件系统
⚡ 延迟:较高
📏 容量:理论无限
💾 跨会话持久沉淀

三大核心优势

第一,冷热分离。高频访问的热记忆放上下文,低频的冷记忆放向量库,兼顾速度和容量。

第二,升降级机制。会话结束后自动提炼精华写入长期记忆(降级);检索命中的冷记忆重新注入上下文(升级)。记忆在四层之间流动,不是一成不变的。

第三,治理边界清晰。每一层都有独立的清理、去重、过期机制,从根源避免"记忆熵增"。

为什么不把所有记忆都塞进上下文?

三个现实问题绕不开:

  1. 成本问题:上下文是 O(n²) 的 Token 开销,1M 窗口跑起来成本几十倍上涨
  2. 注意力问题:长上下文存在"中间遗忘效应",模型注意力集中在开头和结尾,中间信息大概率被忽略
  3. 延迟问题:窗口越大推理越慢,线上 C 端产品扛不住

结论:窗口再大,分层记忆依旧是工程最优解。


三、逐层深度拆解

第 0 层:上下文窗口记忆

这是最基础的一层——把对话历史直接放入 LLM 提示词,依托注意力机制来"记住"。

三大实现方案

方案原理适用场景踩坑点
固定窗口截断只保留最近 N 轮/token,超出丢弃闲聊、简单客服用户开头的全局指令容易被截断
滑动窗口+置顶保护系统指令永久置顶,只截断普通对话工业界标配需要标记哪些消息"免截断"
实时令牌压缩工具返回的大内容先摘要再进上下文大量工具调用的 Agent摘要质量影响后续效果

开源实现对比

  • HermesMEMORY.md / USER.md 保存短而稳定的长期信息,核心记忆注入 + 会话搜索
  • OpenClaw:核心记忆和近期笔记按需进入上下文,更早历史通过检索召回
  • DeerFlow 2.0:Sub-Agent 上下文隔离 + 中间产物落地 + 摘要压缩

上下文窗口的"中间遗忘效应"怎么缓解?

① 重要信息放开头或结尾;② 关键内容定期重复出现;③ 不要过度依赖长上下文,该分层就分层。


第 1 层:工作记忆——长任务的"认知黑板"

这是四层架构相比两层架构最关键的增量。传统短期记忆是"对话流水账",工作记忆是"结构化任务认知"。

工作记忆存储的不是对话内容,而是

  • 任务目标锚定(最终目标是什么,防止跑偏)
  • 实体关系图谱(涉及的人、事、物及其关联)
  • 中间结果持久化(已完成的子任务产出,不用反复重算)
  • 断点续传支持(任务中断后从上一个状态继续)

举例:写一篇万字调研报告——

  • 短期记忆存的是你和 Agent 的每一句对话
  • 工作记忆存的是"当前写到第几章、已确认的核心论点、引用的数据源"

开源实现对比

项目实现方式核心创新
DeerFlow 2.0Sub-Agent 上下文隔离 + 文件产物沉淀子任务隔离、sandbox 文件系统降低长任务失忆风险
OpenClaw工作区每日笔记 + 检索索引当前工作上下文可直接检查,更早历史通过 memory_search 召回
Hermes有界核心记忆 + 会话搜索用小而稳定的核心偏好约束当前任务

工作记忆和传统短期记忆有三个维度的本质区别:

  1. 内容不同:流水账 vs 结构化任务状态
  2. 目的不同:“记住说了什么” vs “记住要做什么、做到哪了”
  3. 价值不同:没有工作记忆,Agent 做不了超过 10 轮的长任务

第 2 层:会话记忆——上下文的"外存"

上下文窗口装不下的内容,先存在这一层。边界很清晰:当前会话内有效,会话结束默认不跨会话加载

两大实现方案

(1)滚动摘要

  • 原理:对话快满时,把前面内容总结成短摘要,用摘要替换原始记录
  • 优点:压缩长度的同时保住任务目标、风格要求、已确认结论
  • 缺点:多一次模型调用,摘要质量直接影响后续效果
  • 优化手段:用便宜小模型做摘要(成本是主模型的 1/10),关键信息标记"不参与摘要"

(2)会话内检索

  • 原理:整个会话历史向量化,按需召回最相关片段
  • 适用:单会话超长篇任务(写书、大型调研)

开源实现:Hermes 用 SQLite 会话搜索;OpenClaw 每日笔记 + 检索索引;DeerFlow 2.0 上下文压缩 + 中间结果落地。


第 3 层:长期记忆——"越用越聪明"的核心

跨会话的持久化记忆。上次对话你说过"讨厌写注释",这次找 Agent 写代码,它自动就记住了。

核心技术链路:存储 → 索引 → 检索 → 注入

④ 注入层

按优先级注入上下文

Token 预算控制

③ 检索层

相关性排序

去重过滤

优先级加权

② 索引层(三驾马车)

🔷 向量相似度
语义匹配

🔶 BM25 关键词
精确匹配

🔹 实体标签
结构化过滤

① 存储层

Markdown 核心记忆

SQLite / FTS5

向量库 / 文件系统

存储层:三大方案
项目存储介质设计哲学优势
HermesMarkdown 核心记忆 + SQLite/FTS5轻量化、本地优先部署简单,会话搜索方便
OpenClawMEMORY.md + memory/*.md + SQLite 混合索引人类可读、可直接编辑调试方便,可人工修正记忆
DeerFlow本地长期记忆 + 文件系统产物长任务上下文工程适合多步骤任务和中间结果沉淀
索引层:混合检索是主流

纯向量检索已经不够用,现在是三驾马车

  • 向量相似度:语义匹配
  • BM25 关键词:精确匹配
  • 实体标签:结构化过滤
检索层:不是什么都值得存
  • ✅ 该存:用户稳定偏好、任务核心目标、已确认重要事实、可复用结论
  • ❌ 不该存:临时对话、中间过程、错误信息

四、长期记忆的动静拆分:为什么 Facts 和 History 必须分开?

DeerFlow 体系对长期记忆做了进一步拆分,这是理解工业级记忆系统设计的关键:

长期记忆 = 动态长期记忆(History)+ 静态长期记忆(Facts)

DeerFlow 三级记忆体系

长期记忆 = 动态 + 静态

每轮对话
实时驱动

异步抽取
置信度校验

互补
过程 + 结论

History 历史分层
━━━━━━━━━━━━━
📖 动态长期记忆
⏱ 按月/季度低频聚合
🔄 生命周期:月~年级
📌 增量迭代、时序叙事
🎯 记录变化过程

User 用户上下文
━━━━━━━━━━━━━
活跃短期记忆
⏱ 每轮对话实时刷新
🔄 生命周期:小时~天级
📌 覆盖式更新,天然不膨胀

Facts 事实列表
━━━━━━━━━━━━━
📌 静态长期记忆
⏱ 极低频校验更新
🔄 生命周期:永久/半永久
📌 离散条目、结构化管理
🎯 记录不变结论

拆分的五个核心原因

1. 信息属性本质不同

  • History 是"过程":记录行为演变、阶段性轨迹,是连续叙事型总结
  • Facts 是"结论":存储离散、稳定、可复用的确定性单点事实

若混为一体,查询"用户常用编辑器"这种单点信息时,需要遍历大段历史摘要做冗余匹配。

2. 更新频率完全不同

  • History 按月/季度低频增量汇总,只新增阶段性总结
  • Facts 极慢迭代,只有用户明确修正时才修改或删除条目

统一存储会出现:为了少量事实修改,频繁重写整段长篇历史摘要。

3. 检索模式差异化

  • Facts:支持向量检索、分类过滤、置信度筛选,按需抽取少量关键事实
  • History:多用于全景复盘、长周期背景溯源,一般不全量塞进单次 Prompt

4. 置信度管理需要隔离

Facts 每条附带置信度打分:

  • < 0.5:无效推断,自动丢弃
  • 0.5~0.7:弱推导,标记待复核
  • 0.7~0.9:强逻辑推导
  • 0.9~1.0:用户明确口述,可信度最高

History 是概括性叙事,无需逐条置信校验。合并后无法区分"确凿事实"和"归纳推测"。

5. 生命周期淘汰策略可独立配置

  • 静态事实:多年未使用降级归档
  • 动态时序:按时间段分段压缩,久远历史精简
📖 History 动态长期📌 Facts 静态事实📦 User 短期记忆🤖 Agent👤 用户📖 History 动态长期📌 Facts 静态事实📦 User 短期记忆🤖 Agent👤 用户每轮对话执行链路注入本轮 Prompt支撑实时应答【2】对话结束后置流程【3】定时批量聚合(月/季度)【4】事实抽取校验发起对话【1】读取 User 短时记忆【1】匹配检索相关 Facts返回应答更新覆盖 User 短时记忆汇总对话信息增量更新 History异步抽取有效信息判断新增/修改/淘汰

五、记忆爆炸治理:五层纵深防线

每一轮对话都触发长期记忆存储,会不会爆炸?DeerFlow 的答案是:不会,因为架构本身内置了分层写入阈值和异步聚合机制

源头防控:从写入规则杜绝逐轮冗余

层级写入策略防膨胀机制
User 短期记忆覆盖式更新始终只保留当前一轮总结,天然不膨胀
History 中长期定时批量聚合(月/季度)数百轮对话浓缩为一段月度总结,拒绝逐轮追加
Facts 事实抽取校验前置相似度去重、低置信过滤、单轮新增上限

五层存量治理机制

🛡️ 记忆爆炸五层纵深防线

第一层:事实生命周期分级归档
━━━━━━━━━━━━━━━━━━━
❄️ 冷事实判定 → 多年未调用自动归档
⚡ 冲突处理 → 按置信度+时间+来源取舍
🔄 过期修正 → 定期巡检,用户推翻则标记失效

第二层:历史时序分层压缩
━━━━━━━━━━━━━━━━━━━
📝 近期 → 保留详细摘要
📝 更早 → 逐年精简合并
📝 超远期 → 收拢至 longTermBackground

第三层:上下文注入裁剪
━━━━━━━━━━━━━━━━━━━
🎯 相关性向量匹配 → 只召回 Top-N
✂️ 单次注入 Token 上限 → 超限自动二次摘要

第四层:存储分库隔离(冷热分离)
━━━━━━━━━━━━━━━━━━━
🔥 热数据 → 内存 + 在线数据库(快速读写)
❄️ 冷数据 → 低成本归档存储(溯源按需调取)

第五层:写入限流与异步削峰
━━━━━━━━━━━━━━━━━━━
📨 异步消息队列 → 设置最大入库频次
👤 人工复核开关 → 关键事实修改可开启校验

第一层:事实生命周期分级归档

  • 超过设定年限从未被检索调用的 Fact → 标记归档
  • 同一维度矛盾事实 → 按置信度+时间+来源优先级自动取舍
  • 定期批量巡检,用户明确推翻的旧事实主动标记失效

第二层:历史时序分层压缩

  • 近期内容保留详细摘要
  • 更早阶段逐年精简合并
  • 超远期里程碑统一收拢,不再保留细碎细节

第三层:上下文注入裁剪

  • 基于当前对话主题做相关性向量匹配,只召回 Top-N
  • 设置单次注入 Token 上限,超限自动二次摘要压缩

第四层:存储分库隔离,冷热分离

  • 热数据:当前周期 User、近期 History、高频 Fact → 内存 + 在线库
  • 冷数据:归档历史、低频 Fact → 低成本归档存储,常规对话不加载

第五层:写入限流与异步队列削峰

  • 长期记忆写入全部放入异步消息队列
  • 设置单位时间最大入库频次,防止批量抽取击穿存储
  • 关键事实修改可开启人工复核,防止 LLM 幻觉批量生成脏数据

六、工业级记忆治理:五大核心机制

记忆熵增定律

只要不加治理,记忆系统一定会自发地从有序走向混乱。只存不治,三大问题必然出现

  1. 重复记忆:同一事实存 N 遍,检索结果全是冗余
  2. 过时记忆:信息过期了还在用,导致决策错误
  3. 冲突记忆:新旧事实矛盾,Agent 不知道该信哪个

✅ 五大治理闭环(对抗熵增)

持续治理循环

🚪 准入机制
重要性打分 + 去重 + 校验

🔗 合并归一化
实体归一 + 冲突解决

⏳ 过期遗忘
时间衰减 + 分级过期

🔄 升降级
四层联动流转

🔐 安全可控
审计日志 + 防注入

⚠️ 记忆熵增路径(不加治理)

更多脏数据

📥 写入
(无准入)

📦 存储
(无去重)

🔍 检索
(噪声干扰)

🤖 决策
(错误记忆)

五大治理机制全景

治理机制目标核心策略
准入机制不是什么都能进长期记忆重要性打分 + 语义去重 + 事实校验,“宁可少存,也别乱存”
合并归一化解决冗余与实体混乱语义去重合并 + 实体归一化("张三/张总/张工"→同一实体ID) + 冲突解决
过期遗忘该忘的就得忘时间衰减 + 访问频率衰减 + 定期清理;核心记忆永久保存,普通记忆 90 天过期
升降级四层联动降级(热→冷):对话溢出写入会话记忆,会话结束提炼写入长期记忆;升级(冷→热):检索命中注入上下文
安全可控用户要有控制权可视化管理界面 + 全链路审计日志 + 防注入防护

主动遗忘会不会把重要信息删掉?

不会,记忆分级处理——

  • 核心记忆(用户偏好、重要事实):永久保存
  • 普通记忆(单次对话结论):90 天过期
  • 临时记忆(中间过程):会话结束就删

七、开源项目记忆架构全景对比

维度HermesOpenClawDeerFlow 2.0
核心定位有界持久记忆 + 会话搜索个人助理运行时 + 工作区文件记忆 + 混合检索长任务 SuperAgent + 上下文工程 + 本地长期记忆
上下文窗口核心记忆注入 + 会话搜索核心记忆/近期笔记按需进入上下文Sub-Agent 隔离 + 上下文压缩
工作记忆有界核心偏好约束工作区每日笔记 + 检索索引Sub-Agent 上下文隔离 + 文件产物沉淀
会话记忆SQLite 会话搜索每日笔记 + memory_search上下文压缩 + 中间结果 offload
长期记忆Markdown 核心记忆 + SQLite/FTS5MEMORY.md + memory/*.md + 混合索引本地长期记忆 + 文件系统产物
记忆治理字符上限 + 写入校验 + 重复检测文件可编辑 + 检索增强 + Dreaming 辅助五层纵深防线(写入限流→压缩→归档→裁剪→削峰)

八、三大设计原则

原则一:分层原则——冷热分层,按需加载

永远不要把所有记忆都塞进上下文窗口。

  • 热记忆(第 0 层 + 第 1 层)放缓存,追求速度
  • 温记忆(第 2 层)放本地数据库,追求连贯
  • 冷记忆(第 3 层)放向量库/归档存储,追求容量

记忆在四层之间自动升降级,该升的升,该降的降。

原则二:治理原则——对抗熵增,动态治理

记忆系统不是"存进去就完事"的仓库,它是需要持续治理的数据资产。五大机制一个都不能少:准入要严、去重要勤、过期要忘、升降要顺、用户要可控。

这是 90% 团队踩过的最大的坑:上线前只做存取不做治理,半年后只能全量清库重来。

原则三:务实原则——场景驱动,按需选择

没有最好的架构,只有最适合场景的架构。

  • 个人日常 → Hermes,简单就是美
  • 个人助理长期运行 → OpenClaw,透明就是生产力
  • 多步骤长任务 → DeerFlow,sub-agent + sandbox + 上下文压缩更合适

九、总结:一句话记住四层记忆

层级一句话缺了会怎样
第 0 层 上下文窗口速度当前对话无记忆
第 1 层 工作记忆长任务稳定性做不了长任务
第 2 层 会话记忆会话连贯性长对话中间失忆
第 3 层 长期记忆个性化体验做不到"越用越懂你"

整个 Agent 记忆系统的架构演进,本质上是从"粗放的存取"走向"精细的分层治理"。理解了这四层架构 + 动静拆分 + 五层防爆炸机制,实际做项目,就有了坚实的理论基础。

Agent 记忆系统架构全景

长期记忆动静拆分

四层记忆底座(热→冷)

治理体系

五大治理机制
准入机制 → 合并归一 → 过期遗忘 → 可升降级 → 安全可控

五层纵深防爆炸
归档 → 压缩 → 裁剪 → 隔离 → 削峰

第3层
长期记忆
个性化

Facts 静态
不变结论
置信度管理

History 动态
变化过程
时序叙事

第0层
上下文窗口
速度

第1层
工作记忆
长任务稳定

第2层
会话记忆
连贯性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值