Day 027理解 AI Understanding AI约 15 分钟

如果我变成回忆 - 聊聊不同 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 产品,不会只是回答得漂亮。它们还要在时间里,和人一起工作。

而长期工作最难的,从来不是记住所有事。

是知道哪些过去,仍然值得带到现在。