OpenCode ile Ollama birlikte çalışmadığında, model değiştirmeden önce sunucu uç noktasını ve kesin model kimliğini kontrol edin. Her iki kontrol de başarılı olursa, bir araç çağrısı sorununu bağlantı sorunundan ayırmak için küçük bir dosya düzenlemesi test edin. Sohbet isteğine yanıt veren bir model, kodlama ajanı iş akışının yalnızca ilk aşamasını geçmiş demektir.

Bu rehber, Ollama ve OpenCode’un yüklü olduğunu varsayar. Kurulum ve sağlayıcı yapılandırması için Ollama ile OpenCode kurulum rehberini kullanın. Buradaki prosedür, çalışan yapılandırmanızı tekrar tekrar değiştirmeden hataları izole eder.

Hangi isteğin başarısız olduğunu bulun

Bir OpenCode hatası, çıkarım öncesinde, üretim sırasında veya bir araç yürütülürken oluşabilir. Bu aşamaları ayrı ayrı kontrol edin. Reddedilen bir bağlantı ile JSON benzeri bir paragraf döndüren bir model tamamen farklı sorunlara işaret eder. Bir ayarı değiştirmeden önce uç noktayı, seçili modeli ve hatayı kaydedin; böylece değişikliğin işe yarayıp yaramadığını anlayabilirsiniz.

GözlemSonraki kontrolSonucun ortaya koyduğu şey
Bağlantı reddedildiYapılandırılmış ana bilgisayar ve port üzerinde /api/version isteği gönderinOllama uç noktasının erişilebilir olup olmadığı
Model bulunamadı/v1/models çıktısını okuyun ve kesin kimliği karşılaştırınİstenen modelin o sunucuda var olup olmadığı
Sohbet çalışıyor, dosyalar değişmiyorAraç çağrılarını ve izin sonuçlarını inceleyinOpenCode’un bir eylem bir eyleme girişip girişmediğini ve tamamlayıp tamamlamadığı
Küçük düzenlemeler çalışıyor, büyük görevler başarısızAyrılan bağlamı ve çalışma zamanı günlüklerini inceleyinDaha büyük görevin ölçülebilir bir sınırla karşılaşıp karşılaşmadığı
Yerel çalışıyor, bulut takılıyorİki yolu ayrı ayrı test edinHatanın bulut yoluna özgü olup olmadığı

Bir hatayı yeniden oluşturmadan önce sürümleri kaydedin:

opencode --version
ollama --version

Bu makaledeki yerel kontroller, 96 GB birleşik belleğe sahip Apple M3 Ultra üzerinde OpenCode 1.19.4 ve Ollama 0.32.9 ile yapıldı. Bu donanım seçtiğimiz 31B modeli çalıştırabilir; daha küçük bir dizüstü bilgisayar için bellek tavsiyesi olarak değerlendirilmemelidir. Diğer donanımlarda model seçimi için Ollama kodlama modeli rehberini okuyun.

Modeli değiştirmeden önce endpoint’i kontrol edin

OpenCode’un kullandığı aynı ana bilgisayar ve porta istek gönderin. 127.0.0.1:11434 adresindeki yerel bir sunucu ile 127.0.0.1:11435 adresindeki bir sunucu farklı endpoint’lerdir. İstek başarısız olursa, önce sunucuyu veya adresi düzeltin. Model değiştirmek, reddedilen bir ağ bağlantısını onaramaz.

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/api/version

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/v1/models

Bir sürüm yanıtı, Ollama’nın yanıt verdiğini doğrular. Bir model listesi yanıtı, o sunucunun hangi model kimliklerini sunduğunu doğrular. Boş bir liste, sunucunun erişilebilir olduğunu ancak listelenmiş modeli olmadığını gösterir; bu bir bağlantı hatasından farklıdır.

Ollama durdurulmuşsa, uygulamayı başlatın veya sunucusunu bir terminalde çalıştırın:

ollama serve

Port zaten kullanılıyorsa, başka bir kopya başlatmak yerine hangi sunucunun çalıştığını kontrol edin. Uzak bir Ollama kurulumu, uzak sunucunun adresini gerektirir; 127.0.0.1 her zaman istemciyi çalıştıran makineyi ifade eder.

Ollama’nın OpenCode entegrasyon belgeleri, /v1 ile biten OpenAI uyumlu bir temel URL kullanır. Bu soneki OpenCode’un sağlayıcı yapılandırmasında koruyun. /api/version gibi yerel teşhis yolları bunun dışında kalır.

Yapılandırılmış modeli sunucunun kesin kimliğiyle eşleştirin

Sunucunun döndürdüğü model kimliğini etiketiyle birlikte kullanın. Bir Ollama sunucusuna indirilen bir model, aynı model diğer sunucuda da bulunmadıkça kullanılamaz. İsteği yeniden denemeden önce seçili sağlayıcıyı, temel URL’sini ve model bildirimini birlikte kontrol edin.

