Skip to content

Repository files navigation

Codex Data Tool for Windows

一个面向 Windows 的 Codex 数据备份、恢复和异机合并工具。它可以把 Codex 用户数据、项目文件和会话分别打包,并在更换电脑或 Windows 用户名后进行路径映射、版本比较和项目—会话关联对账。

Important

这是社区维护的非官方工具,与 OpenAI 无隶属或背书关系。Codex 的内部数据结构可能随版本变化;正式还原前请先预演,并保留原始备份。

功能概览

程序启动后提供两个入口:

  1. 备份 / 一键还原
    • 备份本机 Codex 数据、常见应用数据、项目目录及可选配置。
    • 每个数据项独立生成 ZIP,并写入带 SHA256 的 manifest.json
    • 适合原机恢复,或目标路径完全相同的 Windows 环境。
  2. 项目—会话合并 / 异机还原
    • 把另一台 Windows 电脑生成的备份映射到当前 Windows 用户。
    • 普通项目文件按版本比较;较新的本机文件不会被旧备份覆盖。
    • Codex 会话按稳定会话 ID 和内容追加关系合并,而不是仅比较修改时间。
    • state_*.sqlite 中的会话索引进行受保护的合并和路径重写。

本项目仅支持 Windows 10/11 x64,不提供其他操作系统版本。

安全设计

  • 备份写入前不会修改源文件。
  • 无法读取的锁定文件会记录并跳过,不会导致整个备份直接丢弃。
  • 还原前会校验每个 ZIP 的 SHA256。
  • 一键还原会先把现有目标移到单独的预恢复保护目录。
  • 只有全部现有数据保护成功后才开始解压。
  • 中途失败会尽量回滚已经移动或写入的数据。
  • 支持 Windows 扩展长路径,避免深层项目和 Git 引用触发 WinError 206
  • 异机还原默认启用 Dry Run,只生成计划和报告,不写入文件。
  • 覆盖普通文件前可保存本机旧版本。
  • 会话文件或会话索引合并失败时会回滚本次会话写入。
  • 数据库表结构不兼容时安全停止,不猜测未知字段。

隐私警告

生成的备份可能包含:

  • Codex 登录状态、配置和会话历史;
  • 项目源代码、项目名称和绝对路径;
  • Git 用户配置;
  • SSH 配置和私钥(仅在手动启用 SSH 备份时);
  • 主机名、Windows 用户目录和文件元数据。

不要把备份目录、ZIP、manifest.json、配置 JSON、SQLite、JSONL 或对账报告上传到公开仓库、网盘公开链接或公开 Issue。 本仓库的 .gitignore 会排除常见敏感文件,但不能代替人工检查。

系统要求

直接运行发布版:

  • Windows 10 或 Windows 11,64 位;
  • 对要读取和写入的目录拥有权限;
  • 正式恢复或会话合并时完全退出 Codex。

从源码运行:

  • Python 3.11 或更高版本;
  • Python 安装中包含 Tkinter(Windows 官方 Python 安装包默认包含);
  • 运行功能只使用 Python 标准库。

构建 EXE 还需要 PyInstaller。

获取和启动

使用发布版 EXE

  1. 在 GitHub 的 Releases 页面下载 CodexDataTool.exe
  2. 可选:使用发布说明中的 SHA256 校验文件。
  3. 把 EXE 放在普通工具目录中,不要放进准备恢复的项目目录、.codex 或 AppData 目标目录。
  4. 双击运行。

程序目前没有代码签名证书,Windows SmartScreen 可能显示“未知发布者”。请只从本仓库 Release 下载,并核对 SHA256。

从源码运行

git clone https://github.com/MushGrowth/codex-data-tool-windows.git
cd codex-data-tool-windows
python .\codex_migration_tool.py

也可以双击 run_windows.bat

