Cara Gonta-Ganti ChatGPT dan 9Router di Codex Desktop Tanpa Kehilangan History Chat

 Codex Desktop menyimpan informasi provider pada setiap thread atau percakapan. Karena itu, setelah model_provider diganti dari openai menjadi 9router, chat lama dapat terlihat seperti hilang.

Sebenarnya isi percakapan tidak terhapus. History hanya tidak ditampilkan karena metadata provider pada konfigurasi, transcript, dan database SQLite tidak sama.

Pada tutorial ini kita akan menggunakan:

  • Fitur Set Codex Desktop dan Reset Codex dari aplikasi 9Router.
  • Tool komunitas codex-provider-sync.
  • Perintah codex resume --model untuk mengganti model satu chat ketika melanjutkan percakapan lintas provider.

Metode ini lebih aman daripada mengedit database SQLite secara manual karena tool membuat backup dan menyinkronkan beberapa lokasi metadata sekaligus.

Lingkungan Pengujian

Tutorial ini diuji dengan:

  • macOS.
  • Codex Desktop dan Codex CLI 0.142.5.
  • codex-provider-sync 0.2.7.
  • 9Router pada http://127.0.0.1:20128/v1.
  • Login ChatGPT pada Codex Desktop.

Versi baru dapat memiliki tampilan atau lokasi state yang berbeda. Selalu periksa status sebelum melakukan sinkronisasi.

Kenapa History Terpisah?

Codex menyimpan ID provider pada setiap thread, misalnya:

openai
9router

Saat provider aktif adalah openai, thread berlabel 9router dapat disembunyikan. Saat provider aktif adalah 9router, thread berlabel openai juga dapat disembunyikan.

Metadata tersebut tersimpan pada beberapa tempat:

~/.codex/sessions/
~/.codex/archived_sessions/
~/.codex/state_5.sqlite
~/.codex/.codex-global-state.json

Mengubah config.toml saja tidak cukup. Semua metadata tersebut perlu diselaraskan ke provider yang sedang aktif.

Instalasi codex-provider-sync

Pastikan Node.js sudah terpasang, lalu jalankan:

npm install -g git+https://github.com/Dailin521/codex-provider-sync.git

Periksa instalasi:

codex-provider status

Tool akan menampilkan provider aktif, jumlah rollout, lokasi database, backup, serta distribusi provider pada history.

Memastikan Database yang Benar

Secara default, state SQLite mengikuti CODEX_SQLITE_HOME. Jika variabel tersebut tidak diatur, lokasinya mengikuti CODEX_HOME, yang secara default adalah ~/.codex.

Pada lingkungan pengujian, database aktif adalah:

~/.codex/state_5.sqlite

Periksa database yang sedang digunakan Codex:

lsof ~/.codex/state_5.sqlite ~/.codex/sqlite/state_5.sqlite 2>/dev/null

Kemudian periksa database yang dipilih tool:

codex-provider status

Hasil yang diharapkan pada lingkungan ini:

database: /Users/NAMA-USER/.codex/state_5.sqlite

Jika terdapat dua database, jangan langsung menghapus salah satunya. Tutup Codex, buat backup, lalu pindahkan hanya database yang dipastikan sudah tidak aktif. Database aktif biasanya sedang dibuka proses codex, memiliki waktu perubahan terbaru, dan berisi jumlah thread terbaru.

Beralih dari ChatGPT ke 9Router

1. Tutup Codex Desktop

Gunakan Cmd+Q. Jangan hanya menutup jendelanya karena proses Codex dapat tetap memakai database dan transcript.

2. Aktifkan konfigurasi Codex dari 9Router

Buka aplikasi 9Router, lalu tekan Set Codex Desktop.

9Router akan membuat konfigurasi kurang lebih seperti:

model = "codex-combo"
model_provider = "9router"

[model_providers.9router]
name = "9Router"
base_url = "http://127.0.0.1:20128/v1"
wire_api = "responses"

Perhatikan ejaan modelnya adalah codex-combo, bukan coding-combo.

3. Sinkronkan seluruh history ke 9Router

Jalankan:

codex-provider sync --provider 9router

Tool akan:

  • Membuat backup.
  • Menyelaraskan metadata rollout.
  • Menyelaraskan SQLite.
  • Memperbarui cache visibility proyek.
  • Menjaga isi pesan dan judul percakapan tetap sama.

4. Buka kembali Codex

Setelah sinkronisasi selesai tanpa error, buka Codex Desktop. History ChatGPT dan 9Router seharusnya kembali terlihat.

Beralih dari 9Router ke ChatGPT

1. Tutup Codex Desktop

Gunakan Cmd+Q dan tunggu hingga proses benar-benar berhenti.

2. Reset konfigurasi melalui 9Router

Pada aplikasi 9Router, tekan Reset Codex. Pada lingkungan pengujian, tombol ini mengembalikan Codex ke konfigurasi bawaan ChatGPT sehingga config.toml tidak perlu diedit manual.

3. Sinkronkan seluruh history ke OpenAI

Jalankan:

codex-provider sync --provider openai

4. Buka kembali Codex

Setelah selesai, buka Codex Desktop dan pastikan history kembali tampil.

Melanjutkan Chat dengan Provider Berbeda

Sinkronisasi provider membuat history terlihat, tetapi setiap thread masih memiliki model terakhir yang pernah digunakan.

Contohnya:

  • Thread OpenAI dapat menyimpan model gpt-5.5.
  • Thread 9Router dapat menyimpan model codex-combo.