OpenCode 1.19.4 kontrollerimizde kullanılan sağlayıcı biçimi şudur:

{
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://127.0.0.1:11434/v1"
      },
      "models": {
        "gemma4:31b": {
          "name": "Gemma 4 31B",
          "limit": {
            "context": 65536,
            "output": 2048
          }
        }
      }
    }
  }
}

gemma4:31b yerine sunucunuzun gerçekten listelediği bir kimliği koyun. Bu örnek, söz konusu modeli indirmez. OpenCode’un tam model seçicisi, sağlayıcı adını ve model kimliğini birleştirir:

opencode run -m ollama/gemma4:31b "Reply with one short sentence."

Ollama’nın uyumlu uç noktası üzerinden kasıtlı olarak sunucuda bulunmayan bir model istedik ve not_found_error ile HTTP 404 aldık. Bu sonuç bir model seçimi hatasını ortaya koyar. Bellek yetersizliğine veya bozuk bir araç ayrıştırıcısına işaret etmez.

Yapılandırmalar birden fazla konumdan gelebilir. OpenCode’un yapılandırma belgeleri, ayarların nasıl birleştirildiğini açıklar. Bir değer yok sayılıyor gibi görünüyorsa çözümlenmiş yapılandırmayı yerel olarak inceleyin:

opencode debug config

Çözümlenmiş yapılandırma kimlik bilgileri içerebilir. Bir teşhis raporunu paylaşmadan önce ilgili sağlayıcı ayarlarını çıkarın ve anahtarları veya ilgisiz hesap ayrıntılarını kaldırın.

Tek kullanımlık bir kodlama test düzeneği ile eylemi doğrulayın

Değiştirilen dosyayı kendiniz kontrol edin ve testini çalıştırın. OpenCode’a bilinen bir hata içeren küçük bir dosya verin, dosyayı onarmasını isteyin ve ardından bağımsız bir kontrol çalıştırın. Bu yöntem dosya erişimini, düzenlemeyi ve yürütmeyi test eder; aynı zamanda teşhisi incelenebilecek kadar küçük tutar.

Yeni bir dizin oluşturun ve içine girin:

mkdir opencode-ollama-check
cd opencode-ollama-check

cat > add.mjs <<'JS'
export function add(a, b) {
  return a - b;
}
JS

cat > check.mjs <<'JS'
import { add } from './add.mjs';
if (add(2, 3) !== 5) throw new Error('Expected add(2, 3) to return 5');
console.log('PASS');
JS

node check.mjs

İlk kontrol başarısız olmalıdır. Test edilmiş sağlayıcı yapılandırmanızı bu tek kullanımlık dizine kopyalayın, ardından çalıştırın:

opencode run -m ollama/gemma4:31b \
  "Read add.mjs. Fix add so it adds its arguments. Run node check.mjs."

node check.mjs

add.mjs dosyasını kendiniz inceleyin. Dosyada hâlâ çıkarma işlemi varsa veya bağımsız kontrol başarısız oluyorsa, modelden gelen bir başarı mesajı yeterli değildir. İzin istemlerini görünür tutun; böylece reddedilen bir düzenlemeyi eksik bir araç çağrısından ayırt edebilirsiniz. Kontrollerimiz sırasında macOS, fixture’ı /private/tmp altında çözümlerken bir araç /tmp alias’ını kullandı. OpenCode, alias ile belirtilen yolu harici olarak değerlendirdi ve etkileşimsiz bir çalıştırmada reddetti. Çözümlenmiş dizini ve göreli dosya yollarını kullanmak, fixture’ın dar kapsamlı izinlerle çalışmasını sağladı.

Daha derin inceleme için OpenCode’un CLI’ı JSON çıktısını destekler:

opencode run --format json -m ollama/gemma4:31b \
  "Read add.mjs and explain the implementation."

Yürütülmüş bir aracı ve sonucunu arayın. Bir işlev adı veya JSON nesnesi içeren metin, tek başına OpenCode’un herhangi bir şey yürüttüğünü kanıtlamaz. Endpoint ve fixture izinlerini düzelttikten sonra, bir onarım çalıştırması fixture’ı okudu, çıkarma işlemini toplamaya çevirdi ve bağımsız bir Node kontrolünü geçti. İkinci bir çalıştırma, kasıtlı olarak bulunmayan model kimliğini değiştirdikten sonra aynı kontrolü geçti. Ayrı doğrudan API testimizde, Gemma 4 31B 65.536 bağlamda yapılandırılmış bir read_file çağrısı döndürdü. Bu tek sonuç, testin yanıt biçimini doğrular; kodlama görevleri genelinde güvenilirliği kanıtlamaz.

Ollama’nın gerçekte ayırdığı bağlamı kontrol edin

