究竟能迁移什么
Codex 的导入工具支持将 Claude Code 作为源。在 CLI 中,您可以运行 /import;在桌面应用中,您可以前往 Settings → Import 并按照流程操作。
根据 Codex 的官方文档,导入内容包括:
AGENTS.md文件settings.json和config.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 秒内发出您的第一次请求。

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

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

这在实践中带来了什么改变
最直接的效果是您的 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 只是重命名而不是重写。把省下来的精力花在任何导入工具都无法触及的部分:决策、死胡同以及背后的原因。
然后,确保您只需要做一次这样的工作。在关键的地方,这两个工具都是无状态的,它们都把记忆锁在自己的围墙内,而且六个月后肯定还会出现另一个值得一试的智能体。一个独立于您所使用的任何智能体之外的记忆层,能将下一次切换变成一次简单的配置更改,而不是推倒重来——并防止您的指令文件慢慢变成所有知识被遗忘的垃圾场。如果您想彻底停止重复解释,这种习惯有其专门的解决办法。