Skip to content

引言

从 2023 年初的「金鱼记忆」到 2025 年 ChatGPT 能记住你的每一次对话,AI 的记忆管理经历了五代演进。每一代都解决了上一代的核心痛点,同时也引入了新的挑战。

这段历程中最有趣的是:解决问题的思路从「开发者手动管理」逐渐演变为「模型自主管理」——就像计算机的内存管理从手动分配进化到操作系统自动管理一样。

CP1996-
Charles Packer
MemGPT 论文共同一作,Letta 联合创始人,UC Berkeley 博士
"将 LLM 视为操作系统,上下文窗口是 RAM,外部存储是硬盘——模型应该自己管理什么放进内存、什么写到磁盘。"
2023 初无状态 API 时代:开发者手动管理消息历史
2023.3LangChain 发布 Memory 模块:框架级抽象
2023.10MemGPT 论文发布:LLM-as-OS 范式
2024.2ChatGPT Memory 上线(Plus 用户)
2024.9ChatGPT Memory 全量开放(所有用户)
2024.11Gemini 推出 Memory 功能
2025.4ChatGPT 升级:可引用所有历史对话
2025Letta 开源平台上线,LangMem 发布
2025.8-10Claude 推出 Memory 功能(付费用户)

第一代:手动管理(2023 年初)

开发者自己管消息数组

2023 年初,ChatGPT API 刚刚开放。API 是无状态的——你发一组 messages,模型返回一个回复。至于「记住之前的对话」,那是你的事。

开发者需要自己做的事:

  1. 在数据库里存每一条 user/assistant 消息
  2. 每次调用 API 时,从数据库加载完整消息历史
  3. 当消息太长超出上下文窗口时,手动截断
  4. 对话结束后,所有消息清空

  代码:
  messages = load_messages_from_db(user_id)
  messages.append({"role": "user", "content": new_question})
  response = call_api(messages)
  save_to_db(user_id, new_question, response.content)

痛点

第一代的困境:

  ✗ 只能记住「当前对话」内的消息
  ✗ 对话结束,记忆消失——下次又是陌生人
  ✗ 开发者需要自己处理截断、溢出、存储
  ✗ 没有标准方案,每个团队重新造轮子
  ✗ 关键信息(用户偏好、项目背景)无法持久化

第二代:框架级抽象(2023 年中)

LangChain Memory 模块

2023 年中,LangChain 推出了 Memory 模块,把常见的记忆管理策略封装成了可复用的组件。开发者不再需要自己写截断、摘要、窗口管理的代码。

LangChain 的记忆类型:

  ┌───────────────────────────────────────────────────────────┐
  │ ConversationBufferMemory                                 │
  │   保存完整对话历史                                          │
  │   简单但 token 消耗大                                      │
  │   → 适合短对话                                             │
  ├───────────────────────────────────────────────────────────┤
  │ ConversationBufferWindowMemory                           │
  │   只保留最近 K 轮对话                                       │
  │   自动丢弃旧消息                                            │
  │   → 适合中等长度对话                                        │
  ├───────────────────────────────────────────────────────────┤
  │ ConversationTokenBufferMemory                            │
  │   基于 token 数限制,而非轮数                               │
  │   更精确地控制上下文大小                                     │
  │   → 适合需要精确控制成本的场景                               │
  ├───────────────────────────────────────────────────────────┤
  │ ConversationSummaryBufferMemory                          │
  │   混合策略:旧消息压缩为摘要 + 新消息保留原文                 │
  │   兼顾信息保留和 token 效率                                 │
  │   → 适合长对话(最常用)                                    │
  ├───────────────────────────────────────────────────────────┤
  │ VectorStoreRetrieverMemory                               │
  │   用向量数据库存储所有历史消息                               │
  │   按语义相关性检索                                          │
  │   → 适合需要检索特定历史信息的场景                           │
  └───────────────────────────────────────────────────────────┘

代码示例

python
from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")

# 创建混合记忆:摘要 + 最近消息
memory = ConversationSummaryBufferMemory(
    llm=llm,
    max_token_limit=1000  # 超过 1000 token 时开始摘要旧消息
)

# 模拟多轮对话
memory.save_context(
    {"input": "我在做一个 FastAPI 项目"},
    {"output": "好的,了解了。FastAPI 是一个高性能的 Python Web 框架。"}
)
memory.save_context(
    {"input": "用 SQLAlchemy 做 ORM"},
    {"output": "明白了,FastAPI + SQLAlchemy 是很常见的技术栈。"}
)

