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

如何在不丢失上下文的情况下将您的 ChatGPT 记忆迁移到 Codex (2026)

您花了一年的时间教 ChatGPT 您是如何工作的。它了解您的技术栈、您主张的规范、您拒绝使用的框架,以及您需要的是差异对比(diffs)而不是解释。然后,您将实际工作转移到了 Codex,而在第一天,它对此一无所知。

以下是直接的答案:目前没有现成的导入工具。Codex 提供了一个 `/import` 命令,可以从其他编码智能体中提取设置、项目和最近的聊天记录——而截至 2026 年 8 月,ChatGPT 消费级应用并不在它读取的数据源之列。您的 ChatGPT 记忆必须由您自己读取,重写为 Codex 实际加载的指令,并放置在 Codex 寻找的特定文件中。如果您知道这些文件在哪里,这只需要 30 分钟,本文将为您详细介绍这一过程。

在第一个问题之下还隐藏着第二个问题,那就是在下一次切换工具时,您是否还想再经历一次这个过程。最后一节将讨论这个问题。

实际传输的内容

有必要明确您要迁移的具体内容,因为“我的 ChatGPT 记忆”实际上包含三种不同的东西,它们的迁移方式也各不相同。

保存的记忆条目作为内容传输,而不是作为数据。 这些是 ChatGPT 积累的简短事实——偏好、您的技术栈、正在进行的项目。根据 OpenAI 在 2026 年 6 月 4 日宣布的记忆系统重构,您看到的越来越多是一个可读的记忆摘要页面,而不是旧的扁平化保存条目列表。无论哪种方式,您都可以阅读它,而阅读它就是导出机制。目前没有文档记录的一键式路径可以为您提供 Codex 可以直接读取的文件。

自定义指令几乎可以逐字传输。 您放在 ChatGPT 自定义指令块中的任何内容,本身就是作为给模型的指令编写的。它几乎不需要太多修改就可以映射到 AGENTS.md 上——主要是删除那些描述聊天行为而不是编码行为的部分。

聊天历史记录无法传输,而且大部分情况下也不应该传输。 Codex 的 /import 可以提取最近的聊天记录,但仅限于它支持的智能体,且仅限本地会话数据——任何仅限网页端的历史记录都无法从任何地方导入。您的 ChatGPT 对话线索将保留在原处。这并没有看起来那么大的损失:一年对话中沉淀下来的持久知识不过是一页规范,而您即将编写这一页。

项目文件和上传的内容无法传输。 您附加到 ChatGPT Project 的任何内容都会保留在该 Project 中。如果某个文档对您的工作很重要,它需要存在于您的编码智能体可以访问的地方——在仓库中,或者在记忆层中。

有一件事完全无法迁移:您偏好背后的原因。ChatGPT 知道您想要小粒度的提交(commits);但它不知道这是因为 2025 年的一次代码回滚事件。除非您写下来,否则 Codex 也不会知道。是否值得写下来取决于您的判断,而对于任何您不得不重复解释两次以上的事情,答案通常是肯定的。

手动迁移步骤

步骤 1:读取您的 ChatGPT 记忆并进行分类

打开 Settings → Personalization → Memory 并阅读其中的内容。如果您的账户使用的是较新的记忆系统,您将获得一个描述 ChatGPT 综合了哪些关于您的信息的记忆摘要页面;如果不是,您将获得已保存记忆的列表。两者都是可读的,且都是您能获得的唯一导出方式。

然后,在聊天中让它把所有内容写出来:“请逐字写出你记得的关于我和我工作方式的所有内容,每行一项,不要有任何评论。” 将其复制到一个临时文件中。除了阅读设置页面之外,还要这样做,而不是用它代替设置页面——这两者往往不一致,而其中的差异能提供很多信息。

现在将您拥有的内容分类到三个桶中:

  • 持久且便携——您的技术栈、您的规范、您的工具链、您希望输出的格式、您告诉它永远不要做的事情。这些是构成 AGENTS.md 的材料。
  • 特定于项目——仅适用于单个代码库的任何内容。这属于该仓库,而不是您的全局配置。
  • 两者都不是——描述您喜欢如何聊天的所有内容,以及模型推断出而非学到的任何内容。丢弃它们。在这里要毫不留情:记忆条目并没有标明它们来自哪里,所以任何您不记得自己真正说过的话,都是您带入新工具的猜测。这是扁平、无归属的记忆条目存储方式带来的后果,而迁移正是停止为此买单的自然契机。

将第一个桶中的内容重写为祈使句。ChatGPT 的记忆往往被表述为对您的观察——“用户更喜欢 TypeScript 严格模式”。Codex 读取的是指令。“使用 TypeScript 严格模式;不要添加 any 来消除错误”是同一个事实,但采用了智能体可以遵循的形式。

步骤 2:将其放置在 Codex 实际查找的位置

Codex 读取 AGENTS.md。它不读取 CLAUDE.md,也不读取 ChatGPT 的自定义指令——如果您是从 Claude Code 迁移过来的,您可能已经从这次迁移的另一个方向了解到了这一点。

