MemoryLake
返回全部文章
Tutorial2026 年 8 月 18 日·10 分钟阅读

如何让 ChatGPT 真正记住你的偏好 (2026)

你已经告诉过它了。不止一次。你更喜欢公制单位,你希望在解释之前先给出代码,你不想使用破折号,你使用的是 TypeScript 而不是 JavaScript。有些偏好能维持一周。有些偏好再次出现时却变了样。偶尔,ChatGPT 还会自信地应用你几个月前就已经放弃的偏好。

原因并不是记忆功能坏了。而是因为 ChatGPT 拥有两个看似记忆但行为完全不同的系统,只有当偏好被放在正确的系统里时,它才能可靠地保持下去。

一个听从指挥:自定义指令(custom instructions),这是一个由你编写并应用于每个对话的字段。另一个进行推断:记忆(memory),OpenAI 将其描述为“对你过去对话中上下文的持续更新综合”。告诉第二个系统该做什么只是一个请求,而不是一个设置——而且官方文档也坦言你无法完全审计其结果,指出记忆摘要“不会包含 ChatGPT 根据你的对话所记住的所有内容”,并且“如果你想知道 ChatGPT 是否记住了某些内容,只需在对话中询问即可”。

本文将详细分析偏好失效的原因、每种偏好应该归属于哪个系统,以及如何避免每隔几周就重复声明同样的事情。

为什么你的偏好无法保持

两个系统,只有一个听从指挥

首先来看看它们各自的用途。OpenAI 将记忆定位为一种个性化功能——其声明的目的是“个性化你的体验,这样你就不需要经常重复自己”。仔细阅读这句话:经常。它是一个旨在减少重复的便利层,而不是一个保证行为的配置库。

自定义指令才是配置库。你放入该字段的任何内容都会被逐字存储,并且根据 OpenAI 的说法,“立即应用于所有对话”。如果某个偏好是不可妥协的,它就属于这里。相反,如果你是在对话中输入它,你只是向一个旨在推断模式的系统提交了一个建议。

这单一的区别解释了大多数偏好漂移的原因。人们在对话中声明需求,这些需求变成了综合素材,然后纳闷为什么该需求没有被一致地执行。

综合体可以同时持有关于你的两个矛盾信念

这就是产生真正奇怪体验的部分。因为记忆是一个持续运行的综合体,而不是当前事实的列表,所以它可以同时携带旧的结论和新的结论。OpenAI 自己的文档用马拉松训练和脚踝扭伤的例子说明了这一点——在不同时间段有意义的上下文,现在同时存在。

应用到偏好上,情况就像是:你在学习某个框架时更喜欢详细的解释,而现在你想要简短的输出,这两种解读都存在于综合体中的某个地方。模型会进行选择。有些日子,你会得到三月份那个版本的你。

你确实有一些控制手段。记忆摘要可以被审查和纠正,并且有一个文档记录的刷新路径——设置(Settings),然后是个性化(Personalization),然后是记忆摘要(Memory Summary),然后是管理(Manage),最后是从三点菜单中选择刷新(Refresh)——适用于摘要看起来比预期更空或更陈旧的情况。如果你使用的是旧版系统,保存的记忆是一个可枚举的列表,OpenAI 指出“除非你删除它们,否则保存的记忆在未来的回复中总是会被考虑在内”,这使得删除过时的记忆成为一个具有实际效果的真实操作。一般的排查方法可以参考当 ChatGPT 记忆不起作用时该怎么办

有些偏好并非全局性的,而全局性是设置的唯一形式

“我想要简短的回答”可能在任何地方都适用。“使用英式拼写”对一个客户来说是对的,对另一个客户来说则是错的。“偏好函数式风格”适用于某一个代码库。

自定义指令在设计上是适用于整个账户的,记忆同样是关于你个人而不是关于特定上下文的。因此,特定上下文的偏好落入了一个没有上下文概念的系统中,这导致了该问题的一个变体:偏好在一半的时间里是正确的,而在另一半的时间里却令人恼火。项目(Projects)有所帮助——它们有自己的记忆空间——但它们也引入了自己的边界,这是一个单独的话题。

临时对话和账户边界悄悄打破了循环

有两个记录在案的行为解释了其他令人困惑的差距。根据 OpenAI 的说法,临时对话(Temporary Chats)“不使用现有记忆,也不创建新记忆”。因此,你在临时对话中声明的偏好永远不会持久,而你已经拥有的偏好也不会应用到那里。

而且记忆不会跨账户:“记忆:与每个个人账户绑定。不可转移给其他用户,即使在同一个 Business 工作区内也是如此。”在 Business 工作区中,还有一个值得注意的细节——如果工作区所有者关闭了该工作区的记忆功能,“该工作区成员现有的已保存记忆将被删除”。你积累的偏好可能会因为你未曾做出的行政变更而被清除。

