Yerel model ile kodlama ajanı, opencode, Aider, Goose, Qwen Code, Crush ya da Codex gibi bir kodlama CLI’ını barındırılan bir API yerine Ollama veya LM Studio üzerinden kendi makinende çalışan bir modele bağlamak demek. Yerel sunucuyu başlatırsın (Ollama http://localhost:11434, LM Studio http://127.0.0.1:1234 adresini dinler), araç çağrısını destekleyen bir model seçersin, bağlam uzunluğunu varsayılanın çok üstüne çıkarırsın ve CLI’a bu adresi verirsin. Çalışır, kodun makinenden çıkmaz ve token başına ücret yoktur. Ama en iyi barındırılan modellerden daha yavaş ve daha zayıftır; bu yüzden çoğu kurulum sonunda karma bir düzene varır.
Burada “yerel” ne demek?
Bir kodlama ajanı iki parçadan oluşur: dosya okuyan, komut çalıştıran ve kodu düzenleyen CLI ile bir sonraki adıma karar veren model. Yerele geçmek yalnızca ikinci parçayı değiştirir. CLI aynı döngüyü çalıştırır, isteklerini bir sağlayıcının API’si yerine localhost üzerindeki sunucuya gönderir.
Yaygın iki yerel sunucunun ikisi de OpenAI uyumlu bir API konuşur:
| Sunucu | Varsayılan adres | Nasıl başlatılır |
|---|---|---|
| Ollama | http://localhost:11434/v1 | Ollama uygulaması ya da ollama serve |
| LM Studio | http://127.0.0.1:1234/v1 | Developer sekmesi → “Start server” ya da lms server start |
Ollama belgeleri, OpenAI istemcilerinin bir API anahtarı değeri istediğini ama Ollama’nın bunu yok saydığını söylüyor; yerel sunucuda herhangi bir yer tutucu yeter.
Herkesin atladığı ayar: bağlam uzunluğu
CLI seçmeden önce bunu düzelt. Ajanlar çok bağlam gönderir: sistem prompt’u, araç tanımları, dosya içerikleri, komut çıktıları. Penceresi küçük bir yerel sunucu bunların çoğunu sessizce keser.
Ollama’nın varsayılan bağlam penceresi VRAM’ine bağlı: 24 GiB altında 4k, 24–48 GiB arasında 32k, 48 GiB ve üstünde 256k token. Aider belgeleri, Ollama’nın pencereyi aşan bağlamı sessizce attığını ekliyor. Goose belgeleri 4096 token’lık varsayılanı fazla düşük buluyor, Ollama’nın kendi Codex rehberi de en az 64k istiyor.
Sunucuyu başlatırken yükselt, sonra kontrol et:
OLLAMA_CONTEXT_LENGTH=64000 ollama serve
ollama ps # CONTEXT sütunu ayrılan uzunluğu gösterir
Ollama uygulamasının ayarlarındaki bağlam uzunluğu kaydırıcısı da aynı işi yapar. ollama ps çıktısındaki PROCESSOR sütunu modelin bir kısmının CPU’da olduğunu gösteriyorsa bağlam ya da model GPU’ya sığmıyordur ve her şey yavaşlar.
Hangi CLI’lar yerel modeli destekliyor?
Aşağıdakiler her aracın kendi belgesinde doğrulanan yollar. Doğrulayamadığımız kurulumları yazmadık.
| CLI | Yerel yol | Nerede ayarlanır |
|---|---|---|
| Codex | Ollama ya da LM Studio ile --oss | Bayrak ya da config.toml içinde oss_provider |
| opencode | Herhangi bir OpenAI uyumlu sağlayıcı | opencode.json içindeki provider bölümü |
| Aider | ollama_chat/<model> ya da openai/<model> | Ortam değişkenleri |
| Goose | Ollama, LM Studio ve diğer sağlayıcılar | goose configure |
| Qwen Code | Herhangi bir OpenAI uyumlu uç nokta | OPENAI_* değişkenleri ya da ~/.qwen/settings.json |
| Crush | ollama ve lmstudio sağlayıcı türleri | Kendi sağlayıcı ayarı |
Codex
En kısa yol Codex’te. Belgelerine göre --oss verdiğinde Ollama ya da LM Studio gibi yerel bir “açık kaynak” sağlayıcıyla çalışabiliyor:
codex --oss # varsayılan yerel model
codex --oss -m gpt-oss:120b # belirli bir model
Varsayılan sağlayıcıyı ~/.codex/config.toml içinde oss_provider = "ollama" (ya da "lmstudio") ile belirlersin. Ollama ayrıca senin için profil kuran ollama launch codex komutunu sunuyor. Codex içinde /model, kurulu ve araç çağrısını destekleyen modeller arasında geçiş yapar.
opencode
opencode, OpenAI uyumlu her sunucuyu opencode.json içinde özel sağlayıcı olarak alır:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": { "baseURL": "http://localhost:11434/v1" },
"models": { "qwen3": { "name": "Qwen3 (local)" } }
}
}
}
LM Studio için adres olarak http://127.0.0.1:1234/v1 ve LM Studio’da görünen model kimliğini kullan. opencode belgelerinde işe yarar bir ipucu var: araç çağrıları çalışmıyorsa Ollama’da num_ctx değerini artır, 16k–32k civarından başla.
Aider
Aider Ollama ile doğrudan konuşur. Belgeleri ollama_chat/ ön ekini öneriyor:
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/<model>
LM Studio ya da başka bir OpenAI uyumlu sunucu için OPENAI_API_BASE ve OPENAI_API_KEY değişkenlerini ayarla, sonra aider --model openai/<model-adı> kullan. Sabit bir bağlam boyutu .aider.model.settings.yml dosyasında extra_params altına num_ctx olarak yazılır.
Goose
Goose, Ollama ve LM Studio’yu sağlayıcı olarak listeliyor. goose configure çalıştır, Ollama’yı seç ve bir model adı gir. OLLAMA_HOST başka bir şey demedikçe localhost:11434 kullanır; LM Studio varsayılan olarak localhost:1234’e bağlanır ve API anahtarı istemez. Goose belgeleri asıl kısıtı açıkça söylüyor: araç çağrısını yoğun kullanıyor, bu yüzden araç çağrısı olmayan bir model yalnızca sohbet edebilir.
Qwen Code
Qwen Code herhangi bir OpenAI uyumlu uç noktayı destekliyor; README’si Ollama ya da vLLM üzerinden yerel modelleri de anıyor. Standart değişkenleri sunucuna yönlendir:
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=ollama # yerel sunucuda herhangi bir yer tutucu
export OPENAI_MODEL=<model>
qwen
Aynı ayar ~/.qwen/settings.json içinde modelProviders altında da durabilir; ya da /auth ile etkileşimli kurarsın.
Crush
Crush, ollama ve lmstudio sağlayıcı türlerini destekliyor. README’si Ollama’yı http://localhost:11434/v1 adresiyle eklemeyi gösteriyor. Modeli Crush içinde Ctrl+L ile seçersin.
Yerel ajan sorun çıkarınca
Yerel kodlama ajanındaki sorunların çoğu birkaç nedene iner. Bu sırayla bak:
- İşin ortasında dosyaları ya da talimatları unutuyor. Bağlam küçük, sunucu kesiyor.
OLLAMA_CONTEXT_LENGTH(ya danum_ctx) değerini yükselt,ollama psile doğrula. - Araç çağrıları başarısız oluyor ya da düz metin dönüyor. Model araç çağrısını desteklemiyor olabilir ya da bağlam araç tanımlarına yetmiyor. Araç destekli bir model ve daha büyük pencere dene.
- CLI modelin olmadığını söylüyor. CLI’daki ad sunucudaki kimlikle birebir aynı olmalı:
ollama listçıktısındaki etiket ya da LM Studio sunucu panelindeki kimlik. - Bağlantı reddediliyor. Sunucu çalışmıyor ya da CLI başka bir adres bekliyor. Ollama
11434, LM Studio1234; bazı CLI’lar/v1ekini ister, Aider’ınOLLAMA_API_BASEdeğişkeni istemez. - Her şey çok yavaş. Model ya da bağlam GPU’ya sığmıyor.
ollama psCPU payını gösterir; daha küçük bir model ya da daha kısa bağlam seç.
Donanım gerçeği
Beklentiler genelde burada kırılır. Yerel kodlama ajanı, yerel sohbetten daha ağır bir iştir:
- Model belleğe sığmalı. PC’de GPU VRAM’i, Apple Silicon’da birleşik bellek. Sığmazsa katmanlar CPU’ya taşar ve üretim belirgin şekilde yavaşlar.
- Bağlam da bellek yer. Model ağırlıklarının üstüne 64k’lık bir pencere, 4k’lık bir sohbetten çok daha fazla yer ister. Ollama’nın varsayılan bağlam uzunluğunu VRAM’e bağlamasının nedeni bu.
- Küçük modeller araçlarda zorlanır. Ajanlar güvenilir araç çağrılarına ve uzun bir sistem prompt’una uymaya dayanır. Küçük modeller bozuk çağrı üretmeye, döngüye girmeye ya da erken durmaya yatkındır. Goose, yerel DeepSeek-R1 gibi bazı modellerin araç çağrısını hiç desteklemediğini not ediyor.
- Hız katlanır. Ajan her görevde, her biri büyük prompt’lu çok sayıda istek atar. Sohbette iyi hissettiren bir model, on adımlık bir işi uzun bir beklemeye çevirebilir.
Başlamak için pratik bir yol: GPU’na en az 32k–64k bağlamla tamamen sığan, araç destekli en büyük kodlama modelini al, ollama ps ile doğrula ve daha büyük işlere güvenmeden önce küçük, gerçek bir görevde dene.
Neden yerel: gizlilik ve kontrol
Asıl neden, çıkarımın makinende kalması:
- Prompt’ların ve kodun bir model sağlayıcısına gitmez.
- Çevrimdışı ve internete kapalı ortamlarda çalışır.
- Token başına fatura ve takılacağın kullanım limiti yoktur.
- Model sen istemeden değişmez; ne zaman yükselteceğine sen karar verirsin.
İki uyarı da var. Birincisi, CLI yine de ağı kullanabilir: Ollama’nın launch profiliyle Codex’te web araması var, bazı CLI’larda telemetri var. Hiçbir şeyin dışarı çıkmaması gerekiyorsa her aracın ayarlarına bak. İkincisi, yerelde çalışmak ajanı daha güvenli yapmaz. Hâlâ komut çalıştırır ve dosya düzenler; bilinen kodlama ajanı güvenliği önlemleri aynen geçerli.
Barındırılan modellere göre ödünler
| Yerel model | Barındırılan öncü model | |
|---|---|---|
| Kod makineden çıkar mı | Hayır | Evet, sağlayıcıya |
| Maliyet | Donanım ve elektrik | Token başına ya da abonelik |
| Kullanım limitleri | Yok | Plana bağlı |
| Zor, çok dosyalı işlerde kalite | Daha düşük, model boyutuna bağlı | Erişilebilen en yüksek |
| Araç çağrısı güvenilirliği | Modele göre değişir | Güçlü |
| Bağlam penceresi | Belleğinle sınırlı | Çok büyük |
| Hız | Donanımına bağlı | Hızlı ve tutarlı |
Fark en çok kapsamı dar işlerde kapanır: test yazmak, bir fonksiyonu açıklamak, küçük bir refactor, commit mesajı. En çok da birçok dosyaya yayılan uzun, çok adımlı işlerde açılır; ajanın bir planı tutması ve kendi hatalarından toparlanması gereken yerlerde.
İşe yarayan karma düzen
Ya hep ya hiç yerine bir paylaşım genelde daha iyi sonuç verir:
- Hassas ya da çevrimdışı iş yerele. Makineden çıkmaması gereken kod, sıkı şartları olan müşteri depoları, uçakta çalışma.
- Rutin, dar kapsamlı işler yerele. Testler, dokümantasyon, küçük düzeltmeler, açıklamalar.
- Zor işler barındırılan modele. Mimari değişiklikler, çetrefil hatalar, büyük refactor’lar.
- İncelemeyi temiz bağlamda yap. Hangi model yazmış olursa olsun, ikinci bir ajan ilkinin diff’ine baksın.
Bunu yürütmenin en kolay yolu aynı anda iki ya da daha fazla ajan çalıştırmak: biri yerel uç noktada, biri barındırılan modelde; aynı dosyaları düzenlemesinler diye her biri kendi klasöründe ya da git worktree’sinde.
AgentVera’da yerel ve barındırılan ajanlar yan yana
AgentVera, birçok CLI ajanını tek bir çalışma alanında yan yana çalıştıran bir masaüstü uygulaması; yukarıdaki karma düzene de bu yüzden uyuyor. Neyi yapıp neyi yapmadığını açık söyleyelim:
- Hazır bir Ollama ya da LM Studio entegrasyonu yok. Her ajan kendi sağlayıcı ayarını kullanır: Goose için
goose configure, opencode’un kendi ayarı ve/connect, Aider’ın ortam değişkenleri ya da.aider.conf.yml, Qwen Code’un oturumu ya da API anahtarı, Crush’ın ayarları (Ctrl+L). - “Model” alanı CLI’a iletilir. Qwen Code, Goose ve Aider gibi ajanlarda buraya yazdığın değer CLI’a
--modelolarak gider. Boş bırakırsan CLI kendi ayarındaki modeli kullanır. - Ajanlar ortam değişkeni taşıyabilir. Ayarlar → Hesaplar → Diğer ajanların hesapları bölümünde “API anahtarıyla” eklenen bir hesap bir “Değişken adı” ve değerini saklar. Qwen Code için önerilen adlardan biri
OPENAI_BASE_URL; başka bir ad da yazabilirsin. Bu, Pro ve Team planlarındaki hesap geçişinin parçası. - Bağlam araçları Claude Code’la sınırlı değil. Bağlam boyutu her CLI’ın kendi geçmişinden ölçülür, otomatik sıkıştırma da CLI’ın varsa kendi sıkıştırma komutunu kullanır. Küçük bir yerel pencerede bu daha da önemli.
Kısacası gerçekçi tablo şu: yerel modeli CLI’da, kendi belgesinin anlattığı şekilde kurarsın; AgentVera da o ajanı barındırılan bir ajanın yanında çalıştırmanı, ikisini birlikte izlemeni ve işlerini ayrı tutmanı sağlar.