第一次使用:创建完整备份

  1. 完全退出 Codex。若任务管理器仍有 Codex.exe,等待其结束。
  2. 启动程序并选择 备份 / 一键还原
  3. 在 Backup 页检查自动识别的项目:
    • %USERPROFILE%\.codex
    • %APPDATA%\Codex
    • %LOCALAPPDATA%\Codex
    • %APPDATA%\OpenAI
    • %LOCALAPPDATA%\OpenAI
    • %USERPROFILE%\Documents\Codex
    • Git 配置和 SSH 目录默认不启用。
  4. 使用“添加”把其他项目目录加入列表,例如 D:\Projects\ExampleProject
  5. 选择备份根目录。建议使用空间充足且不在项目内部的位置。
  6. 点击 Start Full Backup
  7. 等待日志显示完成,并检查是否出现“跳过锁定文件”。

输出目录类似:

codex-full-backup-YYYYMMDD-HHMMSS\
├─ manifest.json
├─ 01-Codex user data (.codex).zip
├─ 02-Codex AppData Roaming.zip
└─ ...

必须保留整个目录。不能只复制 manifest.json 或其中一个 ZIP。

一键还原

一键还原适合恢复到备份记录的原始 Windows 路径。更换了电脑或 Windows 用户名时,请使用“项目—会话合并 / 异机还原”。

  1. 把 EXE 放到所有恢复目标之外。
  2. 完全退出 Codex。
  3. 进入 备份 / 一键还原,切换到 Restore 页。
  4. 选择完整备份目录并点击 Inspect
  5. 将“还原前备份目录”设置到短且独立的位置,例如 C:\CodexRestorePreBackups
  6. 检查清单后点击 One-click Restore

还原过程会先保护现有数据,再解压备份。不要把“还原前备份目录”设置到任何还原目标内部,也不要在任务运行时关闭程序或断电。

异机还原与项目—会话合并

适用于:

  • 从另一台 Windows 电脑迁移到本机;
  • 两台电脑的 Windows 用户名不同;
  • 本机和备份两边都有更新,需要保留更新的一方;
  • 需要把项目文件与其 Codex 会话一起对账。

推荐流程:

  1. 在旧电脑上完全退出 Codex 并生成完整备份。
  2. 把整个备份目录复制到新电脑,可使用移动硬盘、SMB 共享或远程桌面磁盘重定向。
  3. 在新电脑启动工具,选择 项目—会话合并 / 异机还原
  4. 选择备份目录并点击 读取并生成映射
  5. 逐项检查“备份中的原路径 → 本机目标路径”。标准 Windows 用户目录会自动映射;自定义项目必须人工确认。
  6. 不需要恢复的项目可取消启用。SSH 数据默认应保持禁用,除非确实需要迁移。
  7. 保持 Dry Run,先执行预演。
  8. 检查界面中的项目—会话对账表、日志和 cross_machine_restore_reports
  9. 确认结果后,完全退出 Codex,关闭 Dry Run,再正式执行。
  10. 完成后启动 Codex;如项目路径发生变化,在 Codex 中重新打开本机项目目录。

正式执行成功后,表头会从“待还原文件、待合并会话”自动变成“已还原文件、已合并会话”。两个功能页都可以返回主界面;任务运行期间返回按钮会暂时禁用。

普通项目文件如何判断新旧

时间容差为 2 秒:

情况 处理方式
本机不存在 从备份还原
备份修改时间明显更新 备份覆盖本机;可先保护旧文件
本机修改时间明显更新 保留本机,不使用旧备份覆盖
时间接近且内容完全相同 跳过重复文件
时间接近但内容不同 保留本机,并把备份分支保存到 file-conflicts

文件大小不能证明新旧,所以时间接近时会逐字节比较内容。

Codex 会话如何合并

普通文件的修改时间规则不适用于会话。工具会读取会话 JSONL 文件名中的稳定会话 ID,并比较完整内容:

情况 处理方式
备份独有会话 合并到本机
双方内容完全相同 只保留一份
本机会话是备份会话的完整前缀 备份是在同一历史上继续追加,使用备份版本
备份会话是本机会话的完整前缀 本机版本更新,保留本机
同一会话 ID 但双方分叉 不自动覆盖;保留本机,并保存备份分支等待人工确认

会话通过 SQLite threads.cwd 关联到映射后的项目路径。正式执行时会更新本机 state_*.sqlite 中兼容的 threads 索引,并把 cwdrollout_path 重写为本机目标路径。JSONL 内的历史记录保持不变。