人们尝试过的方法

大声地再说一遍。“我已经告诉你三次了。”这只对当前的对话有效,无法让系统学到任何持久的东西,因为对话不是设置屏幕。

编写非常长的自定义指令。 找对了系统,但会遇到硬性上限:Free 和 Go 计划为 1,500 个字符,Plus、Pro、Enterprise、Business 和 Education 计划为 5,000 个字符。偏好加上项目上下文再加上风格样本,根本装不下。被删掉的通常是你最新添加且最具体的内容。

要求 ChatGPT “记住我更喜欢 X”。 总比没有好——它可能会成为综合体的一部分。但这是一个请求,而不是写入,除了以后询问之外,你无法验证它是否真正生效。

定期整理记忆摘要。 确实有用且未被充分利用。但这也是对派生工件的维护工作,这意味着你是在编辑摘要,而不是单一事实来源。

注销并重新注册一个新账户。 重置了噪音,但也丢失了一切,包括那些原本有效的偏好。而且积累问题从第一天起就会重新开始——这会遇到与当 ChatGPT 记忆已满时相同的瓶颈。

在每次对话的顶部粘贴一个偏好块。 万能的备用方案。它确实有效,但每次对话都会消耗 token,而且它完全依赖于你的习惯——因此当你更换设备、工具或助手时,它就无法延续。

解决方案:声明需求、存储知识,停止重复这两者

一个稳固的配置包含三个层级,而常见的错误是试图让一个层级承担所有这三项工作。

第一层——需求。 少数必须始终保持的行为。这些内容放入自定义指令中,保持简短且可测试,远低于字符限制。让它们具体到可以进行评估:例如“除非我要求提供细节,否则回答控制在 150 字以内”,而不是“保持简洁”。

第二层——观察。 让记忆去做它擅长的事:注意到你使用 TypeScript 工作、你身在柏林、你更喜欢例子而不是理论。当它偏离时进行纠正,但不要在任何你必须要求的事务上依赖它。

第三层——知识。 既不是行为规则也不是关于你的个人事实的所有内容:你的项目结构、你的约束条件、你的决策,以及对于设置字段来说太长的风格样本。这一层在 ChatGPT 内部没有归宿,这就是为什么它不断泄露到另外两个层级中并破坏它们的原因。

MemoryLake 就是第三层:一个供你的助手读取的记忆层,这样自定义指令就可以保持为一份简短的偏好表,而记忆可以保持为个性化功能。设置只需三个步骤。

步骤 1:创建 API 密钥

登录 MemoryLake 并创建一个 API 密钥。一个凭证即可跨越你连接的所有工具——这很重要,因为你关心的偏好通常不仅限于 ChatGPT。

创建 MemoryLake API 密钥以让 ChatGPT 记住你的偏好
创建 MemoryLake API 密钥以让 ChatGPT 记住你的偏好

步骤 2:上传你的第一批记忆

写下你不断重复声明的内容,每条目一项。不仅是行为偏好:还有让它们产生意义的上下文。“Acme 账户使用英式拼写,其他所有账户使用美式拼写”是一个只有在上下文随之移动时才起作用的偏好。添加项目事实、约束条件、决策和原因——这些都是以前塞满你 1,500 字符字段的材料。

在 MemoryLake 工作区中记录偏好及其上下文
在 MemoryLake 工作区中记录偏好及其上下文

保持条目简短且主题单一,宁可删除也不要堆积。一个同时包含三月份的你和八月份的你的偏好层,会遇到与综合体相同的问题。

步骤 3:连接你的 AI 和智能体

连接你使用的工具。MemoryLake 可以通过 MCP 和 API 访问,因此原生支持 MCP 的智能体(包括 Claude Code、Codex 和 OpenClaw)可以通过指向 MCP 服务器进行连接,而其他助手则通过 API 读取相同的记忆。你的需求保留在保证加载的字段中;你的上下文变得可检索;并且下个月无论你使用什么工具,都可以使用相同的偏好。

连接助手以使偏好在 ChatGPT 之外也起作用
连接助手以使偏好在 ChatGPT 之外也起作用

两个坦诚的限制。这不会写入 ChatGPT 的记忆——该系统仍然属于 OpenAI,你需要的偏好仍然属于自定义指令字段。而且它不是强制执行:在任何助手中,没有哪个记忆层能强迫模型绝对服从。

这在实践中带来了什么改变

偏好不再倒退回旧版本的你。 当需求是被声明而不是被推断时,就不会有与之竞争的三月份旧结论让你败下阵来。

字符上限不再强迫你做出权衡。 如今,添加一条有用的指令可能意味着要删除另一条。当知识存在于别处时,该字段只保存行为规则,永远不会被填满。

