🧠 AI Agent 记忆系统:新手完全入门教程

本教程面向零基础/刚入门 AI Agent 开发的读者,从"为什么需要记忆"讲到"怎么选型落地",读完即可建立完整认知。


目录

  1. 记忆系统是什么?为什么需要它?
  2. Agent 的五种记忆类型
  3. 记忆系统的通用工作流程
  4. 主流记忆框架逐一拆解
  5. 框架横向对比与选型
  6. 新手学习路线推荐
  7. 常见误区与避坑

一、记忆系统是什么?为什么需要它?

1.1 一个生活化的类比

想象你有一位私人助理,但每天早上醒来都完全失忆——你不记得自己叫什么、昨天安排了什么、老板喜欢什么口味的咖啡。你每天都要从头自我介绍。

这就是大语言模型(LLM)的原生状态。GPT-4、Claude、DeepSeek……它们本质上是无状态(Stateless) 的:每次 API 调用都是一次全新的计算,关掉对话一切归零。

1.2 三大痛点

痛点 具体表现 后果
成本爆炸 聊 100 轮后,每次调用带几万 token 历史 费用线性增长,不可持续
注意力衰减 模型对长 context 中早期信息关注度下降 越聊越"不在意"前面说过的话
跨会话失效 用户第二天来,上下文全没了 无法提供连续、个性化体验

1.3 记忆系统的定义

记忆系统 = 让 AI 在对话之外,持久化地"记住"关键信息,并在需要时精准召回的中间层。

它不是模型本身的能力,而是外挂的一套工程架构,负责:

  • 📥 写入:从对话中提取值得记住的信息
  • 💾 存储:持久化到数据库/向量库/图谱
  • 🔍 检索:在需要时把相关记忆召回
  • 🗑️ 遗忘:清理过时或无关的记忆

一句话总结:没有记忆系统,Agent 只是一个"高级问答机器人";有了记忆系统,它才能成为真正的"智能体"。


二、Agent 的五种记忆类型

借鉴认知科学对人类记忆的分类,当前主流(Anthropic、OpenAI、Google DeepMind 等团队均采用)将 Agent 记忆分为五层:

📋 总览表

记忆类型 类比 存什么 持续多久 工程实现
① 工作记忆 你正在"想"的事 当前对话上下文 任务结束即清除 Context Window / AgentState
② 语义记忆 你知道的"知识" 用户偏好、事实 长期 向量数据库 / KV 存储
③ 情节记忆 你经历的"故事" 具体事件、对话片段 中长期 时序图谱 / 日志
④ 程序性记忆 你的"肌肉记忆" 操作流程、SOP 永久 Prompt 模板 / 工作流
⑤ 感知记忆 刚看到的画面 原始输入缓冲 毫秒~秒级 输入流 / 缓冲区

逐个详解

① 工作记忆(Working Memory)
  • 是什么:Agent 当前正在处理的信息,相当于"脑子里正在想的事"。
  • 例子:你让 Agent 查天气,它先搜城市代码→调天气 API→组织回答。这中间的临时状态就是工作记忆。
  • 特点:容量有限(受 token 限制)、任务结束即清除。
  • 实现:LangGraph 的 AgentState、对话消息列表。
② 语义记忆(Semantic Memory)
  • 是什么:关于世界的"事实和概念",不绑定具体时间。
  • 例子:“用户叫小明”“用户是 Python 工程师”“用户不吃辣”。
  • 特点:长期有效、可更新。
  • 实现:向量数据库(存 embedding)、键值对存储。
③ 情节记忆(Episodic Memory)
  • 是什么:具体发生过的事件,带有时间戳。
  • 例子:“上周三用户讨论了项目 A 的需求”“昨天用户修改了偏好设置”。
  • 特点:有时间线、可按时间回溯。
  • 实现:时序知识图谱(如 Zep 的 Graphiti)、带时间戳的日志。
