Dokumentasi
opencode
opencode membangun penyedianya di atas Vercel AI SDK, jadi untuk mengarahkannya ke endpoint baru cukup tambahkan satu blok yang menyebut paket npm dan baseURL. Paket yang Anda sebutkan menentukan format protokol yang digunakan.
Satu blok provider di opencode.json — @ai-sdk/openai-compatible untuk chat completions, @ai-sdk/openai saat Anda menginginkan permukaan /v1/responses.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 200000, "output": 64000 }
},
"claude-haiku-4-5": { "name": "Claude Haiku 4.5" }
}
}
}
}npm menentukan format protokol. @ai-sdk/openai-compatible menggunakan /v1/chat/completions; @ai-sdk/openai menggunakan /v1/responses. Kunavo menyediakan keduanya, jadi Anda dapat menggunakan salah satunya — gunakan paket Responses jika ingin item penalaran diteruskan pada keluarga GPT, dan paket chat-completions untuk kebutuhan lainnya."apiKey": "{env:KUNAVO_API_KEY}" membaca kunci dari lingkungan saat konfigurasi dimuat. opencode.json adalah file yang akhirnya masuk ke repositori; kunci literal di dalamnya tidak akan tetap rahasia.limit.context dan limit.output untuk setiap model. opencode melacak sisa konteks berdasarkan angka tersebut, jadi model yang tidak mencantumkannya akan dihitung berdasarkan nilai default yang bukan miliknya.sk-kn-) dan tambahkan kredit mulai dari $10 — panggilan dibayar dari saldo tersebut, dan panggilan yang gagal tidak ditagihkan. Dasbor kemudian terbuka pada penyiapan opencode.Langkah demi langkah
- Buat key di
/app/keysdan salin — key hanya ditampilkan sekali. - Ekspor:
export KUNAVO_API_KEY=sk-kn-... - Tambahkan blok penyedia ke
opencode.json— file global di~/.config/opencode/opencode.jsonuntuk semua proyek, atau file di root proyek yang hanya berlaku untuk repositori ini. - Jalankan
opencodedan pilih model dari daftar model; penyedia akan muncul di bawahnameyang Anda berikan. - Untuk menambahkan model nanti, tambahkan kunci lain di bawah
models— ID adalah nilai yang dikirim melalui protokol, sedangkannamehanya label.
Diperiksa terhadap dokumentasi penyedia opencode pada 6 September 2026. Pengaturan pihak ketiga dapat berubah; jika nama bidang di sini tidak lagi sama dengan yang Anda lihat, halaman tersebut adalah acuan, bukan halaman ini.
Verifikasi sebelum men-debug klien
Satu permintaan menentukan apakah masalahnya ada pada endpoint, kunci, atau berkas konfigurasi. Jika ini mengembalikan JSON, base URL dan kunci yang sama berfungsi di opencode.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."ID model yang harus dimasukkan ke bidang
Setiap model teks dapat diakses melalui ID model — daftar terkininya ada di GET /v1/models, dan katalog beserta harga ada di halaman model. Tarif dalam USD per 1 juta token, input / output.
| ID model | Kunavo masuk / keluar | Kegunaannya di opencode |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | model build default |
claude-opus-5 | $3.50 / $17.50 | mode perencanaan, saat rencana menentukan semua langkah setelahnya |
claude-haiku-4-5 | $0.70 / $3.50 | pekerjaan sub-agen dan pencarian, saat jumlah permintaan tinggi |
gpt-5-6-sol | $2.00 / $12.00 | gunakan dengan @ai-sdk/openai agar item penalaran tetap utuh selama proses bolak-balik |
Pertanyaan umum
Bagaimana cara menambahkan penyedia kustom ke opencode?
Tambahkan blok di bawah "provider" dalam opencode.json dengan nama paket npm, nama tampilan, options.baseURL, options.apiKey, dan peta models. Gunakan @ai-sdk/openai-compatible untuk endpoint yang menyediakan /v1/chat/completions dan @ai-sdk/openai untuk endpoint yang menyediakan /v1/responses. Penyedia kemudian akan muncul dalam daftar model opencode dengan nama yang Anda berikan.
Bagaimana cara menjaga agar kunci API tidak tersimpan di opencode.json?
Gunakan sintaks interpolasi {env:VAR_NAME} di options.apiKey — misalnya, "apiKey": "{env:KUNAVO_API_KEY}" — lalu ekspor variabel tersebut di shell. opencode menyelesaikannya saat memuat konfigurasi, sehingga file tetap aman untuk di-commit bersama proyek yang dikonfigurasikannya.
Apa perbedaan @ai-sdk/openai dan @ai-sdk/openai-compatible di opencode?
Keduanya memilih endpoint yang berbeda pada URL dasar yang sama. @ai-sdk/openai-compatible memanggil /chat/completions, yang diimplementasikan oleh hampir semua gateway; @ai-sdk/openai memanggil /responses, permukaan OpenAI yang lebih baru. Pilih paket yang benar-benar disediakan endpoint Anda — menggunakan paket yang salah akan menghasilkan 404 dari URL dasar yang sebenarnya sudah benar.
Mengapa opencode kehabisan konteks lebih cepat dari perkiraan?
Karena entri model tidak memiliki blok limit, sehingga opencode menghitung berdasarkan nilai default alih-alih jendela sebenarnya milik model. Tambahkan "limit": { "context": <window>, "output": <max output> } ke model tersebut di opencode.json dengan menggunakan angka dari katalog penyedia, maka indikator konteks dan titik pemadatan akan sesuai dengan kondisi sebenarnya.