Harness Nedir? Model ile Kodlama Aracı Arasındaki Fark (DeepSeek Örneğiyle)
Geçen ay bir öğrencim şunu sordu: "Hocam DeepSeek'i tarayıcıdan denedim, sorduğum her şeyi bildi. Ama editörüme takınca aynı model salak gibi davrandı. Model mi kötü, ben mi yanlış yapıyorum?"
İkisi de değil. Aradaki fark harness'tan geliyor. Vibe coding konuşurken hep modelleri karşılaştırıyoruz — "Claude mu iyi, GPT mi, DeepSeek mi" — ama çıktının kalitesini belirleyen şeyin ciddi bir kısmı modelde değil, modelin etrafına sarılan o katmanda saklı. Bu yazıda harness'ın ne olduğunu, ne iş yaptığını ve neden aynı modelin iki farklı araçta iki farklı geliştirici gibi davrandığını anlatıyorum.
Model nedir? Harness nedir?
Model, aslında şaşırtıcı derecede basit bir şeydir: içine metin verirsiniz, size metin verir. Hepsi bu. DeepSeek, Claude, GPT — hepsi bu tanımın içine girer. Modelin belleği yoktur, dosyalarınızı göremez, terminal çalıştıramaz, önceki konuşmayı hatırlamaz. Tek bir fonksiyon gibi düşünün:
cevap = model(metin)Harness ise bu fonksiyonun etrafına yazılmış programdır. Claude Code, Cursor, Codex CLI, Cline, Continue, opencode — hepsi birer harness. Modeli çağıran, ona ne verileceğine karar veren, cevabındaki talimatları yürüten ve sonucu tekrar modele geri besleyen kod.
Şöyle bir benzetme kuruyorum derslerde: model, çok iyi bir yazılımcıdır ama kilitli, penceresiz bir odada oturur. Gözü, eli, hafızası yoktur. Ona bir kâğıt uzatırsınız, üstüne cevabı yazar, geri verir. Harness ise o odanın kapısındaki kişidir: hangi kâğıdı sokacağına, kâğıtta ne yazacağına, yazılana göre hangi dosyayı açıp içeriğini geri götüreceğine o karar verir.
İyi bir yazılımcıya boş bir kâğıt uzatırsanız iyi bir cevap alamazsınız. Sorun yazılımcıda değildir.
Harness'ın yaptığı beş iş
Bir kodlama aracını açtığınızda arka planda şu beş şey oluyor. Hiçbiri modelin işi değil.
1. Sistem promptu ve kurallar
Harness, sizin yazdığınız cümlenin önüne kendi talimatlarını ekler: "Sen bir kodlama asistanısın, şu araçları kullanabilirsin, dosya yazmadan önce okumalısın, kullanıcının kod stiline uy." Projenizin kökündeki CLAUDE.md, .cursorrules veya AGENTS.md gibi dosyalar da buraya girer.
Bu katman, aynı modelden neden bir araçta düzgün Türkçe yorum, başka bir araçta İngilizce yorum aldığınızı açıklar.
2. Araç (tool) tanımları
Model kendi başına dosya okuyamaz. Harness ona bir liste sunar: read_file, write_file, run_command, search. Model de cevabında "şimdi read_file("api/session.php") çağırmak istiyorum" der. Bu bir istektir, eylem değil.
Çağrıyı asıl yapan harness'tır. Dosyayı o okur, içeriği alır, bir sonraki mesaja ekleyip modele geri gönderir.
3. Ajan döngüsü (agent loop)
İşin kalbi burası. Harness tek bir soru-cevap yapmaz, bir döngü döner:
- Kullanıcının isteğini modele gönder.
- Model bir araç çağırmak isterse, çağır.
- Aracın sonucunu konuşmaya ekle.
- Tekrar modele gönder.
- Model "bitti" diyene ya da bir limite ulaşana kadar 2'ye dön.
Sohbet penceresindeki DeepSeek ile ajan içindeki DeepSeek arasındaki fark tam olarak bu döngüdür. Sohbette bir tur vardır; ajanda otuz tur olabilir.
4. Bağlam yönetimi
Model her turda bütün geçmişi baştan okur ve her modelin bir bağlam sınırı vardır. Otuz turluk bir oturum bu sınırı rahatça aşar. Harness burada karar verir: hangi dosya tam gönderilecek, hangisi özetlenecek, hangi eski adım atılacak, ne zaman konuşma sıkıştırılacak.
İyi ve kötü harness arasındaki en büyük fark burada ortaya çıkıyor. Model aynı model; ama biri ona ilgili üç dosyayı verirken diğeri alakasız otuz dosyayı veriyor. İkincisi hem daha pahalı hem daha kötü.
5. Onay ve güvenlik sınırı
Model "şu komutu çalıştır" dediğinde harness bunu size mi soracak, doğrudan mı yapacak? Hangi klasörün dışına çıkamayacak? Bu kararlar da modelin değil, harness'ın.
Bir turun anatomisi: DeepSeek örneği
Somutlaştıralım. DeepSeek'i bir ajan aracına takmışsınız ve şunu yazdınız:
"
api/session.phpdosyasındaki süre hesabını, istemciden gelen değere değil sunucu farkına güvenecek şekilde düzelt."
Arka planda olan şey, kabaca:
Tur 1 — Harness modele şunu gönderir: sistem promptu + araç listesi + proje kuralları + sizin cümleniz. Model cevap verir: "Önce dosyayı okumam gerek: read_file("api/session.php")."
Tur 2 — Harness dosyayı okur, 200 satırı konuşmaya ekler, modele geri gönderir. Model bu kez: "41. satırda $_POST['duration'] doğrudan kullanılmış. Şu değişikliği öneriyorum: write_file(...)."
Tur 3 — Harness (ayarınıza göre) size onay sorar ya da yazar. Sonucu modele bildirir. Model: "Testleri çalıştıralım: run_command("php tests/session_test.php")."
Tur 4 — Test çıktısı modele döner. Kırmızıysa model düzeltir, döngü devam eder. Yeşilse model "bitti" der ve döngü kapanır.
Bu dört turda modelin yaptığı tek şey metin üretmekti. Dosyayı okuyan, yazan, testi çalıştıran, çıktıyı geri taşıyan hep harness'tı. Ajan hissini veren şey model değil, bu döngüdür.
Neden aynı model farklı araçlarda farklı davranıyor?
Artık cevap net. Aynı modeli iki araçta çalıştırdığınızda değişen şeyler:
- Sistem promptu. Biri "önce oku, sonra yaz" diyor, diğeri demiyor.
- Araç seti. Birinde
run_commandvar, diğerinde yok. Testi çalıştıramayan ajan, kodun çalıştığını doğrulayamaz. - Bağlam seçimi. Biri projeyi indeksleyip ilgili üç dosyayı buluyor, diğeri sadece açık sekmeyi gönderiyor.
- Tur limiti. Biri otuz tura izin veriyor, diğeri beşte kesiyor.
- Hata geri bildirimi. Biri derleyici hatasını modele geri veriyor, diğeri size gösterip bırakıyor.
Öğrencimin "tarayıcıda zeki, editörde salak" dediği durumun sebebi buydu: kullandığı eklenti modele yalnızca o an açık olan dosyayı gönderiyordu. Model, göremediği bir kod tabanı hakkında tahmin yürütmek zorunda kalıyordu.
DeepSeek'in bu tabloda özel yeri
DeepSeek'i örnek seçmemin sebebi, harness konusunu diğerlerinden daha görünür kılması: açık ağırlıklı bir model olduğu için harness'ı seçmek tamamen size kalıyor.
Kapalı bir modeli genelde üreticisinin aracıyla kullanırsınız — model ve harness aynı yerden gelir, birlikte ayarlanmıştır. DeepSeek'te böyle bir paket yok. Model API'si OpenAI'ın API biçimiyle uyumlu olduğu için, "OpenAI uyumlu endpoint" kabul eden hemen her ajan aracına takılabiliyor: adres ve anahtar alanını değiştirip başlıyorsunuz. Ağırlıklar açık olduğu için dilerseniz kendi sunucunuzda da çalıştırırsınız.
Yani DeepSeek'te model bir tane, harness sonsuz. Bu da hem esneklik hem tuzak:
- Sohbet modeli mi, akıl yürütme modeli mi? DeepSeek'in iki tür modeli var: normal sohbet modeli ve adım adım düşünen akıl yürütme modeli. Akıl yürüten modeller genelde daha iyi plan kurar ama daha yavaş ve daha pahalıdır; bazı sürümlerde araç çağırma desteği sohbet modelindeki kadar oturmuş olmayabilir. Ajan içinde kullanmadan önce araç çağırmayı basit bir görevle test edin.
- Araç çağırma kalitesi belirleyici. Bir ajan aracında modelin tek kritik yeteneği, doğru formatta ve doğru sırada araç çağırabilmesidir. Sohbette harika cevap veren bir model, araç çağırma formatını tutturamıyorsa ajan olarak işe yaramaz.
- Ucuz olması bağlam israfını affetmez. DeepSeek'in fiyat avantajı gerçek, ama harness kötüyse otuz turluk bir döngüde o avantajı geri verirsiniz. Ucuz model + savurgan harness, pahalı model + tutumlu harness'tan daha pahalıya gelebiliyor.
- Sürümler hızlı değişiyor. Model adları ve yetenekleri birkaç ayda bir güncelleniyor; hangi modelin ne desteklediğini kullanmadan önce resmî dokümantasyondan doğrulayın. Bu yazıdaki mekanizma sabit, model listesi değil.
Kendi harness'ınızı yazmalı mısınız?
Bir ajan döngüsünün en yalın hâlini yazmak gerçekten yüz satır kadar tutar: bir while döngüsü, bir araç listesi, bir JSON ayrıştırıcı. Öğrenmek için kesinlikle bir kere yazın — harness'ın ne yaptığını anlatan hiçbir yazı, kendi döngünüzü yazmak kadar öğretici değil.
Ama günlük işinizde kullanacağınız aracı sıfırdan yazmayın. Hazır araçların asıl değeri döngüde değil, döngünün etrafındaki ayrıntılarda: bağlam sıkıştırma, dosya indeksleme, fark (diff) gösterimi, geri alma, izin sistemi, çökme toparlama. Bunlar aylar süren işler.
Harness seçerken sorulacak beş soru
Yeni bir kodlama aracına bakarken model adına değil şunlara bakın:
- Hangi araçları veriyor? Dosya okuma yetmez; komut çalıştırma ve test koşturma da olmalı.
- Bağlamı nasıl seçiyor? Sadece açık dosyayı mı gönderiyor, projeyi indeksliyor mu, ben elle dosya ekleyebiliyor muyum?
- Uzun oturumda ne yapıyor? Bağlam dolunca sessizce unutuyor mu, özetliyor mu, bana söylüyor mu?
- Model değiştirebiliyor muyum? Kendi API anahtarımı ve kendi modelimi takabiliyor muyum? (DeepSeek gibi modelleri denemek için şart.)
- Neyi onaya soruyor? Dosya yazmayı, komut çalıştırmayı bana mı soruyor, kendi mi karar veriyor?
Bu beş sorunun cevabı, aracın hangi modeli kullandığından daha çok fark yaratıyor.
Ucuz model gerçekten ucuz mu?
"Fiyatın çok küçük bir kısmına neredeyse aynı performans" cümlesini çok duyacaksınız. Bu cümleye olduğu gibi güvenmeyin; kendi işinizde ölçün. Yapması kolay:
- Temsili beş görev seçin — sizin gerçekten yaptığınız işlerden, yapay örneklerden değil.
- Aynı beş görevi iki kurulumda da çalıştırın.
- Üç şeyi not edin: harcanan token, sonucun kabul edilebilir olup olmadığı ve düzeltmek için harcadığınız süre.
Üçüncü madde kritik. Ucuz model iki kat token harcayıp size yarım saat düzeltme çıkarıyorsa ucuz değildir. Benim gözlemim şu: rutin ve tarifi net işlerde ucuz model gerçekten yetiyor; muğlak, karar gerektiren işlerde aradaki fark token maliyetinin çok üstünde bir zaman kaybına dönüşüyor.
Bu yüzden tek bir kuruluma bağlanmak yerine ayrım yapın: en zor kararı verdiğiniz yerde güçlü modeli, hacmi taşıdığınız yerde ucuz modeli çalıştırın.
Üçüncü parti bir harness'a API anahtarı vermek
Açık kaynak bir harness kendi makinenizde çalışır ve telemetrisi varsayılan olarak kapalı olabilir — ama siz ona API anahtarınızı, kod tabanınızı ve bazen dış servis erişimini veriyorsunuz. Kurulumdan önce dört şey:
- Ana hesabınızın anahtarını değil, harcama limiti tanımlı ayrı bir API anahtarı kullanın.
- Anahtarı ortam değişkeninde tutun, proje dosyasına yazmayın.
- İlk çalıştırmada ağ trafiğine bakın; telemetrinin gerçekten kapalı olduğunu kendiniz doğrulayın.
- Otomatik komut çalıştırma iznini kısıtlı başlatın, aracı tanıdıkça genişletin.
Bunlar paranoya değil; herhangi bir üçüncü parti geliştirici aracına uygulayacağınız standart alışkanlıklar.
Vibe coding açısından anlamı
Vibe coding yazılarımda hep şunu söylüyorum: kararlar sizde, uygulama modelde. Harness bu cümlenin üçüncü ayağı — kararlarınızın modele nasıl taşındığı. Karar belgeniz mükemmel olabilir; harness onu modele hiç göndermiyorsa hiçbir anlamı yok.
Bu yüzden "hangi model daha iyi" tartışmasına girmeden önce şunu sorun: modelime ne veriyorum, cevabıyla ne yapıyorum? Cevap netleştiğinde model seçimi zaten kolaylaşıyor.
Araçların hangi işte hangisinin öne çıktığını görmek isterseniz Vibe Coding araçları karşılaştırması yazısına, yöntemin kendisi için 7 pratik ipucu yazısına bakabilirsiniz.
Sık Sorulan Sorular
Harness ne demek?
Harness, bir yapay zekâ modelinin etrafına yazılan ve modeli kullanılabilir bir araca dönüştüren yazılım katmanıdır. Sistem promptunu hazırlar, modele araçlar (dosya okuma, komut çalıştırma) sunar, modelin istediği çağrıları yürütür ve sonuçları modele geri besler. Claude Code, Cursor ve Cline birer harness örneğidir.
Model ile harness arasındaki fark nedir?
Model yalnızca metin girip metin çıkaran bir fonksiyondur; belleği, dosya erişimi ve eylem yeteneği yoktur. Harness ise bu fonksiyonu bir döngü içinde çalıştıran, ona bağlam veren ve cevabındaki araç çağrılarını gerçekten yürüten programdır. Ajan davranışı modelden değil, bu döngüden gelir.
DeepSeek'i kendi kodlama aracımda kullanabilir miyim?
Evet. DeepSeek'in API'si OpenAI biçimiyle uyumlu olduğu için, kendi API adresinizi ve anahtarınızı girmenize izin veren ajan araçlarının çoğunda çalışır. Ağırlıklar açık olduğu için kendi sunucunuzda da barındırabilirsiniz. Kullanmadan önce seçtiğiniz modelin araç çağırmayı (function calling) desteklediğini doğrulayın.
Aynı modeli kullanan iki araç neden farklı sonuç veriyor?
Çünkü model aynı olsa da ona verilen girdi farklı. Sistem promptu, araç seti, gönderilen dosyalar, tur limiti ve hata geri bildirimi araçtan araca değişir. Modele ilgili üç dosyayı veren araçla yalnızca açık sekmeyi veren araç, aynı modelden çok farklı kalitede çıktı alır.
Ajan döngüsü (agent loop) nedir?
Harness'ın modeli tek seferde değil, tekrar tekrar çağırdığı akıştır: isteği gönder, modelin istediği aracı çalıştır, sonucu konuşmaya ekle, tekrar gönder. Model "bitti" diyene kadar bu döngü sürer. Bir aracın "kendi kendine çalışıyor" hissi vermesinin sebebi budur.
Kendi harness'ımı yazmam gerekir mi?
Günlük iş için gerekmez; hazır araçların değeri döngüde değil, bağlam yönetimi ve izin sistemi gibi ayrıntılarda. Ama öğrenmek için basit bir döngüyü bir kez yazmanızı öneririm — yüz satır kadar tutar ve konuyu okuyarak öğrenemeyeceğiniz kadar netleştirir.
İlgili Yazılar
Vibe Coding Yöntemi: 7 Pratik İpucu ve Prompt Yazma Sanatı
Vibe coding'de gerçekten işe yarayan 7 yöntem: prompt yazma, karar belgesi hazırlama, küçük görev verme, test ile koruma, denetim ve refactor. Yapay zekâyla yazılım geliştirirken 'çalışıyor'dan 'sürdürülebilir çalışıyor'a geçmenin formülü.
Vibe Coding Nedir? Sıfırdan Başlayanlar İçin Gerçek Bir Başlangıç Rehberi
Vibe coding tam olarak nedir, nasıl çalışır, hangi araçlarla yapılır? Claude, ChatGPT, Cursor ve Codex ile yapay zekâ destekli yazılım geliştirmeye başlamak istiyorsanız, bu yazı sizin için.
Full Vibe Coding ile App Store'a Uygulama Çıkarmak: LevelUpStudy Deneyimi
Yapay zekâ ile kod yazarak App Store'da uygulama yayınlamak mümkün mü? LevelUpStudy'yi yayınlarken işe yarayan yöntemi, karşılaştığım üç gerçek hatayı ve çıkardığım dersleri anlatıyorum.