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

如何无缝迁移 Claude Code 到 Codex 且不丢失上下文(2026)

如果您正准备从 Claude Code 迁移到 Codex,先告诉您一个好消息:Codex 自带了一个导入工具,而且它能迁移的内容比大多数人预期的要多。`/import` 可以拉取您的指令文件、MCP 服务器、技能和插件、钩子(hooks)和斜杠命令(slash commands)、子智能体(subagents),以及过去 30 天内多达 50 次的聊天记录。这绝不是一次从零开始的重建。

值得提前规划的是这个时间窗口的边缘。任何超过 30 天的内容都无法迁移。标准的 Claude 聊天数据(与 Claude Code 相对)根本无法导入。而那些从未存在于文件中的知识——比如累积下来的“我们试过那个方法,但它搞垮了测试环境”——由于没有源文件,因此也无法通过导入工具迁移。

本指南将详细介绍哪些内容可以迁移、如何手动移动其余内容,以及如何进行设置,以便下一次迁移(无论往哪个方向)根本不需要重新折腾。

究竟能迁移什么

Codex 的导入工具支持将 Claude Code 作为源。在 CLI 中,您可以运行 /import;在桌面应用中,您可以前往 Settings → Import 并按照流程操作。

根据 Codex 的官方文档,导入内容包括:

  • AGENTS.md 文件
  • settings.jsonconfig.toml
  • 指令文件和 MCP 服务器配置
  • 技能和插件
  • 项目文件夹和记忆(memories)
  • 过去 30 天内的聊天会话
  • 钩子和斜杠命令
  • 子智能体

文档中记录的限制与上述清单同样重要:

  • 最多 50 个过去 30 天内的聊天
  • “标准的 Claude 聊天数据无法导入”——这是一个 Claude Code 导入器,而不是 Claude 导入器。
  • /import 命令“在运行任务期间、远程会话中或连接到本地应用服务器守护进程时不可用”。
  • 导入的插件可能需要重新授权。

还有两个事实决定了后续的迁移工作。

Codex 读取的是 `AGENTS.md`,而不是 `CLAUDE.md`。 AGENTS.md 是一种开放格式,Cursor、Jules、Amp 和 Factory 也能读取它,这就是为什么迁移基本上只是重命名而不是重写:内容无需修改即可直接使用,只有文件名和加载路径不同。Codex 会对这些文件进行分层——Codex 家目录下的全局文件(~/.codex/AGENTS.md,或者如果您设置了该变量,则是 $CODEX_HOME/AGENTS.md),然后是仓库根目录,接着是根目录与您当前工作目录之间的目录。文件会从根目录向下级联拼接,在发生冲突时,最接近您当前目录的文件优先。

Codex 拥有自己的记忆(memory)功能,且默认关闭。 记忆将“来自先前聊天的摘要、持久条目、最近输入和支持性证据”作为本地文件存储在 ~/.codex/memories/ 中。您可以通过在 config.toml 中的 [features] 下设置 memories = true 来启用它,或者在桌面应用的 Settings → Personalization → Enable memories 中开启。它是全局的,而不是针对单个项目的,并且可以跨会话持久化。在依赖它之前,官方文档中提到的注意事项非常值得一读:记忆“在聊天结束时可能不会立即更新”,Codex 会“跳过活跃或短暂的会话”,在接近速率限制时生成会暂停,而且文档明确指出不应在其中存储机密信息,并应将这些文件视为生成的临时状态。

因此,Codex 并不是一张白纸。它只是与您在 Claude Code 中建立的工作上下文有着不同的记忆形态。

手动迁移步骤

步骤 1:移动并拆分您的指令

如果导入工具没有自动生成 AGENTS.md,请将 CLAUDE.md 重命名为 AGENTS.md。如果内容确实与服务商无关,使用符号链接(symlink)可以让两个工具在并存运行期间读取同一个文件。如果它包含 Claude 特有的标记——例如对 Claude Code 自身命令、钩子或文件约定的引用——请复制它并重写这些部分,而不是使用符号链接,否则可能会让其中一个工具产生混淆。

