经过大量实验,发现 ChatGPT 的记忆系统远比预想中简单:没有向量数据库,也没有基于对话历史的检索增强生成(RAG),取而代之的是四个独立的层级:适配环境的会话元数据、长期存储的明确事实、近期对话的轻量摘要,以及当前对话的滑动窗口。
一、ChatGPT 的上下文结构
要理解记忆系统,首先需要明确 ChatGPT 处理每条消息时接收的完整上下文。其结构如下:
-
0\] 系统指令
-
2\] 会话元数据(临时)
-
4\] 近期对话摘要(过往聊天的标题 + 片段)
-
6\] 你的最新消息
二、四大记忆层级详解
1. 会话元数据(Session Metadata)
这类信息仅在会话开始时注入一次,不会永久存储,也不会成为长期记忆的一部分。该模块包含:
- 设备类型(桌面端 / 移动端)
- 浏览器及用户代理(User Agent)
- 大致位置 / 时区
- 订阅等级
- 使用模式与活跃频率
- 近期模型使用分布
- 屏幕尺寸、暗黑模式状态、JavaScript 启用情况等
会话元数据示例:
- 用户订阅:ChatGPT Go
- 设备:桌面浏览器
- 浏览器用户代理:macOS(Intel芯片)上的Chrome浏览器
- 大致位置:印度(可能使用VPN)
- 当地时间:约16:00
- 账户时长:约157周
- 近期活跃度:
- 过去1天内活跃1天
- 过去7天内活跃5天
- 过去30天内活跃18天
- 对话模式:
- 平均对话深度:约14.8条消息
- 平均用户消息长度:约4057字符
- 模型使用分布:
* 5% gpt-5.1
* 49% gpt-5
* 17% gpt-4o
* 6% gpt-5-a-t-mini
* 等
- 设备环境:
- JavaScript已启用
- 暗黑模式已启用
- 屏幕尺寸:900×1440
- 页面视口:812×1440
- 设备像素比:2.0
- 当前会话时长:约1100秒
这些信息能帮助模型根据你的使用环境定制回复,但会话结束后所有数据都会失效。
2. 用户记忆(User Memory)
ChatGPT 拥有专门的工具,用于存储和删除关于用户的稳定、长期事实。这些信息会在数周、数月内不断累积,形成一个持久的 "用户画像"。
以我为例,模型存储了 33 个事实,包括:
- 姓名、年龄
- 职业目标
- 背景与过往工作经历
- 当前项目
- 学习领域
- 健身计划
- 个人偏好
- 长期兴趣
这些记忆并非模型猜测得出,仅在以下两种情况下会被明确存储:
用户明确指令:例如:"记住这个" 或 "把这个存入记忆";
模型检测到符合 OpenAI 标准的事实(例如:姓名、职位、明确偏好),且用户通过对话隐含同意。
这些记忆会作为独立模块,注入未来的每一次提示词中。
用户记忆示例:
- 用户姓名:曼坦·古普塔(Manthan Gupta)
- 曾任职于Merkle Science和 Qoohoo(YC W23项目)
- 偏好通过视频、论文和实操结合的方式学习
- 开发过 TigerDB、CricLang、负载均衡器、FitMe等项目
- 正在研究现代信息检索系统(LDA、BM25、混合检索、稠密嵌入、FAISS、RRF、大模型重排序)
3. 近期对话摘要(Recent Conversations Summary)
这是最让我意外的部分,我本以为 ChatGPT 会对过往对话使用某种 RAG 技术,实则采用了轻量摘要的方式。
ChatGPT 会以以下格式存储近期对话摘要列表:
1. <时间戳>:<聊天标题>
|||| 用户消息片段 ||||
|||| 用户消息片段 ||||
关键发现:
仅总结用户消息,不包含助手回复;
最多存储约 15 条摘要;
仅作为用户近期兴趣的 "粗略地图",而非详细上下文。
ChatGPT 的方案更简洁:预先生成轻量摘要并直接注入,以牺牲部分细节为代价,换取速度和效率的提升。
4. 当前会话消息(Current Session Messages)
这是当前对话的常规滑动窗口,包含本次会话中所有消息的完整历史(未摘要处理)。
虽然我未能获取 ChatGPT 确切的 token 限制,但模型确认了以下规则:
- 限制基于 token 数量,而非消息条数;
- 达到限制后,当前会话中较早的消息会被移除(但记忆事实和对话摘要仍保留);
- 该模块的所有内容都会原封不动传递给模型,以维持完整的会话连贯性。
这也是模型能在单一会话中进行连贯推理的核心原因。
三、记忆系统的协同工作原理
当你向 ChatGPT 发送消息时,整个流程如下:
- 会话启动:注入会话元数据,让模型了解你的设备、订阅状态和使用模式;
- 每条消息处理:始终包含你的存储记忆事实(我案例中是 33 条),确保回复贴合你的偏好和背景;
- 跨会话感知:通过近期对话摘要获取用户近期兴趣,无需调取完整历史;
- 当前上下文维护:借助当前会话的滑动窗口,保障单一会话内的连贯性;
- Token 预算控制:会话持续推进时,较早的消息会被移除,但记忆事实和对话摘要保留,维持整体连贯性。
这种分层设计让 ChatGPT 既能提供个性化、上下文感知的体验,又无需承担检索数千条过往消息的计算成本。