Codex 更换提供商后的旧对话迁移
这页给出当前可执行的迁移思路。不同 Codex CLI / Desktop 版本的数据目录可能不一样,操作前先备份。
先确认一件事
更换提供商通常只影响“以后请求发到哪里”,不应该自动删除旧对话。旧对话一般保存在本机用户目录、应用数据目录或项目工作区的 Codex 状态目录里。
因此迁移的核心不是把聊天内容发给 Enodot,而是:
- 找到旧 Codex 的本地数据目录。
- 备份整个目录。
- 修改 Provider / Base URL / API Key。
- 启动 Codex,确认旧会话还在。
- 如果新版本创建了新的数据目录,再把旧数据复制或合并过去。
切换前必须备份
macOS / Linux / WSL:
bash
mkdir -p ~/codex-backup
cp -a ~/.codex ~/codex-backup/codex-dotdir-$(date +%Y%m%d-%H%M%S) 2>/dev/null || true
cp -a ~/.config/codex ~/codex-backup/codex-config-$(date +%Y%m%d-%H%M%S) 2>/dev/null || truemacOS Desktop 版还可以额外检查:
bash
ls "$HOME/Library/Application Support" | grep -i codex如果存在 Codex 相关目录,先完整复制一份。
可能的数据位置
| 环境 | 常见位置 |
|---|---|
| Codex CLI | ~/.codex、~/.config/codex |
| macOS Desktop | ~/Library/Application Support/Codex 或相近名称 |
| Windows | %APPDATA%、%LOCALAPPDATA% 下的 Codex 目录 |
| WSL | WSL 内自己的 ~/.codex,和 Windows 不共享 |
推荐迁移步骤
- 退出 Codex CLI / Desktop。
- 备份旧目录。
- 只改 API 配置,不动 history/session/storage 文件。
- 启动 Codex。
- 打开历史对话列表。
- 如果历史还在,迁移结束。
- 如果历史为空,退出 Codex,比较新旧数据目录。
- 把旧目录中的 sessions、conversations、history、projects 等目录复制到新目录。
- 再启动 Codex 验证。
不建议做的事
- 不要直接删除旧 Codex 数据目录。
- 不要在没有备份的情况下运行清理工具。
- 不要把旧会话 JSON 批量改字段,除非已经确认新旧版本 schema。
- 不要把官方 Key 和 Enodot Key 混在同一个配置文件里,避免排查困难。
如果需要手动合并
先找出两个目录差异:
bash
diff -qr "旧目录" "新目录" | head -100优先迁移这类内容:
| 名称线索 | 可能含义 |
|---|---|
sessions | 会话记录 |
conversations | 对话记录 |
history | 历史索引 |
projects | 项目绑定信息 |
state | 应用状态 |
如果新版本启动后会自动建立索引,复制数据后重新启动即可。如果仍然不显示,需要进一步确认 Codex 当前版本的存储结构。
迁移后验证
- 旧对话列表能打开。
- 旧对话内容完整。
- 新消息能通过 Enodot 发出。
- 控制台用量记录能看到新请求。
- 模型名称和分组命中符合预期。