我逆向工程了 ChatGPT 的记忆系统,这是我的发现!• Manthan Gupta

本文翻译自博客上发布的文章:I Reverse Engineered ChatGPT’s Memory System, and Here’s What I Found!。作者通过逆向工程发现了 ChatGPT 的记忆系统的实现方式,与普遍猜测不同,ChatGPT 并没有使用复杂的向量数据库或针对对话历史的 RAG(检索增强生成)技术。相反,它采用了一种分层架构,主要由以下四个核心部分组成: 会话元数据 (Session Metadata) 这是在会话开始时一次性注入的临时信息,包括设备类型、浏览器信息、大致位置、订阅等级以及使用模式(如活跃频率)。 这些信息帮助模型根据用户当前的软硬件环境调整回复,但不会在会话结束后保留。 用户记忆 (User Memory) 这是一个专门用于存储长期事实的工具,例如用户的姓名、职业目标、健身习惯及个人偏好。 作者的案例中存储了 33 个事实。这些信息通常在用户明确要求(如“记住这个”)或模型检测到关键信息并获得隐含确认时被存储。 这些记忆作为一个独立的模块,会被注入到每一次未来的提示词(Prompt)中。 近期对话摘要 (Recent Conversations Summary) 系统不会检索过去对话的完整记录,而是保留一份轻量级的摘要列表。 该列表包含时间戳、对话标题以及用户消息的片段。 这种方法充当了用户近期兴趣的“粗略地图”,在避免高延迟和 Token 成本的同时,维持了跨对话的连续性。 当前会话消息 (Current Session Messages) 这是当前对话的完整历史记录,采用滑动窗口机制。 其容量基于 Token 数量限制而非消息条数。当达到限制时,旧消息会被移除,但用户记忆和对话摘要依然保留,以确保当前对话的连贯性。 传统的 RAG 系统需要对每条过去的消息进行嵌入(Embedding)和相似度搜索,成本高且延迟大。ChatGPT 的方法通过预计算轻量级摘要并直接注入,牺牲了部分历史细节,换取了更快的响应速度和更高的效率。 原文 当我问 ChatGPT 它记得关于我的什么时,它列出了从我的名字和职业目标到我目前的健身计划等 33 个事实。但它实际上是如何存储和检索这些信息的呢?为什么感觉如此无缝? 经过广泛的实验,我发现 ChatGPT 的记忆系统比我预期的要简单得多。没有向量数据库。没有基于对话历史的 RAG(检索增强生成)。相反,它使用四个不同的层:适应你环境的会话元数据、长期存储的显式事实、最近聊天的轻量级摘要以及当前对话的滑动窗口。 这篇博客详细剖析了每一层是如何工作的,以及为什么这种方法可能优于传统的检索系统。这里的所有内容都来自于通过对话对 ChatGPT 行为的逆向工程。OpenAI 并没有公布这些实现细节。 ChatGPT 的上下文结构 在理解记忆之前,重要的是要理解 ChatGPT 接收到的每条消息的完整上下文。结构如下: [0] 系统 指令 [1] 开发者 指令 [2] 会话 元数据 (临时的) [3] 用户 记忆 (长期 事实) [4] 最近 对话 摘要 (过去的 聊天, 标题 + 片段) [5] 当前 会话 消息 (本次 聊天) [6] 你的 最新 消息 前两个组件定义了高级行为和安全规则。它们不是本博客的重点。有趣的部分始于会话元数据。...

December 11, 2025 · 2 min · fisherdaddy