Dokümantasyon

Dokümantasyon

opencode

opencode, sağlayıcılarını Vercel AI SDK üzerine kurar; dolayısıyla yeni bir uç noktaya yönlendirmek için npm paketini ve baseURL değerini belirten tek bir blok yeterlidir. Belirteceğiniz paket, kullanılacak iki aktarım biçiminden hangisi olduğunu belirler.

opencode.json içinde tek bir sağlayıcı bloğu — sohbet tamamlamaları için @ai-sdk/openai-compatible, /v1/responses yüzeyini istediğinizde @ai-sdk/openai.

opencode.json
{
  "$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" }
      }
    }
  }
}
2026-10-10 tarihinde opencode 1.18.35 ile test edildi: yukarıdaki provider bloğu ve claude-sonnet-5 ile gerçek bir kodlama görevi baştan sona tamamlandı. GPT modelleri opencode’da henüz güvenilir değil — opencode her istekle bir çıktı sınırı gönderir ve bu sınır varken GPT modellerimizin arkasındaki sağlayıcı bazen modelin araç çağrısını yanıtından çıkarır; böylece bir tur, yapması gereken düzenleme olmadan biter. Bu not kaldırılana kadar opencode’da bir Claude modeli kullanın.
npm alanı aktarım biçimini seçer. @ai-sdk/openai-compatible, /v1/chat/completions kullanır; @ai-sdk/openai ise /v1/responses kullanır. Kunavo her ikisini de sunar, dolayısıyla ikisi de çalışır — GPT ailesinde akıl yürütme öğelerinin aktarım boyunca korunmasını istiyorsanız Responses paketini, diğer her şey için chat-completions paketini kullanın.
"apiKey": "{env:KUNAVO_API_KEY}", anahtarı yükleme sırasında ortamdan okur. opencode.json, depolara eklenebilecek bir dosyadır; dosyaya düz metin olarak yazılan anahtar gizli kalmaz.
Her model için limit.context ve limit.output değerlerini ayarlayın. opencode, kalan bağlamı bu sayılara göre takip eder; bu nedenle bu değerler belirtilmeyen bir model, kendi değerleri olmayan varsayılan bir bütçeye göre hesaplanır.
Henüz anahtarınız yok mu? Bir Kunavo hesabı oluşturun, bir anahtar oluşturun ( sk-kn- ile başlar) ve $10'dan kredi ekleyin — çağrılar bu bakiyeden ödenir ve başarısız çağrılar ücretlendirilmez. Ardından kontrol paneli opencode kurulumunda açılır.

Adım adım

  1. /app/keys adresinde bir anahtar oluşturup kopyalayın — anahtar yalnızca bir kez gösterilir.
  2. Dışa aktarın: export KUNAVO_API_KEY=sk-kn-...
  3. Sağlayıcı bloğunu opencode.json dosyasına ekleyin — her proje için geçerli olacak genel dosyaya, ~/.config/opencode/opencode.json yoluna ya da yalnızca bu depo için proje kökündeki dosyaya.
  4. opencode başlatın ve model listesinden bir model seçin; sağlayıcı, verdiğiniz name adı altında görünür.
  5. Daha sonra model eklemek için models altına başka bir anahtar ekleyin — aktarımda model kimliği kullanılır, name ise yalnızca etikettir.

opencode sağlayıcı belgeleri ile 6 Eylül 2026 tarihinde kontrol edilmiştir. Üçüncü taraf ayarları değişebilir; buradaki alan adı gördüğünüzle artık eşleşmiyorsa yetkili kaynak bu sayfa değil, ilgili sayfadır.

İstemcide hata ayıklamadan önce doğrulayın

Tek bir istek, hatanın uç noktadan mı, anahtardan mı yoksa yapılandırma dosyasından mı kaynaklandığını kesinleştirir. Bu JSON döndürürse aynı temel URL ve anahtar opencode içinde çalışır.

# 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-..."

Alana hangi model kimliği yazılmalı

Her metin modeline model kimliğiyle erişilebilir — güncel liste GET /v1/models, fiyatları içeren katalog ise modeller sayfasında. Ücretler 1 milyon token başına USD cinsindendir; giriş / çıkış.

Model kimliğiKunavo giriş / çıkışopencode içinde kullanım alanı
claude-sonnet-5$1.40 / $7.00varsayılan kodlama modeli
claude-opus-5$3.50 / $17.50sonraki her şeyi planın belirlediği planlama modu
claude-haiku-4-5$0.70 / $3.50istek sayısının yüksek olduğu alt ajan ve arama çalışmaları
gpt-5-6-sol$2.00 / $12.00akıl yürütme öğelerinin gidiş dönüş boyunca korunması için @ai-sdk/openai ile kullanın
Faturalandırma aylık ücret olmadan, ön ödemeli bakiyeden token başına yapılır — faturalandırmaya bakın. Tekrarlanan bağlamda — bir düzenleyicinin veya sohbet istemcisinin gönderdiği içeriğin çoğu budur — istem önbellekleme, faturayı model seçiminden daha fazla değiştirir.

Sık sorulan sorular

opencode'a özel bir sağlayıcıyı nasıl eklerim?

opencode.json dosyasında "provider" altına npm paketini, görünen adı, options.baseURL değerini, options.apiKey değerini ve bir models eşlemesini belirten bir blok ekleyin. /v1/chat/completions sunan bir uç nokta için @ai-sdk/openai-compatible, /v1/responses sunan bir uç nokta içinse @ai-sdk/openai kullanın. Sağlayıcı, verdiğiniz adla opencode'un model listesinde görünür.

API anahtarını opencode.json dosyasından nasıl uzak tutarım?

options.apiKey alanında {env:VAR_NAME} değişken yerleştirme söz dizimini kullanın — örneğin "apiKey": "{env:KUNAVO_API_KEY}" — ve değişkeni kabuğunuzda dışa aktarın. opencode, yapılandırmayı yüklerken bu değeri çözümler; böylece dosyayı yapılandırdığı projeyle birlikte güvenle depoya ekleyebilirsiniz.

opencode'da @ai-sdk/openai ile @ai-sdk/openai-compatible arasındaki fark nedir?

Bunlar aynı temel URL'de farklı uç noktaları seçer. @ai-sdk/openai-compatible, hemen her ağ geçidinin uyguladığı /chat/completions uç noktasını; @ai-sdk/openai ise OpenAI'ın daha yeni arayüzü olan /responses uç noktasını çağırır. Uç noktanızın gerçekten sunduğu paketi seçin — yanlış paketi kullanırsanız, diğer yönlerden doğru olan bir temel URL'den 404 alırsınız.

opencode neden beklenenden önce bağlam sınırına ulaşıyor?

Çünkü model girdisinde limit bloğu yoktur ve opencode, modelin gerçek penceresi yerine varsayılan bir değere göre bütçe hesaplar. Sağlayıcının kataloğundaki rakamları kullanarak opencode.json dosyasındaki ilgili modele "limit": { "context": <window>, "output": <max output> } ekleyin; böylece bağlam göstergesi ve sıkıştırma noktaları gerçek değerlerle eşleşir.