Skip to content

bitezhang330/codex-provider-sync_python

 
 

Repository files navigation

codex-provider-sync_python

Python backend + Tauri 2 + React UI for Codex provider metadata sync

Platform Python Tauri Node License

中文 | English

这个 fork 做了什么

这是 Dailin521/codex-provider-sync 的 Python/Tauri 重构分支。

目标不变:切换 Codex model_provider 后,让旧历史会话在 Codex Desktop 或 /resume 里重新可见。

当前分支新增:

  • python/:Python 后端,负责 statussyncswitchrestoreprune-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 下。

Windows 桌面端

开发运行:

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

Python 后端

运行测试:

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 --keepswitch --keep 最小值是 1,默认保留 5 份备份。
  • prune-backups --keep 最小值是 0
  • restore 默认恢复 SQLite 和 rollout metadata;UI 默认不恢复 config.toml,避免误改当前 provider 配置。

旧 Node CLI

旧 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 或文件时间来强行改变排序。

相关文档

License

MIT

About

Synchronize Codex session provider metadata across rollout files and SQLite state.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 63.9%
  • TypeScript 14.6%
  • Rust 9.5%
  • CSS 5.8%
  • PowerShell 5.7%
  • HTML 0.5%