Wangnov/codex-threadripper

Keep Codex thread history aligned to one provider bucket.

codex‑threadripper – 无论切换到哪个模型提供商,都能保持所有 Codex 聊天线程可见

功能说明

  • Codex(OpenAI 风格聊天的桌面应用)将每个对话(“线程”)存储在 SQLite 数据库和 rollout JSONL 日志中。每个线程的 model_provider 字段决定了该线程在哪个提供商的 UI 列表中显示。
  • 当你在 Codex 中切换 model_provider 时,之前提供商创建的线程会从 UI 中消失,尽管数据仍保留在磁盘上。
  • codex‑threadripper 会重写这些 model_provider 条目,使 所有 线程都与当前活动的提供商关联,从而再次使完整历史记录可见。

谁应该使用它

  • 使用单个 Codex 安装但频繁在不同模型提供商(如 OpenAI、Anthropic、Azure 等)之间切换的人。
  • 希望对话历史能自动跟随自己,而不是在每次切换提供商后被隐藏的人。
  • 偏好自动化后台服务,而非手动编辑数据库的人。

工作原理

  1. SQLite 同步 – 更新 state_5.sqlite(Codex 状态数据库)中的 model_provider 列。在任何更改前,会将带时间戳的备份写入 backups/ 文件夹。
  2. Rollout JSONL 补丁 – 仅当更改不会导致行扩展时,才修改每个 rollout 日志文件的第一行以匹配目标提供商(避免破坏 Codex 可能仍在写入的文件)。原始文件时间戳会被恢复,以确保 UI 的“最近线程”顺序不受影响。
  3. 监视模式 – 持续监视 config.toml 中的提供商变更,并定期重新整合新创建的线程。
  4. 后台服务 – 安装平台特定的守护进程(macOS 上为 launchd,Linux 上为 systemd --user,Windows 上为隐藏的 VBS 启动器),在登录时自动运行监视循环。

主要命令

命令 用途
status 显示当前活动提供商、SQLite 数据库中各提供商的线程数量,以及后台服务是否正在运行。
sync 执行一次性重新整合(备份 + SQLite + JSONL 补丁)。
bucket switch <provider> 强制将所有历史记录移入指定提供商的桶中。
bucket prepare 检查 rollout 文件是否具有足够的填充空间以进行就地补丁;跳过那些需要行增长的文件。
watch 前台运行,每 500 毫秒(默认)轮询 config.toml,并重新整合新出现的线程。
install-service / uninstall-service 安装或移除平台特定的后台守护进程。
print-service-config 在不安装的情况下输出生成的 launchd plist、systemd 单元或 VBS 启动器。

仍支持旧别名(print-plistinstall-launchduninstall-launchd)。

安装选项

  • Homebrew: brew tap wangnov/tap && brew install codex-threadripper
  • npm(全局): npm i -g codex-threadripper
  • Cargo: cargo install codex-threadrippercargo binstall codex-threadripper
  • 直接二进制文件: 从 GitHub 发布页面下载合适的存档/安装程序

支持平台

  • macOS(Apple Silicon 与 Intel) – 通过 launchd 提供服务
  • Linux(x64 与 ARM64) – 通过 systemd --user 提供服务,回退到分离进程
  • Windows(x64) – 通过启动文件夹中的隐藏 VBS 启动器提供服务

从源码运行

cargo run -- --help   # 显示完整的 CLI 帮助

为何重要 没有 codex‑threadripper,在 Codex 中切换提供商会导致对话历史分散到隐藏的“桶”中,难以恢复工作或回顾过往聊天。此工具通过自动备份实现最小风险,可静默后台运行,确保你再也不会丢失任何线程。


所有细节均直接取自仓库的 README;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目