LLM 是无状态的,记忆才是 Agent 的灵魂
LLM 是无状态的,记忆才是 Agent 的灵魂
来源类型: 微信公众号文章
日期: 2026-06-02
标签: AI, OpenClaw, 记忆系统, 办公效率, 网络安全, 编程, 大模型
原文链接: https://mp.weixin.qq.com/s/4mMSHWZqQHvqb6SRHOgRtA
摘要
AI Agent 记忆系统全景:概念、架构与实现对比 ## 引言 LLM 是无状态的。记忆,是让 Agent 从"工具"变成"伙伴"的关键桥梁。 但"记忆"这个词太笼统了。一个 Agent 到底需要记住什么?怎么存、怎么取、怎么淘汰?不同产品/框架给出的答案截然不同。 本文先建立统一的概念模型(基于 CoALA 论文和 ACE 论文),再分别审视两大路线——个人 Agent 产品和开发框架,最后提炼可复用的设计模式。 ## 理论基础 Agent 记忆系统的设计并非凭空而来,它有两条重要的理论脉络:认知科学的记忆分类(CoALA 论文)和*上下文工程的工作流...
核心内容
AI Agent 记忆系统全景:概念、架构与实现对比
引言
LLM 是无状态的。记忆,是让 Agent 从"工具"变成"伙伴"的关键桥梁。
但"记忆"这个词太笼统了。一个 Agent 到底需要记住什么?怎么存、怎么取、怎么淘汰?不同产品/框架给出的答案截然不同。
本文先建立统一的概念模型(基于 CoALA 论文和 ACE 论文),再分别审视两大路线——个人 Agent 产品和开发框架,最后提炼可复用的设计模式。
理论基础
Agent 记忆系统的设计并非凭空而来,它有两条重要的理论脉络:认知科学的记忆分类(CoALA 论文)和上下文工程的工作流(ACE 论文)。
CoALA 框架:认知科学映射
CoALA(CoALA 论文,arXiv 2309.02427)将认知科学的记忆分类系统地映射到语言智能体:
记忆类型人类类比Agent 含义实践形态工作记忆当前注意力焦点当前决策周期的活跃信息上下文窗口 + Prompt 变量语义记忆在学校学到的知识关于世界的事实("用户偏好 Kotlin")MEMORY.md / Store / 向量数据库情景记忆回忆过去的经历过去行为的序列("上次部署失败了")对话历史 / Few-shot 示例程序性记忆学会骑自行车执行任务的能力(LLM 权重 + Agent 代码)System Prompt / Agent 代码
关键洞察:
- 语义记忆用于个性化——记住用户的事实,让每次交互都"懂你"
- 情景记忆用于复用经验——记住过去的成功/失败序列,指导新任务
- 程序性记忆用于自我优化——修改自己的行为规则。但这在实践中风险最高(可能引入 bug 或偏离设计意图),因此多数系统以固定的 Prompt 和模型参数为主
- 工作记忆是中枢枢纽——所有其他记忆类型的读写都经过工作记忆
场景选择指南:如果执行任务有"正确方法"(如客服 SOP),情景记忆(Few-shot 示例)更有效;如果执行任务没有固定方法(如创意写作),语义记忆(事实积累)更重要。
ACE 论文:三角色上下文工程
ACE(Agentic Context Engineering,arXiv 2510.04618)提出了一个三角色协作模型来管理 Agent 的上下文:
角色职责输出生成器(Generator)根据当前上下文生成推理和行动推理轨迹、工具调用、中间结果反思器(Reflector)分析轨迹,提取成功/失败经验战略洞察、失败模式、领域概念整理器(Curator)将反思结果结构化,更新上下文结构化条目,可确定性合并
这个模型的核心价值:把"记忆管理"从 Agent 的主任务中剥离出来,形成独立的生产线。不是边聊天边记笔记,而是有一个专门的角色负责"反思过去",另一个负责"整理归档"。
与 Dreaming 的对应关系:OpenClaw 的 Dreaming 三阶段(Light → REM → Deep)本质上是 ACE 三角色在离线场景的实现——Light = Generator 的暂存排序,REM = Reflector 的主题反思,Deep = Curator 的结构化晋升。
RAG vs Memory:两个不同的问题
ACE 论文明确区分了 RAG 和 Memory:
维度RAGMemory解决什么问题广泛的知识检索个性化交互历史信息来源大规模文档集合(政策、法规、技术文档)用户多会话的交互数据信息密度密集、非结构化(长文本、表格)稀疏、需要提炼(对话中的关键点)检索方式关键词 + 向量检索总结、压缩、图谱关系、时序演化关注指标召回率和精准度相关性和时效性
知识层级(从 ACE 论文):
Global(通用知识) → 已嵌入 LLM 基座模型
Org(组织知识) → RAG,向量数据库检索
User(用户知识) → Memory,这就是记忆不可或缺的地方
一句话总结:RAG 解决"我们知道什么"(专业),Memory 解决"我们记得什么"(贴心)。两者结合才能构建既专业又贴心的 AI 系统。
核心概念模型
Agent 记忆可以拆解为三个核心概念。它们之间的关系是:ChatHistory 是原材料,UserMemory 和 UserProfile 是加工品。
ChatHistory:原始对话记录
是什么:持久化存储用户的每个会话的对话记录。逐轮、逐条保存。对应 CoALA 的情景记忆。
特点:
- 原始、未加工,包含大量噪音(寒暄、纠错、重复表述)
- 是所有记忆的原材料——后续的 Memory、Profile 都从这里提取
- 短期记忆是 thread-scoped memory(当前会话),长期记忆是 cross-thread memory(跨会话)
为什么不能直接用:全量灌入上下文窗口会 token 爆炸,LLM 在长上下文中的表现也不理想("注意力稀释")。需要基于规则生成关联的摘要/压缩记忆,提取结构化的主体(画像标签)和事件。
UserMemory:用户个人笔记
是什么:从 ChatHistory 中提炼的精炼笔记——用户环境、约定、经验教训、待办事项。对应 CoALA 的语义记忆。
特点:
- 不是原始对话,而是加工后的知识
- 体积小、密度高,可以直接注入 System Prompt
-
需要淘汰机制——取历史 memory 中最近的和重要的信息,过时的淘汰
典型内容: -
"用户偏好 Kotlin,不喜欢 Java"
- "上周部署失败,原因是端口冲突"
- "代码审查时团队要求 AOP 职责分离"
UserProfile:用户画像
是什么:关于用户的结构化事实——偏好、风格、习惯、个人背景。是语义记忆的子集,专门围绕用户建模。
特点:
- 相对稳定,变化频率低
- 可以是结构化的 JSON(Profile 模式),也可以是自由文本
-
用于个性化 Agent 的交互方式
典型内容: -
"职业:后端工程师,技术栈:Kotlin/Python"
- "沟通风格:简洁,不喜欢客套"
- "时区:UTC+8,语言:中文"
三者的关系
ChatHistory(原始对话)
↓ 基于规则提取/摘要
├→ UserMemory(用户个人笔记) ← 持续更新,淘汰过时内容
└→ UserProfile(用户画像) ← 低频更新,相对稳定
核心问题:ChatHistory 是原材料,UserMemory 和 UserProfile 是加工品。如何高效地从 ChatHistory 中提取出高质量的 UserMemory 和 UserProfile
...(内容截断,完整内容请查看原文)
本页由自动化脚本生成,待人工审核补充