Modeli /model ile değiştirdiniz, görevi yeniden verdiniz ve bu kez farklı bir yanıt aldınız. Buna karşılık ajan CLAUDE.md dosyasını yine aynı şekilde okudu, komuttan önce yine izin istedi, hook da eskisi gibi çalıştı. Demek ki bunlar modelin içinde yaşamıyor.
Modelin nerede bittiğine, çevresindeki programın nerede başladığına bakalım. Böylece ajan hata yaptığında neyi kontrol etmeniz gerektiğini anlarsınız.
Model ve harness
Model, kendisine verilen bağlamı işler ve bir yanıt ya da araç çağrısı oluşturur. Örneğin hangi dosyanın okunacağını ve hangi komutun çalıştırılacağını seçer. Bu eylemleri gerçekleştirmek için modelin çevresinde bir programa ihtiyaç vardır: program dosyalara erişir, komutları çalıştırır ve sonuçları modele geri iletir.
İngilizce kaynaklarda bu programa harness denir. Sözcüğün asıl anlamı koşum takımı (evet, atlar için olan), ama Türkçe teknik metinlerde de çoğunlukla İngilizce haliyle, harness olarak geçer. Anthropic belgeleri bunu doğrudan söyler: Claude Code bir harness'tır, Claude ise onun içindeki modeldir. Sözcüğe genel olarak ajanlarla ilgili yazılarda da rastlarsınız; aklınızda bulunsun.
Şemadaki harness bağlamı toplar, izinleri denetler ve modelin araç çağrılarını gerçekleştirir. Modelin altındaki ok döngüyü gösterir: aracın sonucu bağlama geri eklenir; model de sonraki adımı seçer ya da yanıtını tamamlar. Yanıtın tamamlanmış olması görevin çözüldüğünü kanıtlamaz; sonucu ayrıca kontrol etmeniz gerekir.
Daha önce neleri yapılandırdınız?
Harness'ın parçaları Claude Code'da şöyle karşınıza çıkar. Sağ sütundaki dosya ve komutlar, her mekanizmayı projede ya da oturumda bulmanıza yardımcı olur.
| Harness parçası | Ne yapar? | Nerede bulunur? |
|---|---|---|
| Sistem talimatları | Claude Code bunları ilk mesajınızdan önce bağlama ekler: nasıl çalışılacağı, hangi araçların bulunduğu ve oturumun hangi klasörde yürütüldüğü | /context çıktısındaki System prompt satırı |
CLAUDE.md | ajanın oturum başında okuduğu proje kuralları | proje kökündeki dosya |
| Araçlar | dosyaları okuma ve düzenleme, arama, terminal komutları | çalışma sırasında Read(...) ve Bash(...) biçimindeki satırlar |
| Skills | modelin göreve göre seçebileceği ya da sizin açıkça çağırabileceğiniz talimatlar | .claude/skills/, /skills |
| MCP | harici hizmetlere ve güncel verilere köprü | /mcp |
| Subagent'lar | kendi bağlamı olan ayrı bir yürütücü | .claude/agents/ |
| İzin istekleri | harness eyleme izin verilip verilmediğini denetler; gerektiğinde onayınızı ister | komut ya da düzenleme öncesinde terminalde görünen soru |
| Hook'lar | oturum olaylarında çalışan komutlarınız; model karar vermeden tetiklenir | /hooks |
| Bağlam ve oturum | modelin şu anda gördükleri ve hangi noktaya geri dönebileceğiniz | /context, /clear, /rewind |
| Ajan döngüsü | sonraki adımı seçebilmesi için araç sonuçlarını modele geri iletir | tek bir isteğe yanıt olarak art arda yapılan birkaç eylem |
CLAUDE.md ve skills modele talimat verir. Model bir kuralı yanlış anlayabilir ya da atlayabilir. İzin denetimleri ve yapılandırılmış hook komutları program tarafından yürütülür; sonuçları tanımlanan koşullara ve komutların kendisine bağlıdır.
Plugins tabloda yer almıyor, çünkü bunlar başlı başına ayrı bir parça değil, bir pakettir: tek işlemle yüklenen birkaç skill, komut ya da hook.
Aynı model, farklı davranış
Projenize ve terminalinize bağlı olmayan bir web sohbeti düşünün. Bunun da kendi harness'ı vardır: konuşma geçmişi, arayüz, bazen internet araması ya da dosya yükleme. Böyle bir sohbette model bir düzenlemeyi açıklayıp kodu gösterebilir; projeye erişimi olan Claude Code ise bu değişikliği dosyaya uygulayabilir. Model aynı, olanaklar farklı; çünkü çevresindeki program farklı.
/model ile bunun tersi olur. Model değişir, harness aynı kalır; dolayısıyla kurallar, araçlar ve izin istekleri de yerinde durur.
Görevi nasıl anladığı, araçları nasıl seçtiği ve sonuçlarını nasıl değerlendirdiği modele bağlıdır. Harness bağlamı toplar, araçları sunar ve izinleri denetler. Örneğin model eksik bir dosyayı isteyebilir; harness dosyayı okur ve içeriğini modele geri iletir.
Ajan, projede artık bulunmayan bir işlev hakkında kendinden emin biçimde konuşuyor mu? Önce güncel kodun bağlama eklenip eklenmediğini kontrol edin. Dosyanın yolunu @ ile vererek, mesajınıza ekleyerek ya da okuma aracını kullanarak kodu bağlama aktarabilirsiniz. İlk iki yöntemde ayrıca bir okuma çağrısı görünmeyebilir. Araç çağrıldıysa ne döndürdüğüne bakın: dosyanın içeriği mi, yoksa erişim ya da yol hatası mı? Kod bağlamda yoksa ekleyin ya da dosyanın okunmasını isteyin. Kod zaten oradaysa ama çıkarım hatalıysa, belirli satırlar üzerinden akıl yürütmesini kontrol edin. Burada başka bir model de yardımcı olabilir.
Ajan hata yaptığında neyi değiştirmeli?
Tek seferlik bir hatayı kısa bir mesajla düzeltmek kolaydır: "Yanlış dosyaya baktın, src/utils.js dosyasına bak." Hata oturumdan oturuma tekrarlanıyorsa talimatları ve erişilebilir verileri gözden geçirin. Belki de gerekli kuralı her seferinde yeniden açıklamanız gerekiyordur.
Uygulamada kabaca şöyle ilerleyebilirsiniz:
- ajan her oturumda bir proje kuralını, örneğin testlerin
npm testile çalıştırıldığını unutuyor -bu kuralıCLAUDE.mddosyasına yazın. Önemli bir kuralı bu dosyada açıkça saklamak, sohbet sırasında hatırlatmaya güvenmekten daha sağlamdır; - aynı prosedürü üçüncü kez açıklıyorsunuz - artık bunu bir skill'e taşımanın zamanı gelmiştir. Ajan, görev için gereken talimatı yükleyebilir. Çalışma sırasında skill'in çağrıldığını kontrol edin; çağrılmadıysa gerçek adını
/skill-nameyerine koyup kendiniz çağırın; - ajan elinde olmayan veriler hakkında tahmin yürütüyor - gerekli verileri sağlayın:
@ile dosyayı bağlama ekleyin ya da MCP üzerinden harici bir hizmet bağlayın. Ajanı ikna etmeye çalışarak tahmin yürütmesini engelleyemezsiniz; - ajan kontrolü çalıştırmadan "tamamlandı" diyor -
Stopolayına bağlı bir hook testleri modelin kararına gerek kalmadan çalıştırabilir. Yine de işi rapora göre değil, komut çıktısına bakarak siz değerlendirirsiniz; - gerekli veriler erişilebilir ve okunmuş, ama ajan karmaşık bir akıl yürütmede takılıyor -
/modelile başka bir modeli deneyin ve aynı görevdeki sonucu karşılaştırın.
Önce gerekli veri ve araçların erişilebilir olduğunu doğrulayın. Sorun akıl yürütmedeyse başka bir modeli hemen deneyebilirsiniz. Sonuç kalitesini ve /usage çıktısındaki tüketimi karşılaştırın: başarısız denemeleri tekrarlamak da limitinizi ve zamanınızı harcar.
GO TO FULL VERSION