Codex 项目迁移 · 历史对话恢复

Codex 历史对话同步:新 Profile 也能保留工作记录。

创建新配置时,不必在“完全空白”和“复制全部数据”之间二选一。选择来源后,只同步项目对话、临时任务或全部支持的历史;复制完成的新 Profile 独立运行,不会改动原配置。

先判断:你需要同步什么

需要继续某个仓库的上下文,选择仅项目;需要保留不属于项目的聊天,选择仅临时任务;要迁移完整工作记录,再选择全部。同步是创建副本,不会把目标 Profile 后续新增的对话写回来源。

三种同步范围

仅项目

同步与项目目录关联的历史对话,适合继续维护已有代码仓库。

仅临时任务

同步不属于项目目录的临时对话。这个模式不会额外创建没有对话内容的空项目目录。

全部

同时同步项目对话和临时任务,适合建立一个包含现有工作记录的新独立配置。

可以选择多个来源

  • 源 App:当前官方 Codex / ChatGPT 桌面应用使用的 Codex 数据目录。
  • 已有 Profile:之前通过多开助手创建的一个或多个配置。

未勾选的来源不会参与同步。多个来源中遇到相同会话 ID 时会避免重复写入。

同步前请关闭正在使用这些来源数据的 Codex 窗口,避免数据库或会话文件正处于写入状态。

同步后会发生什么

  1. 复制符合范围的会话文件、索引和必要数据库记录。
  2. 将来源中的模型服务商引用改写为目标 Profile 的配置。
  3. 保留项目目录与临时任务的归类。
  4. 新 Profile 之后独立运行,不会把新增对话写回来源。

同步不仅是复制项目目录。Codex 历史依赖会话 JSONL、SQLite 线程数据、索引、项目路径和全局状态,缺少其中一部分就可能出现“能看到项目但看不到对话”或“重启后消失”。

同步后看不到历史怎么办

  1. 确认创建时开启了“同步已有对话记录”。
  2. 确认勾选了正确来源,而不只是选择了同步范围。
  3. 确认选择“仅临时任务”时,目标对话原本确实位于临时任务区。
  4. 完全退出目标 Codex 窗口后重新打开。
  5. 仍然失败时,通过 App 复制诊断并提交 Issue。
重新填写 API Key 或接口地址不应该删除历史对话。若修改 Provider 后历史消失,通常是配置解析、目标 Provider 标识或全局状态读取异常,需要日志进一步确认。

历史同步常见问题

同步会删除或修改原来的对话吗?

不会。工具会向新 Profile 写入独立副本,原 App 和已有 Profile 的会话不会被删除或覆盖。

为什么只看到项目,没看到对话?

历史不仅包含项目目录,还依赖会话 JSONL、SQLite 线程数据、索引和全局状态。请确认选择了正确来源和同步范围,并在完全退出目标窗口后重新打开。

可以同时保留多个来源的历史吗?

可以。选择多个来源后,相同会话 ID 会避免重复写入。