中文 | English
这是 Dailin521/codex-provider-sync 的 Python/Tauri 重构分支。
目标不变:切换 Codex model_provider 后,让旧历史会话在 Codex Desktop 或 /resume 里重新可见。
当前分支新增:
python/:Python 后端,负责status、sync、switch、restore、prune-backups。frontend/:React + Vite 桌面 UI。src-tauri/:Tauri 2 / Rust 桌面壳,负责调用 Python sidecar 和 Windows 打包。scripts/publish-tauri-windows.ps1:Windows 发布脚本,生成 NSIS 安装包和便携版 exe。
同时保留旧实现:
src/:原 Node CLI。desktop/:原 WinForms GUI。
Codex 切换 provider 后,旧会话可能没有丢,但相关 metadata 没对齐:
- rollout 文件:
~/.codex/sessions、~/.codex/archived_sessions - SQLite:
~/.codex/state_5.sqlite - 部分项目可见性缓存
本工具会同步这些 metadata,让历史会话重新落到当前 provider 下。
开发运行:
npm install
npm run tauri:dev打包发布:
powershell -ExecutionPolicy Bypass -File ./scripts/publish-tauri-windows.ps1产物位置:
artifacts/tauri-windows/
发布脚本会依次执行:
- 安装前端依赖
- 构建 React UI
- 用 PyInstaller 打包 Python sidecar
- 执行 Tauri NSIS 构建
- 复制便携版 exe 到
artifacts/tauri-windows
默认 Python 路径是:
C:/ProgramData/anaconda3/envs/obj/python.exe
需要换 Python 时:
powershell -ExecutionPolicy Bypass -File ./scripts/publish-tauri-windows.ps1 -Python C:/path/to/python.exe运行测试:
C:/ProgramData/anaconda3/envs/obj/python.exe -m pytest python/tests -q直接调用后端 CLI:
$env:PYTHONPATH = "python"
C:/ProgramData/anaconda3/envs/obj/python.exe -m codex_provider_sync_backend.cli status
C:/ProgramData/anaconda3/envs/obj/python.exe -m codex_provider_sync_backend.cli sync常用命令:
status
sync
sync --provider openai
switch apigather
restore C:\Users\you\.codex\backups_state\provider-sync\<timestamp>
prune-backups --keep 5默认参数已对齐旧实现:
sync --keep和switch --keep最小值是1,默认保留5份备份。prune-backups --keep最小值是0。restore默认恢复 SQLite 和 rollout metadata;UI 默认不恢复config.toml,避免误改当前 provider 配置。
旧 CLI 仍保留,可继续使用:
npm test
node ./src/cli.js status
node ./src/cli.js sync
node ./src/cli.js switch openai如果从 fork 安装:
npm install -g git+https://github.com/bitezhang330/codex-provider-sync_python.git
codex-provider sync推荐提交前至少跑:
C:/ProgramData/anaconda3/envs/obj/python.exe -m pytest python/tests -q
npm test
npm run tauri:ui:build
cargo check --manifest-path src-tauri/Cargo.toml完整 Windows 发布验证:
powershell -ExecutionPolicy Bypass -File ./scripts/publish-tauri-windows.ps1本工具只同步“历史会话可见性”相关 metadata。
- 不处理登录、��证、
auth.json或第三方切号工具。 - 不修改消息历史、会话标题或对话内容。
- 不把旧会话里的
encrypted_content重新加密到另一个 provider/account。 - 跨 provider/account 后,含
encrypted_content的旧会话通常只能恢复列表可见性,继续对话或 compact 仍可能报invalid_encrypted_content。 - 每次
sync/switch前都会创建备份,默认保留最近 5 份。
备份位置:
~/.codex/backups_state/provider-sync/<timestamp>
如果提示 state_5.sqlite is currently in use:
- 关闭 Codex、Codex App、app-server 后重试。
如果有 rollout 文件被占用:
- 工具会跳过被占用文件并继续处理其它历史会话。
- 当前会话结束后可再跑一次
sync。
如果 Desktop 仍看不到某些项目会话:
- Codex Desktop 首屏最近会话可能只加载前 50 条。
- 本工具不会修改
updated_at或文件时间来强行改变排序。
- GUI 说明:README_GUI_ZH.md
- 原英文说明:README_EN.md
- Agent 操作说明:AGENTS.md
MIT