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 --modeluntuk 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-sync0.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
9routerSaat 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.jsonMengubah 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.gitPeriksa instalasi:
codex-provider statusTool 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.sqlitePeriksa database yang sedang digunakan Codex:
lsof ~/.codex/state_5.sqlite ~/.codex/sqlite/state_5.sqlite 2>/dev/nullKemudian periksa database yang dipilih tool:
codex-provider statusHasil yang diharapkan pada lingkungan ini:
database: /Users/NAMA-USER/.codex/state_5.sqliteJika 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 9routerTool 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 openai4. 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/codexMelanjutkan chat OpenAI menggunakan 9Router
Pastikan konfigurasi 9Router aktif dan history sudah disinkronkan, lalu jalankan:
/Applications/Codex.app/Contents/Resources/codex resume --all -m codex-comboPilih 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.5Melanjutkan 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.5Pilih 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.5Artinya:
resume: membuka dan melanjutkan thread yang sudah ada.--all: menampilkan semua thread tanpa filter folder kerja.-matau--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.5Troubleshooting
zsh: command not found: codex
Codex CLI belum berada di PATH. Gunakan path lengkap:
/Applications/Codex.app/Contents/Resources/codexAtau 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: openaiPenyebab yang pernah ditemukan adalah salah mengetik model:
Salah: coding-combo
Benar: codex-comboGunakan:
/Applications/Codex.app/Contents/Resources/codex resume --all -m codex-comboAtau gunakan model 9Router eksplisit:
/Applications/Codex.app/Contents/Resources/codex resume --all -m cx/gpt-5.5Model 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.5Database is locked
Tutup Codex Desktop dengan Cmd+Q, pastikan proses sudah berhenti, lalu ulangi sinkronisasi.
codex-provider sync --provider openaiatau:
codex-provider sync --provider 9routerHistory masih belum tampil lengkap
Periksa distribusi provider:
codex-provider statusPastikan 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 --allBackup 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-BACKUPTutup 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_contentJika 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-combo9Router ke ChatGPT
Tutup Codex
→ 9Router: Reset Codex
→ codex-provider sync --provider openai
→ Buka Codex
→ Jika perlu: codex resume --all -m gpt-5.5Kesimpulan
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.

No comments:
Post a Comment