④ 程序性记忆(Procedural Memory)
  • 是什么:怎么做某件事的"技能",类似骑自行车不用想先踩哪只脚。
  • 例子:调用某个 API 的步骤、复杂工作流的执行顺序。
  • 特点:一旦学会很少改变。
  • 实现:Prompt 模板、规则引擎、工作流图(DAG)。
⑤ 感知记忆(Sensory Memory)
  • 是什么:最原始的输入缓冲,几乎不被显式实现。
  • 例子:语音输入的原始音频流、图片的原始像素。
  • 特点:极短暂,通常直接传入下一层处理。
  • 实现:输入缓冲区、流式处理管道。

💡 新手重点:日常开发中最常打交道的是前三种——工作记忆、语义记忆、情节记忆。


三、记忆系统的通用工作流程

不管用哪个框架,记忆系统的核心流程都是同一个闭环:

┌─────────────────────────────────────────────────────────┐
│                                                         │
│   用户输入 ──→ 【提取】──→ 【存储】──→ 【检索】──→ 注入 Prompt
│                  │            │            │            │
│                  ▼            ▼            ▼            ▼
│              从对话中       持久化到      按相关性      拼接到当前
│              抽取关键信息   数据库/向量库  召回记忆      上下文中
│                                                         │
│              ──→ 【遗忘/更新】(定期清理过时信息)       │
│                                                         │
└─────────────────────────────────────────────────────────┘

四步拆解

步骤 做什么 关键技术
提取(Extract) 从对话中识别值得记住的信息 LLM 摘要、NER、规则过滤
存储(Store) 将信息持久化 向量数据库、图数据库、SQLite
检索(Retrieve) 根据当前问题找到相关记忆 语义相似度搜索、图遍历、关键词匹配
注入(Inject) 将召回的记忆拼入 Prompt 模板拼接、权重排序

四、主流记忆框架逐一拆解

4.1 Mem0 —— 轻量入门首选

项目 说明
GitHub Stars 60,000+(YC 孵化)
一句话定位 插拔式语义记忆层,5 分钟接入
核心原理 自动分析对话 → 提取事实/偏好 → 存入向量数据库 → 语义检索召回
存储架构 向量数据库 + 知识图谱 + 键值数据库(混合)
优点 接入极快、API 简洁、生态成熟、支持记忆导出
缺点 时序能力弱(问"上周说了什么"不太行)、缺乏自动归纳
适合谁 想快速给 Agent 加记忆、不想搭复杂基础设施的开发者

最简代码示例:

from mem0 import Memory

m = Memory()

# 添加记忆
m.add("我喜欢喝美式咖啡,不加糖", user_id="xiaoming")

# 检索记忆
results = m.search("用户的咖啡偏好", user_id="xiaoming")
print(results)  # → "喜欢喝美式咖啡,不加糖"

4.2 Zep —— 时序记忆专家

项目 说明
核心引擎 Graphiti(动态、时间感知的知识图谱)
一句话定位 基于情节图谱的记忆框架,擅长时间线问题
核心原理 三层 Subgraph 架构
优点 时序推理强、能回答"上周/上个月"类问题
缺点 超长周期(跨季度)记忆支持有限、部署略重
适合谁 需要理解事件时间线的对话系统

三层架构:

┌─────────────────────────────────────┐
│  Episodic Memory(情节层)          │  ← 原始对话,保留时间戳
├─────────────────────────────────────┤
│  Semantic Memory(语义层)          │  ← 抽取实体与关系
├─────────────────────────────────────┤
│  Community Memory(社区/归纳层)    │  ← 高层摘要与洞察
└─────────────────────────────────────┘

典型能力:

  • ✅ “用户上周三讨论了什么?”
  • ✅ “最近一个月用户偏好有什么变化?”
  • ❌ “半年前那次对话的细节”(超出能力边界)

4.3 LangMem —— LangChain 生态原生方案