Codex Desktop hanya menampilkan model resmi seperti GPT-5.5, GPT-5.4, dan GPT-5.4-Mini. Model arbitrary dari provider custom biasanya hanya ditampilkan sebagai Custom, sehingga override lebih mudah dilakukan melalui CLI.

CLI Codex bawaan aplikasi macOS berada di:

/Applications/Codex.app/Contents/Resources/codex

Melanjutkan chat OpenAI menggunakan 9Router

Pastikan konfigurasi 9Router aktif dan history sudah disinkronkan, lalu jalankan:

/Applications/Codex.app/Contents/Resources/codex resume --all -m codex-combo

Pilih chat yang ingin dilanjutkan, lalu kirim satu pesan melalui Terminal.

Alternatif model yang juga tersedia pada pengujian:

/Applications/Codex.app/Contents/Resources/codex resume --all -m cx/gpt-5.5

Melanjutkan chat 9Router menggunakan ChatGPT

Pastikan konfigurasi ChatGPT aktif dan history sudah disinkronkan ke openai, lalu jalankan:

/Applications/Codex.app/Contents/Resources/codex resume --all -m gpt-5.5

Pilih chat 9Router lama dan kirim satu pesan. Override model hanya berlaku pada chat yang dipilih, bukan seluruh history.

Arti Opsi resume

Pada perintah berikut:

codex resume --all -m gpt-5.5

Artinya:

  • resume: membuka dan melanjutkan thread yang sudah ada.
  • --all: menampilkan semua thread tanpa filter folder kerja.
  • -m atau --model: menentukan model untuk thread yang dipilih.

Jika ID thread sudah diketahui, gunakan:

/Applications/Codex.app/Contents/Resources/codex resume ID-THREAD -m gpt-5.5

Troubleshooting

zsh: command not found: codex

Codex CLI belum berada di PATH. Gunakan path lengkap:

/Applications/Codex.app/Contents/Resources/codex

Atau buat alias sementara:

alias codex='/Applications/Codex.app/Contents/Resources/codex'

No active credentials for provider: openai

Contoh error:

unexpected status 404 Not Found: No active credentials for provider: openai

Penyebab yang pernah ditemukan adalah salah mengetik model:

Salah: coding-combo
Benar: codex-combo

Gunakan:

/Applications/Codex.app/Contents/Resources/codex resume --all -m codex-combo

Atau gunakan model 9Router eksplisit:

/Applications/Codex.app/Contents/Resources/codex resume --all -m cx/gpt-5.5

Model codex-combo tidak didukung ChatGPT

Contoh error:

The 'codex-combo' model is not supported when using Codex with a ChatGPT account.

Thread masih membawa model 9Router. Override ke model ChatGPT:

/Applications/Codex.app/Contents/Resources/codex resume --all -m gpt-5.5

Database is locked

Tutup Codex Desktop dengan Cmd+Q, pastikan proses sudah berhenti, lalu ulangi sinkronisasi.

codex-provider sync --provider openai

atau:

codex-provider sync --provider 9router

History masih belum tampil lengkap

Periksa distribusi provider:

codex-provider status

Pastikan rollout dan SQLite hanya menunjukkan provider yang sedang aktif.

Codex Desktop juga dapat membatasi daftar awal ke sekitar 50 thread terbaru. Thread lama masih dapat ditemukan melalui:

/Applications/Codex.app/Contents/Resources/codex resume --all

Backup dan Restore

codex-provider-sync membuat backup pada:

~/.codex/backups_state/provider-sync/

Lihat daftar backup:

ls -lt ~/.codex/backups_state/provider-sync/

Untuk memulihkan backup tertentu:

codex-provider restore ~/.codex/backups_state/provider-sync/TIMESTAMP-BACKUP

Tutup Codex sebelum menjalankan restore.

Batasan encrypted_content

Beberapa response reasoning dapat tersimpan sebagai encrypted_content yang terkait dengan provider atau akun asal.

codex-provider-sync dapat membuat thread kembali terlihat, tetapi tidak mengenkripsi ulang data tersebut untuk provider lain. Akibatnya, sebagian thread mungkin gagal dilanjutkan atau di-compact dengan error:

invalid_encrypted_content

Jika ini terjadi, pilihan paling aman adalah kembali ke provider asal atau membuat thread baru dengan ringkasan konteks dari thread lama.

Alur Singkat

ChatGPT ke 9Router

Tutup Codex
→ 9Router: Set Codex Desktop
→ codex-provider sync --provider 9router
→ Buka Codex
→ Jika perlu: codex resume --all -m codex-combo

9Router ke ChatGPT

Tutup Codex
→ 9Router: Reset Codex
→ codex-provider sync --provider openai
→ Buka Codex
→ Jika perlu: codex resume --all -m gpt-5.5

Kesimpulan

History Codex sebenarnya tidak hilang ketika provider diganti. Penyebab utamanya adalah ketidaksesuaian metadata provider dan model pada konfigurasi, rollout, serta database SQLite.

Dengan codex-provider-sync, seluruh history dapat diselaraskan ke provider aktif. Jika chat lama masih membawa model dari provider sebelumnya, gunakan codex resume --model untuk mengganti model hanya pada thread tersebut.

Metode ini tetap merupakan workaround komunitas, bukan fitur migrasi provider resmi Codex. Selalu tutup Codex sebelum sinkronisasi dan simpan backup.

Referensi

No comments:

Post a Comment