然后按范围进行拆分,因为 Codex 的分层机制非常适合这种做法:

  • 机器级别的全局偏好(您的提交风格、默认语言、期望的交流方式)放入 ~/.codex/AGENTS.md
  • 仓库规则(构建命令、测试调用、目录约定、绝对不能触碰的内容)放入仓库根目录的 AGENTS.md
  • 特定子系统的规则(此包使用不同的 lint 配置、此服务有自己的部署路径)放入该目录下的 AGENTS.md

虽然一个冗长的根目录文件也能起作用,但这意味着每个子目录中的每个会话都要为每一条规则买单。

步骤 2:重建导入工具无法触及的内容

对超出 30 天、50 个聊天窗口之外的内容进行一次简短而有针对性的梳理:

  • 过往的决策。 浏览您记得比较重要的 Claude Code 会话,并写下结论——不是聊天记录,而是结论。“重试包装器保持同步,因为异步版本在三月份导致了重复收费”这句话只占一行,却能帮您省去一个下午的麻烦。
  • 死胡同。 您已经排除的方法是最不容丢失的宝贵知识,因为一个全新的智能体会很乐意再次推荐它们,导致您不得不重新论证一个早已解决的问题。
  • MCP 服务器。 配置可以迁移,但授权可能不行。在信任依赖它的会话之前,请重新连接并确认每个服务器确实有响应。
  • 钩子、斜杠命令和子智能体。 这些内容可以迁移,但它们是针对 Claude Code 的语义编写的。请在无害的对象上运行一次以进行验证。

预留一个小时。这决定了您的迁移体验是平稳过渡,还是在接下来的两周里感觉像是在降级使用。

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

现在,让我们面对一个有些无奈的现实:您迟早还会经历一次这样的迁移。Codex 导入工具的存在,正是因为人们在不断地在不同的智能体之间切换,而且整个行业的发展并没有放缓。如果您的项目知识只存在于您恰好使用的那个智能体内部,那么每次切换都会让您付出手动重建的代价,并且每次切换都会丢失超出该工具导出窗口范围的所有内容。

Codex Memories 确实存在且值得开启——但要清楚它的局限性。它只是单台机器上的单个工具,需要手动加入,是全局的而非针对单个项目的,并且它是自动生成的临时状态,而不是您亲自撰写的内容。它无法被 Claude Code、Cursor 或您的团队成员读取。

另一种选择是将知识保留在这两个工具之外。MemoryLake 是一个记忆层,智能体可以通过 MCP 或 API 连接到它。这意味着 30 天的时间窗口不再决定您能保留什么,同时并存运行 Claude Code 和 Codex 也不再意味着需要维护两套上下文。

步骤 1:创建 API 密钥

生成密钥并在大约 30 秒内发出您的第一次请求。

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

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

放入持久性的材料:您的架构笔记、您刚刚在上述步骤 2 中编写的决策日志、API 契约、操作手册以及人们需要反复解释的图表。文档、图像和其他文件都可以上传。

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

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

让 Codex、Claude、OpenClaw 和其他智能体通过 MCP 或 API 进行访问。这样,两个智能体都可以读取相同的记忆,而 AGENTS.md 也可以回归到它最擅长的角色——规则定义——而不是兼作不断膨胀的知识垃圾场。

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

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

最直接的效果是您的 AGENTS.md 文件不再继续膨胀。它们中的大多数之所以臃肿,是因为它们承担了双重任务:指令(“在提交前始终运行 make lint”)和知识(“webhook 签名检查位于 verify.ts 中,且旧路径仍对两个客户开放”)。指令应该留在文件中。知识则应该放在一个可以查询的层中,因为知识每周都在增长,没有人愿意手动维护一个 900 行的提示词前导内容。

第二个效果会在您下一次更换工具时显现。如果知识已经存在于两个智能体之外,那么迁移就只是一个配置任务,而不是一项考古工程——只需将新的智能体指向相同的记忆即可继续工作。

如果您同时运行这两个智能体(很多人都是故意这么做的),共享记忆可以彻底消除同步问题。否则,您就需要维护同一个事实的两个版本,并可能在最糟糕的时刻发现它们产生了分歧。每当多个智能体在没有共享记忆的情况下协同工作时,都会出现同样的问题。

双智能体配置的最佳实践