查找是分层级的:首先是您的 Codex 主目录(~/.codex/AGENTS.md,或者如果您移动了它,则是 $CODEX_HOME),然后是仓库根目录,接着是中间目录,最后是您的工作目录。文件自上而下进行合并,冲突时以较近的文件为准。因此:

  • 全局偏好——您的语言默认值、输出风格、适用于您所有工作的事项——放在 ~/.codex/AGENTS.md 中。
  • 仓库规范放在仓库根目录的 AGENTS.md 中,并提交到版本控制,以便您的团队也能获取它们。
  • 子项目特有的怪癖放在该子目录下的 AGENTS.md 中。

保持每个文件简短。范围内的所有内容在每次任务中都会被加载到上下文中,因此一个 2000 字的全局文件是您在每次请求中都要永远支付的税。要写指令,而不是文档。

然后决定是否启用 Codex 自身的记忆功能。Codex 记忆默认是关闭的。 您可以在桌面应用的 Settings → Personalization 下通过切换“Enable memories”来启用它们,或者通过在 ~/.codex/config.toml[features] 部分添加 memories = true 来启用。在欧洲经济区(EEA)、英国和瑞士,Codex 只有在您启用该功能后才会使用或生成记忆。您可以独立调整这两个部分:

```toml [features] memories = true

[memories] generate_memories = true # 从新会话中提取记忆 use_memories = true # 将记忆注入到未来的会话中 ```

启用后,Codex 会在不同对话线索之间传递稳定的偏好、循环工作流、技术栈、项目规范和已知陷阱,并将摘要、持久条目、最近的输入和支持证据存储在 ~/.codex/memories/ 下。在桌面应用或 TUI 中使用 /memories 来控制特定聊天是否可以读取或贡献记忆。

这值得开启。但也需要明确它是什么,因为官方的注意事项就是全部事实:记忆生成会跳过活跃或短暂的会话,当您剩余的速率限制百分比降至配置的阈值以下时会暂停,并且在聊天结束时可能不会立即更新。这些文件是生成的临时状态,不应手动编辑。敏感信息会从生成的记忆字段中被遮蔽,但您在共享这些文件之前仍应进行检查。此外,该存储是本地于该机器的,且在您的项目之间是全局的——它不是按仓库划分范围的,也不会同步到任何地方。

这意味着当您设置下一台机器、在工作笔记本电脑上打开 Codex,或者将任务交给不同的智能体时,您需要再次执行步骤 1。

更好的方法:统一的记忆层,适用于任何工具

上述迁移是针对您所提问题的正确答案。但对于你们中的一些人来说,这已经是今年第三次做这件事了。

注意手动路线实际上是什么:您从一个产品的专有存储中提取了知识,手动将其转换为第二个产品的文件格式,并在第三个地方留下了两个工具都无法读取的副本。下一次这样做时,没有任何事情会变得更容易。知识是持久的东西,而工具才是不断更迭的。

另一种选择是将这些知识保留在两个工具之外,并让每个工具都从中读取。MemoryLake 是一个位于您的助手之下的记忆层——您只需将文档、决策和规范输入一次,Codex、Claude、OpenClaw 以及其他工具就可以从同一个存储中读取。工具切换不再是迁移,而变成了配置更改。

公平地权衡一下:AGENTS.md 确实具有记忆层所不具备的优势。它是纯文本,存在于您的仓库中,可以在拉取请求(PR)中进行审查,并且您的团队会自动继承它。继续在仓库规范中使用它——这是它的强项。而记忆层则用于存储那些不属于仓库结构、且不应该在每个工具中重新输入的累积知识。

步骤 1:创建 API 密钥

生成一个密钥,并在大约 30 秒内发出您的第一次请求。将其保存在您的环境变量或机密管理器中,而不是内联在配置文件中——在正是这种迁移期间,配置文件会在机器之间被复制。

创建 MemoryLake API 密钥
创建 MemoryLake API 密钥

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

放入您刚刚花了一个小时手动提取的知识所对应的文档、图像和文件:规范文档、架构决策、客户简报、运行手册。在可能的情况下,上传源文件而不是您的摘要——摘要是细节悄然消失的又一个地方。

将您的第一批记忆上传到 MemoryLake
将您的第一批记忆上传到 MemoryLake

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

通过 MCP 或 API 授予 Claude、Codex、OpenClaw 和其他 AI 智能体访问记忆的权限。Codex 支持 MCP 服务器,因此这只是一个配置项,而不是重写;然后,您的其他智能体以及您基于 API 构建的任何内容都可以访问同一个存储。如果您还使用 ChatGPT(它没有 MCP 客户端),请通过 API 检索您需要的内容并将其注入到提示词或工作流中。

通过 MCP 连接您的 AI 和智能体
通过 MCP 连接您的 AI 和智能体

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

第一个区别在于使用新工具的第一天。您得到的不再是一个一无所知的智能体,而是一个可以回答“我们对重试机制做出了什么决定?”的智能体,因为该决定存在于存储中,而不是存在于您无法导出的对话线索中。

