如果我变成回忆 - 聊聊不同 AI 工具的「记忆设计」
If I became a memory: how AI tools design memory我最近越来越明显地感觉到一件事:
不同 AI 工具的“记忆感”差异非常大。
ChatGPT 有时候像一个长期认识我的人。它知道我的表达偏好,知道我不喜欢泛泛的大道理,也知道我最近在做什么项目。
Claude 更像一个克制的协作者。它能接住上下文,但通常不会显得过分私人化。
Codex 和 Claude Code 又是另一种。它们不像在记“我这个人”,而是在记一个项目、一个 repo、一个任务现场。
一开始我以为,这是不同模型的“性格”不同。
但后来我意识到,这不只是模型性格。更重要的是:
它们的记忆系统,本来就不是为了同一种目的设计的。
先说清楚:AI 的记忆通常不是模型自己记住了你
大多数时候,不是模型真的把你这个人记在脑子里。
模型本身更像一个很聪明的人。但它每次开始回答前,需要有人把相关材料递给它。
这个过程大概是:
用户提问 → 系统检索相关历史 / 记忆 / 项目文件 / 工具结果 → 把这些信息放进当前上下文 → 模型基于这次上下文回答
所以所谓“AI 记得我”,很多时候其实是:
它在回答前,被递了一份关于你、关于项目、关于任务的 briefing note。
真正产生差异的地方在于:
不同产品选择了不同的“该记什么”。
ChatGPT:更像在记“人”
ChatGPT 的记忆系统,整体更接近个人助理。
它的记忆大概有几层。
第一层,是 Custom Instructions / 个性化设置。
这类信息更像全局规则。比如:
- 你希望回答简洁;
- 你希望先给结论;
- 你不喜欢 AI tone;
- 你希望它用某种语气和结构回答。
这类内容适合放在 settings 里。因为它不是某一个项目的要求,而是你希望 AI 长期如何与你协作。
第二层,是 Saved Memories / Memory Summary。
这类更像 AI 对你的长期理解。比如:
- 你是谁;
- 你在什么行业;
- 你长期在做什么方向;
- 你有哪些稳定偏好;
- 你反复推进的长期目标是什么。
这类信息不需要每次都写进 prompt。系统会在合适的时候把它带入当前上下文。
但这里也有风险。
如果它记住的是“稳定偏好”,很好。如果它把阶段性状态当成长期特征,就会出问题。
比如你某天说“我最近很低落”,它不应该长期记成“你是一个低落的人”。
你某个月在找工作,它不应该永远默认“找工作是你人生最重要的目标”。
所以 ChatGPT 这种以人为中心的记忆,体验很顺,但也最需要修剪。
第三层,是 Reference Chat History / 参考历史聊天。
这不是你显式保存的记忆,而是系统可能从过去聊天里找出相关内容,带入当前回答。
这也是为什么 ChatGPT 有时候会突然接住很久以前的上下文。它不是每一句都永久记住,而是会从历史里召回可能相关的信息。
第四层,是 Projects / 项目记忆。
ChatGPT 的 Projects 很关键。
在普通模式下,ChatGPT 的全局记忆和历史可能会影响项目内回答。但如果开启 project-only memory,这个项目就会更像一个独立空间:
- 项目内聊天可以互相参考;
- 项目可以使用项目自己的文件和 instructions;
- 但不会引用项目外的聊天或 saved memories;
- 项目里的内容也不会带到项目外。
这个设计非常重要。
因为不是所有长期上下文都应该混在一起。
比如:
求职项目;独立产品;内容创作;健身计划;情绪复盘。
这些东西如果全部混在一个大记忆池里,AI 很容易串台。
你问求职,它想起情绪。你问产品,它想起关系。你问内容,它想起银行。
这就不只是“不准”,而是有点灾难。
所以 ChatGPT 更适合这样用:
- 全局 Settings: 放稳定沟通偏好和长期身份背景。
- Saved Memory: 放你希望它长期记住、跨场景有用的信息。
- Project Instructions: 放只属于这个项目的目标、风格、限制、输出格式。
- Project Files / Sources: 放这个项目的资料、文档、历史总结。
- Project-only memory: 适合敏感项目、长期项目、边界很重要的项目。
一句话:
ChatGPT 记的是“人”,但 Projects 是用来防止它把所有版本的你搅成一锅粥。
Claude:更像在记“协作关系”
Claude 的记忆感不太一样。
它也有个人化能力,但整体更克制。
Claude 有几个层次:
第一层,是 Profile Instructions。
这更像你对 Claude 的全局协作要求。比如你希望它如何回答、如何称呼你、偏好什么语气和结构。
第二层,是 Project Instructions。
Claude 的 project instructions 只在那个 project 里生效。这点很重要。
如果你在 Claude 里创建一个项目,比如“AI 内容写作”,那这个项目里的 instructions 只服务这个项目。它不会自动影响另一个项目,比如“健身计划”或者“求职准备”。
第三层,是 Project Knowledge Base。
Claude 的项目空间更强调“自包含”。
你可以把资料、项目说明、文档放进去,Claude 会在这个项目里使用。但如果信息没有被加入 project knowledge base,项目内不同聊天之间并不会天然共享所有上下文。
这点和很多人的直觉不一样。
你可能以为:“我在同一个 Claude project 里聊过,Claude 应该都知道。”
但更准确地说:它需要通过项目知识库、项目摘要或记忆机制来建立连续性。不是每个聊天天然共享全部原始上下文。
第四层,是 Memory Summary。
Claude 也可以生成 memory summary。你可以在设置里查看和编辑它。它也可以基于你的聊天历史形成对你和工作方式的总结。
但 Claude 的 project memory 是分开的。每个 project 有自己的 memory space 和 project summary。
这意味着:
一个项目里学到的上下文,不会自动带到另一个项目。
所以 Claude 给人的感觉更像:
“我认真记录了我们在这个项目里的协作方式。”而不是:“我对你这个人有一套跨场景的长期画像。”
这就是它和 ChatGPT 很大的不同。
ChatGPT 更容易像一个长期个人助理。Claude 更像一个边界清晰的合作伙伴。
它不一定那么贴身。但它更不容易乱串。
Claude 适合这样用:
- Profile Instructions: 放全局协作偏好。
- Project Instructions: 放这个项目的目标、输出风格、工作方式。
- Project Knowledge Base: 放项目资料、参考文档、固定背景。
- Memory Summary: 放更长期的协作偏好和重要背景,但需要定期查看和修正。
- Incognito / 临时聊天: 适合不想进入记忆或历史个性化的内容。
一句话:
Claude 记的不是一个“私人化的你”,而是一个“协作中的你”。
Codex:更像在记“任务现场”
Codex 的记忆逻辑又完全不同。
它不是来陪聊的。它是来干活的,尤其是干代码里的活。
所以它最关心的不是:
- 你是谁;
- 你今天状态如何;
- 你喜欢什么表达方式。
它更关心:
- 这个 repo 怎么跑;
- 怎么测试;
- 代码风格是什么;
- 哪些目录不要碰;
- 这个项目有哪些坑;
- 上次 debug 到哪里;
- 什么 workflow 已经稳定。
Codex 里很关键的一类东西是 AGENTS.md。
你可以把它理解成 coding agent 的项目说明书。
里面适合写:
项目结构 启动方式 测试命令 代码规范 PR 检查要求 不要修改的文件 常见坑 完成任务前必须验证什么
Codex 会在开始工作前读取这些项目指令。而且它支持不同层级的指令:全局、项目、子目录。
这和 ChatGPT 的 saved memory 很不一样。
Saved memory 更像“用户画像”。AGENTS.md 更像“项目规则”。
Codex 也有 memories,但它们更适合记:
- 稳定偏好;
- 重复 workflow;
- 技术栈;
- 项目约定;
- 已知坑点。
但官方也强调:如果是必须遵守的团队规则,不应该只放在 memory 里,而应该写进 AGENTS.md 或项目文档。
这点非常重要。
因为 memory 是帮助召回,不是硬规则。
如果你真的不希望 agent 乱来,不能只靠一句“请记住不要改这个文件”。你应该把规则写在项目文档、配置、权限、sandbox 里。
Codex 还可以用 Skills,把重复任务沉淀成可复用 workflow。比如:
- 写 release notes;
- 检查 CI failure;
- 扫描常见 bug;
- 生成 standup summary;
- 做某类固定代码迁移。
所以 Codex 的“记忆”更像一个工程现场系统:
- AGENTS.md: 稳定项目规则。
- Memories: 稳定偏好、技术栈、历史坑点。
- Skills: 可复用工作流。
- Automations: 稳定工作流的定时执行。
- Config / Permissions: 真正控制它能不能读、写、联网、执行。
一句话:
Codex 记的不是你的人生,而是这个项目怎么被安全推进。
Claude Code:更像在记“工程工作笔记”
Claude Code 和 Codex 很像,但它的记忆设计更像一个工程师的本地工作笔记。
它有两套核心机制:
第一套是 CLAUDE.md。
这相当于你写给 Claude Code 的说明书。它可以存在不同层级:
全局的 CLAUDE.md:适合放你的个人开发偏好,比如你总是用 pnpm、不喜欢某些测试方式、希望它优先写 tests。
项目里的 CLAUDE.md:适合放项目架构、启动方式、测试命令、代码规范。
子目录里的 CLAUDE.md:适合放某个模块的特殊规则。
第二套是 Auto Memory。
这不是你写的,而是 Claude Code 自己根据你的纠正和使用过程积累的 notes。
它适合记录:
构建命令;debug 经验;架构线索;代码风格;Claude 自己踩过的坑;你反复纠正它的偏好。
但有一点很关键:
Claude Code 的这些 memory 会在 session 开始时加载为 context。它们不是强制配置。
也就是说,Claude Code 看到这些规则后,通常会更好地遵守。但如果你要真正禁止某种操作,应该用 hooks、permissions、sandbox 这类硬约束。
这和人很像。
你给一个同事写了 onboarding note,他大概率会照做。但如果某件事绝对不能发生,你不能只靠 note,你需要权限系统。
所以 Claude Code 的正确用法大概是:
- CLAUDE.md: 写你希望它长期遵守的项目说明和工作方式。
- Auto Memory: 让它自动沉淀 debug 经验和使用习惯。
- Rules / Hooks / Permissions: 用来做真正的边界控制。
- Prompt: 只放这一次任务的目标和具体要求。
一句话:
Claude Code 不是在记你是谁,而是在给每个 repo 建一份工程记忆。
所以它们为什么设计得不同?
因为它们要解决的问题不同。
ChatGPT 的核心问题是:
用户不想每次都重新介绍自己。
所以它更以人为中心。它要知道你的长期背景、偏好、目标和沟通方式。
Claude 的核心问题是:
复杂协作需要连续性,但不要过度侵入。
所以它更以项目和协作关系为中心。它尽量让每个项目保持自己的上下文边界。
Codex / Claude Code 的核心问题是:
AI 不能每天重新入职,也不能乱改真实项目。
所以它们更以工程现场为中心。它们要记项目结构、测试命令、代码规范和历史坑点。
这背后其实有一个更大的规律:
ChatGPT:以人为中心的记忆
Claude:以协作为中心的记忆
Codex / Claude Code:以项目和执行现场为中心的记忆
它们不是谁更高级、谁更低级。而是服务的任务不同。
一个记人。一个记合作。一个记现场。
真正的差异不是“有没有记忆”,而是:
记忆围绕什么组织。
如果你想让 AI 更懂你,应该把什么放在哪里?
我现在会这样区分。
1. 放在全局 settings 的东西
适合放长期稳定、跨项目都成立的信息。
比如:
- 你希望回答简洁;
- 你希望先给结论;
- 你偏好逻辑清楚、少废话;
- 你希望对方挑战你的假设。
这些东西不属于某个项目。它们属于“AI 如何和你合作”。
所以放全局 settings。
2. 放在 saved memory / memory summary 的东西
适合放长期有用、但不一定是回答风格的信息。
比如:
- 你的职业背景;
- 你的长期方向;
- 你常用哪些工具;
- 你长期关注哪些主题。
但要小心,不要把阶段性情绪放进去。
不要让 AI 永久记住:
你某天很沮丧;你某段关系里的某次反应;你某一周对职业特别悲观;你一个临时旅行安排。
这些可以存在当前聊天或项目里,不该变成全局画像。
3. 放在 project instructions 的东西
适合放这个项目专属的目标、口吻、输出规则。
比如:
- 这个项目是写小红书;
- 目标受众是谁;
- 文章风格是什么;
- 哪些表达不要用;
- 每篇文章结构是什么;
- 输出时要不要标题、tag、封面建议。
这些东西只属于这个项目。不要污染其他项目。
4. 放在 project files / knowledge base 的东西
适合放项目资料。
比如:
过往文章;产品说明;用户反馈;竞品分析;数据记录;品牌文档;项目复盘。
这些不是“偏好”,而是“资料”。
AI 需要在当前项目里读取它们,但不一定要把它们变成长期人格记忆。
5. 放在 AGENTS.md / CLAUDE.md 的东西
适合 coding agent。
比如:
- 项目怎么启动;
- 怎么跑测试;
- 代码规范;
- 目录结构;
- 技术栈;
- 不要修改哪些文件;
- 完成任务前必须执行哪些检查。
这类内容不要靠聊天反复说。应该写进项目文档,让 agent 每次进来都能读到。
6. 放在 prompt 里的东西
适合一次性任务。
比如:
- 这次只要三个标题;
- 这次不要展开;
- 这次用更尖锐的语气;
- 这次先不要写正文,只给结构;
- 这次只检查 bug,不重构。
prompt 里的内容是临时指令。它不一定值得被记住。
一个很简单的判断:
跨所有项目都成立 → settings
长期对你有用 → memory
只属于某个项目 → project context
只属于某个 repo → AGENTS.md / CLAUDE.md
只属于这一次 → prompt
这个判断对普通用户很有用。也对做 AI 产品的人很有用。
对独立开发者的启发
如果你在做 AI 产品,记忆系统不是一个小功能。
它几乎决定了产品的“人格”。
很多 AI 产品一上来会想:
- 我要不要加 memory?
- 我要怎么存用户信息?
- 我要不要做 RAG?
但更底层的问题应该是:
我的产品到底应该记住什么?
如果你做的是个人助理,你要记的是用户长期偏好、背景和目标。
如果你做的是写作工具,你要记的是用户风格、受众、内容方向、禁用表达。
如果你做的是健身工具,你要记的是训练目标、身体限制、阶段反馈、动作表现。
如果你做的是 coding agent,你要记的是项目规则、技术栈、测试方式、历史坑点。
如果你做的是财务或法律相关工具,你反而要非常克制。很多东西不应该默认长期记忆,而应该让用户明确确认。
所以记忆系统不能只问:
“怎么记更多?”
而要问:
什么该记? 记在哪里? 记多久? 什么时候拿出来? 用户能不能看见? 用户能不能修改? 过期信息怎么处理? 新旧信息冲突时听谁的? 什么东西应该只做临时上下文? 什么东西必须硬性约束,而不是软记忆?
这才是 memory system 真正难的地方。
一个粗暴的 AI memory,会让用户觉得:
你没有理解我。或者更糟:你误解了我,还很自信。
而好的 AI memory,应该让用户觉得:
你记住了该记的。你忘掉了该忘的。你知道哪些信息只属于这个项目。你不会拿过去的我绑架现在的我。
这比“模型聪明”更接近真实产品体验。
最后
不同 AI 工具的记忆感不同,并不是偶然。
ChatGPT 像认识你,是因为它更围绕“人”来组织记忆。
Claude 像协作者,是因为它更围绕“项目和协作关系”来组织记忆。
Codex / Claude Code 像工程同事,是因为它更围绕“执行现场”来组织记忆。
所以这件事背后的核心问题不是:
AI 有没有记忆?
而是:
当 AI 要长期帮助一个人时,它到底应该记住什么?
未来真正有价值的 AI 产品,不会只是回答得漂亮。它们还要在时间里,和人一起工作。
而长期工作最难的,从来不是记住所有事。
是知道哪些过去,仍然值得带到现在。