# Claude Code CLI โ€” Configuration with OmniRoute (Bahasa Melayu) ๐ŸŒ **Languages:** ๐Ÿ‡บ๐Ÿ‡ธ [English](../../../../guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ช๐Ÿ‡น [am](../../../am/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฆ [ar](../../../ar/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฟ [az](../../../az/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ง๐Ÿ‡ฌ [bg](../../../bg/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ง๐Ÿ‡ฉ [bn](../../../bn/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ง๐Ÿ‡ฆ [bs](../../../bs/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡จ๐Ÿ‡ฟ [cs](../../../cs/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ฐ [da](../../../da/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ช [de](../../../de/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ท [el](../../../el/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ช๐Ÿ‡ธ [es](../../../es/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ช๐Ÿ‡ช [et](../../../et/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ท [fa](../../../fa/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ซ๐Ÿ‡ฎ [fi](../../../fi/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ซ๐Ÿ‡ท [fr](../../../fr/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ช [ga](../../../ga/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [gu](../../../gu/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ha](../../../ha/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ฑ [he](../../../he/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [hi](../../../hi/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ญ๐Ÿ‡ท [hr](../../../hr/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ญ๐Ÿ‡บ [hu](../../../hu/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฒ [hy](../../../hy/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ฉ [id](../../../id/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ig](../../../ig/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡น [it](../../../it/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฏ๐Ÿ‡ต [ja](../../../ja/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ช [ka](../../../ka/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ญ [km](../../../km/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [kn](../../../kn/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ท [ko](../../../ko/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฑ๐Ÿ‡น [lt](../../../lt/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ป [lv](../../../lv/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ml](../../../ml/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [mr](../../../mr/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฒ๐Ÿ‡น [mt](../../../mt/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฒ๐Ÿ‡ฒ [my](../../../my/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ต [ne](../../../ne/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฑ [nl](../../../nl/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ด [no](../../../no/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [or](../../../or/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [pa](../../../pa/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ต๐Ÿ‡ญ [phi](../../../phi/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ต๐Ÿ‡ฑ [pl](../../../pl/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ต๐Ÿ‡น [pt](../../../pt/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ง๐Ÿ‡ท [pt-BR](../../../pt-BR/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ท๐Ÿ‡ด [ro](../../../ro/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ท๐Ÿ‡บ [ru](../../../ru/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ฐ [si](../../../si/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฐ [sk](../../../sk/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฎ [sl](../../../sl/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ท๐Ÿ‡ธ [sr](../../../sr/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ธ๐Ÿ‡ช [sv](../../../sv/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ช [sw](../../../sw/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ta](../../../ta/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [te](../../../te/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡น๐Ÿ‡ญ [th](../../../th/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡น๐Ÿ‡ท [tr](../../../tr/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡บ๐Ÿ‡ฆ [uk-UA](../../../uk-UA/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ต๐Ÿ‡ฐ [ur](../../../ur/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡บ๐Ÿ‡ฟ [uz](../../../uz/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ป๐Ÿ‡ณ [vi](../../../vi/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [yo](../../../yo/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡จ๐Ÿ‡ณ [zh-CN](../../../zh-CN/docs/guides/CLAUDE-CODE-CONFIGURATION.md) ยท ๐Ÿ‡น๐Ÿ‡ผ [zh-TW](../../../zh-TW/docs/guides/CLAUDE-CODE-CONFIGURATION.md) --- Halakan CLI **Claude Code** (`claude`) ke OmniRoute โ€” setempat atau VPS jauh โ€” dengan profil bagi setiap model, selaras dengan persediaan Codex. --- ## Mula pantas ```bash # Lancarkan Claude Code menggunakan OmniRoute setempat (mengesan konteks aktif secara automatik) omniroute launch # Menggunakan OmniRoute jauh (selepas `omniroute connect `, ini dilakukan secara automatik) omniroute launch --remote http://192.168.0.15:20128 --api-key oma_live_xxx # Jana profil bagi setiap model, kemudian lancarkan salah satu daripadanya omniroute setup-claude # menulis ~/.claude/profiles//settings.json omniroute launch --profile glm52 # Claude Code menggunakan glm/glm-5.2 melalui OmniRoute ``` --- ## Cara Claude Code bersambung ke get laluan Claude Code berkomunikasi dengan **Anthropic Messages API** dan dihalakan ke titik akhir tersuai menggunakan pemboleh ubah persekitaran (ia tidak mempunyai bendera `--base-url`): | Pemboleh ubah | Tujuan | | -------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | `ANTHROPIC_BASE_URL` | URL akar get laluan (Claude Code menambahkan `/v1/messages`). **Tiada akhiran `/v1`.** | | `ANTHROPIC_AUTH_TOKEN` | Dihantar sebagai `Authorization: Bearer โ€ฆ` โ€” gunakan token akses / kunci API OmniRoute anda | | `ANTHROPIC_API_KEY` | Alternatif: dihantar sebagai `x-api-key`. Jika kedua-duanya ditetapkan, `ANTHROPIC_AUTH_TOKEN` diutamakan | | `ANTHROPIC_MODEL` | Paksa model tertentu (mengatasi pilihan lalai pemilih `/model`) | | `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | `1` โ†’ pemilih `/model` asli menyenaraikan model `claude*`/`anthropic*` daripada `/v1/models` | | `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Hadkan token output bagi setiap respons (cth. `65536`) | | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Ambang token untuk pemadatan automatik | > Pemboleh ubah persekitaran dibaca **sekali sahaja semasa permulaan** โ€” mulakan semula Claude Code selepas mengubahnya. `omniroute launch` menetapkan kesemuanya untuk anda: ia menentukan URL asas + token daripada konteks aktif (jadi `omniroute connect ` kemudian `omniroute launch` terus berfungsi), menjalankan pemeriksaan kesihatan pelayan, dan melaksanakan `claude`. --- ## Alias penemuan โ€” paparkan model bukan Claude dalam pemilih `/model` Penemuan model get laluan Claude Code hanya menyenaraikan id yang bermula dengan `claude` atau `anthropic`, jadi dengan `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1`, pemilih `/model` asli biasanya menunjukkan **hanya** model Claude/Anthropic OmniRoute โ€” model `kimi/kimi-k2.6` atau `glm/glm-5.2` tidak akan muncul, walaupun penghalaannya berfungsi dengan baik. OmniRoute boleh mencerminkan mana-mana model (dan gabungan) yang didayakan di bawah id `claude/โ€ฆ` supaya ia melepasi penapis tersebut dan muncul dalam pemilih: ``` kimi/kimi-k2.6 โ†’ claude/kimi/kimi-k2.6 "Kimi K2.6 (OmniRoute)" glm/glm-5.2 โ†’ claude/glm/glm-5.2 "GLM 5.2 (OmniRoute)" โ†’ claude/combo/custo-otimizado ``` Apabila anda memilih salah satu daripadanya dalam Claude Code, OmniRoute membuang pembalut `claude/` dan mengembalikannya kepada id sebenar sebelum penghalaan โ€” id `claude/` yang tulen (penyedia OAuth Claude sebenar) sentiasa dibiarkan tanpa perubahan. **Ciri ini dimatikan secara lalai** dan dikawal oleh get tiga peringkat (yang paling khusus diutamakan), jadi OmniRoute biasa tidak akan menggandakan katalognya untuk klien yang tidak menggunakan Claude Code: | Peringkat | Lokasi | | --------- | ------------------------------------------------------------------------------- | | Model | Halaman butiran penyedia โ†’ togol "Dedahkan dalam Claude Code" bagi setiap model | | Penyedia | Halaman butiran penyedia โ†’ togol peringkat penyedia (merangkumi semua modelnya) | | Global | Tetapan โ†’ Bendera Ciri โ†’ `EXPOSE_CC_DISCOVERY_ALIASES` (dimatikan secara lalai) | Pemboleh ubah persekitaran `EXPOSE_CC_DISCOVERY_ALIASES` memaksa peringkat global dihidupkan dan mengatasi pilihan penggantian papan pemuka (skrin Bendera Ciri menunjukkan nota "aktif melalui pemboleh ubah persekitaran" apabila ini berlaku). Togol bagi setiap penyedia dan setiap model memperincikan kawalan tersebut โ€” cth. global dimatikan + penyedia Kimi dihidupkan akan mendedahkan hanya model Kimi. > โš ๏ธ **Ketidakpadanan tetingkap pada model bukan Claude.** Claude Code menganggap tetingkap konteks > 200K bagi mana-mana id yang tidak dikenalinya (ia tidak dapat membaca tetingkap sebenar daripada > `/v1/models`). Untuk model dengan tetingkap yang lebih besar (cth. 256K bagi Kimi K2), tetapkan > `CLAUDE_CODE_AUTO_COMPACT_WINDOW` kepada nilai yang lebih rendah daripada tetingkap sebenar model supaya > pemadatan automatik tidak berlaku terlalu awal. Profil yang dijana di atas sudah > melakukan ini bagi setiap model. --- ## Blok penyediaan awal pada papan pemuka Kad alat Claude (**Papan Pemuka โ†’ Kod CLI**) memaparkan serpihan `settings.json` yang tepat untuk tika ini, bersebelahan butang maklumat alias penemuan, dengan butang salin: ```jsonc { "env": { "ANTHROPIC_BASE_URL": "http://:20128", "ANTHROPIC_AUTH_TOKEN": "", "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1", }, } ``` URL asas ialah URL yang ditentukan oleh kad tersebut (termasuk penggantian tersuai yang anda taip), dan sudah dinormalkan โ€” tanpa akhiran `/v1` dan tanpa garis miring di hujung. **Kunci tersebut tidak pernah dipaparkan**: blok ini disertakan dengan ruang letak, jadi tangkapan skrin atau cebisan yang ditampal tidak boleh membocorkannya. Tampalkan kunci anda untuk menggantikannya. Tambahkan `CLAUDE_CODE_AUTO_COMPACT_WINDOW` di bawah blok `env` yang sama bagi mana-mana model yang tetingkap konteks sebenarnya bukan 200K โ€” Claude Code mengandaikan 200K untuk setiap id yang tidak dikenalinya, maka pemadatan automatik akan tercetus pada titik yang salah (lihat amaran dalam bahagian sebelumnya). Pembina cebisan turut menerima nilai tersebut, jadi pemanggil yang mengetahui saiz tetingkap model sasaran boleh menghasilkannya secara langsung. Sumber: `src/shared/services/claudeCliConfig.ts::buildClaudeDiscoverySettingsSnippet` (pembina tulen, diuji unit) yang dipaparkan oleh `ClaudeGatewayOnboardingBlock`. --- ## Profil (`CLAUDE_CONFIG_DIR`) Claude Code **tidak mempunyai fail profil natif** (tidak seperti `~/.codex/.config.toml` milik Codex). Mekanisme idiomatik ialah `CLAUDE_CONFIG_DIR` โ€” direktori konfigurasi yang berasingan bagi setiap profil, masing-masing dengan `settings.json`, kelayakan, sejarah dan cache tersendiri. `omniroute setup-claude` mendapatkan katalog `/v1/models` langsung dan menulis satu profil bagi setiap model pada `~/.claude/profiles//settings.json`, menggunakan semula **nama yang sama seperti `setup-codex`** (`glm52`, `kimi-k27`, `deepseek-pro`, โ€ฆ): ```jsonc // ~/.claude/profiles/glm52/settings.json { "$schema": "https://json.schemastore.org/claude-code-settings.json", "model": "glm/glm-5.2", "effortLevel": "xhigh", "env": { "ANTHROPIC_BASE_URL": "http://192.168.0.15:20128", "ANTHROPIC_MODEL": "glm/glm-5.2", "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1", "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "190000", }, } ``` > **Token pengesahan tidak pernah ditulis ke profil.** Lancarkan dengan > `omniroute launch --profile ` (ia menyuntik `ANTHROPIC_AUTH_TOKEN` daripada > konteks aktif), atau eksport sendiri `ANTHROPIC_AUTH_TOKEN` dan jalankan > `CLAUDE_CONFIG_DIR=~/.claude/profiles/ claude`. **Penyegerakan automatik selepas penemuan model (pilihan ikut serta).** OmniRoute boleh menjana semula fail `~/.claude/profiles//settings.json` yang sama secara automatik apabila penyegerakan model penyedia mengubah katalog langsung โ€” maka model baharu/yang dinamakan semula mendapat profil tanpa perlu menjalankan semula perintah tersebut. Ciri ini **dimatikan secara lalai**: togolkannya daripada **papan pemuka Kod CLI** ("Penyegerakan automatik profil CLI" โ†’ Claude Code), atau tetapkan `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES=true` (ia turut mematuhi `CLI_ALLOW_CONFIG_WRITES`, yang dihidupkan secara lalai). Apabila didayakan, ia hanya menulis fail profil; ia tidak pernah mengubah konfigurasi Claude aktif/lalai, pengesahan, atau `~/.claude/settings.json` anda. ### Menjana + menggunakan profil ```bash # OmniRoute setempat omniroute setup-claude # VPS jauh (menerapkan URL VPS ke dalam setiap profil) omniroute setup-claude --remote http://192.168.0.15:20128 --api-key oma_live_xxx # Hanya penyedia tertentu omniroute setup-claude --only glm,kimi # Pratonton tanpa menulis omniroute setup-claude --dry-run # Lancarkan profil omniroute launch --profile kimi-k27 ``` --- ## Peringkat model (pilihan) Claude Code menghalakan permintaan kepada peringkat keupayaan. Petakan setiap peringkat kepada model OmniRoute melalui persekitaran / tetapan jika anda mahu penyedia yang berbeza bagi setiap peringkat: ```bash export ANTHROPIC_DEFAULT_OPUS_MODEL="glm/glm-5.2" export ANTHROPIC_DEFAULT_SONNET_MODEL="kmc/kimi-k2.6" export ANTHROPIC_DEFAULT_HAIKU_MODEL="glm/glm-4.7-flash" ``` Jika tidak, satu `ANTHROPIC_MODEL` (yang ditetapkan oleh profil) digunakan untuk semuanya. --- ## Mod jauh Setelah anda menjalankan `omniroute connect ` (lihat [Mod Jauh](./REMOTE-MODE.md)), `omniroute launch` dan `omniroute setup-claude` secara automatik menyasarkan pelayan jauh tersebut dan menggunakan token akses berangkumnya โ€” tiada bendera tambahan diperlukan. Atasi tetapan ini bagi setiap pelaksanaan dengan `--remote` / `--api-key`. --- ## Penyelesaian masalah **Claude Code mengabaikan get laluan** โ€” pastikan `ANTHROPIC_BASE_URL` **tidak mengandungi `/v1`** dan mulakan semula `claude` (persekitaran dibaca sekali sahaja semasa permulaan). `omniroute launch` menguruskan perkara ini untuk anda. **Pemilih `/model` kosong / model get laluan tiada** โ€” memerlukan Claude Code v2.1.219+ dan `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1`. Hanya ID model `claude*` / `anthropic*` muncul dalam pemilih; paksa mana-mana model lain dengan `ANTHROPIC_MODEL=` (inilah yang dilakukan oleh profil). **`400 Ambiguous model 'claude-โ€ฆ'`** โ€” Claude Code sentiasa menghantar ID model **tanpa awalan** (contohnya `claude-opus-4-8`), jadi apabila kedua-dua penyedia Claude Code (`cc/โ€ฆ`) dan Claude (`claude/โ€ฆ`) disambungkan, ID tanpa awalan sepadan dengan dua laluan dan OmniRoute enggan membuat andaian. Betulkannya dengan salah satu cara: tetapkan ID berawalan dengan `ANTHROPIC_MODEL=cc/claude-opus-4-8`, atau dayakan **Utamakan Claude Code untuk model Claude tanpa awalan** โ€” togol pada halaman penyedia Claude, atau `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS=true` (dimatikan secara lalai; lihat [Persekitaran](../reference/ENVIRONMENT.md)) โ€” yang menghalakan ID `claude-*` tanpa awalan kepada Claude Code. Awalan penyedia yang dinyatakan secara jelas sentiasa diutamakan. **Ralat pengesahan** โ€” profil tidak menyimpan sebarang token. Gunakan `omniroute launch --profile` (menyuntikkannya) atau eksport `ANTHROPIC_AUTH_TOKEN`. **Profil tidak terasing** โ€” setiap profil mempunyai `CLAUDE_CONFIG_DIR` yang berbeza; sahkan `echo $CLAUDE_CONFIG_DIR` dalam sesi menghala ke `~/.claude/profiles/`.