特定上下文的偏好变得可行。 当客户上下文可检索时,“该客户使用英式拼写”就可以被表达出来。而在适用于整个账户的字段中,它要么总是开启,要么总是关闭。

纠正不再凭空消失。 最常见的偏好丢失是在对话中途给出的纠正,这些纠正从未进入任何持久的地方。记录它只需十秒钟,并且它能在会话结束后继续存在。

相同的偏好在其他助手中也适用。 自定义指令仅限 ChatGPT 且没有 API。你在 Claude、Cursor 或智能体中想要的任何内容都必须存在于外部——这种形式在跨越 ChatGPT、Claude 和 Gemini 的统一记忆中有所介绍。

保持偏好有效的最佳实践

将需求放入字段中,而不是对话中。 如果你看到它被违反会感到恼火,那么它就是一项需求。需求应该放在它们会被逐字存储的地方。

让每个偏好都可评估。 一个你可以检查其合规性的偏好,才是模型可以遵循的偏好。模糊的偏好会得到合理的解释,但那并不是你的本意。

每季度进行修剪。 无论是指令字段还是你的记忆。旧的偏好是导致“它为什么会那样做”体验的主要根源。

当摘要看起来不对时,使用刷新路径。 设置(Settings) → 个性化(Personalization) → 记忆摘要(Memory Summary) → 管理(Manage) → 刷新(Refresh)。这是记录在案的操作,只需几秒钟,而大多数人从未打开过它。

不要在临时对话中声明偏好。 它们不会被存储——临时对话不使用也不创建记忆。

为特定上下文的偏好附加上下文。 “简短”是全局性的。“英式拼写”则不是。在偏好旁边写明适用范围,才能使其发挥作用。

不要指望任何内容可以在账户之间转移。 记忆是针对每个账户的,不可转移给其他用户,即使在同一个 Business 工作区中也是如此。如果团队成员需要相同的上下文,它必须存在于某个共享的地方。

了解管理员可以更改的内容。 在 Business 工作区中,所有者关闭记忆功能会删除成员现有的已保存记忆。如果这会带来损失,请将重要部分保存在外部。

结论

“让 ChatGPT 记住我的偏好”原来是两个不同的请求。你必须要求的偏好应该在自定义指令中声明,它们会被逐字存储并应用于每个对话。你只是希望拥有的偏好可以留给记忆,这是一个尽力而为的综合体——它很有用,但不是存放任何你因丢失而感到沮丧的内容的地方。

破坏系统的是第三类没有人为其提供归宿的内容:使偏好具有意义的知识和上下文,这对于 1,500 字符的字段来说太大了,而对于综合体来说又太具体了。给它一个专属的层级,ChatGPT 的两个系统就都能发挥它们真正擅长的作用。如果你想了解症状背后的机制,为什么 ChatGPT 会忘记你的个人偏好对此进行了介绍,而赋予 ChatGPT 长期记忆则介绍了通用设置。

常见问题

为什么 ChatGPT 能记住某些偏好,却记不住其他偏好?

因为它们落入了不同的系统。你放入自定义指令字段的偏好会被逐字存储并应用于每个对话。你在对话中提到的偏好可能会成为记忆的一部分,OpenAI 将其描述为持续更新的综合体——它是推断出来的而不是记录下来的,并且无法完全列举。

我该如何查看 ChatGPT 记住了哪些关于我的偏好?

在“设置”下的“个性化”中打开记忆摘要。请注意 OpenAI 的警告,即该摘要“不会包含 ChatGPT 根据你的对话所记住的所有内容”,以及它的建议:如果你想知道是否存储了某些特定内容,只需在对话中询问即可。

为什么它有时会应用旧的偏好?

因为综合体可以同时持有来自不同时期的结论——OpenAI 的文档用新旧上下文共存的例子说明了这一点。纠正摘要以及在旧版系统上删除过时的已保存记忆是文档中记录的补救措施。

我应该把偏好放在自定义指令中,还是直接告诉 ChatGPT?

如果你必须要求某种行为,请使用该字段:它会立即应用于所有对话。请记住限制——Free 和 Go 计划为 1,500 个字符,Plus、Pro、Enterprise、Business 和 Education 计划为 5,000 个字符——因此该字段应该保存行为规则,而不是项目知识。

偏好会带入临时对话中吗?

不会。OpenAI 的文档指出,临时对话“不使用现有记忆,也不创建新记忆”,因此你在那里声明的任何内容都不会持久,现有的记忆也不会被应用。

我的团队成员可以继承我的偏好吗?

不能。记忆与每个个人账户绑定,不可转移给其他用户,即使在同一个 Business 工作区内也是如此。共享的上下文必须存在于共享的地方,而不是一个人的助手中。