# 查看当前记忆内容
print(memory.load_memory_variables({}))
# → 保留了对话摘要 + 最近的消息

第二代的局限

LangChain Memory 解决了什么:
  ✓ 不用自己写截断/摘要逻辑
  ✓ 标准化的记忆管理接口
  ✓ 多种策略可选

LangChain Memory 没有解决什么:
  ✗ 仍然是「会话内」记忆,对话结束就消失
  ✗ 不支持跨对话的用户偏好
  ✗ 摘要质量依赖 LLM,可能丢失关键信息
  ✗ 记忆是被动管理,不是模型主动管理

第三代:LLM 自主管理记忆(2023 年 10 月)

MemGPT 论文:LLM-as-OS

2023 年 10 月,UC Berkeley 的研究团队发表了 MemGPT 论文(arXiv: 2310.08560),提出了一个革命性的想法:让 LLM 像操作系统管理内存一样管理自己的上下文

操作系统的内存管理:

  物理内存(RAM)有限 → 放不下的数据写到硬盘(Swap)
  需要时再从硬盘读回内存
  操作系统自动决定什么放内存、什么写硬盘

  应用程序不需要关心内存管理——OS 帮你搞定

MemGPT 的类比:

  上下文窗口 = 物理内存(RAM)
  → 有限(128K tokens)

  外部存储(数据库/文件) = 硬盘(Disk)
  → 无限

  LLM = 操作系统
  → 自己决定什么放进上下文窗口、什么写到外部存储

  用户/开发者不需要管理记忆——LLM 自己搞定

MemGPT 的架构

MemGPT 三层记忆架构:

  ┌─────────────────────────────────┐
  │ Main Context(主上下文 = RAM)    │
  │                                   │
  │ ┌─────────────────────────────┐ │
  │ │ System Instructions          │ │ ← 角色设定
  │ ├─────────────────────────────┤ │
  │ │ Working Context              │ │ ← 当前工作记忆
  │ │ (当前对话 + 摘要 + 关键事实)│ │
  │ ├─────────────────────────────┤ │
  │ │ Conversation                 │ │ ← 最近的消息
  │ └─────────────────────────────┘ │
  │ 总计 ≤ 上下文窗口大小             │
  └─────────────────────────────────┘

  ┌─────────────────────────────────┐
  │ Archival Storage(归档 = 硬盘)  │
  │                                   │
  │ 所有历史对话、文档、用户事实       │
  │ 可以被检索和加载回主上下文         │
  │ 无限大小                          │
  └─────────────────────────────────┘

  ┌─────────────────────────────────┐
  │ Recall Storage(召回存储)        │
  │                                   │
  │ 对话历史的向量索引                 │
  │ 支持语义搜索                      │
  └─────────────────────────────────┘

  LLM 通过 Tool Calling 管理这些存储:
  ├── memory.insert() → 往归档存储写入
  ├── memory.search() → 从归档存储搜索
  ├── archival_memory.insert() → 写入长期记忆
  └── archival_memory.search() → 检索长期记忆

MemGPT → Letta

MemGPT 的演进:

  2023.10  MemGPT 论文发布
  2024     项目更名为 Letta,成立公司
  2025     Letta 成为开源 AI Agent 框架

  Letta 的核心创新:
  ├── Memory Blocks:结构化的记忆单元
  │   每个记忆块是一个独立的信息片段
  │   模型可以自主创建、更新、删除记忆块

  ├── Stateful Agent:有状态的 Agent
  │   Agent 有持久的身份和记忆
  │   可以跨会话保持状态

  └── LLM 自主决策
      模型自己决定记住什么、忘记什么
      不需要开发者硬编码记忆逻辑

第四代:产品级内置记忆(2024 年)

ChatGPT Memory

2024 年 2 月:ChatGPT Memory 首次上线(Plus 用户)
2024 年 9 月 5 日:全量开放(Free / Plus / Team / Enterprise)

工作原理:
  用户在对话中提到重要信息
  → ChatGPT 自动判断是否值得记住
  → 存储为一条「记忆」(Memory)
  → 未来对话中自动参考这些记忆

