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;未推斷任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案