Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codex 会话同步工具 (CodexSync)

一个解决 Codex 中转站 ↔ 官方登录切换后历史会话消失 问题的桌面工具。

界面

为什么会话会“消失”?

Codex 会把每个会话打上 model_provider(供应商标识):

  • 官方 ChatGPT 登录 → openai
  • 中转站 / API 站 → 站点配置的自定义 ID(如 superapipackycode 等)

会话列表按当前供应商过滤显示。一旦你从官方切到中转站(或反过来), 之前用另一身份产生的所有历史会话就不再出现在列表里 —— 数据其实还在磁盘上, 只是被"隐藏"了。

本工具把数据库和会话文件里的供应商标记统一到当前身份, 让全部历史会话在任何登录方式下都完整可见。

功能

功能 说明
🔍 健康总览 当前认证状态、供应商分布、孤儿/缺失文件检测、健康检查清单
🔄 一键同步 统一数据库 + 全部会话文件的 provider 标记;支持试运行预览
📥 孤儿收养 磁盘上存在但未注册到数据库的会话文件,一键找回(自动跳过子代理会话)
👤 配置档案 把官方/各家中转站的 auth.json + config.toml 存成档案,一键切换并自动同步
🗄 备份恢复 每次修改前自动快照到 ~/.codex/session-sync/backups/,支持一键回滚

使用

  1. 完全退出 Codex(桌面版 / CLI / VS Code 插件都要退)
  2. 双击 CodexSync.exe
  3. 推荐流程:
    • 「配置档案」→ 把当前官方登录存为「官方」,把中转站配置存为对应名字
    • 以后切换 = 点档案上的「切换并同步」
    • 或者手动切换登录后,来「会话同步」页点一次「开始同步」

⚠️ 配置档案包含你的登录凭据,仅保存在本机 ~/.codex/session-sync/profiles/ 下。

构建

npm install          # 安装 @tauri-apps/cli
npx tauri build      # 产出 src-tauri/target/release/CodexSync.exe

无头自检(内置端到端验证:扫描→试运行→真实同步→收养→回滚往返):

python scripts/make_fixture.py /tmp/fixture-home   # 构造假数据
CODEX_SYNC_CODEX_HOME=/tmp/fixture-home \
  src-tauri/target/release/CodexSync.exe --selftest --apply

技术细节

  • 修改对象:
    • ~/.codex/state_5.sqlitethreads.model_provider
    • 各 rollout JSONL 文件头部 session_meta.payload.model_provider 字段 (未涉及的行保持字节级不变,JSON 键顺序保留)
  • 安全机制:
    • 写入前自动备份(SQLite 主库 + WAL/SHM + 将被重写的每个 JSONL)
    • BEGIN IMMEDIATE 检测数据库占用,Codex 未退出时拒绝操作并提示
    • JSONL 采用临时文件 + 原子替换写入
  • 收养规则:仅收养用户会话(thread_source != "subagent"),标题从首条用户消息提取

目录结构

src-tauri/src/
├── main.rs        入口 + 无头自检模式
├── types.rs       前后端共享数据结构
├── paths.rs       路径解析与规范化(处理 \\?\ 前缀、大小写)
├── codex_home.rs  config.toml / auth.json 解析,当前供应商识别
├── db.rs          SQLite 访问(threads 表读写、事务、锁检测)
├── rollouts.rs    JSONL 扫描 / 元数据重写 / 孤儿识别与入库
├── backup.rs      备份与恢复(含 manifest)
├── profiles.rs    配置档案管理
├── sync.rs        同步引擎(只读分析 → 备份 → 事务写入 → 文件重写)
└── commands.rs    Tauri 命令层
ui/               纯静态前端(HTML/CSS/JS,深色玻璃拟态主题)
scripts/           图标生成 / 测试夹具脚本

About

CodexSync - 解决 Codex 中转站 ↔ 官方登录切换后历史会话消失的桌面工具 (Tauri 2)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages