================================================================ SWITCH-API — Panduan Provider API Bedrock, MWAPI dan MiraiAPI untuk Claude Code, OpenCode dan Hermes Agent Versi 2.4 · 2026-11-02 ================================================================ PROVIDER YANG DISOKONG Bedrock https://www.bedrock.com.de (Bedrock Cloud — bukan AWS Bedrock rasmi) MWAPI https://api.mwapi.dev MiraiAPI https://miraiapi.com Daftar akaun dan dapatkan API key di laman web provider. Dokumen ini TIDAK mengandungi sebarang API key dan selamat untuk dikongsi. Setiap pengguna perlu memasukkan API key masing-masing di komputer sendiri. Panduan ini untuk SEMUA pengguna: Windows, Mac dan Linux; pengguna baharu atau berpengalaman; yang menggunakan satu app atau ketiga- tiganya; dan yang melanggan satu provider atau lebih. Mulakan di bahagian 1 untuk mengetahui kaedah yang sesuai untuk anda. ISI KANDUNGAN 1. Mula di sini — pilihan kaedah dan istilah asas 2. App dan file yang diubah 3. Provider dan sokongan app 4. Kesilapan lazim 5. KAEDAH A — Skrip PowerShell (disyorkan) 6. KAEDAH B — Edit manual 6A. Claude Code 6B. OpenCode 6C. Hermes Agent 6D. VS Code 7. KAEDAH C — OpenCode Console (website, OpenCode 2 sahaja) 8. Penyelesaian masalah 9. Keselamatan 10. Semakan sebelum memilih provider baharu ---------------------------------------------------------------- 1. MULA DI SINI — PILIHAN KAEDAH DAN ISTILAH ASAS ---------------------------------------------------------------- PILIH MENGIKUT SITUASI ANDA Situasi anda Kaedah ---------------------------------------- --------------------- Windows, mahu cara paling mudah A (skrip PowerShell) Windows, tidak mahu install apa-apa B (edit manual) Mac atau Linux B (edit manual) — skrip PowerShell untuk Windows sahaja Pasukan yang menggunakan OpenCode 2 C (OpenCode Console) Provider selain mwapi / bedrock / mirai B, kemudian rujuk bahagian 10 Anda TIDAK perlu menggunakan semua app atau melanggan semua provider. Ikut langkah untuk app dan provider yang anda guna sahaja; abaikan yang lain. KAEDAH A — Skrip PowerShell (switch-api.ps1) + Satu skrip untuk Claude Code, OpenCode dan Hermes Agent + Provider ditukar dengan satu command + Backup dibuat secara automatik; file settings tidak akan rosak + API key disimpan sekali sahaja dan dikongsi oleh semua app - Perlu di-install sekali (kira-kira 2 minit, tiada software tambahan diperlukan) KAEDAH B — Edit manual menggunakan Notepad + Tiada install diperlukan - Lebih mudah berlaku kesilapan (tanda koma, nama model, jenis authentication) - API key perlu di-paste setiap kali menukar provider KAEDAH C — OpenCode Console (website, OpenCode 2 sahaja) + Provider diisi melalui borang di website, tiada file diedit + Sesuai untuk pasukan: satu setup untuk semua ahli workspace - Untuk OpenCode 2 sahaja (bukan Claude Code / Hermes) - Perlu akaun OpenCode Console - Semua request dan API key melalui server OpenCode Kerap menukar provider atau ingin berkongsi? -> KAEDAH A Menukar sekali-sekala sahaja? -> KAEDAH B Pasukan yang menggunakan OpenCode 2? -> KAEDAH C ISTILAH ASAS Provider Syarikat yang menyediakan akses model AI melalui internet (contoh: mwapi, bedrock, mirai). API key "Kata laluan" akaun provider anda. Dapatkan dari dashboard provider. Rahsiakan. Base URL Alamat server provider, contoh https://api.mwapi.dev Model Nama model AI yang digunakan, contoh claude-opus-5-5. Nama mesti tepat seperti dalam dashboard provider. Terminal Window untuk menaip command. Windows: PowerShell atau Terminal. Mac: app Terminal. Linux: Terminal. JSON / YAML Format file settings. Satu tanda koma atau ruang yang salah boleh merosakkan file — sentiasa buat backup dahulu. WSL2 Linux yang berjalan di dalam Windows. Diperlukan untuk Hermes Agent di Windows sahaja. Restart Tutup app sepenuhnya, kemudian buka semula. ---------------------------------------------------------------- 2. APP DAN FILE YANG DIUBAH ---------------------------------------------------------------- Lokasi file: Windows menggunakan %USERPROFILE%\... Mac / Linux menggunakan ~/... (folder home anda) CLAUDE CODE File : Windows %USERPROFILE%\.claude\settings.json Mac / Linux ~/.claude/settings.json Format : JSON, blok "env" Tanpa base url -> Claude Code menggunakan akaun claude.ai. OPENCODE File : Windows %USERPROFILE%\.config\opencode\opencode.json Mac / Linux ~/.config/opencode/opencode.json (atau opencode.jsonc jika opencode.json tiada) Format : OpenCode 2 - JSON, blok "providers" OpenCode 1 - JSON, blok "provider" Semak versi anda dengan: opencode --version OpenCode boleh menyimpan beberapa provider serentak. Model dipilih terus dalam OpenCode melalui /models HERMES AGENT File : ~/.hermes/config.yaml (Windows: di dalam WSL2; Mac / Linux: terus) Format : YAML, blok "model" Di Windows, Hermes HANYA berjalan dalam WSL2. Skrip mengesan folder Hermes dalam WSL secara automatik. VS CODE Extension Claude Code -> menggunakan settings Claude Code (switch-api claude ...) Extension Cline -> menyimpan API key dalam VS Code sendiri; perlu ditetapkan secara manual (lihat 6D). ---------------------------------------------------------------- 3. PROVIDER DAN SOKONGAN APP ---------------------------------------------------------------- Claude Code OpenCode Hermes mwapi Ya Ya Ya bedrock Ya Ya Ya mirai Ya Ya Ya A) MWAPI laman web: https://api.mwapi.dev base url : https://api.mwapi.dev auth : ANTHROPIC_AUTH_TOKEN (Claude Code) opus : claude-opus-5-5 sonnet : claude-sonnet-5-5 haiku : claude-haiku-4-5-20251001 B) BEDROCK (Bedrock Cloud — bukan AWS Bedrock rasmi) laman web: https://www.bedrock.com.de base url : https://api.bedrock.com.de auth : ANTHROPIC_AUTH_TOKEN (Claude Code) opus : claude-opus-5-5 sonnet : claude-sonnet-5-5 nota : Model claude-fable-5-1 turut disediakan. Tambah [1m] di hujung nama model untuk context 1 juta token. C) MIRAIAPI laman web: https://miraiapi.com base url : https://api.miraiapi.com auth : ANTHROPIC_API_KEY (Claude Code) <-- BERBEZA! opus : claude-opus-5-5 (default skrip) sonnet : claude-sonnet-5-5 (default skrip) nota : Jangan letakkan ANTHROPIC_AUTH_TOKEN dan ANTHROPIC_API_KEY serentak. Jika dashboard Mirai memaparkan nama lain (contoh dengan titik: claude-opus-4.8), gunakan nama dalam dashboard. NAMA MODEL: Nama model di atas ialah default. Provider boleh menukar nama model pada bila-bila masa, dan nama untuk Hermes (/v1/chat/completions) mungkin berbeza. Jika app memaparkan error "model not found", semak dashboard provider dan tukar nama model (lihat MENUKAR NAMA MODEL, Kaedah A). PROVIDER LAIN: Menggunakan provider selain tiga di atas? Gunakan Kaedah B dan rujuk bahagian 10. ---------------------------------------------------------------- 4. KESILAPAN LAZIM ---------------------------------------------------------------- - Base url berbeza mengikut app: Claude Code : TANPA /v1 (cth https://api.mwapi.dev) OpenCode : DENGAN /v1 (cth https://api.mwapi.dev/v1) Hermes : DENGAN /v1 (cth https://api.mwapi.dev/v1) - JANGAN letakkan tanda koma pada baris TERAKHIR dalam blok JSON. File JSON akan rosak dan app tidak dapat membaca settings langsung. - Tukar SEMUA baris serentak: base url, API key dan nama model. Mencampurkan settings dua provider akan menyebabkan error 401 atau "model not found". - Selepas menukar settings, RESTART app tersebut. Claude Code: taip /status untuk pengesahan. - API rasmi Anthropic (console.anthropic.com): BUANG ANTHROPIC_BASE_URL dan gunakan ANTHROPIC_API_KEY. ---------------------------------------------------------------- 5. KAEDAH A — SKRIP POWERSHELL (disyorkan) ---------------------------------------------------------------- KEPERLUAN: - Windows 10 atau 11 sahaja. PowerShell tersedia secara default pada semua komputer Windows. Node.js, Git atau software lain tidak diperlukan. - Pengguna Mac / Linux: gunakan Kaedah B. - Hanya untuk provider mwapi, bedrock dan mirai. Untuk provider lain, gunakan Kaedah B. LANGKAH 1 — Muat turun skrip Pilihan 1 — command (paling mudah). Buka PowerShell melalui menu Start dan paste command berikut (satu baris). Ia mencipta folder Documents\switch-api, masuk ke folder tersebut dan memuat turun skrip. Selepas itu, terus ke LANGKAH 3. New-Item -ItemType Directory -Force "$env:USERPROFILE\Documents\switch-api" | Out-Null; cd "$env:USERPROFILE\Documents\switch-api"; [Net.ServicePointManager]::SecurityProtocol = 'Tls12'; irm https://switch-api.pages.dev/switch-api.ps1 -OutFile switch-api.ps1 Pilihan 2 — browser. Buka https://switch-api.pages.dev/switch-api.ps1 dan simpan file dalam satu folder, contohnya: C:\Users\\Documents\switch-api Panduan ini juga boleh dibaca dalam talian: https://switch-api.pages.dev LANGKAH 2 — Buka PowerShell dalam folder tersebut Buka folder tersebut dalam File Explorer, klik kanan pada ruang kosong, kemudian pilih "Open in Terminal". Sebagai alternatif, buka PowerShell melalui menu Start dan taip command berikut (gantikan dengan path folder sebenar): cd "$env:USERPROFILE\Documents\switch-api" LANGKAH 3 — Install (sekali sahaja) powershell -ExecutionPolicy Bypass -File .\switch-api.ps1 install Jika berjaya, mesej berikut akan dipaparkan: Dipasang: C:\Users\\AppData\Local\switch-api PATH user ditambah: ... Akses Administrator tidak diperlukan. LANGKAH 4 — TUTUP PowerShell dan buka window BAHARU Langkah ini wajib. Window lama tidak mengenali command switch-api. Untuk menyemak, taip: switch-api list LANGKAH 5 — Simpan API key (sekali bagi setiap provider) switch-api setup mwapi switch-api setup bedrock switch-api setup mirai Jalankan untuk provider yang anda langgan SAHAJA. Contohnya, jika anda hanya ada akaun mwapi, jalankan switch-api setup mwapi sahaja. Paste API key apabila diminta (klik kanan untuk paste), kemudian tekan Enter. API key tidak akan dipaparkan di skrin; ini adalah normal. API key yang sama digunakan oleh semua app. API key disimpan dalam: %USERPROFILE%\.switch-api\providers\.conf LANGKAH 6 — Tukar provider bagi setiap app Format: switch-api use switch-api claude use mwapi switch-api opencode use bedrock switch-api hermes use mwapi Setiap app boleh menggunakan provider yang berbeza. Nota OpenCode: command ini mendaftarkan SEMUA provider yang mempunyai API key, dan menjadikan provider pilihan sebagai model default. Selepas itu, tukar provider terus dalam OpenCode melalui /models tanpa perlu menjalankan skrip lagi. Skrip mengesan versi OpenCode secara automatik (opencode --version) dan menulis format yang sesuai: "providers" untuk OpenCode 2, "provider" untuk OpenCode 1. Untuk memaksa format tertentu (contohnya jika opencode tiada dalam PATH): $env:SWITCH_API_OPENCODE_FORMAT = "v2" (atau "v1") Nota Hermes: Hermes mesti sudah dipasang dalam WSL2. Skrip akan mencari ~/.hermes dalam WSL secara automatik. Nota Claude Code: format lama switch-api use mwapi (tanpa nama app) masih berfungsi dan bermaksud Claude Code. LANGKAH 7 — Restart app dan sahkan Claude Code (terminal) : tutup claude, kemudian buka semula. Claude Code (VS Code) : Ctrl+Shift+P > "Developer: Reload Window". Taip /status untuk pengesahan. OpenCode 1 : tutup opencode, kemudian buka semula. OpenCode 2 : skrip menjalankan opencode reload secara automatik (OpenCode 2 berjalan sebagai background service; menutup app sahaja tidak memuat semula config). Jika gagal: opencode service restart Taip /models untuk melihat provider. Hermes Agent : tutup hermes (dalam WSL), kemudian buka semula. VS Code : Ctrl+Shift+P > "Developer: Reload Window". COMMAND LAIN: switch-api list senarai provider, status API key dan settings aktif semua app switch-api current settings aktif semua app switch-api current settings aktif satu app switch-api off buang settings switch-api daripada app tersebut switch-api paparan bantuan FUNGSI SKRIP: - Membuat backup file settings terlebih dahulu (.bak..) - Claude Code : menukar baris ANTHROPIC_* dalam blok "env" - OpenCode : menambah provider dengan nama "(switch-api)". Provider yang anda tambah sendiri TIDAK diubah. Jika file ialah opencode.jsonc, komen di dalamnya tidak dikekalkan (salinan asal ada dalam backup). - Hermes Agent: menggantikan blok "model:" dengan blok bertanda "# >>> switch-api". Blok asal anda dijadikan komen dan dipulihkan semasa "off". - Settings lain (statusLine, plugin, theme, MCP, profiles) TIDAK diubah. MENUKAR NAMA MODEL: notepad "$env:USERPROFILE\.switch-api\providers\mirai.conf" Buang tanda # di hadapan baris yang berkaitan, tukar nama model, kemudian simpan: MODEL_OPUS=... model opus (Claude Code, OpenCode) MODEL_SONNET=... model sonnet (Claude Code, OpenCode) MODEL_HAIKU=... model haiku (Claude Code, OpenCode) MODEL_HERMES=... model untuk Hermes Agent Seterusnya jalankan semula command "use" bagi app tersebut. UNINSTALL: switch-api uninstall Command switch-api dan entri PATH akan dibuang. Anda kemudian akan ditanya dua soalan (jawapan default ialah Tidak; tekan Enter untuk melangkau): - Buang settings switch-api daripada semua app? (sama seperti "off") - Padam semua API key dalam %USERPROFILE%\.switch-api\providers? File backup *.bak.* tidak akan diubah. ---------------------------------------------------------------- 6. KAEDAH B — EDIT MANUAL ---------------------------------------------------------------- Sebelum edit mana-mana file, TUTUP app tersebut dan buat backup. Contoh command di bawah ditulis untuk PowerShell (Windows). Pengguna Mac / Linux, gunakan padanan berikut dalam Terminal: Tindakan Windows (PowerShell) Mac / Linux (Terminal) ------------- ------------------------------- ----------------------------- Folder home $env:USERPROFILE\ ~/ Backup Copy-Item "" ".bak" cp .bak Buka editor notepad "" nano (Mac: open -e ) Semak JSON ... | ConvertFrom-Json python3 -m json.tool Pulih backup Copy-Item ".bak" "" cp .bak Contoh Mac / Linux untuk Claude Code: cp ~/.claude/settings.json ~/.claude/settings.json.bak nano ~/.claude/settings.json Dalam nano: simpan dengan Ctrl+O, Enter; keluar dengan Ctrl+X. Kandungan JSON / YAML yang perlu ditulis adalah SAMA untuk semua sistem operasi. 6A. CLAUDE CODE --------------- LANGKAH 1 — Buat backup. Buka PowerShell dan paste: Copy-Item "$env:USERPROFILE\.claude\settings.json" "$env:USERPROFILE\.claude\settings.json.bak" LANGKAH 2 — Buka file menggunakan Notepad: notepad "$env:USERPROFILE\.claude\settings.json" Jika Notepad bertanya sama ada hendak mencipta file baharu, pilih Yes. LANGKAH 3 — Edit file (a) File KOSONG atau baharu — paste kandungan berikut (gantikan API key): { "env": { "ANTHROPIC_BASE_URL": "https://api.mwapi.dev", "ANTHROPIC_AUTH_TOKEN": "", "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5", "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5-5" } } (b) File sudah mempunyai kandungan tetapi TIADA "env" — tambah blok "env" selepas tanda { yang pertama, dan letakkan TANDA KOMA selepas } penutup blok "env" kerana terdapat settings lain di bawahnya: { "env": { "ANTHROPIC_BASE_URL": "https://api.mwapi.dev", "ANTHROPIC_AUTH_TOKEN": "", "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5", "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5-5" }, "theme": "dark" } (c) Blok "env" sudah wujud — tukar baris ANTHROPIC_* sahaja. Contoh lain: BEDROCK: "ANTHROPIC_BASE_URL": "https://api.bedrock.com.de", "ANTHROPIC_AUTH_TOKEN": "", MIRAI (guna API_KEY, buang AUTH_TOKEN): "ANTHROPIC_BASE_URL": "https://api.miraiapi.com", "ANTHROPIC_API_KEY": "", Simpan file: Ctrl+S. LANGKAH 4 — Pastikan file JSON valid. Dalam PowerShell: Get-Content "$env:USERPROFILE\.claude\settings.json" -Raw | ConvertFrom-Json Senarai settings dipaparkan -> file valid. Error merah dipaparkan -> terdapat kesilapan (biasanya tanda koma). Betulkan, atau pulihkan backup: Copy-Item "$env:USERPROFILE\.claude\settings.json.bak" "$env:USERPROFILE\.claude\settings.json" LANGKAH 5 — Buka Claude Code dan taip /status untuk pengesahan. KEMBALI KE CLAUDE.AI: Buang SEMUA baris ANTHROPIC_* daripada blok "env". Jika blok "env" menjadi kosong, buang keseluruhan blok tersebut. 6B. OPENCODE ------------ LANGKAH 1 — Buat backup dan buka file: Copy-Item "$env:USERPROFILE\.config\opencode\opencode.json" "$env:USERPROFILE\.config\opencode\opencode.json.bak" notepad "$env:USERPROFILE\.config\opencode\opencode.json" Jika anda menggunakan opencode.jsonc, gantikan nama file di atas. LANGKAH 2 — Edit file Semak versi dahulu: opencode --version OPENCODE 2 (versi 2.x) — blok "providers". Contoh untuk mwapi (gantikan API key): { "$schema": "https://opencode.ai/config.json", "providers": { "mwapi": { "name": "mwapi", "package": "@opencode/ai/providers/anthropic-compatible", "settings": { "baseURL": "https://api.mwapi.dev/v1", "apiKey": "" }, "headers": { "Authorization": "Bearer " }, "models": { "claude-opus-5-5": { "name": "claude-opus-5-5" }, "claude-sonnet-5-5": { "name": "claude-sonnet-5-5" } } } }, "model": "mwapi/claude-opus-5-5" } Blok "headers" diperlukan untuk mwapi dan bedrock sahaja. Untuk mirai, buang blok "headers". OPENCODE 1 (versi 1.x) — blok "provider". Contoh untuk mwapi (gantikan API key): { "$schema": "https://opencode.ai/config.json", "provider": { "mwapi": { "npm": "@ai-sdk/anthropic", "name": "mwapi", "options": { "baseURL": "https://api.mwapi.dev/v1", "apiKey": "" }, "models": { "claude-opus-5-5": { "name": "claude-opus-5-5" }, "claude-sonnet-5-5": { "name": "claude-sonnet-5-5" } } } }, "model": "mwapi/claude-opus-5-5" } OpenCode 2 masih boleh membaca format OpenCode 1, tetapi jangan campurkan kedua-dua format dalam SATU entry provider. Untuk provider lain, tambah blok yang sama dalam "providers" (OpenCode 2) atau "provider" (OpenCode 1), dipisahkan dengan tanda koma, dan tukar baseURL: bedrock : https://api.bedrock.com.de/v1 mirai : https://api.miraiapi.com/v1 Simpan file: Ctrl+S. LANGKAH 3 — Pastikan file JSON valid (untuk opencode.json sahaja; ConvertFrom-Json tidak menerima komen .jsonc): Get-Content "$env:USERPROFILE\.config\opencode\opencode.json" -Raw | ConvertFrom-Json LANGKAH 4 — Buka OpenCode dan taip /models untuk memilih model. 6C. HERMES AGENT ---------------- Windows: semua langkah di bawah dijalankan DALAM WSL. Mac / Linux: jalankan terus dalam Terminal. Cara paling mudah: jalankan hermes model dan pilih "Custom endpoint". Masukkan base URL, API key dan nama model. Atau edit file secara manual: cp ~/.hermes/config.yaml ~/.hermes/config.yaml.bak nano ~/.hermes/config.yaml Gantikan blok "model:" dengan (gantikan API key): model: provider: custom default: "claude-opus-5-5" base_url: "https://api.mwapi.dev/v1" api_key: "" api_mode: chat_completions Untuk provider lain, tukar base_url: bedrock : https://api.bedrock.com.de/v1 mirai : https://api.miraiapi.com/v1 Hanya SATU blok "model:" dibenarkan dalam file. Indentasi mesti menggunakan ruang (space), bukan tab. 6D. VS CODE ----------- Extension Claude Code: Tiada tindakan tambahan diperlukan. Extension ini membaca file settings yang sama dengan Claude Code CLI. Selepas menukar provider, jalankan Ctrl+Shift+P > "Developer: Reload Window" (Mac: Cmd+Shift+P). Nota: jika settings VS Code anda mempunyai "claudeCode.environmentVariables", nilai di situ boleh mengatasi settings.json. Buang ANTHROPIC_* daripadanya. Extension Cline: 1. Buka panel Cline, klik ikon settings (gear). 2. API Provider : Anthropic 3. API Key : paste API key provider 4. Tandakan "Use custom base URL" dan masukkan base url TANPA /v1, contohnya https://api.mwapi.dev 5. Pilih model, kemudian klik Done. ---------------------------------------------------------------- 7. KAEDAH C — OPENCODE CONSOLE (WEBSITE, OPENCODE 2 SAHAJA) ---------------------------------------------------------------- OpenCode Console ialah servis PILIHAN di website OpenCode. Anda mendaftarkan custom provider di website, dan OpenCode 2 mengambilnya melalui /connect . Kaedah ini TIDAK wajib; Kaedah A dan B masih berfungsi untuk OpenCode 2 tanpa akaun Console. AMARAN PRIVASI - API key provider disimpan di server OpenCode Console. - Setiap request dihantar melalui gateway Console sebelum sampai ke provider, dan Console merekod setiap request serta kosnya. - Untuk kegunaan peribadi, Kaedah A atau B lebih ringkas dan lebih privasi (terus ke provider, tanpa pihak ketiga). Bil: provider yang mengecaj token. Console tidak menolak kredit untuk custom provider, tetapi tetap merekod penggunaannya. LANGKAH 1 — Log masuk ke OpenCode Console Buka https://opencode.ai dan log masuk ke Console. Setiap akaun mendapat workspace "Personal" secara automatik. LANGKAH 2 — Tambah custom provider Buka bahagian Providers, klik "Add Custom Provider", dan isi: Field mwapi / bedrock mirai --------- ------------------------- ------------------------- Base URL https://api.mwapi.dev/v1 https://api.miraiapi.com/v1 https://api.bedrock.com.de/v1 Format Anthropic Compatible Anthropic Compatible Auth mode Bearer API key header Credential API key provider API key provider Base URL mesti DENGAN /v1 (sama seperti config OpenCode). LANGKAH 3 — Tambah model Buka provider tersebut, klik "Add Model", dan isi: Display name : claude-opus-5-5 Model ID : claude-opus-5-5 Ulang untuk claude-sonnet-5-5 (dan untuk mwapi sahaja, claude-haiku-4-5-20251001 ). Pastikan toggle "Enabled" bagi setiap model dihidupkan. LANGKAH 4 — Sambungkan OpenCode 2 Dalam OpenCode, taip /connect dan pilih workspace anda. Kemudian taip /models . Provider dipaparkan sebagai " / ". LANGKAH 5 — Urus provider Tukar API key : klik credential pada halaman provider, masukkan key baharu. Sembunyikan : menu ⋯ > Disable (settings disimpan). Padam : menu ⋯ > Remove… Nota: - Jika "Managed providers only" dihidupkan dalam Settings > General, OpenCode hanya membenarkan provider workspace. Provider daripada Kaedah A / B tidak akan muncul. - Jika anda juga menggunakan Kaedah A untuk OpenCode, provider yang sama akan muncul dua kali dalam /models (satu dari config, satu dari workspace). Ini tidak menjejaskan apa-apa, tetapi pilih salah satu kaedah supaya tidak keliru. - Langkah di atas berdasarkan dokumentasi OpenCode (opencode.ai/v2/docs/console/providers). Paparan website mungkin berubah. ---------------------------------------------------------------- 8. PENYELESAIAN MASALAH ---------------------------------------------------------------- "switch-api is not recognized ..." -> Skrip belum di-install (Kaedah A, Langkah 3), ATAU window PowerShell baharu belum dibuka selepas install (Langkah 4). "... running scripts is disabled on this system" -> Jangan jalankan .\switch-api.ps1 secara terus. Gunakan command penuh: powershell -ExecutionPolicy Bypass -File .\switch-api.ps1 install "The argument '.\switch-api.ps1' ... does not exist" -> PowerShell tidak berada dalam folder yang betul. Ulang Langkah 2. "ralat: fail tetapan tidak dijumpai" (semasa off / current) -> File settings app tersebut belum wujud, bermakna tiada settings yang aktif. Tiada tindakan diperlukan. (Command "use" akan mencipta file tersebut.) "ralat: settings.json tidak sah" / "opencode.json tidak sah" -> File JSON rosak (biasanya disebabkan tanda koma). Pulihkan backup terkini, contohnya: Get-ChildItem "$env:USERPROFILE\.claude\settings.json.bak*" Copy-Item "" "$env:USERPROFILE\.claude\settings.json" "ralat: fail key belum ada" / "TOKEN kosong" -> Jalankan: switch-api setup "ralat: folder Hermes tidak dijumpai" -> Hermes belum dipasang dalam WSL2, atau WSL tidak dipasang. Pasang Hermes dalam WSL terlebih dahulu. Jika Hermes berada di lokasi lain, tetapkan environment variable HERMES_HOME. OpenCode 2 tidak mengenali provider / "Model unavailable" -> Pastikan format sepadan dengan versi (opencode --version). Jalankan semula dengan format dipaksa: $env:SWITCH_API_OPENCODE_FORMAT = "v2" switch-api opencode use Kemudian semak dengan switch-api opencode current "ralat: provider '...' dalam opencode.json bukan dari switch-api" -> Anda sudah menambah provider dengan nama yang sama secara manual. Buang entry tersebut, atau teruskan secara manual. Error 401 / "authentication" / "invalid api key" -> API key salah atau telah tamat tempoh. Ulang: switch-api setup kemudian jalankan semula command "use". -> Claude Code + Mirai: pastikan ANTHROPIC_API_KEY digunakan, bukan AUTH_TOKEN. Error 403 / "Insufficient balance" / "Out of tokens" -> Baki kredit provider telah habis. Tambah kredit, atau tukar kepada provider lain buat sementara waktu: switch-api use "model not found" -> Nama model tidak valid bagi provider tersebut. Semak dashboard provider dan betulkan (rujuk MENUKAR NAMA MODEL dalam Kaedah A). Untuk Hermes, gunakan MODEL_HERMES. App masih menggunakan provider lama -> App belum di-restart. Tutup sepenuhnya, kemudian buka semula. -> Claude Code: pastikan tiada environment variable Windows yang mengatasi settings: Get-ChildItem env:ANTHROPIC* Jika ada, buang melalui: Start > "Edit environment variables for your account". -> Mac / Linux: semak dengan env | grep ANTHROPIC Jika ada, buang baris "export ANTHROPIC_..." daripada ~/.zshrc atau ~/.bashrc, kemudian buka Terminal baharu. ---------------------------------------------------------------- 9. KESELAMATAN — SILA BACA ---------------------------------------------------------------- API key disimpan sebagai TEKS BIASA dalam file berikut: Windows Mac / Linux %USERPROFILE%\.switch-api\providers\*.conf (Kaedah A sahaja) %USERPROFILE%\.claude\settings.json ~/.claude/settings.json %USERPROFILE%\.config\opencode\opencode.json ~/.config/opencode/opencode.json ~/.hermes/config.yaml (dalam WSL) ~/.hermes/config.yaml serta semua file backup *.bak* [!] JANGAN kongsi mana-mana file di atas [!] JANGAN ambil screenshot file tersebut [!] JANGAN commit file tersebut ke repository Git [!] Semua kod dan prompt anda dihantar melalui server provider pihak ketiga. Jika provider tersebut tidak boleh dipercayai, jangan letakkan maklumat rahsia atau file sensitif dalam projek anda. Skrip switch-api.ps1 itu sendiri selamat untuk dikongsi kerana ia hanya mengandungi URL awam dan nama model, tanpa API key. ---------------------------------------------------------------- 10. SEMAKAN SEBELUM MEMILIH PROVIDER BAHARU ---------------------------------------------------------------- 1. Format endpoint yang disediakan: Claude Code : format Anthropic (/v1/messages) OpenCode : format Anthropic atau OpenAI Hermes : format OpenAI Chat Completions (/v1/chat/completions) atau Anthropic 2. Adakah ia menyokong tool use dan streaming? Tanpa sokongan ini, app tidak dapat edit file atau menjalankan command. 3. Adakah provider boleh dipercayai? Semua data anda akan melalui server mereka. 4. Adakah nama model tepat? Salin nama terus dari dashboard provider. MENGGUNAKAN PROVIDER LAIN (Kaedah B) Ikut contoh mwapi dalam bahagian 6, dan tukar tiga perkara: - Base URL : alamat dari dokumentasi provider. Claude Code TANPA /v1; OpenCode dan Hermes DENGAN /v1. - API key : key dari dashboard provider. - Model : nama model dari dashboard provider. Jenis auth untuk Claude Code (semak dokumentasi provider): "Bearer token" -> ANTHROPIC_AUTH_TOKEN "x-api-key" / "API key" -> ANTHROPIC_API_KEY Jika tidak pasti, cuba ANTHROPIC_AUTH_TOKEN dahulu. Jika mendapat error 401, tukar kepada ANTHROPIC_API_KEY. Untuk OpenCode, blok "headers" (Bearer) hanya diperlukan jika provider menggunakan Bearer token. ---------------------------------------------------------------- Tamat dokumen ================================================================