Skip to content

引言

2023 年初,一位用户在 Twitter 上吐槽 ChatGPT:

「我每天都要跟 ChatGPT 解释一遍我是谁、我在做什么项目、我用什么技术栈。感觉就像每天早上走进办公室,发现所有同事都失忆了一样。」

这不是一个 bug,而是一个根本性的设计局限——大模型 API 是无状态的。每次调用都是一次全新的对话,模型对你的上一条消息没有任何记忆。

这在当时被戏称为「AI 的金鱼记忆」——每次对话都只有 7 秒。你精心构建的上下文、反复调试的 system prompt、好不容易让模型理解的你的需求——全部在对话关闭的那一刻化为乌有。

记忆不是锦上添花的增值功能,而是 AI 从「工具」进化为「助手」的前提条件。 没有记忆,AI 永远只是一个需要你反复解释一切的新手。


无状态:大模型 API 的本质

为什么 API 是无状态的?

HTTP API 的设计原则:

  请求 1: 用户发送消息 → 模型生成回复 → 返回 → 结束
  请求 2: 用户发送消息 → 模型生成回复 → 返回 → 结束

  服务器不保存任何状态。
  两次请求之间没有任何关联。
  这和所有 Web API 的设计一致——无状态(Stateless)。

好处:
  ✓ 简单可靠,容易水平扩展
  ✓ 每次请求独立,不会互相影响

坏处:
  ✗ 模型不知道你是谁
  ✗ 模型不知道之前聊过什么
  ✗ 每次都要从零开始建立上下文

「金鱼记忆」的具体表现

没有记忆时的用户体验:

  第 1 天:
    用户:「帮我写一个 Python Web 服务,用 FastAPI 框架」
    AI:(写得不错)

  第 2 天:
    用户:「帮我加一个认证接口」
    AI:「好的,请问你用什么语言和框架?」
    用户:(沮丧)「昨天不是说了吗?Python + FastAPI!」

  第 3 天:
    用户:「上次的接口有个 bug,帮我修一下」
    AI:「请问你指的是哪个接口?能描述一下具体代码吗?」
    用户:(崩溃)

  每一次对话,都像在跟一个陌生人解释一切。

为什么这比看起来更严重?

记忆缺失影响的不仅是「方便」,更是「能力」:

  1. 无法积累用户偏好
     用户喜欢简洁的回答还是详细的?
     用户是初学者还是专家?
     → 每次都要重新猜测,回答风格不稳定

  2. 无法延续复杂任务
     一个大型项目需要多天、多轮对话
     → 每次都要从头解释项目背景、代码结构
     → 极度浪费时间和 token

  3. 无法个性化
     「用我喜欢的方式回答」
     → 模型不知道你喜欢什么方式

  4. 无法学习用户的纠正
     用户:「不要加注释」
     → 下一轮对话模型又开始加注释了

  5. 信任关系无法建立
     人类之间的信任建立在长期互动和记忆之上
     → AI 永远像一个「第一次见面的人」

记忆的类型:AI 需要记住什么?

AI 记忆的三个层次:

  ┌─────────────────────────────────────────┐
  │ 1. 会话记忆(Conversation Memory)       │
  │    记住当前对话中说过的话                 │
  │    「你刚才说用 FastAPI」                 │
  │    → 上下文窗口已经解决了这个问题         │
  ├─────────────────────────────────────────┤
  │ 2. 用户记忆(User Memory)               │
  │    记住跨对话的用户信息和偏好             │
  │    「这个用户喜欢 Python,用 FastAPI」    │
  │    → 需要额外的记忆系统                  │
  ├─────────────────────────────────────────┤
  │ 3. 知识记忆(Knowledge Memory)          │
  │    记住学习过的知识和事实                 │
  │    「上次查过这个 API 的文档,结论是...」  │
  │    → 需要知识库或 RAG 系统               │
  └─────────────────────────────────────────┘

会话记忆 vs 用户记忆

维度会话记忆用户记忆
范围单次对话内跨对话持久
存储位置上下文窗口(messages 数组)外部存储(数据库/文件)
生命周期对话结束即消失永久保存(直到被删除)
实现难度低(messages 数组天然支持)高(需要额外系统)
例子「你刚才说了 X」「你喜欢简洁的回答」
核心问题:

  会话记忆 → 上下文窗口 → 已经有了(但有限)
  用户记忆 → ??? → 这正是需要解决的关键问题

  上下文窗口只是「短期记忆」
  我们需要给 AI 加上「长期记忆」

没有记忆时的权宜之计

早期开发者的做法(2023 年)

方案 1:每次都重新发送完整上下文
  → 浪费 token,成本高

方案 2:在 system prompt 里写死用户信息
  System: "用户名张三,Python 开发者,喜欢简洁代码..."
  → 需要手动维护,不能自动学习

方案 3:把对话历史存数据库,每次加载最近 N 轮
  → 只解决会话内记忆,跨对话仍然不行

方案 4:用向量数据库存关键信息,按需检索
  → 有效但工程复杂
  → 这就是后来 LangChain Memory 的思路

痛点总结

开发者面对的核心困境:

  ┌──────────────────────────────────┐
  │ 上下文窗口 = 短期记忆             │
  │ 有上限、会清空、不能跨对话         │
  │                                  │
  │ 需要的是:                        │
  │ 长期记忆 = 持久化、自动学习、      │
  │ 跨对话可用、能检索相关信息          │
  │                                  │
  │ 2023 年:没有现成方案              │
  │ 2024 年:各家开始内置记忆功能       │
  │ 2025 年:记忆成为 AI 产品标配      │
  └──────────────────────────────────┘

记忆的价值:从工具到助手

没有记忆的 AI:
  → 一次性工具,用完即弃
  → 每次都要重新建立上下文
  → 用户觉得在「伺候」AI

有记忆的 AI:
  → 长期助手,越用越了解你
  → 自动记住偏好、项目背景、历史决策
  → 用户觉得 AI 在「伺候」自己

记忆是 AI 从「Chatbot」到「Personal Assistant」的分水岭。

  Chatbot:问答机器——问一次,答一次
  Assistant:私人助手——了解你,帮助你,记住你

真实场景

有记忆后的用户体验:

  第 1 天:
    用户:「我在做一个 Python FastAPI 项目」
    AI:(记住了:用户使用 Python + FastAPI)

  第 30 天:
    用户:「帮我写个新接口」
    AI:(自动使用 FastAPI 风格,不需要你再说)
    「好的,以下是 FastAPI 路由的代码...」

  第 100 天:
    用户:「这个接口加个缓存」
    AI:(记住了你的项目结构、Redis 配置)
    「在 your_project/cache/ 下添加...」

  用户的感受:「它真的了解我的项目。」
  这才是 AI 助手应该有的样子。

本节小结

概念要点
无状态 API每次调用独立,不保留任何状态——金鱼记忆的根源
记忆三层会话记忆(已有)、用户记忆(需要建设)、知识记忆(RAG)
记忆的价值从一次性工具进化为长期助手——AI 产品竞争力的核心
早期权宜之计手动塞 system prompt、存数据库加载——工程复杂且不自动
核心问题上下文窗口只是短期记忆,需要构建长期记忆系统

思考题

  1. 你在日常使用 ChatGPT / Claude 时,有哪些场景让你觉得「要是它能记住就好了」?
  2. 如果 AI 能记住你的所有对话,你最担心什么?
  3. 「会话记忆」和「用户记忆」的区别是什么?为什么后者实现起来更难?