智能体深度解析 / 智能体的记忆系统
CHAPTER 05 · TOPIC 02

智能体的记忆系统

记忆是智能体区别于简单对话系统的核心能力之一。人类之所以能持续学习和协作,依赖于强大的记忆能力。同样,智能体也需要记忆来维持上下文连贯性、积累经验和个性化服务。本章深入解析智能体记忆系统的设计与实现。

一句话理解

记忆是智能体区别于简单对话系统的核心能力之一。人类之所以能持续学习和协作,依赖于强大的记忆能力。同样,智能体也需要记忆来维持上下文连贯性、积累经验和个性化服务。本章深入解析智能体记忆系统的设计与实现。

阅读前置

理解提示工程与工具调用

本文关注

记忆的分类、短期记忆(上下文窗口)、长期记忆

所在知识层

行动系统 · 智能体深度解析

文章导航
主教学视觉智能体的记忆系统 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

记忆是智能体区别于简单对话系统的核心能力之一。人类之所以能持续学习和协作,依赖于强大的记忆能力。同样,智能体也需要记忆来维持上下文连贯性、积累经验和个性化服务。本章深入解析智能体记忆系统的设计与实现。


1. 记忆的分类

1.1 按时间跨度分类

语义 SVG 重绘智能体的记忆系统 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文感觉记忆(Sensory Memory)系统核心持续时间:< 1 秒类比:当前正在处理的输入 token工具、结果与反馈
查看原文结构
┌─ 感觉记忆(Sensory Memory)────────────────────┐
│  持续时间:< 1 秒                               │
│  类比:当前正在处理的输入 token                    │
└──────────────────────────────────────────────────┘
语义 SVG 重绘智能体的记忆系统 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

