今年4月,OpenAI为ChatGPT推出了记忆功能,使其能够引用过去的聊天记录,从而提供更个性化的回复。这项功能引发了广泛的好奇:它究竟是如何存储和检索这些海量对话信息的?
近日,研究者Manthan Gupta通过一系列实验,对ChatGPT和Claude的记忆系统进行了逆向工程分析。他发现,两大主流模型的记忆实现方式各有特色,且都比预想的更为精巧高效。

一、ChatGPT的记忆系统:四层架构
在剖析记忆架构前,需先理解ChatGPT处理每次对话时所接收的完整上下文结构:
[0] 系统指令
[1] 开发者指令
[2] 会话元数据(临时)
[3] 用户记忆(长期事实)
[4] 近期对话摘要
[5] 当前会话消息
[6] 用户的最新消息
其中,系统与开发者指令定义了模型的高层行为与安全规则。记忆功能的核心则由以下四层架构实现:
1. 会话元数据
这部分信息在每次会话开始时注入,不会被永久保存。其内容包括设备类型、浏览器、大致时区、用户订阅级别、近期活动频率、模型使用分布以及屏幕偏好等。这些元数据帮助模型适应用户的当前环境,但会话结束即失效。
2. 用户记忆(长期事实)
这是实现个性化的关键。ChatGPT使用专用工具存储关于用户的稳定、长期的数据点(Facts),例如姓名、职业目标、项目经历、个人偏好等。这些信息通常在用户明确指令(如“记住这个”)或模型检测到用户隐含同意时被存储。这些Facts会作为独立的数据块注入到未来的每一个提示中,形成持久的用户画像。对人工智能模型而言,这种明确的长期记忆是实现高度个性化交互的基础。

3. 近期对话摘要
令人意外的是,ChatGPT并未采用传统的RAG(检索增强生成)技术来检索完整历史。相反,它使用了一种轻量级的摘要机制,格式类似于:
1. <时间戳>: <对话标题>|||| 用户消息片段 |||
模型仅保留约15条这样的摘要,它们并非详尽记录,而是勾勒出用户近期兴趣的轮廓,以极低的Token成本维持跨对话的连贯性。
4. 当前会话消息(滑动窗口)
这是正在进行的对话的完整记录,确保会话内的推理连贯。但受限于Token预算,当对话长度超过窗口限制时,最早的消息会被移出窗口,而前述的长期记忆和对话摘要则不受影响。
协同工作流程:
- 会话开始:注入一次会话元数据。
- 每条消息处理:均包含长期用户记忆Facts。
- 跨会话感知:通过近期对话摘要实现。
- 会话内连贯性:由当前消息的滑动窗口保证。
这种分层设计使ChatGPT具备了强大的个性化和上下文感知能力,同时避免了为每次查询检索全部历史带来的高昂计算成本,相比传统的RAG方案更为高效可控。
二、Claude的记忆系统:按需检索
逆向ChatGPT后,Manthan Gupta又对Claude的记忆系统进行了分析。他发现Claude采用了截然不同的策略:按需工具调用与选择性检索,而非预先注入摘要。
Claude的提示结构如下:
[0] 系统提示(静态指令)
[1] 用户记忆
[2] 对话历史
[3] 当前消息
1. 用户记忆
与ChatGPT类似,Claude也以XML格式存储用户的精简、稳定事实(如姓名、工作、偏好)。记忆更新分为两种方式:隐式(根据对话在后台定期更新)和显式(用户通过“记住这一点”等指令直接编辑)。
2. 对话历史:三种机制协同
这是Claude与ChatGPT最大的不同之处,它采用了更复杂的多机制方案:
- 滚动窗口:存储当前对话的完整消息,约19万Token的上下文预算,超出则丢弃旧消息。
conversation_search工具:允许Claude在认为需要时,主动按主题或关键词搜索过去的对话。
recent_chats工具:允许Claude根据时间范围检索最近的对话。
这两种工具的响应会以包含标题和消息片段的格式返回,仅在模型判定相关时才会被调用。
协同工作流程:
- 系统提示和用户记忆提供持续背景。
- 滚动窗口维持当前会话连贯。
- 当模型推断需要更多历史上下文时,会主动调用搜索工具进行检索。
这种设计更加高效(不浪费Token在无关历史上),但也对模型的判断能力提出了更高要求——如果它未能检索相关上下文,可能会错过重要信息。
三、架构对比与思考
通过逆向工程,我们可以清晰地看到两种设计哲学:
- ChatGPT:采用预计算、分层注入的架构,通过会话元数据、长期记忆、近期摘要和滑动窗口四层,确保每次回复都具备连贯性与个性化,确定性较高。
- Claude:采用按需检索、工具驱动的架构,将长期记忆与当前窗口作为基础,把对深度历史的上文依赖交给模型主动判断和工具调用,灵活性更强。
这两种方案都是对海量对话上下文管理的精妙探索,旨在平衡个性化体验、计算成本与响应速度。对于开发者和研究者而言,理解这些底层机制,有助于更好地设计与大模型交互的策略,并启发自身AI应用中对记忆模块的实现。
本文基于Manthan Gupta的逆向工程研究,原文地址: