Hubungkan model eksternal ke Codex
Klien Codex lokal tidak terbatas pada model yang dihosting OpenAI. Anda dapat menghubungkan Codex ke vendor model pihak ketiga, layanan agregasi API, atau gateway internal perusahaan dengan menggunakan CC Switch atau model provider Codex kustom.
Panduan ini membahas dua jalur integrasi untuk model pihak ketiga yang dihosting:
| Jalur integrasi | Paling sesuai untuk / Konversi protokol |
|---|---|
| CC Switch | Penyedia yang menyediakan Chat Completions atau Anthropic Messages, atau pengguna yang ingin beralih penyedia melalui antarmuka grafis Konversi protokol: CC Switch menangani konversi sesuai dengan protokol upstream |
model provider kustom |
Layanan yang mengimplementasikan OpenAI Responses API secara native dan lengkap Konversi protokol: Tidak diperlukan |
Ada satu batasan penting yang perlu dipahami terlebih dahulu:
Panduan ini berlaku untuk klien Codex yang berjalan secara lokal, termasuk Codex CLI, ekstensi Codex IDE, dan klien desktop yang membaca config.toml yang sama. Chat cloud Codex saat ini tidak dapat beralih ke model kustom melalui konfigurasi ini.
Sebelum memulai
Instal atau perbarui Codex CLI
npm install -g @openai/codex@latest
codex --versionSetelah instalasi pertama, jalankan Codex setidaknya sekali:
codexTindakan ini menginisialisasi direktori konfigurasi pengguna.
Lokasi file konfigurasi Codex
macOS dan Linux:
~/.codex/config.tomlWindows:
%USERPROFILE%\.codex\config.tomlCadangkan file sebelum membuat perubahan.
macOS / Linux:
mkdir -p ~/.codex/backup
cp ~/.codex/config.toml \
~/.codex/backup/config.toml.$(date +%Y%m%d-%H%M%S) \
2>/dev/null || truePowerShell:
$codexDir = Join-Path $HOME ".codex"
$backupDir = Join-Path $codexDir "backup"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
$configFile = Join-Path $codexDir "config.toml"
if (Test-Path $configFile) {
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
Copy-Item $configFile (Join-Path $backupDir "config.toml.$timestamp")
}Penyedia, MCP, dan gateway model berbeda
Konsep-konsep ini menyelesaikan masalah yang berbeda:
model_providermenentukan ke mana Codex mengirim permintaan model;- MCP menambahkan alat dan konteks seperti GitHub, browser, atau basis data;
- gateway model menangani konversi protokol, autentikasi, perutean, pencatatan, atau pembatasan laju antara Codex dan model upstream.
Untuk mengubah model yang mendasarinya, konfigurasikan penyedia, bukan MCP.
Lindungi API key
Jangan commit API key asli ke repositori Git atau menampilkan key lengkap dalam tangkapan layar, log, atau tiket dukungan.
Untuk penyedia yang dikonfigurasi secara manual, utamakan variabel lingkungan:
[model_providers.example]
env_key = "EXAMPLE_API_KEY"CC Switch menyimpan konfigurasi penyedia secara lokal dan mengubah konfigurasi Codex lokal saat Anda beralih penyedia. CC Switch adalah alat sumber terbuka pihak ketiga, bukan produk OpenAI. Instal hanya dari situs web resmi atau repositori GitHub CC Switch, serta lindungi basis data, konfigurasi, dan cadangan lokalnya.
1. Hubungkan model pihak ketiga dengan CC Switch
CC Switch merupakan opsi yang lebih mudah untuk sebagian besar model pihak ketiga. Alat ini mengelola penyedia, API key, daftar model, dan perutean lokal, serta dapat menerjemahkan protokol upstream yang tidak kompatibel.
1.1 Masalah yang diselesaikan CC Switch
Klien Codex modern mengirim permintaan Responses API, sedangkan banyak layanan pihak ketiga menyediakan salah satu dari hal berikut:
- OpenAI Chat Completions;
- Anthropic Messages;
- ID model yang secara default tidak tercantum di Codex;
- parameter penalaran atau format peristiwa streaming khusus vendor.
CC Switch dapat menerjemahkan jalur permintaan sebagai berikut:
Codex
│ Responses API
▼
CC Switch local route
│ Converts the protocol and model name when required
▼
Third-party model API
│
▼
CC Switch converts JSON, SSE, reasoning data, and tool calls back to Responses
│
▼
CodexPenyedia yang secara native mendukung Responses tidak memerlukan konversi protokol Chat. Penyedia Chat Completions atau Anthropic Messages memerlukan perutean lokal.
1.2 Instal CC Switch
Gunakan hanya saluran distribusi resmi:
Di macOS, Homebrew direkomendasikan:
brew install --cask cc-switchUntuk memperbarui:
brew upgrade --cask cc-switchDi Windows, unduh penginstal .msi atau arsip portabel dari Releases.
Di Linux, unduh paket .deb, .rpm, atau AppImage dari Releases. Label mungkin sedikit berubah antarversi, jadi gunakan rilis stabil terbaru dan jadikan opsi yang ditampilkan dalam aplikasi sebagai acuan utama.
1.3 Prasyarat
Siapkan hal-hal berikut:
- Codex telah diinstal dan dijalankan setidaknya sekali;
- CC Switch telah diinstal dan dapat dimulai dengan benar;
- Anda memiliki API key untuk layanan model tujuan;
- Anda telah mengonfirmasi Base URL, ID model, dan protokol upstream dalam dokumentasi penyedia;
- jika memerlukan fitur akun Codex resmi, selesaikan satu kali login resmi terlebih dahulu.
Periksa status login Codex saat ini:
codex login statusMasuk bila diperlukan:
codex loginLogin dengan kode perangkat juga tersedia:
codex login --device-auth1.4 Opsional: pertahankan login resmi saat menggunakan penyedia pihak ketiga
Hal ini terutama berguna jika Anda ingin mempertahankan fitur desktop, plugin resmi, atau fitur kendali jarak jauh sementara permintaan model dikirim ke penyedia pihak ketiga. Pengguna yang hanya menggunakan CLI dan tidak bergantung pada fitur akun resmi dapat melewatinya.
Urutan yang disarankan:
- pilih OpenAI Official di panel Codex CC Switch;
- jalankan Codex dan masuk dengan akun resmi;
- buka Settings → General → Codex App Enhancements di CC Switch;
- aktifkan Keep official login when switching third-party providers;
- tambahkan atau beralihlah ke penyedia pihak ketiga.
Dengan opsi ini diaktifkan, CC Switch berupaya mempertahankan:
~/.codex/auth.jsonuntuk status login resmi;~/.codex/config.tomluntuk penyedia pihak ketiga yang aktif, model, endpoint, dan konfigurasi autentikasi.
auth.json berisi data login sensitif. Jangan membagikannya atau melakukan commit ke kontrol versi.
1.5 Tambahkan penyedia pihak ketiga
Buka CC Switch, beralihlah ke panel tingkat atas Codex, lalu klik tombol tambah di sudut kanan atas.
Utamakan preset bawaan
Jika tersedia preset, gunakan preset tersebut dan masukkan hanya API key serta nilai khusus akun yang diperlukan. Preset biasanya mengonfigurasi:
- Base URL;
- model default;
- protokol upstream;
- apakah perutean lokal diperlukan;
- pemetaan model;
- parameter penalaran yang dipilih.
Daftar preset berubah seiring perkembangan CC Switch. Dokumentasi jangka panjang sebaiknya tidak menetapkan ID model vendor saat ini secara permanen; gunakan daftar dalam aplikasi dan dokumentasi resmi penyedia.
Buat penyedia kustom
Jika tidak tersedia preset, pilih konfigurasi kustom dan berikan:
| Bidang | Deskripsi |
|---|---|
| Provider Name | Nama tampilan lokal |
| API Key | Key layanan pihak ketiga |
| Base URL | Root API yang didokumentasikan oleh penyedia |
| Model ID | Pengidentifikasi model upstream yang tepat |
| Upstream Format | Protokol yang benar-benar disediakan oleh layanan upstream |
| Model Mapping | Model yang ditampilkan dan digunakan oleh Codex |
Pengaturan terpenting adalah Upstream Format:
| Format upstream | Gunakan ketika | Perutean lokal |
|---|---|---|
| Responses (native) | Upstream mengimplementasikan Responses secara native | Biasanya konversi protokol tidak diperlukan |
| Chat Completions (routing required) | Upstream menyediakan /chat/completions |
Diperlukan |
| Anthropic Messages (routing required) | Upstream menyediakan protokol Anthropic Messages | Diperlukan |
Jangan memilih Responses hanya karena penyedia mengiklankan “kompatibilitas OpenAI”. Banyak API yang kompatibel dengan OpenAI hanya mengimplementasikan Chat Completions.
1.6 Masukkan Base URL dengan benar
Secara default, CC Switch menambahkan jalur API yang sesuai ke Base URL. Dalam kebanyakan kasus, masukkan root API dari dokumentasi penyedia, alih-alih mengulangi sendiri /chat/completions atau /responses.
Misalnya, jika penyedia mendokumentasikan:
POST https://api.example.com/v1/chat/completionsAnda mungkin perlu memasukkan:
https://api.example.comatau, bergantung pada preset dan dokumentasi penyedia:
https://api.example.com/v1Apakah /v1 perlu disertakan dalam Base URL bergantung pada penyedia dan preset CC Switch. Gunakan pemeriksaan konektivitas bawaan atau log perutean untuk mengonfirmasi URL permintaan akhir.
Gunakan Full URL Mode hanya jika penyedia memerlukan jalur endpoint lengkap yang tidak standar.
1.7 Konfigurasikan Needs Local Routing dan pemetaan model
Aktifkan Needs Local Routing jika penyedia menggunakan Chat Completions, Anthropic Messages, atau nama model yang secara default tidak dikenali Codex.
Preset yang berorientasi Chat biasanya mengaktifkannya secara otomatis. Verifikasi opsi tersebut untuk penyedia kustom.
Setelah diaktifkan, tabel pemetaan model akan tersedia. Bidang yang umum meliputi:
| Bidang | Deskripsi |
|---|---|
| Model ID | Nama model persis yang diterima API upstream |
| Display Name | Nama opsional yang ditampilkan di menu /model Codex |
| Context Window | Opsional, panjang konteks sebenarnya dari model |
Hal-hal penting:
- gunakan ID model yang tepat dari dokumentasi penyedia;
- jangan menebak ukuran jendela konteks;
- mulai ulang Codex setelah mengubah daftar model;
- CC Switch menghasilkan katalog model Codex dari pemetaan ini;
- jika relay mengubah domain atau nama model, deteksi otomatis kemampuan penalaran mungkin keliru dan perlu ditinjau dalam pengaturan lanjutan.
1.8 Aktifkan perutean lokal dan pengambilalihan Codex
Di CC Switch, buka:
Settings → Routing → Local RoutingKemudian:
- aktifkan sakelar utama perutean lokal;
- aktifkan Codex di bawah Routing Enabled;
- konfirmasikan pengaturan Needs Local Routing penyedia;
- biarkan CC Switch tetap berjalan selama penyedia digunakan.
Rute lokal default biasanya:
http://127.0.0.1:15721Setelah pengambilalihan, konfigurasi Codex aktif mengarah ke rute lokal CC Switch. CC Switch kemudian meneruskan permintaan ke penyedia upstream yang saat ini dipilih.
Untuk upstream Chat Completions, alurnya biasanya:
Codex POST /responses
→ CC Switch converts it to POST /chat/completions
→ the provider returns JSON or SSE
→ CC Switch rebuilds Responses JSON or SSE
→ Codex continues the tool-call loop1.9 Beralih penyedia dan mulai ulang Codex
Kembali ke daftar penyedia Codex di CC Switch, pilih penyedia yang telah dikonfigurasi, lalu aktifkan.
Mulai ulang Codex sepenuhnya setelah beralih karena:
- Codex membaca
config.tomlsaat dimulai; - menu
/modelbiasanya memuat katalog saat dimulai; - ekstensi IDE atau klien desktop mungkin menyimpan cache penyedia sebelumnya;
- sesi yang ada mungkin mempertahankan metadata model lama.
Pengguna CLI cukup memulai proses baru:
codex1.10 Verifikasi integrasi
Di dalam Codex, jalankan:
/statusTinjau model aktif, penyedia, izin, dan informasi konteks.
Buka pemilih model:
/modelPeriksa lapisan konfigurasi:
/debug-configPeriksa juga:
- penyedia Codex yang aktif di CC Switch;
- log atau statistik perutean lokal CC Switch;
- riwayat permintaan dan perubahan saldo di dasbor penyedia;
- apakah
~/.codex/config.tomlsaat ini mengarah ke rute lokal.
Jangan memvalidasi penyiapan hanya dengan sapaan sederhana. Jalankan setidaknya satu pengujian kemampuan agen:
- minta Codex mencantumkan file dalam proyek saat ini;
- minta Codex membaca dan merangkum satu file;
- minta Codex mengubah sebuah file kecil;
- minta Codex menjalankan pengujian;
- biarkan satu kegagalan sederhana tetap ada dan verifikasi bahwa Codex dapat menggunakan hasil pengujian untuk melanjutkan perbaikan proyek.
Keberhasilan menghasilkan teks tidak membuktikan bahwa pemanggilan alat dan alur kerja agen multigilir kompatibel.
1.11 Beralih kembali ke penyedia resmi OpenAI
Pilih OpenAI Official di CC Switch dan mulai ulang Codex.
Periksa status login:
codex login statusJika perlu, masuk kembali:
codex loginJika memerlukan status login resmi sekaligus permintaan model pihak ketiga, pastikan Keep official login when switching third-party providers tetap diaktifkan.
1.12 Batasan dan pertimbangan operasional
CC Switch menyederhanakan konfigurasi, tetapi tidak menghilangkan batasan upstream:
- CC Switch harus tetap berjalan untuk konversi Chat atau Messages;
- konversi protokol tidak dapat mereproduksi setiap fitur khusus vendor;
- beberapa model dapat melakukan chat, tetapi tidak dapat menjalankan pemanggilan alat secara andal;
- Web Search, input gambar, WebSockets, atau penyimpanan respons mungkin tidak tersedia;
- batas laju, penagihan, dan kebijakan retensi data penyedia upstream tetap berlaku;
- relay API dapat mengubah permintaan dan respons lagi;
- konfigurasi harus diuji ulang setelah peningkatan CC Switch, Codex, atau penyedia.
CC Switch paling sesuai untuk pengembangan desktop lokal. Untuk server, CI, atau otomatisasi headless yang berjalan lama, utamakan penyedia Responses native atau gateway yang dihosting sendiri.
2. Hubungkan API yang dihosting dengan penyedia model kustom
Konfigurasikan penyedia secara langsung hanya jika layanan secara native mendukung Responses API yang diperlukan Codex.
Jika layanan hanya menyediakan /chat/completions atau Anthropic Messages, gunakan alur kerja CC Switch di bagian 1. Jangan mencoba mengatasi ketidakcocokan tersebut dengan wire_api = "chat".
2.1 Kemampuan API yang diperlukan
Penyedia yang sesuai untuk integrasi Codex langsung setidaknya harus mendukung:
POST /responses;- objek JSON Responses;
- peristiwa streaming SSE Responses;
- pemanggilan fungsi atau alat;
- parameter alat JSON Schema;
- kelanjutan setelah hasil alat dikembalikan;
- permintaan multigilir atau padanan
previous_response_id; - jendela konteks yang memadai dan permintaan jangka panjang yang stabil;
- autentikasi, batas laju, dan respons kesalahan yang terdokumentasi.
Pembuatan teks biasa saja tidak cukup untuk agen Codex yang andal.
2.2 Konfigurasi generik
Edit konfigurasi tingkat pengguna:
~/.codex/config.tomlTambahkan:
model_provider = "third_party"
model = "provider-model-id"
# Set this only when the model explicitly supports it.
model_reasoning_effort = "high"
# Optional: use the real value published by the provider when no catalog exists.
# model_context_window = 131072
[model_providers.third_party]
name = "My Responses-compatible Provider"
base_url = "https://provider.example.com/v1"
env_key = "THIRD_PARTY_API_KEY"
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 300000Jangan gunakan ID penyedia yang dicadangkan berikut:
openai
ollama
lmstudioGunakan ID kustom seperti third_party atau company_gateway sebagai gantinya.
2.3 Bidang konfigurasi
| Bidang | Tujuan |
|---|---|
model_provider |
Memilih penyedia yang dideklarasikan di bawah [model_providers.<id>] |
model |
ID model persis yang diterima layanan pihak ketiga |
name |
Nama penyedia yang mudah dibaca manusia |
base_url |
URL root untuk Responses API penyedia |
env_key |
Nama variabel lingkungan yang berisi API key |
wire_api |
Hanya responses yang didukung; nilai ini juga menjadi default jika dihilangkan |
request_max_retries |
Percobaan ulang untuk kegagalan permintaan HTTP biasa |
stream_max_retries |
Percobaan ulang setelah gangguan streaming |
stream_idle_timeout_ms |
Waktu tanpa peristiwa SSE sebelum stream dianggap tidak aktif |
model_context_window |
Ukuran jendela konteks sebenarnya yang bersifat opsional |
model_reasoning_effort |
Tingkat penalaran opsional yang didukung model |
Apakah base_url menyertakan /v1 bergantung pada dokumentasi penyedia. Endpoint akhir yang umum adalah:
https://provider.example.com/v1/responses2.4 Tetapkan API key
Sesi bash / zsh saat ini:
export THIRD_PARTY_API_KEY="your API key"fish:
set -gx THIRD_PARTY_API_KEY "your API key"Sesi PowerShell saat ini:
$env:THIRD_PARTY_API_KEY = "your API key"Simpan secara permanen untuk pengguna Windows saat ini:
[Environment]::SetEnvironmentVariable(
"THIRD_PARTY_API_KEY",
"your API key",
[EnvironmentVariableTarget]::User
)Mulai ulang terminal, IDE, atau klien desktop setelah menetapkan variabel lingkungan permanen.
2.5 Uji endpoint Responses terlebih dahulu
Sebelum menjalankan Codex, panggil penyedia secara langsung:
export PROVIDER_BASE_URL="https://provider.example.com/v1"
curl "$PROVIDER_BASE_URL/responses" \
-H "Authorization: Bearer $THIRD_PARTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "provider-model-id",
"input": "Reply with exactly: PROVIDER_OK",
"stream": false
}'Verifikasi bahwa:
- endpoint tidak mengembalikan 404;
- respons memiliki struktur bergaya Responses, bukan hanya array
choicesChat Completions; - ID model diterima;
- autentikasi sudah benar;
- kesalahan berisi informasi diagnostik yang berguna.
Kemudian uji secara terpisah:
stream: true;- pemanggilan alat;
- kelanjutan hasil alat;
- beberapa giliran;
- konteks panjang;
- konkurensi dan batas laju.
2.6 Validasi konfigurasi Codex
Mulai dalam mode ketat:
codex --strict-config--strict-config memperlakukan kunci konfigurasi yang tidak dikenal sebagai kesalahan, sehingga membantu mengidentifikasi bidang yang disalin dari panduan lama.
Di dalam Codex, jalankan:
/statusUntuk memeriksa sumber konfigurasi, jalankan:
/debug-configTimpa penyedia dan model untuk satu kali proses tanpa mengubah konfigurasi default:
codex \
-c 'model_provider="third_party"' \
-m 'provider-model-id'2.7 Katalog model dan Unknown model
Katalog model Codex dapat mendeskripsikan:
- ukuran jendela konteks;
- tingkat penalaran yang didukung;
- modalitas input;
- kemampuan pemanggilan alat;
- perilaku pemotongan;
- versi minimum klien.
Jika penyedia menyediakan katalog model yang kompatibel dengan Codex, simpan secara lokal dan konfigurasikan:
model_catalog_json = "~/.codex/provider-models.json"Jika tidak ada katalog, tetapkan jendela konteks hanya setelah mengonfirmasi nilai sebenarnya:
model_context_window = 131072Jangan menyalin metadata dari model yang tidak terkait hanya untuk menghilangkan peringatan. Metadata kemampuan atau konteks yang salah dapat menyebabkan pemotongan prematur, kesalahan batas upstream, atau kerusakan pemanggilan alat.
2.8 Daftar periksa kompatibilitas lengkap
Sebelum penggunaan produksi, uji:
- teks
/responsestanpa streaming; - streaming SSE Responses;
- satu pemanggilan alat;
- beberapa pemanggilan alat secara berurutan atau paralel;
- parameter JSON Schema;
- kelanjutan hasil alat;
- konteks panjang dan pemadatan otomatis;
- parameter penalaran;
- gambar atau modalitas input lainnya;
- batas laju dan perilaku percobaan ulang;
- apakah proxy menahan SSE dalam buffer;
- apakah penyedia menghapus atau menulis ulang bidang alat;
- kebijakan retensi data, pencatatan, dan privasi.
2.9 Lokasi konfigurasi penyedia
Tempatkan model_provider, model_providers, dan autentikasi penyedia dalam file tingkat pengguna:
~/.codex/config.tomlJangan menempatkannya dalam file tingkat repositori:
<project>/.codex/config.tomlCodex mengabaikan bidang lokal proyek yang dapat mengalihkan permintaan model atau mengubah autentikasi penyedia. Hal ini mencegah repositori kloning yang tidak tepercaya meneruskan permintaan secara diam-diam ke server lain.
3. Kelola beberapa penyedia pihak ketiga dengan profil
Pengguna CC Switch biasanya dapat beralih penyedia dalam aplikasi dan tidak memerlukan profil Codex.
Profil berguna jika Anda mengonfigurasi beberapa penyedia Responses native secara manual. Simpan definisi penyedia dalam konfigurasi dasar dan gunakan file profil terpisah untuk memilih penyedia dan model.
~/.codex/config.toml dasar:
[model_providers.provider_a]
name = "Provider A"
base_url = "https://api.provider-a.example/v1"
env_key = "PROVIDER_A_API_KEY"
wire_api = "responses"
[model_providers.provider_b]
name = "Provider B"
base_url = "https://api.provider-b.example/v1"
env_key = "PROVIDER_B_API_KEY"
wire_api = "responses"Buat:
~/.codex/fast.config.tomlmodel_provider = "provider_a"
model = "provider-a-fast-model"
model_reasoning_effort = "medium"Buat profil lain:
~/.codex/quality.config.tomlmodel_provider = "provider_b"
model = "provider-b-quality-model"
model_reasoning_effort = "high"Pilih profil saat menjalankan Codex:
codex --profile fast
codex --profile qualityMode noninteraktif:
codex exec --profile quality "Review the current changes"File profil berada di:
$CODEX_HOME/<profile-name>.config.tomlCODEX_HOME default adalah ~/.codex.
Versi Codex terbaru menggunakan file profil terpisah dan tidak lagi membaca tabel [profiles.<name>] lama. Migrasikan setiap profil lama ke file <name>.config.toml tersendiri.
4. Header kustom dan autentikasi lanjutan
4.1 Token bearer standar
Sebagian besar layanan pihak ketiga berfungsi dengan:
[model_providers.third_party]
env_key = "THIRD_PARTY_API_KEY"Codex membaca key dari lingkungan dan menerapkan autentikasi bearer penyedia.
4.2 Header API key kustom
Beberapa layanan memerlukan:
x-api-key: <key>Gunakan env_http_headers:
model_provider = "custom_header_provider"
model = "provider-model-id"
[model_providers.custom_header_provider]
name = "Custom Header Provider"
base_url = "https://provider.example.com/v1"
wire_api = "responses"
env_http_headers = { "x-api-key" = "VENDOR_API_KEY" }Nilai VENDOR_API_KEY adalah nama variabel lingkungan, bukan rahasia itu sendiri.
export VENDOR_API_KEY="your API key"4.3 Header statis dan parameter kueri
Tambahkan header statis yang tidak sensitif:
http_headers = { "X-Client-Name" = "codex", "X-Environment" = "development" }Tambahkan parameter kueri:
query_params = { "api-version" = "2026-08-01" }Jangan menempatkan rahasia asli di http_headers.
4.4 Autentikasi berbasis perintah
Lingkungan perusahaan dapat memperoleh token berumur pendek dari keychain, pembantu kredensial cloud, atau perintah internal:
[model_providers.corporate]
name = "Corporate Gateway"
base_url = "https://gateway.example.com/v1"
wire_api = "responses"
[model_providers.corporate.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000
refresh_interval_ms = 300000Perintah tersebut hanya boleh mencetak token ke output standar.
Jangan menggabungkan metode autentikasi berikut:
[model_providers.<id>.auth];env_key;experimental_bearer_token;requires_openai_auth.
4.5 Gunakan kembali autentikasi OpenAI melalui proxy
Tetapkan hal berikut hanya jika proxy masih mengakses model OpenAI dan Codex harus menggunakan autentikasi resmi OpenAI:
requires_openai_auth = trueIni bukan pengaturan yang tepat untuk API key model pihak ketiga biasa. Jika diaktifkan, Codex mengabaikan env_key penyedia.
5. Pemecahan masalah
5.1 CC Switch mengganti penyedia, tetapi Codex masih menggunakan model lama
Periksa setiap hal berikut:
- penyedia Codex yang diinginkan telah diaktifkan di CC Switch;
- sakelar utama perutean lokal aktif;
- Codex diaktifkan di bawah Routing Enabled;
- penyedia Chat atau Messages telah mengaktifkan Needs Local Routing;
- CC Switch masih berjalan;
- Codex, IDE, atau klien desktop telah dimulai ulang sepenuhnya;
/debug-configmenampilkan sumber konfigurasi yang diharapkan.
Mulai ulang Codex setelah mengubah pemetaan model agar menu /model dapat memuat ulang katalognya.
5.2 404, 400, atau endpoint /responses tidak ditemukan
Penyebab umum meliputi:
- memperlakukan penyedia Chat Completions sebagai penyedia Responses native;
- menambahkan atau menghapus
/v1secara keliru; - menambahkan
/chat/completionsdua kali; - tidak mengaktifkan Full URL Mode untuk endpoint yang tidak standar;
- perutean lokal tidak mengambil alih Codex;
- implementasi Responses yang tidak lengkap di gateway pihak ketiga.
Pengguna CC Switch harus memeriksa Upstream Format dan log perutean. Pengguna penyedia langsung harus memanggil <base_url>/responses dengan curl.
5.3 401 Unauthorized atau 403 Forbidden
Periksa:
- apakah API key valid;
- apakah key tersebut terkait dengan wilayah, proyek, atau paket yang benar;
- apakah akun memiliki saldo dan izin yang memadai;
- apakah layanan mengharapkan token bearer atau
x-api-key; - apakah nama variabel lingkungan sama persis dengan
env_key; - apakah CC Switch menyimpan key yang benar;
- apakah proxy menghapus header autentikasi.
Jangan mencetak key lengkap ke log bersama.
bash / zsh:
printenv THIRD_PARTY_API_KEYPowerShell:
$env:THIRD_PARTY_API_KEY5.4 Model tidak tercantum di /model
Periksa:
- apakah Model Mapping CC Switch berisi ID model upstream yang tepat;
- apakah penyedia telah disimpan dan diaktifkan;
- apakah Codex telah dimulai ulang;
- apakah penyedia manual memiliki
model_catalog_jsonyang valid; - apakah JSON katalog valid;
- apakah penyedia mengganti nama atau menghentikan model.
5.5 Teks berfungsi, tetapi Codex tidak dapat membaca file, mengedit kode, atau menjalankan perintah
Kemungkinan penyebab:
- kemampuan model dalam pemanggilan alat lemah;
- upstream tidak mengimplementasikan pemanggilan fungsi;
- relay menghapus ID pemanggilan alat;
- fragmen pemanggilan alat streaming tidak dirangkai kembali dengan benar;
- JSON Schema ditulis ulang;
- hasil alat tidak dikembalikan pada giliran berikutnya;
- konteks model terlalu pendek;
- katalog model mengiklankan kemampuan secara keliru.
Uji alur nyata “baca → edit → jalankan pengujian → periksa kegagalan → perbaiki”, bukan prompt chat sederhana.
5.6 Streaming sering terputus
Pengguna CC Switch harus memeriksa log perutean lokal dan respons upstream terlebih dahulu. Penyebab umum meliputi:
- antrean upstream atau waktu penalaran yang panjang;
- gateway yang tidak segera memancarkan SSE;
- buffering oleh CDN, reverse proxy, atau jaringan perusahaan;
- peristiwa upstream yang tidak standar;
- masalah kompatibilitas pada versi CC Switch atau penyedia tertentu.
Untuk penyedia langsung, Anda dapat meningkatkan:
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 600000Batas waktu yang lebih panjang dapat mengurangi masalah jaringan atau inferensi lambat, tetapi tidak dapat memperbaiki implementasi protokol yang keliru.
5.7 wire_api = "chat" mencegah Codex dimulai
Nilai ini muncul dalam panduan lama. Konfigurasi Codex saat ini hanya mendukung:
wire_api = "responses"Gunakan CC Switch jika upstream hanya menyediakan Chat Completions.
Periksa bidang usang lainnya dengan:
codex --strict-config5.8 Mengedit konfigurasi proyek tidak mengubah penyedia
Pengaturan penyedia berada di:
~/.codex/config.toml.codex/config.toml tingkat proyek tidak dapat menimpa bidang yang mengalihkan permintaan atau mengubah autentikasi penyedia, termasuk model_provider dan model_providers.
5.9 Terminal berfungsi, tetapi ekstensi IDE tidak dapat menemukan API key
Aplikasi GUI sering kali tidak mewarisi variabel yang diekspor sementara dalam terminal yang sudah berjalan.
Pilihannya meliputi:
- jalankan IDE dari terminal tempat variabel ditetapkan;
- simpan variabel secara permanen dalam lingkungan pengguna sistem operasi;
- tutup IDE sepenuhnya lalu buka kembali;
- gunakan CC Switch untuk mengelola konfigurasi penyedia lokal.
5.10 Login resmi atau fitur resmi berhenti berfungsi setelah beralih
Periksa:
- apakah OpenAI Official telah dipilih kembali;
- apakah Keep official login when switching third-party providers diaktifkan;
- apakah alur kerja lama menimpa
~/.codex/auth.json; - apakah
codex login statusberhasil.
Jika perlu, masuk kembali:
codex loginJangan membagikan atau mengedit secara manual file auth.json yang berisi token akses.
5.11 Web Search, gambar, atau kemampuan lanjutan lainnya tidak berfungsi
Penyedia yang mendukung teks dan pemanggilan alat belum tentu mengimplementasikan setiap kemampuan Codex.
Secara default, penyedia kustom tidak mengiklankan Web Search mandiri. Tetapkan hal berikut hanya jika penyedia, model, dan endpoint benar-benar mendukungnya:
supports_standalone_web_search = trueMengaktifkannya secara keliru hanya menyebabkan Codex mengirim permintaan yang tidak dapat diproses upstream. Validasi input gambar, WebSockets, penyimpanan respons, dan fitur lanjutan lainnya secara terpisah.
6. Pilih jalur integrasi
| Persyaratan | Jalur yang disarankan |
|---|---|
| Penyedia hanya menyediakan Chat Completions | CC Switch |
| Penyedia hanya menyediakan Anthropic Messages | CC Switch |
| Anda sering beralih di antara beberapa model pihak ketiga | CC Switch |
| Anda menginginkan antarmuka grafis untuk key dan model | CC Switch |
| Penyedia mendukung Responses sepenuhnya dan secara native | model provider kustom |
| Anda menjalankannya di server, dalam CI, atau tanpa desktop | Penyedia Responses native atau gateway yang dihosting sendiri |
| Perusahaan Anda memerlukan autentikasi, audit, dan batas laju terpusat | Gateway perusahaan beserta penyedia kustom |
| Model hanya dapat melakukan chat dan tidak dapat memanggil alat | Tidak cocok sebagai penyedia agen Codex lengkap |
Validasi setiap integrasi pada tiga tingkat:
- Konektivitas: integrasi menghasilkan teks secara andal;
- Penggunaan alat: integrasi dapat membaca file, menjalankan perintah, dan melanjutkan dari hasil alat;
- Penyelesaian tugas: integrasi dapat menyelesaikan alur edit, pengujian, dan perbaikan.
Tinjau juga:
- harga pihak ketiga;
- batas laju;
- apakah kode sumber dan prompt dicatat;
- wilayah penyimpanan data;
- persyaratan kepatuhan tim atau perusahaan;
- apakah peningkatan model memerlukan pengujian regresi.
Jika menggunakan API key pihak ketiga, penggunaan ditagihkan oleh penyedia atau relay tersebut. Penggunaan itu tidak secara otomatis memakai atau berbagi kuota yang disertakan dalam ChatGPT Plus, Pro, atau langganan Codex.