从其他工具迁移
本教程共 32 篇 · 第 30 篇 · 更新于 2026-07-26 · 约 10 分钟阅读
30. 从其他工具迁移
本节目标:搞懂怎么从 Cursor、Claude Code 等工具迁到 Codex—用 /import 自动导入、手动转配置文件、权限模型重建认知、避开想当然的坑。
从别的 AI 编程工具转到 Codex,你不是从零学一个新工具。这俩在同一层面是同一类东西—都是终端里的 AI 编程 CLI,都跑智能体循环,都能直接读写你的代码库。你 90% 的心智模型能直接搬,要重新认的只是「东西放哪、叫什么名」。
打个比方,从安卓换到另一个牌子的安卓机,不是从安卓换苹果那种推倒重来。你拨号、发消息、装应用、滑动返回的肌肉记忆全在,只是图标挪了位置、设置菜单换了层级。
/import:自动导入
ChatGPT 桌面应用提供了导入流程,能把其他智能体里的指令、设置、skills、plugins、项目和最近工作一键带过来。
怎么导入
- 在桌面应用打开 Settings > Import(设置里没有独立 Import 页就找 General,里面有个 Import other agent setup)
- 选择 Import
- 选要从哪个智能体导入,点 Continue
- 在 Select items to import 页面勾选要带入的内容,点 Continue
- 导入完成后打开已导入的项目或聊天继续工作
Note导入不会更改或删除你现有的智能体设置。它只往 Codex 这边加东西,你原来那个工具里的配置原封不动。
能导入什么
| 导入内容 | 目标位置 |
|---|---|
| 指令文件(如 CLAUDE.md) | AGENTS.md |
| settings.json | config.toml |
| Skills | Skills |
| Plugins | Plugins |
| 现有项目文件夹 | 使用同一文件夹的项目 |
| 最近 30 天的聊天 | ChatGPT 聊天 |
| MCP server 配置 | Codex MCP 配置 |
| Hooks | Codex hooks |
| Slash commands | Skills |
| 子代理 | Codex 智能体 |
导入后要检查什么
导入不是万能的,有些东西需要手动复查:
- 已导入 skills 和智能体中的工具限制或权限:迁移后行为可能不同
- MCP server 设置:使用自定义认证、headers、环境变量或 transports 的,可能需要重新登录
- Hooks:导入后行为可能变,需要逐个确认
- Plugins:仍需人工配置的会显示状态卡片,按提示完成
- 提示词模板:依赖参数、shell 插值或文件路径占位符的,路径可能对不上
Warning导入结束后,应用左下角会显示状态卡片。如果某个已导入的 plugin 或连接仍需设置,卡片会明确指出。别看到导入完成就以为万事大吉,先处理完状态卡片上的待办。
手动迁移:核心对照表
不想用自动导入,或想精细控制每一步,可以手动迁。核心概念对照如下:
| 其他工具 | Codex | 关系 | 一句话差异 |
|---|---|---|---|
CLAUDE.md | AGENTS.md | 换名 | 概念一致,覆写规则不同 |
settings.json(JSON) | config.toml(TOML) | 换格式 | JSON 转 TOML,键名结构全不一样 |
| 权限模式 + allow/deny 规则 | 沙箱 + 审批 | 换思路 | 从「按工具列白名单」变「圈地 + 出圈才问」 |
claude -p 无头模式 | codex exec | 换名 | 都是「不进交互界面、跑完就走」 |
CLAUDE.local.md 本地变体 | AGENTS.override.md | 语义不同 | 前者附加,后者整层替换 |
| 自动记忆(默认开) | Memories(默认关) | 脾气不同 | Codex 记忆默认关、异步生成 |
| Opus / Sonnet / Haiku | GPT-5.x 系列 | 换型号 | 选型逻辑一样,换名字 |
CLAUDE.md 转 AGENTS.md
这是迁移时第一个会撞的问题。Codex 不读 CLAUDE.md,它认的文件名叫 AGENTS.md。
好消息是内容几乎能原样搬。项目概述、技术栈、常用命令、代码约定、禁改清单—这五类东西在两边都是同样的写法、同样的目的。
几处照搬会出问题的差异:
| 维度 | 其他工具 | Codex |
|---|---|---|
| 用户级放哪 | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md |
| 项目级放哪 | ./CLAUDE.md | ./AGENTS.md(项目根) |
| 临时覆写 | CLAUDE.local.md(附加个人内容) | AGENTS.override.md(整层替换同级 AGENTS.md) |
| 大小红线 | 按行数(建议 200 行内) | 按字节(合并后默认 32 KiB) |
Tip搬之前顺手瘦身。删掉那些 Codex 看代码就能自证的内容—立项背景、技术选型经过几轮评审这类,写代码用不上。原来写得偏肥的,搬过来合并体积撞了上限,子目录那份指令就没生效了。
过渡期想让老 CLAUDE.md 也被认,配一行:
# ~/.codex/config.toml
project_doc_fallback_filenames = ["CLAUDE.md"]
加了这条,Codex 在每个目录的挑选顺序变成 AGENTS.override.md -> AGENTS.md -> CLAUDE.md,取第一个存在且非空的。
settings.json 转 config.toml
配置文件不能直接复制,连格式都不一样。JSON 转 TOML,键名和结构全不同。
// Claude Code: settings.json (JSON)
{
"model": "claude-sonnet-4"
}
# Codex: config.toml (TOML)
model = "gpt-5.6"
model_reasoning_effort = "medium"
WarningTOML 的几个习惯,从 JSON 转过来最容易写错:键值对用
=不用:;不用大括号包整个对象,靠[section]节表头分组;行尾不加逗号。我刚转过来时手贱在每行末尾加了逗号(JSON 肌肉记忆),Codex 直接报配置解析错。
别想着「翻译」整个 settings.json,照着 config.toml 的键表,把真正在用的那几条重新配一遍。大多数人实际改的也就模型、沙箱、审批这三五行。
权限模型:最大的认知差
这是迁移时心智差异最大的一处。照搬「列白名单」的思路过来,你会找不着北。
其他工具的权限模型核心是两件事:
- 权限模式:从步步问到全放开,用快捷键在模式间切
- 规则白名单:在 settings.json 里写 allow / ask / deny,按工具、按命令精确控权
Codex 把「能动多大」和「问不问你」拆成两个独立旋钮:
- 沙箱(sandbox):管能动多大—
read-only/workspace-write/danger-full-access - 审批(approval):管问不问你—
untrusted/on-request/never
| 你想要的效果 | 其他工具怎么设 | Codex 怎么设 |
|---|---|---|
| 只让它读 | 默认模式 / 只读 | 沙箱 read-only |
| 项目里放手改 | acceptEdits | 沙箱 workspace-write + 审批 on-request |
| 全自动 | bypassPermissions | 沙箱 danger-full-access + 审批 never |
| 拦死某条命令 | permissions.deny 写规则 | rules 用 prefix_rule() 匹配,decision = “forbidden” |
| 切换松紧 | Shift+Tab | /permissions 或启动加 -s / -a |
三个必须重建的认知:
第一,「不问」不等于「放权」。 你完全可以「只读 + 不问我」(read-only + never),意思是「随便读、但读的时候一句都别打扰」。never 是「不弹审批」,不是「放开权限」。
第二,默认档跟有没有 Git 挂钩。 有 Git 管的目录给你 workspace-write + on-request,没 Git 的默认 read-only。这是道安全网。
第三,workspace-write 下网络默认关、.git 只读保护。 这俩默认值反直觉,想联网得自己开。
斜杠命令对照
好消息:进了会话后,肌肉记忆大半能直接用。斜杠命令两边重叠度极高。
| 你想干的事 | 其他工具 | Codex | 同名吗 |
|---|---|---|---|
| 切模型 | /model | /model | 是 |
| 压缩上下文 | /compact | /compact | 是 |
| 清屏开新对话 | /clear | /clear | 是 |
| 看状态 | /status | /status | 基本对应 |
| 生成项目说明书 | /init | /init | 是(一个生成 CLAUDE.md、一个生成 AGENTS.md) |
| 看改动 diff | /diff | /diff | 是 |
| 审一遍改动 | /review | /review | 是 |
| 调权限松紧 | Shift+Tab | /permissions | 不一样 |
Tip最大差异是调权限。其他工具按快捷键在模式间循环切,Codex 是敲
/permissions弹选择器挑档。功能等价,手感不一样—从快捷键变成菜单选择。
别想当然的清单
迁移最危险的不是「不会用」,是「以为一样、结果不一样」。
| 你可能的想当然 | 实际情况 |
|---|---|
| Codex 也读 CLAUDE.md | 它只读 AGENTS.md(除非配 fallback filenames) |
| 记忆默认开着、说一句就记 | Memories 默认关、异步生成、有地区限制 |
| settings.json 复制过去就行 | 得重写成 TOML 的 config.toml |
| 权限按工具列白名单 | 是沙箱 + 审批两个独立旋钮 |
| Shift+Tab 切权限 | Codex 敲 /permissions |
Warning必须每次生效的死规矩,两边都该写进项目说明书(AGENTS.md),别赌记忆。Codex 的记忆默认关着,你以为「跟它说一句它就记住了」,结果转头又用错包管理器。
验证迁移成功
迁完怎么确认 Codex 真读到了你的配置?在项目目录里跑:
codex --ask-for-approval never "Summarize the current instructions."
Codex 会回显你写进 AGENTS.md 的那几条—技术栈、常用命令、编程约定、禁区。只要它复述出来,就证明这份 AGENTS.md 这一轮确实被装进了上下文,迁移成功。
小结
- 总判断:90% 心智模型直接搬,要重学的只是「东西放哪、叫什么名」
- /import:桌面应用的自动导入流程,能带指令、设置、skills、plugins、项目、聊天、MCP 配置、hooks、子代理。导入后要检查权限、认证、路径
- CLAUDE.md -> AGENTS.md:内容能搬,文件名、覆写机制、大小红线不同,搬之前顺手瘦身
- settings.json -> config.toml:换格式重写,TOML 用
=、用[section]、行尾不加逗号 - 权限模型:从「模式 + 白名单」变成「沙箱 + 审批」两个独立旋钮,「不问 ≠ 放权」
- 斜杠命令:大半同名,最大差异是调权限从快捷键变成 /permissions
- 别想当然:记忆默认关、AGENTS.override.md 语义不同、权限是旋钮不是白名单
- 验证:用「Summarize the current instructions」确认 AGENTS.md 被读到
下一章讲 Windows 使用指南—原生 Windows 支持、WSL 配置、沙箱差异、常见问题。