短期记忆(Short-term / W…持续时间:当前对话回类比:LLM 的上下文窗口容量有限(受上下文窗口大小限制)
查看原文结构
┌─ 短期记忆(Short-term / Working Memory)────────┐
│  持续时间:当前对话回合                           │
│  类比:LLM 的上下文窗口                          │
│  容量有限(受上下文窗口大小限制)                  │
└──────────────────────────────────────────────────┘
语义 SVG 重绘智能体的记忆系统 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

长期记忆(Long-term Memo…持续时间:跨会话,永久保存类比:向量数据库 + 结构化存储容量几乎无限
查看原文结构
┌─ 长期记忆(Long-term Memory)───────────────────┐
│  持续时间:跨会话,永久保存                       │
│  类比:向量数据库 + 结构化存储                    │
│  容量几乎无限                                    │
└──────────────────────────────────────────────────┘

1.2 按类型分类(认知科学类比)

记忆类型人类类比Agent 实现内容
情景记忆"昨天发生了什么"对话历史、操作日志具体的事件和经历
语义记忆"地球是圆的"知识库、文档库通用知识和事实
程序性记忆"怎么骑自行车"工具使用模板、工作流程技能和操作步骤

2. 短期记忆(上下文窗口)

2.1 实现方式

短期记忆就是 LLM 的上下文窗口——当前对话的所有消息:

PYTHON
messages = [
    {"role": "system", "content": "你是一个编程助手"},
    {"role": "user", "content": "帮我写一个排序函数"},
    {"role": "assistant", "content": "好的,用什么语言?"},
    {"role": "user", "content": "Python"},
    {"role": "assistant", "content": "def bubble_sort(arr): ..."},
    {"role": "user", "content": "能改成快速排序吗?"},
    # 所有历史消息构成了短期记忆
]

2.2 短期记忆的管理策略

上下文窗口有限,对话太长时需要管理:

滑动窗口:

语义 SVG 重绘智能体的记忆系统

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

保留最近 N 条消息,丢弃更早的:msg1, msg2, ..., ms…保留 msg91, ..., msg1…
查看原文结构
保留最近 N 条消息,丢弃更早的:
  [msg1, msg2, ..., msg100] → 保留 [msg91, ..., msg100]

摘要压缩:

语义 SVG 重绘智能体的记忆系统

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

对话太长时,用 LLM 对旧对话做摘要…msg1 msg80LLM 摘要"用户讨论了排序算法,选择了快速排序"摘要 + msg81 msg100新的上下文
查看原文结构
对话太长时,用 LLM 对旧对话做摘要:
  [msg1 ~ msg80] → LLM 摘要 → "用户讨论了排序算法,选择了快速排序"
  [摘要] + [msg81 ~ msg100] → 新的上下文

重要消息标记:

TEXT
对重要消息(如用户偏好、关键决策)做标记,不被裁剪:
  [系统消息(保留)] + [关键决策(保留)] + [最近 N 条消息]

3. 长期记忆

3.1 基于向量数据库的记忆

这是最常见的长期记忆实现方式,本质上就是面向记忆的检索增强生成(RAG)

语义 SVG 重绘智能体的记忆系统 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

存储过程:用户对话 / 重要事LLM 提取关键信息Embedding 向量化存入向量数据库
查看原文结构
存储过程:
  用户对话 / 重要事件 → LLM 提取关键信息 → Embedding 向量化 → 存入向量数据库
语义 SVG 重绘智能体的记忆系统 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

检索过程:当前上下文提取查询在向量库中检索相关记注入上下文
查看原文结构
检索过程:
  当前上下文 → 提取查询 → 在向量库中检索相关记忆 → 注入上下文
语义 SVG 重绘智能体的记忆系统 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
示例:
  第一次对话:"我喜欢用 Python 编程"
    → 存储: {"memory": "用户偏好 Python", "embedding": [0.12, ...], "time": "2024-01-01"}
语义 SVG 重绘智能体的记忆系统 · 结构 4

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

第十次对话:"帮我写一个数据分析脚本"检索到记忆:"用户偏好 Python"Agent 自动用 Python 而非…
查看原文结构
第十次对话:"帮我写一个数据分析脚本"
    → 检索到记忆:"用户偏好 Python"
    → Agent 自动用 Python 而非 R 或 Java

3.2 结构化记忆

用键值对或数据库存储结构化信息:

PYTHON
# 用户画像记忆
user_profile = {
    "name": "张三",
    "role": "数据分析师",
    "preferences": {
        "language": "Python",
        "database": "PostgreSQL",
        "chart_style": "简洁风格"
    },
    "past_projects": ["销售分析", "用户行为分析"],
    "communication_style": "喜欢直接给结果,不要太多解释"
}

# 项目上下文记忆
project_context = {
    "project_name": "Q4 销售报告",
    "data_sources": ["MySQL 数据库", "Excel 报表"],
    "status": "数据清洗阶段",
    "known_issues": ["12月数据缺失", "汇率需要统一"]
}

3.3 MemGPT:操作系统式记忆管理

MemGPT 将操作系统的内存管理思想应用到 LLM 记忆:

语义 SVG 重绘智能体的记忆系统

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

操作系统内存管理 MemGPT 记忆管…寄存器当前 token(注意力焦点)L1/L2 缓存核心记忆(始终在上下文中)主存 (RAM)
查看原文结构
操作系统内存管理           MemGPT 记忆管理
─────────────────         ──────────────────
寄存器         →          当前 token(注意力焦点)
L1/L2 缓存    →          核心记忆(始终在上下文中)
主存 (RAM)    →          工作记忆(当前上下文窗口)
磁盘          →          归档记忆(向量数据库)

4. 记忆的读写操作

4.1 记忆写入

PYTHON
# 策略 1: 每次对话后自动提取并存储
def after_conversation(messages, memory_store):
    # 用 LLM 提取值得记住的信息
    summary = llm.generate(
        "从以下对话中提取值得长期记住的关键信息:"
        + str(messages)
    )
    if summary:
        memory_store.add(summary, metadata={"time": now(), "type": "episodic"})

# 策略 2: 用户显式要求记住
# 用户说:"记住,我的服务器 IP 是 192.168.1.100"
# Agent 直接存储

# 策略 3: 重要事件触发
# Agent 完成一个复杂任务后,存储解决方案

4.2 记忆检索

PYTHON
# 检索相关记忆并注入上下文
def get_context_with_memories(query, memory_store):
    # 1. 语义检索:找与当前问题相关的记忆
    relevant_memories = memory_store.search(query, top_k=5)
    
    # 2. 时间检索:找最近的记忆
    recent_memories = memory_store.get_recent(limit=3)
    
    # 3. 组合到系统提示中
    system_prompt = f"""
    你是一个有帮助的助手。
    
    以下是你对用户的记忆:
    {format_memories(relevant_memories)}
    
    最近的交互记录:
    {format_memories(recent_memories)}
    """
    return system_prompt

4.3 记忆更新与遗忘

语义 SVG 重绘智能体的记忆系统 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

1. 矛盾检测:新记忆与旧记忆矛盾时,…旧:"用户偏好 Java"新:"用户转用 Python"更新
查看原文结构
# 1. 矛盾检测:新记忆与旧记忆矛盾时,更新旧记忆
#    旧:"用户偏好 Java" → 新:"用户转用 Python" → 更新
语义 SVG 重绘智能体的记忆系统 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

3. 合并去重:相似记忆合并为一条更完…"用户喜欢 Python" + "用户…"用户偏好 Python,主要用于数据…
查看原文结构
# 3. 合并去重:相似记忆合并为一条更完整的记忆
#    "用户喜欢 Python" + "用户用 Python 做数据分析" 
#    → "用户偏好 Python,主要用于数据分析"

5. 记忆系统的设计原则

5.1 核心原则

原则说明
选择性记忆不是所有信息都值得记住,要有筛选机制
分层存储核心信息常驻,一般信息按需检索
及时更新记忆要随着新信息更新,避免过时
隐私保护敏感信息需要加密或脱敏存储
可解释性让用户知道 Agent 记住了什么,可以删除

5.2 记忆容量管理

TEXT
记忆管理的核心问题:记什么、忘什么、何时检索

应该记住的:
- 用户偏好和习惯
- 重要决策和结论
- 项目关键信息
- 反复提到的概念

应该遗忘的:
- 临时性的调试信息
- 被纠正的错误信息
- 过于细节的过程信息
- 用户明确要求忘记的

6. 实践案例

6.1 ChatGPT 的记忆功能

TEXT
ChatGPT Memory(2024 年上线):
- 自动从对话中提取关键信息
- 用户可以在设置中查看和删除记忆
- 记忆跨会话保持

示例记忆:
- "用户在一家 SaaS 公司做产品经理"
- "用户喜欢简洁的回答,不需要太多解释"
- "用户的项目使用 React + TypeScript"

6.2 企业级 Agent 的记忆设计

语义 SVG 重绘智能体的记忆系统

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文企业 Agent 记忆分层系统核心全局记忆(组织级)公司知识库组织架构工具、结果与反馈业务规则项目记忆(项目级)
查看原文结构
企业 Agent 记忆分层:
├── 全局记忆(组织级)
│   ├── 公司知识库
│   ├── 组织架构
│   └── 业务规则
├── 项目记忆(项目级)
│   ├── 项目文档
│   ├── 决策记录
│   └── 进度状态
└── 用户记忆(个人级)
    ├── 个人偏好
    ├── 历史交互
    └── 权限范围

7. 本章小结

记忆类型实现方式持久性容量
短期记忆上下文窗口会话内受窗口大小限制
长期记忆向量数据库永久几乎无限
结构化记忆键值数据库永久按需扩展
核心记忆系统提示会话内精简

相关章节


延伸阅读

  • Packer, C. et al. (2023). "MemGPT: Towards LLMs as Operating Systems". arXiv:2310.08560
  • Park, J.S. et al. (2023). "Generative Agents: Interactive Simulacra of Human Behavior". UIST
  • Wang, Z. et al. (2024). "Augmenting Language Models with Long-Term Memory". ACL