项目 说明
一句话定位 LangChain/LangGraph 的"亲儿子"记忆模块
核心原理 区分工作记忆(当前会话)和长期存储(跨会话)
两种模式 Hot Path(主动调用)/ Background(后台自动)
优点 与 LangGraph 零摩擦集成、Namespace 灵活隔离
缺点 强绑定 LangChain 生态、非 LangChain 项目接入代价高
适合谁 已经/计划使用 LangChain 技术栈的团队

两种记忆模式对比:

模式 触发方式 类比 适用场景
Hot Path Agent 主动调用 manage_memory 工具 你主动记笔记 需要精确控制存什么
Background 系统后台自动从对话中提取 潜意识自动记忆 不想手动管理、全自动

最简代码示例(Hot Path):

from langmem import create_memory_manager

manager = create_memory_manager(model="openai/gpt-4o")

# Agent 在对话中主动存储记忆
await manager.ainvoke({
    "action": "store",
    "content": "用户是一名前端工程师,偏好 TypeScript",
    "namespace": ("user", "xiaoming")
})

# 检索记忆
memories = await manager.ainvoke({
    "action": "search",
    "query": "用户的技术栈偏好",
    "namespace": ("user", "xiaoming")
})

4.4 SQLite —— 轻量持久化基石

项目 说明
一句话定位 零配置本地数据库,常作为记忆系统的底层存储
核心用途 Checkpoint(检查点)、会话历史、结构化元数据
优点 无需额外服务、单文件部署、Python 内置支持
缺点 不具备语义检索能力、不适合大规模并发
适合谁 本地开发、原型验证、作为其他框架的存储后端

在记忆系统中的角色:

┌──────────────────────────────────────────┐
│          记忆框架(Mem0 / Zep / LangMem)  │
│                    ↕                      │
│          存储层(SQLite / PostgreSQL / Redis)│
└──────────────────────────────────────────┘

SQLite 通常不单独作为"记忆框架",而是作为存储引擎Checkpointer(保存 Agent 执行状态,支持断点续跑)。


4.5 TiMem / MemOS —— 前沿方案(了解即可)

框架 特色 成熟度
TiMem 五层时序记忆树,模拟人脑记忆巩固,Token 最省 较新,适合长期陪伴类应用
MemOS 记忆操作系统概念,统一管理所有记忆类型 学术前沿,生产落地少

新手阶段了解概念即可,暂不建议直接上手。


五、框架横向对比与选型

📊 一表对比

维度 Mem0 Zep LangMem SQLite
上手难度 ⭐(最简单) ⭐⭐⭐ ⭐⭐
时序能力
语义检索
自动归纳
生态绑定 强绑 LangChain
部署复杂度 低(在LC内) 极低
适用规模 个人~中型 中型~企业 中型 原型/本地

🌳 选型决策树

你需要给 Agent 加记忆?
│
├─ 已经在用 LangChain/LangGraph?
│   └─ YES → 用 LangMem(零摩擦)
│
├─ 需要回答时间线相关问题?("上周聊了什么")
│   └─ YES → 用 Zep
│
├─ 只想快速跑通 Demo / 存用户偏好?
│   └─ YES → 用 Mem0
│
├─ 只是本地开发、存个会话状态?
│   └─ YES → 用 SQLite 做 Checkpoint
│
└─ 需要跨月/跨年的超长期记忆?
    └─ 研究 TiMem / 自研分层方案

六、新手学习路线推荐

🎯 推荐顺序(由浅入深)

阶段 学什么 时间建议 目标
第 1 步 理解五种记忆类型 + 通用流程 1~2 天 建立概念框架
第 2 步 动手跑通 Mem0 的 Quick Start 1 天 体验"5 分钟加记忆"
第 3 步 学习 LangChain 的短期记忆(AgentState) 2~3 天 理解工作记忆的实现
第 4 步 学习 LangMem 的 Hot Path / Background 模式 2~3 天 掌握长期记忆的两种范式
第 5 步 了解 Zep 的三层图谱架构 1~2 天 理解时序记忆的设计思路
第 6 步 用 SQLite 实现一个简单的 Checkpoint 1 天 理解持久化与断点续跑
第 7 步 综合实战:搭一个带记忆的对话 Agent 3~5 天 融会贯通

