干货:从零构建一个超越ChatGPT和Claude客户端的长期记忆能力系统!逆向剖析记忆功能的工程实现
- 内容介绍
- 文章标签
- 相关推荐
引言
佬们如果曾经深入使用过ChatGPT或Claude,一定会注意他们的记忆功能:他们似乎记得你,能够在新的对话中回忆起你的偏好、背景信息,甚至几周前讨论过的话题细节。这种跨会话的记忆能力,远远超出了单次对话中的上下文窗口管理,背后是一套精心设计的长期记忆系统。
本文基于多篇逆向工程博客,结合我长期使用ChatGPT和Claude的实践经验,对两者的长期记忆实现方式进行了系统性的梳理和分析。需要说明的是,这篇文章更侧重于从产品和工程实现的角度进行剖析,而非底层代码实现。即使你没有深厚的理工背景,也能够理解这些系统的设计思路和工程实践价值。
由于CLoseAI在system prompt中包含了明确的防injection指令,并且专门训练防止被套取内部实现细节,因此不同于Claude在博客上公开分享的诸多技术细节,OpenAI的记忆系统大多依赖逆向工程推测。本文将综合这些研究成果,揭示这两个主流AI助手在长期记忆上的异同。
从API到客户端的上下文管理
在深入讨论长期记忆系统之前,我们需要先理清一些基础但容易混淆的概念,懂的佬麻烦直接跳过。Session、thread、prompt、chat等术语在不同的上下文中往往有不同的含义,业界并没有统一的定义标准。我们在这里将session和thread看作你开的一个对话窗口里所有消息的集合。prompt和chat则对应你发的每一条消息或模型的回复。
从API层面来看,OpenAI和Anthropic采用了不同的数据格式。OpenAI使用JSON格式的chat completion API,将每条消息分为system、user和assistant三种角色;而Anthropic则采用XML风格的格式,将user消息称为human消息。这些是我们在调用API时直接面对的接口层。
然而,真正的复杂性在于客户端实现。当你在ChatGPT或Claude的Web界面中进行对话时,发送给后端的并不是简单的消息数组,而是经过精心设计的上下文管理结果,也就是我们常说的context engineering。
引言
佬们如果曾经深入使用过ChatGPT或Claude,一定会注意他们的记忆功能:他们似乎记得你,能够在新的对话中回忆起你的偏好、背景信息,甚至几周前讨论过的话题细节。这种跨会话的记忆能力,远远超出了单次对话中的上下文窗口管理,背后是一套精心设计的长期记忆系统。
本文基于多篇逆向工程博客,结合我长期使用ChatGPT和Claude的实践经验,对两者的长期记忆实现方式进行了系统性的梳理和分析。需要说明的是,这篇文章更侧重于从产品和工程实现的角度进行剖析,而非底层代码实现。即使你没有深厚的理工背景,也能够理解这些系统的设计思路和工程实践价值。
由于CLoseAI在system prompt中包含了明确的防injection指令,并且专门训练防止被套取内部实现细节,因此不同于Claude在博客上公开分享的诸多技术细节,OpenAI的记忆系统大多依赖逆向工程推测。本文将综合这些研究成果,揭示这两个主流AI助手在长期记忆上的异同。
从API到客户端的上下文管理
在深入讨论长期记忆系统之前,我们需要先理清一些基础但容易混淆的概念,懂的佬麻烦直接跳过。Session、thread、prompt、chat等术语在不同的上下文中往往有不同的含义,业界并没有统一的定义标准。我们在这里将session和thread看作你开的一个对话窗口里所有消息的集合。prompt和chat则对应你发的每一条消息或模型的回复。
从API层面来看,OpenAI和Anthropic采用了不同的数据格式。OpenAI使用JSON格式的chat completion API,将每条消息分为system、user和assistant三种角色;而Anthropic则采用XML风格的格式,将user消息称为human消息。这些是我们在调用API时直接面对的接口层。
然而,真正的复杂性在于客户端实现。当你在ChatGPT或Claude的Web界面中进行对话时,发送给后端的并不是简单的消息数组,而是经过精心设计的上下文管理结果,也就是我们常说的context engineering。