有意识地将规则与知识分离

在复制任何内容之前,带着一个问题阅读您的 CLAUDE.md:这是智能体应该始终遵守的指令,还是关于系统的客观事实?指令放入 AGENTS.md。事实放入记忆层。仅这一项拆分对输出质量的提升,就超过了任何程度的提示词微调。

开启 Codex Memories,但不要完全依赖它

它对于工作风格和重复设置确实非常有用。但请记住文档中记录的行为:它可能会滞后于聊天的结束,会跳过简短的会话,并且它是单台机器本地的。请将其视为一种便利,而不是您的核心记录。

验证后再删除

在 Codex 中完整运行一周(包括一次实际的调试会话)之前,请保持您的 Claude Code 配置完好无损。迁移中的遗漏绝不会在第一个小时内显现——它们会在您第一次需要某些您以为已经迁移过去的内容时出现。提前了解为什么 Codex 会遗忘您的项目上下文以及如果您决定再次切换,返回 Claude Code 的逆向路线是如何运作的,是非常值得的。

结论

从 Claude Code 到 Codex 是目前支持较好的迁移路径之一。/import 可以迁移您的指令、配置、MCP 服务器、技能、钩子、斜杠命令、子智能体以及一个月的聊天记录,而将 CLAUDE.md 转换为 AGENTS.md 只是重命名而不是重写。把省下来的精力花在任何导入工具都无法触及的部分:决策、死胡同以及背后的原因。

然后,确保您只需要做一次这样的工作。在关键的地方,这两个工具都是无状态的,它们都把记忆锁在自己的围墙内,而且六个月后肯定还会出现另一个值得一试的智能体。一个独立于您所使用的任何智能体之外的记忆层,能将下一次切换变成一次简单的配置更改,而不是推倒重来——并防止您的指令文件慢慢变成所有知识被遗忘的垃圾场。如果您想彻底停止重复解释,这种习惯有其专门的解决办法

常见问题

Codex 会读取 CLAUDE.md 吗?

不会。Codex 读取的是 AGENTS.md,这是一种开放格式,Cursor、Jules、Amp 和 Factory 也在使用。如果导入工具没有为您创建该文件,请直接重命名文件——内容无需修改即可直接使用,只有文件名和加载路径不同。

Codex 的 `/import` 究竟能从 Claude Code 迁移什么?

AGENTS.md 文件、settings.jsonconfig.toml、指令文件和 MCP 服务器配置、技能和插件、项目文件夹和记忆、钩子和斜杠命令、子智能体,以及过去 30 天内的聊天会话(最多 50 个聊天)。标准的 Claude 聊天数据(与 Claude Code 相对)无法导入,并且某些插件在导入后需要重新授权。

为什么我无法立即运行 /import?

文档中记录的限制是,/import 在运行任务期间、远程会话中或连接到本地应用服务器守护进程时不可用。请结束或取消任务,并在本地会话中运行它。

Codex 具有跨会话的记忆功能吗?

是的,这是一项可选功能。记忆作为本地文件存储在 ~/.codex/memories/ 中,并可跨会话持久化,但默认是关闭的(需在 config.toml[features] 下设置 memories = true,或在 Settings → Personalization 中开启)。它们是全局的而非针对单个项目的,在聊天结束时可能不会立即更新,会跳过短暂的会话,并且不应包含机密信息。

我应该同时使用 Claude Code 和 Codex 吗?

许多人确实在同时使用——它们擅长不同的事情,而且 Codex 的编排模式(本地、云端任务、通过 SDK 实现的 CI、IDE、Slack)覆盖了以会话为中心的工具无法触及的领域。同时运行两者的代价是上下文漂移。通过 MCP 或 API 保持一个两者都能读取的统一记忆层,可以消除这一代价。

如何在下一次迁移时不再丢失上下文?

将项目知识从特定于工具的文件中移出,放入一个不属于任何单一智能体的独立层中。创建一个 API 密钥,上传您需要反复解释的材料,并通过 MCP 连接您的智能体。这样,更换工具就意味着重新指向一个配置,而不是重建三个月的决策。同样的原理也解释了为什么 Claude Code 会在会话之间遗忘您的项目上下文