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 等)之间切换的人。
- 希望对话历史能自动跟随自己,而不是在每次切换提供商后被隐藏的人。
- 偏好自动化后台服务,而非手动编辑数据库的人。
工作原理
- SQLite 同步 – 更新
state_5.sqlite(Codex 状态数据库)中的model_provider列。在任何更改前,会将带时间戳的备份写入backups/文件夹。 - Rollout JSONL 补丁 – 仅当更改不会导致行扩展时,才修改每个 rollout 日志文件的第一行以匹配目标提供商(避免破坏 Codex 可能仍在写入的文件)。原始文件时间戳会被恢复,以确保 UI 的“最近线程”顺序不受影响。
- 监视模式 – 持续监视
config.toml中的提供商变更,并定期重新整合新创建的线程。 - 后台服务 – 安装平台特定的守护进程(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-plist、install-launchd、uninstall-launchd)。
安装选项
- Homebrew:
brew tap wangnov/tap && brew install codex-threadripper - npm(全局):
npm i -g codex-threadripper - Cargo:
cargo install codex-threadripper或cargo 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;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目