第二个区别在于跨机器。Codex 记忆在设计上是本地且针对单台机器的;而记忆层则不然。您的笔记本电脑和工作台式机看到的是相同的知识,这就是偏好与您必须重现的设置之间的区别。

第三个区别是发展方向。目前,生态系统的真实状况是,除非您进行了配置,否则 Codex 会在会话之间忘记您的项目上下文,它的每一个竞争对手也是如此,只是文件格式略有不同。一旦知识存在于一个地方,并排运行 Codex 和 Claude Code 就不再需要您维护同一套规范的两份副本了。

切换的最佳实践

分别迁移指令和知识

AGENTS.md 用于规则——简短、祈使句,在每次任务中加载。记忆层用于知识——文档、决策、历史,这些内容太长,无法每次都加载,但又太宝贵,不容丢失。将它们混在一起会给您带来一个臃肿的指令文件,这在每次请求中都很昂贵,而且仍然不完整。

启用 Codex 记忆,但不要将其视为您的存档

启用该功能;它确实能减少重复。只需根据文档记录的行为来调整您的预期:本地于单台机器、全局而非针对特定项目、在简短会话中会被跳过、在接近速率限制时会暂停、在聊天结束后可能不会立即更新,并且是您不应编辑的生成状态。它是您工作之上的一个便利层,而不是工作的记录。

彻底、一次性地完成提取

人们很容易倾向于只迁移自己记得关心的十件事,然后让其余部分有机地重建。它不会重建——您只是在接下来的两个月里,在零散的提示词中重新解释它。阅读整个记忆页面,对其进行分类,一次性写好。如果您保留了一个记忆层,那么这一次梳理将是您最后一次做这件事。

审查您结转的内容,而不是全盘复制

您的助手关于您的部分“记忆”是它做出的推断,并以与您所说内容相同的格式存储。将该列表逐字复制到新工具中,会将这些猜测洗白并混入您的永久配置中。阅读每一行,并问问自己是否认得它。

结论

从 ChatGPT 迁移到 Codex 是一项手动工作,因为 OpenAI 为竞争对手的编码智能体构建了导入工具,而不是为其自己的消费级应用:读取您的记忆,将其分类为持久的和特定于项目的,将其重写为祈使句,并将其放置在 Codex 实际加载的 AGENTS.md 层级结构中。顺便启用 Codex 记忆——默认关闭、本地、全局范围,但值得拥有。

值得深思熟虑并做出决定的是,知识应该存在于工具内部还是工具之下。工具化的记忆意味着您在下一次切换工具、在每台新机器上都要再次进行这种迁移。而两个工具都能读取的记忆层则意味着知识的寿命比工具的选择更长——考虑到这个领域的发展速度,这是更稳妥的选择。

常见问题

Codex 可以直接从 ChatGPT 导入吗?

不能。根据文档,Codex 的 /import 支持导入 Claude Code 的设置、项目和最近的聊天记录,并且 v0.145(2026 年 7 月 21 日发布)将其扩展到了 Cursor。ChatGPT 消费级应用不是受支持的数据源。导入也是单向的——您在 Codex 中所做的更改不会反向传播——而且仅限网页端的会话历史记录完全无法导入,只能导入本地会话数据。

Codex 将其记忆存储在哪里?它们是针对特定项目的吗?

默认位于您的 Codex 主目录下的 ~/.codex/memories/ 中。它们是全局的,而不是针对特定项目的:在一个仓库中生成的记忆可能会在另一个仓库中显现。它们也是本地于该机器的,因此第二台电脑开始时是空的。

我必须手动启用 Codex 记忆,还是它是自动的?

您必须手动启用它们。本地 Codex 记忆默认是关闭的——在桌面应用的 Settings → Personalization 下切换“Enable memories”,或者在 ~/.codex/config.toml[features] 下设置 memories = true。在欧洲经济区(EEA)、英国和瑞士,Codex 只有在您启用该功能后才会使用或生成记忆。

Codex 会读取我的 CLAUDE.md 或我的 ChatGPT 自定义指令吗?

都不会。Codex 读取 AGENTS.md,并从您的 Codex 主目录向下经过仓库根目录到您的工作目录进行层级解析,以较近的文件为准。CLAUDE.md 的内容通常可以很好地迁移——改变的只是文件名和加载路径。

将 AGENTS.md 提交到共享仓库安全吗?

对于仓库规范来说是安全的,而且这正是其目的所在——您的团队可以继承它们。请将个人偏好保存在 ~/.codex/AGENTS.md 中,并且不要在这两者中存放凭据。另外需要注意的是,Codex 会从生成的记忆字段中遮蔽敏感信息,但仍建议您在共享这些文件之前进行检查;它们在编写时并未考虑到公开发布。

如果我是迁移到 Claude Code 而不是 Codex 呢?

形式相同,只是目标文件不同——步骤 1 中的知识提取是完全一样的,改变的只有放置位置。此迁移的 Claude Code 版本介绍了文件的去向,如果您预计最终会同时使用这两者,那么通过 MCP 接入共享记忆层是您只需做一次的版本。