报告说明

异机还原会在本机生成 cross_machine_restore_reports,常见文件包括:

  • cross-machine-restore-*.csv:逐文件决定;
  • session-reconciliation-*.csv:逐会话决定;
  • project-session-summary-*.csv:按项目汇总文件和会话结果;
  • cross-machine-summary-*.json:本次执行的汇总信息。

这些报告可能包含项目名、会话 ID 和绝对路径,只用于本地核查,不应公开上传。

锁定文件说明

Codex、SQLite 或系统进程正在使用文件时,Windows 可能返回 Permission denied、共享冲突或访问被拒绝。备份会跳过判定为锁定/瞬态的单个文件并在日志和清单中记录。

  • 少量缓存、临时文件或 WAL/SHM 被跳过,通常不影响项目源码。
  • 会话数据库或关键会话文件被跳过时,备份可能不完整。
  • 最稳妥的做法是完全退出 Codex 后重新备份,直到关键数据不再被跳过。

常见问题

WinError 206 或“文件名或扩展名太长”

使用最新版工具,并把预恢复保护目录设为短路径,例如 C:\CodexRestorePreBackups。不要把 EXE 放在准备恢复的项目目录内。

[Errno 13] Permission denied

通常是文件仍被 Codex、杀毒软件、同步盘或索引服务占用。先退出 Codex,必要时在任务管理器确认进程结束,然后重试。请根据日志中的具体文件判断是否只是缓存,不能只看错误编号。

本机文件比备份新,会被覆盖吗?

异机还原不会用明显更旧的备份覆盖本机文件。一键还原则按原机完整恢复处理,不做逐文件的新旧合并。

会话分叉为什么不自动选择“更新”的一个?

两个分支可能都包含独有内容,修改时间和大小都不足以证明哪一份正确。工具会保留双方,避免静默丢失会话。

可以只迁移某个项目吗?

可以。在异机还原映射表中只启用需要的项目,并先 Dry Run。与该项目关联的会话会在对账表中单独显示。

从源码构建 Windows EXE

在 Windows PowerShell 中执行:

python -m pip install --upgrade pyinstaller
.\build_windows.ps1

输出文件:

dist\CodexDataTool.exe

建议从一个不含个人配置、报告和备份数据的干净源码目录构建。发布前计算 SHA256:

Get-FileHash .\dist\CodexDataTool.exe -Algorithm SHA256

项目结构

codex_migration_tool.py         # 主界面和语言选择
codex_backup_restore_tool.py    # 完整备份与一键还原
codex_cross_machine_restore.py  # 异机文件对账和界面
codex_session_reconcile.py      # 会话及 SQLite 索引合并
windows_paths.py                # Windows 路径映射工具
localization.py                 # 中英文界面文本
CodexDataTool.spec              # PyInstaller 构建配置
build_windows.ps1               # Windows 构建脚本
run_windows.bat                 # 源码启动脚本

开发检查

提交前至少执行:

python -m py_compile .\windows_paths.py .\codex_backup_restore_tool.py .\codex_session_reconcile.py .\codex_cross_machine_restore.py .\codex_migration_tool.py .\localization.py
.\build_windows.ps1

涉及还原逻辑的改动应使用临时目录和虚构数据测试,不要直接拿唯一一份真实项目或会话做首次验证。

已知限制

  • 仅支持 Windows 10/11 x64。
  • 不是实时同步工具,不会连接远程电脑;备份目录需要先复制到本机可访问位置。
  • 依赖 Codex 当前内部文件和 SQLite 结构;结构变化时工具会停止相关合并。
  • 未提供自动解决分叉会话的策略。
  • EXE 当前未进行商业代码签名。
  • 工具无法保证恢复正在写入或已损坏的源文件。

开源许可

项目使用 MIT License。你可以使用、修改和分发源码,但软件按现状提供,不附带数据恢复保证。进行重要迁移前,请保留至少一份独立、可验证的原始备份。

About

Windows backup, restore, and project-session reconciliation tool for Codex data

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages