Bir öğleden sonra merak ettim. Lokal bir AI stack'i ile nereye kadar gidebilirim, gerçekten ne yapabilirim? Deney olarak oturdum, kurdum, sınırlarına dayadım. Sonuç: Anthropic seviyesi değil ama gerçek anlamda iş gören bir kurulum çıktı.
24 GB VRAM dengeyi belirleyen sayı. 30B class bir model bu kapasitede rahat oturuyor; 70B itelemeye başlıyor.
Ollama zaten kuruluydu (v0.15.4). Üç model çektim:
qwen3:32b # genel sohbet qwen3-coder:30b # kod, agentic görevler llama3.3:70b-q3_K_M # max kalite, yavaş
Toplam ~70 GB indirme, ~80 dakika. Bu noktada modeller hazır ama "elimde Ollama var, ne yapacağım"dan ileri gitmiyor.
Qwen ekibinin Claude Code muadili qwen-code CLI var. Kurdum, bağladım, "src klasörünü analiz et" dedim. Sonuç: model uydurma "vim mode" görevini todo listesine ekleyip GitHub'a koşmaya başladı. Senin verdiğin görevle hiçbir alakası yok.
Sebep teknik: qwen-code aslında Gemini CLI'nin forku. Tool isimleri (todo, AskUserQuestion) Qwen modelinin eğitiminde görmediği isimler. Sürekli yanlış tool çağırıyor, format bozuluyor, model panikliyor. Ayrıca Ollama'nın qwen3-coder XML formatını OpenAI tool call formatına çevirmesi de stabil değil. Sonuç: agent halüsinasyonu domino taşı gibi.
Ders: "bizim modelimiz için yapıldı" denilen tool, başka altyapı üstünde çalışmayabilir. Format adapter olgunluğu en az model kadar önemli.
OpenCode'a geçtim. Vercel'in @ai-sdk/openai-compatible adapter'ını kullanıyor, 50+ provider'la dövülmüş. Tek komutla kuruldu, tek seferde çalıştı. Aynı model, aynı Ollama, dramatik fark.
curl -fsSL https://opencode.ai/install | bash
~/.config/opencode/opencode.json'a Ollama provider'ını yazdım, varsayılan modeli qwen3-coder:30b yaptım. İlk prompt'ta düzgünce dosya okuyup analiz etti. Hayali todo'lar, uydurma URL'ler yok.
İlk denemede 128K context açtım. ollama ps çıktısı:
SIZE: 32 GB PROCESSOR: 24%/76% CPU/GPU
24 GB'lık karta 32 GB'ı zorla sokmaya çalışıyor. Modelin %24'ü RAM'e taşmış. Sonuç: GPU %15'te oyalanıyor, 24 thread CPU tam doluyor. Hız: ~10 tok/s.
İki şey yaptım:
1. Context'i 64K'ya indirdim. Modelfile ile num_ctx 65536 parametreli yeni variant oluşturdum. Toplam 25 GB, %96 GPU split. Hız 45 tok/s'e fırladı.
2. Flash Attention + Q8 KV cache açtım. systemctl edit ollama ile:
[Service] Environment="OLLAMA_FLASH_ATTENTION=1" Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
KV cache (modelin "hatırlama defteri") FP16 yerine 8-bit'te tutuluyor artık. Boyut yarıya iniyor, kalite kaybı %0.5. Long-context performansı da bonus olarak %30 hızlanıyor.
100K context'i denedim, sığdı:
qwen3-coder:30b-100k 24 GB 100% GPU 102400 ctx
24 GB VRAM'in fizik sınırı. 800 MB boş, modelin hepsi GPU'da, KV cache Q8'de, Flash Attention açık. Hız: 50-60 tok/s. Pratik karşılığı: ~8000 satır kod tek seferde.
1. Agent CLI'lar Anthropic ekosisteminde olgunlaştı, başka model üstünde marketing. OpenCode tek istisna gibi, provider-agnostic ground-up tasarım.
2. Context window sayısı yalan söyler. "256K destekliyor" demek "VRAM'inde sığacak" demek değil. Gerçek limit donanım × KV cache formatı.
3. Q8 KV cache neden varsayılan değil bilmiyorum. Eksisi yok. Açın gitsin.
4. Yerel LLM Anthropic seviyesi değil. SWE-bench'te Opus 4.5 = %80, Qwen3-Coder = %70. Ama günlük %80'i için gerçekten yeter, üstüne ücretsiz ve internetsiz.
5. 5090 mobile + 30B modeller harika eşleşme. 70B q3 çalışıyor ama sürünür; 30B class native bu donanım için.
Toplam süre: 5 saat (indirme bekleme dahil).
Aylık tasarruf: belki cloud token'larında 50 dolar, ama asıl kazanç lokal stack'i kendi elleriyle anlamak ve veri privacy.
Pişmanlık: yok.
Asıl iş için claude (cloud), lokal deneyler için opencode. İkisi de yerinde. Eskiden VS Code'un Settings.json'una uğraşıyorduk, bugün Modelfile'a. Mühendislik aynı mühendislik.