OpenCode’un belirttiği model sınırı ile Ollama’nın çalışma zamanı ayırmasının uyumlu olması gerekir. İstemci yapılandırmasında bir sayıyı artırmak, sunucunun daha fazla bağlam ayırdığını göstermez. Bir istek sırasında çalışan modeli inceleyin, ardından gerçek bağlamını görevin istemi ve araç geçmişiyle karşılaştırın.

Ollama’nın bağlam belgeleri, kodlama araçları ve ajanları için en az 64.000 token önerir. Ayrıca daha büyük ayırmaların daha fazla bellek tükettiğini açıklar. Manuel olarak başlatılan bir sunucu açık bir bağlam ayırması yapabilir:

OLLAMA_CONTEXT_LENGTH=65536 ollama serve

Bu değişkeni Ollama’yı çalıştıran süreçte ayarlayın. Yalnızca OpenCode’u çalıştıran terminalde dışa aktarmak, zaten çalışan bir Ollama uygulamasını yeniden yapılandırmaz. Sunucunuzu uygulama yönetiyorsa, uygulamanın bağlam ayarını kullanın.

Model yüklüyken onu inceleyin:

ollama ps

CONTEXT ve PROCESSOR sütunlarını kontrol edin. Ollama özel bir host veya port kullanıyorsa, CLI’ı da o sunucuya yönlendirin. Bellek baskısı, CPU’ya devretme, kırpma ve araç biçimi hataları ayrı kanıt gerektirir; yalnızca yavaş bir yanıt hangisinin oluştuğunu belirleyemez.

Donanımınız gerekli bağlamı karşılayamıyorsa, araçları destekleyen daha küçük bir model seçin ve aynı test düzeneğini tekrarlayın. İki modeli farklı görevlerle karşılaştırıp ardından farkı model kalitesine atfetmekten kaçının.

Faydalı bir hata raporu tutun

Faydalı bir rapor, başka bir geliştiricinin aynı isteği yeniden üretmesini sağlar. Sürümleri, temizlenmiş sağlayıcı yapılandırmasını, kesin model etiketini, ayrılan bağlamı ve hâlâ başarısız olan en küçük fixture’ı ekleyin. Doğrudan bir isteğin başarılı olup olmadığını ve OpenCode’un model sunucusuna ulaşıp ulaşmadığını kaydedin. Bu ayrıntılar, bakımcıların hatayı bulmasına yardımcı olur.

OpenCode sorun giderme rehberi, günlüklerin nasıl bulunacağını açıklar. Test edilen sürümde bu komut, yapılandırılmış veri ve günlük yollarını belirler:

opencode debug paths

Yerel ve bulut sonuçlarını ayrı tutun. Yerel bir kodlama testi, Ollama Cloud kimlik doğrulamasını veya kullanılabilirliğini doğrulayamaz ve bir bulut kesintisi yerel bir araç kullanımı gerilemesini kanıtlamaz. Benzer şekilde, aynı belirtiyi tanımlayan eski bir sorun, önerilen düzeltmenin yüklü sürümünüze uygulandığını kanıtlamaz.

Fixture başarılı olur ancak depo göreviniz başarısız olursa, çalışan fixture’ı koruyun ve karmaşıklığı kademeli olarak artırın: başka bir dosya, daha büyük bir girdi veya daha uzun bir araç dizisi. Hatayı yeniden üreten ilk değişiklik, karşılaştırma yapmadan her iki uygulamayı yeniden yüklemekten daha faydalıdır.

Yerel teşhisi tamamladıktan sonra ayrı bir sağlayıcı yapılandırması için OpenCode özel sağlayıcı rehberi Haimaker kurulumunu kapsar. Özel yerel testleri yerel tutun; sağlayıcı değiştirmek, iş yükü izin verdiğinde isteğe bağlı bir sonraki adımdır.

Sıkça sorulan sorular

Başarılı bir Ollama sohbeti, OpenCode araçlarının çalışacağı anlamına gelir mi?

Hayır. Bir sohbet yanıtı yalnızca modelin metin üretebildiğini kanıtlar. OpenCode ayrıca yapılandırılmış araç çağrılarına, bunları yürütme iznine ve görev için yeterli bağlama ihtiyaç duyar. Gerçek bir dosya düzenlemesini ve test sonucunu doğrulayın.

OpenCode’un bağlam sınırını artırmak Ollama’ya daha fazla bellek ayırır mı?

OpenCode’ta belirtilen bağlam sınırı, Ollama’nın o bağlamı ayırdığını kanıtlamaz. Ollama sunucusunu yapılandırın ve çalışan modeli ollama ps ile inceleyin. Daha büyük bağlam aynı zamanda bellek gereksinimlerini de artırır.

Bir Ollama modeli OpenCode’tan kaybolduğunda her şeyi yeniden yüklemeli miyim?

Önce Ollama’nın döndürdüğü model kimliklerini OpenCode yapılandırmanızda belirtilen modelle karşılaştırın. Herhangi bir uygulamayı yeniden yüklemeden önce uç noktayı ve seçili sağlayıcıyı kontrol edin.