📚 推荐学习资源

资源 链接/说明
LangMem 官方 Quick Start langchain-ai.github.io/langmem/hot_path_quickstart/
Mem0 GitHub + Docs github.com/mem0ai/mem0
Zep 官方文档 docs.getzep.com
菜鸟教程 - Agent 记忆系统设计 runoob.com/ai-agent/ai-agent-memory-system-design.html
掘金 - 2026 记忆框架横评 搜索"Mem0 Zep LangMem TiMem 横评"

🏆 新手第一个项目建议

用 Mem0 做一个"记住你喜好的聊天机器人"

# 完整示例:10 行代码实现有记忆的对话
from mem0 import Memory
from openai import OpenAI

m = Memory()
client = OpenAI()

def chat(user_input, user_id):
    # 1. 存储本轮对话中的关键信息
    m.add(user_input, user_id=user_id)
    
    # 2. 检索相关记忆
    memories = m.search(user_input, user_id=user_id)
    
    # 3. 拼接记忆到 Prompt
    context = "\n".join([mem["memory"] for mem in memories])
    
    # 4. 调用 LLM
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": f"你了解用户的这些信息:\n{context}"},
            {"role": "user", "content": user_input}
        ]
    )
    return response.choices[0].message.content

运行效果:

你:我叫小明,是一名后端工程师,喜欢喝美式咖啡
AI:你好小明!作为后端工程师,你平时用什么语言比较多?

(第二天新对话)
你:推荐一杯咖啡吧
AI:根据你之前的偏好,推荐一杯不加糖的美式咖啡 ☕

七、常见误区与避坑

❌ 误区 1:“上下文窗口够大就不需要记忆系统”

哪怕 2M token 的窗口,也只是推迟问题。成本更高、速度更慢、关键细节仍会遗漏。工程上仍需要"写入→检索→老化→治理"的完整闭环。

❌ 误区 2:“记忆 = 把对话历史存起来”

真正的记忆系统需要提取、归纳、去重、更新。不是把所有对话原样塞进数据库,而是提炼出"用户喜欢什么"“发生了什么关键事件”。

❌ 误区 3:“一个框架解决所有问题”

实际生产中,往往是组合使用

  • SQLite/Redis → 存会话状态(Checkpoint)
  • Mem0/Zep → 存长期用户画像
  • Prompt 模板 → 存程序性记忆(SOP)

❌ 误区 4:“新手直接上最复杂的方案”

先用最简单的方案跑通 → 遇到瓶颈 → 再升级。不要一上来就搞五层记忆树。

✅ 正确心态

没有最好的框架,只有最适合你场景的框架。 选错了后期迁移成本很高,所以先想清楚需求再动手。


总结:一张图记住全部内容

                    ┌─────────────────────────────┐
                    │      AI Agent 记忆系统       │
                    └──────────────┬──────────────┘
                                   │
            ┌──────────────────────┼──────────────────────┐
            │                      │                      │
     ┌──────▼──────┐       ┌──────▼──────┐       ┌──────▼──────┐
     │  五种记忆类型  │       │  通用流程    │       │  主流框架    │
     ├─────────────┤       ├─────────────┤       ├─────────────┤
     │ ① 工作记忆   │       │  提取        │       │  Mem0       │
     │ ② 语义记忆   │       │  存储        │       │  Zep        │
     │ ③ 情节记忆   │       │  检索        │       │  LangMem    │
     │ ④ 程序性记忆  │       │  注入        │       │  SQLite     │
     │ ⑤ 感知记忆   │       │  遗忘        │       │  TiMem      │
     └─────────────┘       └─────────────┘       └─────────────┘

📌 最后的建议:如果你是纯新手,从 Mem0 开始。5 分钟跑通第一个 Demo,建立直觉后再深入其他框架。记忆系统不难,难的是想清楚"我的 Agent 到底需要记住什么"。

祝学习顺利!🚀

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