Kaan Sert Logo
← Blog yazılarına dön
Local AI 17.06.2026 11 dk

Local LLM ile Kod Geliştirme Ortamı Kurmak

Local LLM modelleriyle çalışan, agent tabanlı ve çoklu model destekli kod geliştirme ortamlarının mimari bileşenleri.

Local AI Ollama .NET Agent Code Assistant

Local LLM modelleri, yazılım geliştirme süreçlerinde kodun dış servislere gönderilmeden analiz edilmesini ve geliştiriciye AI destekli bir çalışma ortamı sunulmasını sağlar.

Bu yaklaşım özellikle şirket içi projelerde, kapalı ağlarda, intranet ortamlarında veya hassas kod tabanlarının dış bulut servislerine gönderilmesinin uygun olmadığı senaryolarda önem kazanır.

Bu yazıda local LLM tabanlı bir kod geliştirme ortamının backend ve mimari tarafını ele alıyorum.

Local LLM Nedir?

Local LLM, büyük dil modelinin kullanıcının kendi bilgisayarında veya şirket içi sunucuda çalışmasıdır. Bu yapıda kod, döküman veya proje dosyaları dışarıdaki bir API’ye gönderilmeden model tarafından işlenebilir.

Local model kullanmanın temel avantajları:

  • Kodun dış servislere gönderilmemesi
  • Şirket içi ağda çalışabilme
  • Model ve veri üzerinde daha fazla kontrol
  • Offline veya sınırlı internet ortamlarında kullanım
  • Farklı modelleri aynı sistem içinde deneyebilme

Dezavantajları da vardır:

  • Donanım ihtiyacı daha yüksektir
  • Model kalitesi kullanılan modele göre değişir
  • Büyük context yönetimi zor olabilir
  • Kod üretimi sonrası doğrulama mekanizması gerekir
  • Kurulum ve bakım sorumluluğu kullanıcıdadır

Bu yüzden local AI destekli geliştirme ortamı tasarlarken sadece modeli çalıştırmak yetmez; modelin ürettiği çıktıyı güvenli ve kontrollü şekilde yöneten bir mimari gerekir.

Basit Kod Asistanı ile Agent Tabanlı Sistem Arasındaki Fark

Basit kod asistanı genellikle kullanıcıdan prompt alır ve cevap üretir.

Kullanıcı → Prompt → Model → Cevap

Agent tabanlı sistem ise daha kontrollü ve adımlı çalışır.

Kullanıcı görevi

Plan oluşturma

İlgili dosyaları analiz etme

Kod değişikliği önerme

Diff üretme

Patch uygulama

Build / test çalıştırma

Hata varsa tekrar analiz etme

Bu yapı klasik sohbet deneyiminden daha ileri bir geliştirme akışı sunar.

Temel Mimari Bileşenler

Local AI destekli bir kod geliştirme ortamında aşağıdaki bileşenler bulunabilir.

1. Orchestrator API

Orchestrator, sistemin merkezi akış yöneticisidir. Kullanıcı görevini alır, model çağrılarını yönetir, dosya sistemiyle iletişime geçer, build/test akışlarını tetikler ve sonucu kullanıcıya aktarır.

Örnek sorumluluklar:

  • Run başlatma
  • Task state yönetimi
  • Model seçimi
  • Agent adımlarını yönetme
  • Event stream üretme
  • Hata durumlarını yönetme

.NET tarafında bu yapı ASP.NET Core Web API ile kurulabilir.

2. Model Gateway

Model Gateway, uygulama ile local LLM runtime arasındaki adaptör katmanıdır.

Örneğin Ollama kullanılıyorsa uygulama doğrudan her yerde Ollama API’sine bağlanmak yerine bir adapter üzerinden konuşabilir.

IModelAdapter
 ├── OllamaModelAdapter
 ├── OpenAICompatibleAdapter
 └── FutureModelAdapter

Bu yapı model sağlayıcısı değiştiğinde sistemin geri kalanını korur.

3. Workspace Runner

Workspace Runner, proje dosyaları üzerinde güvenli işlem yapmaktan sorumludur.

Sorumlulukları:

  • Dosya okuma
  • Dosya yazma
  • Diff uygulama
  • Komut çalıştırma
  • Build çıktısını toplama
  • Test çıktısını toplama
  • Çalışma dizini güvenliğini sağlama

Bu bileşen çok kritiktir. Çünkü modelin ürettiği çıktı doğrudan dosya sistemine uygulanmadan önce kontrol edilmelidir.

4. Event Stream

AI destekli geliştirme akışı bazen uzun sürebilir. Kullanıcının beklerken sistemde neler olduğunu görmesi gerekir.

Bu nedenle event stream kullanılabilir.

Örnek eventler:

RunStarted
PlanCreated
FilesAnalyzed
PatchGenerated
PatchApplied
BuildStarted
BuildCompleted
ErrorDetected
FixAttemptStarted
RunCompleted

Frontend tarafında SSE veya WebSocket ile bu eventler canlı gösterilebilir.

Agent Akışı Nasıl Tasarlanır?

Basit ama etkili bir agent akışı şu şekilde olabilir:

1. Kullanıcı görev verir
2. Sistem görevden plan çıkarır
3. Gerekli dosyalar belirlenir
4. Dosyalar okunur ve modele context olarak verilir
5. Model çözüm önerisi üretir
6. Sistem diff oluşturur
7. Kullanıcı onayı alınır veya otomatik patch uygulanır
8. Build/test çalıştırılır
9. Hata varsa model tekrar devreye girer
10. Sonuç özetlenir