用户可以:
  ├── 查看所有记忆(Settings → Personalize → Memory)
  ├── 删除特定记忆
  ├── 要求 ChatGPT「忘记某件事」
  └── 关闭记忆功能

2025 年 4 月升级:
  ChatGPT 可以引用所有历史对话(不只是显式记忆)
  → 更深度的个性化

Gemini Memory

2024 年 11 月:Google Gemini 推出 Memory 功能

特点:
  ├── 记住用户的生活信息、工作偏好
  ├── 基于记忆提供个性化回答
  └── 2025 年:支持从 ChatGPT/Claude 导入记忆

Claude Memory

2025 年 8 月:Anthropic 为 Claude 推出 Memory(付费用户)
2025 年 10 月:扩展到更多用户

特点:
  ├── 记住跨对话的项目信息和偏好
  ├── API 层面提供 Memory Tool
  │   → 开发者可以用 tool_use 接口管理 Claude 的记忆
  ├── 支持记忆导入/导出
  └── 2026 年 3 月:开放给免费用户

三家对比

维度ChatGPTGeminiClaude
首次上线2024.22024.112025.8
全量开放2024.92024.112026.3
自动提取记忆
用户管理界面
引用历史对话2025.4部分部分
API 支持有(Memory Tool)
导入/导出导入导入/导出

第五代:记忆基础设施(2025 年)

LangMem:长期记忆框架

LangMem(LangChain Memory,2025 年)

在 LangChain 早期 Memory 模块的基础上,
专门为长期记忆设计的框架:

  核心能力:
  ├── 从对话中自动提取关键事实
  │   "用户提到了用 FastAPI" → 存储 {framework: "FastAPI"}

  ├── 记忆分类
  │   ├── 用户偏好(喜欢简洁回答)
  │   ├── 项目事实(当前项目用 PostgreSQL)
  │   └── 对话事件(上次讨论了 API 设计)

  ├── 记忆检索
  │   根据当前对话语义,检索相关记忆

  └── 记忆更新
      新信息覆盖旧信息(用户换了技术栈 → 更新记忆)

记忆的标准正在形成

2025 年的趋势:

  1. 记忆正在成为 AI 产品的标配
     不再是加分项,而是基本功能

  2. 记忆可移植
     Google 和 Anthropic 都推出了记忆导入工具
     用户可以带着记忆从 ChatGPT 搬到 Gemini 或 Claude

  3. 记忆标准化
     记忆的格式、存储、检索正在走向标准化
     类似于联系人在不同手机之间同步

  4. 记忆的可控性
     用户越来越需要:
     ├── 查看AI记住了什么
     ├── 删除不想要的记忆
     ├── 控制记忆的使用范围
     └── 理解记忆如何影响 AI 的回答

五代演进总结

记忆管理的五代演进:

  第一代(2023 初):手动管理
    开发者自己存消息、做截断
    → 只能记住单次对话

  第二代(2023 中):框架抽象
    LangChain Memory 提供标准组件
    → 多种策略可选,但仍限于单次对话

  第三代(2023.10):LLM 自主管理
    MemGPT/Letta —— LLM 像 OS 一样管理记忆
    → 突破单次对话限制,跨会话持久记忆

  第四代(2024):产品级内置
    ChatGPT/Gemini/Claude 内置记忆功能
    → 普通用户无需编程就能拥有 AI 记忆

  第五代(2025):记忆基础设施
    记忆可移植、可管理、可标准化
    → AI 记忆成为可携带的数字资产

演进方向:
  从「开发者手动管」→「模型自主管」→「用户控制模型管」
  从「每次重新开始」→「跨对话积累」→「跨平台携带」

本节小结

概念要点
第一代手动管理消息数组——只能记住当前对话
第二代LangChain Memory 框架——标准化但限于会话内
第三代MemGPT/Letta——LLM 像 OS 一样自主管理记忆
第四代ChatGPT/Gemini/Claude 内置记忆——用户无需编程
第五代记忆可移植、可管理、可标准化——数字资产
演进方向开发者管理 → 模型自主管理 → 用户控制

思考题

  1. MemGPT 把 LLM 比作操作系统,上下文窗口比作 RAM。这个类比有什么局限?
  2. 如果用户可以「带着记忆换 AI 平台」(比如从 ChatGPT 搬到 Claude),这对 AI 公司的竞争格局有什么影响?
  3. 你认为 AI 的记忆应该由谁控制——用户、AI 公司、还是法律?