Codex 会话跨设备同步的关键不是复制文件本身,而是同步会话元数据:可通过 codex-provider-sync 修复 Provider 切换后历史记录丢失的问题;使用 Codex Migrate 解决跨设备迁移时的路径断裂;借助实时 Handoff 将正在运行的任务无缝迁移到远程主机继续执行。

如果你想把 Codex 中正在调试的项目上下文、未完成的代码生成任务,甚至包含运行状态的自动化脚本,完整同步到另一台电脑上继续操作,而不是重新描述需求、重复上传文件或手动恢复变量,那么真正需要迁移的并不是单一文件,而是会话元数据、线程索引以及当前工作目录的绑定关系。
用 codex-provider-sync 修复 Provider 切换导致的列表丢失
切换 model_provider 后历史会话列表“消失”,本质原因通常是 SQLite 索引与 rollout 文件中的 provider 字段不一致。这个工具只会修复元数据映射,不会改动聊天内容本身。
第一步:先确认本地会话文件确实存在 → 打开终端,运行 ls ~/.codex/sessions/,如果能看到按日期组织的 rollout-*.jsonl 文件,就说明原始会话数据仍然完整。
第二步:安装同步工具并直接执行:运行 npm install -g codex-provider-sync && codex-provider-sync。命令启动后,工具会自动扫描 ~/.codex 目录,对照 session_meta 中记录的 provider 与当前 config.toml 里的配置,然后批量更新 SQLite 和 session_index.jsonl。
第三步:重启 Codex Desktop → 这一步不要省略,否则旧进程缓存未刷新,界面中仍可能显示为空白,看起来像历史记录没有恢复。
跨平台迁移会话:用 Codex Migrate 处理路径断裂
直接复制 .codex 文件夹到另一台设备,在 macOS → Windows 或 WSL → Windows 原生环境这类场景下通常会失败,因为 rollout 文件中硬编码了原始 cwd 路径,Codex 无法正确解析类似 /Users/alex/Projects/my-app 这样的旧路径。
方法一:GUI 模式一键映射
先安装最新版 Codex Migrate(v0.8.3+)。启动后,依次选择「Import from macOS」,工具会自动解析所有 rollout JSONL 中的 cwd,然后弹出路径映射窗口。这一步只需填写新设备上的对应根目录,例如:【/Users/alex/Projects → D:Projects】。随后点击「Apply & Migrate」,系统就会按相对路径重新构建目录结构,并写入新的 SQLite 数据库。
方法二:CLI 批量处理
如果你已经确认所有项目都迁移到了 D:codex-projects,可直接运行:codex-migrate migrate --source ~/.codex --target D:codex-projects --platform win --map "/Users/alex/Projects=D:codex-projects"。注意 【--platform win 参数不能省略,否则生成的 SQLite 仍会保留 POSIX 路径】。
实时 Handoff:让任务在远程主机持续运行
这种方式适合处理正在执行的长时间任务,例如模型微调、CI 测试或自动化脚本运行时,用户需要临时离开电脑,但又希望上下文、变量和进程状态都能完整迁移。
在当前 Codex 聊天窗口输入:我要离开了,把正在跑的任务迁到 remote-server.example.com,让它在那边继续 → Codex 会自动检查目标主机的 SSH 连通性、Python 环境和磁盘空间 → 然后将 rollout 元数据、当前内存快照以及未提交的 Git diff 打包加密 → 再通过安全通道推送到 remote-server 的 ~/.codex/handoff/ 目录 → 最后在目标主机执行 codex handoff resume 即可继续之前的任务。
执行这一步前,必须确保 remote-server 已经预装 Codex CLI,且版本 ≥26.527,否则握手流程会直接失败,任务无法恢复。