Bu akışta en önemli nokta, modelin doğrudan kontrolsüz işlem yapmamasıdır. Dosya değişiklikleri diff üzerinden izlenmeli, mümkünse kullanıcıya gösterilmelidir.

Diff ve Patch Yaklaşımı

Kod geliştirme ortamında dosyayı komple yeniden yazdırmak risklidir. Bunun yerine diff tabanlı yaklaşım daha güvenlidir.

Örnek diff:

- public string Name { get; set; }
+ public string Name { get; private set; }

Diff yaklaşımının avantajları:

  • Değişiklikler net görülür
  • Review yapılabilir
  • Patch geri alınabilir
  • Gereksiz dosya değişiklikleri engellenebilir
  • Git akışıyla daha uyumludur

Modelden gelen çıktı mümkün olduğunca structured formatta alınmalı ve sistem tarafından doğrulanmalıdır.

Build ve Test Döngüsü

Agent tabanlı kod geliştirme ortamını güçlü yapan şeylerden biri, kodu yazdıktan sonra build/test çalıştırabilmesidir.

Örnek akış:

1. Patch uygulandı
2. dotnet build çalıştırıldı
3. Build başarısız oldu
4. Hata çıktısı modele verildi
5. Model düzeltme önerdi
6. Yeni patch uygulandı
7. Build tekrar çalıştırıldı

Bu döngü kontrollü sayıda tekrarlanmalıdır. Sonsuz düzeltme döngüsü oluşturulmamalıdır.

Örnek sınır:

MaxFixAttempts = 3

Güvenlik ve Sınırlandırma

Local AI sistemi local çalışsa bile güvenlik önemlidir.

Dikkat edilmesi gerekenler:

  • Modelin tüm diske erişmemesi
  • Sadece seçili workspace üzerinde çalışması
  • Komut çalıştırma yetkisinin sınırlandırılması
  • Tehlikeli komutların engellenmesi
  • Gizli dosyaların context’e dahil edilmemesi
  • .env, secret, private key gibi dosyaların okunmaması

Özellikle command runner tarafında allowlist yaklaşımı düşünülebilir.

Örnek:

İzin verilen komutlar:
- dotnet build
- dotnet test
- npm install
- npm run build

Engellenmesi gerekenler:
- format disk
- registry değişiklikleri
- sistem dosyalarına erişim
- bilinmeyen shell script çalıştırma

Context Yönetimi

LLM modellerinin context limiti vardır. Büyük projelerde tüm dosyaları modele göndermek mümkün değildir.

Bu nedenle context seçimi yapılmalıdır.

Yaklaşımlar:

  • Kullanıcının seçtiği dosyaları context’e almak
  • Hata mesajına göre ilgili dosyaları bulmak
  • Dosya ağacını özetlemek
  • Sadece ilgili method/class bölümlerini göndermek
  • Daha önceki adımların özetini tutmak

İyi context yönetimi, modelin daha doğru ve tutarlı cevap üretmesini sağlar.

Frontend Deneyimi

Böyle bir sistemin frontend tarafında sadece chat ekranı yeterli değildir. Geliştiriciye yapılan işlemleri göstermek gerekir.

Faydalı UI bileşenleri:

  • Dosya ağacı
  • Kod editorü
  • Diff viewer
  • Build output paneli
  • Event timeline
  • Plan görünümü
  • Onay / reddet butonları
  • Model seçimi
  • Workspace seçimi

Monaco Editor bu tip kullanım için iyi bir seçenek olabilir.

.NET Tabanlı Örnek Katmanlar

.NET ile böyle bir yapı geliştirilecekse sade bir solution yapısı şöyle olabilir:

Api
 ├── Controllers
 └── Hubs / SSE Endpoints

Engine
 ├── RunService
 ├── AgentLoop
 ├── PlanService
 ├── PatchService
 └── EventService

ModelGateway
 ├── IModelAdapter
 └── OllamaModelAdapter

WorkspaceRunner
 ├── FileSystemService
 ├── CommandRunner
 └── PatchApplier

Contracts
 ├── Requests
 ├── Responses
 └── Events

Bu ayrım, model çağrısı, agent akışı ve workspace işlemlerini birbirinden ayırır.

Operasyonel Olarak Nelere Dikkat Edilmeli?

Local AI geliştirme ortamı kişisel kullanımda basit kurulabilir. Ancak ekip veya kurum içi kullanımda şu konular önem kazanır:

  • Model dosyalarının yönetimi
  • Kullanıcı yetkileri
  • Workspace izolasyonu
  • Loglama
  • Kullanım geçmişi
  • Audit trail
  • Performans takibi
  • Model bazlı cevap kalitesi
  • Donanım kaynak yönetimi

Özellikle birden fazla geliştiricinin kullanacağı sistemlerde workspace isolation ve permission yönetimi kritik hale gelir.

Sonuç

Local LLM ile kod geliştirme ortamı kurmak sadece modeli bilgisayarda çalıştırmak değildir.

İyi bir sistem şu parçaları birlikte düşünmelidir:

  • Orchestrator API
  • Model Gateway
  • Workspace Runner
  • Agent akışı
  • Diff / patch yönetimi
  • Build ve test döngüsü
  • Event stream
  • Context yönetimi
  • Güvenlik sınırları
  • Geliştirici dostu frontend

Bu yapı doğru tasarlandığında, local çalışan ve veri gizliliğini koruyan güçlü bir AI destekli geliştirme deneyimi oluşturulabilir.