Claude Code her gün yüzünüze karşı yalan söylüyor. Uydurma fonksiyonlar, sahte import'lar, hiçbir şey çalışmadığı halde "testler geçti" mesajları. Çözüm ise yalan söylemeyi pahalı hale getiren 4 katmanlı bir kurulum.
Claude size hatanın düzeltildiğini söyler. İki saat sonra çağırdığı fonksiyonun hiç var olmadığını öğrenirsiniz.
Çoğu geliştirici her şeyi iki kez kontrol etmeyi ve modeli suçlamayı öğrenir. Gerçek çözüm ise her yalanı makinenizden çıkmadan yakalamaktır.
İşte tam dürüstlük kurulumu 👇

Claude neden ilk etapta bir şeyler uydurur?
Claude bir metin tahmincisidir. Bir şey bilmediğinde, doğru görünen metin tahmin eder. Uydurma fonksiyon isimleri gerçek olanlara benzer. Kendinden emin bir şekilde sunulan saçmalık, kendinden emin bir şekilde sunulan gerçekle aynı okunur.
Kodunuz iki saat sonra, bir saati daha hata ayıklamakla geçeceğiniz bir şekilde bozulana kadar aradaki farkı anlayamazsınız.
Çözüm daha akıllı bir model değil. Claude'un çıktısını gerçek zamanlı olarak kontrol edilebilir kılmak ve "bilmiyorum" demeyi tahmin yürütmekten daha ucuz hale getirmektir.
Aşağıda 4 katman var. Birlikte uydurmayı neredeyse sıfıra indirirler.

Katman 1: CLAUDE.md dürüstlük kuralları
İlk katman, CLAUDE.md dosyasındaki, Claude'a belirsizliği tam olarak ne zaman ve nasıl kabul edeceğini söyleyen bir dizi kuraldır. Bunu projenizin kök dizinine ekleyin:
1## Dürüstlük kuralları (her döngüde oku)23Bir fonksiyonun, sınıfın veya import'un var olduğunu iddia etmeden önce,4dosyayı okuyarak veya grep çalıştırarak doğrulayın. Asla sembol uydurmayın.56Bir şeyi doğrulayamıyorsanız, açıkça "Bunu doğrulamadım" deyin.7Doğrulanmamış iddiaya bağlı kod yazmayın.89Bir görev, bu projede daha önce hiç kullanıldığını görmediğiniz bir10kütüphaneyi kullanmanızı istiyorsa, eklemeden önce sorun.1112Bir görev testleri veya derlemeleri içeriyorsa, bu oturumda testi veya13derleme komutunu fiilen çalıştırmadıysanız başarılı olduğunu iddia etmeyin.1415Asla hata mesajları, API yanıtları veya stack trace'ler icat etmeyin.16Bunları görmediyseniz, öyle söyleyin.1718Gerçekten bilmediğinizde, doğru cevap "Bilmiyorum" veya19"Önce kontrol etmeliyim"dir. Her ikisi de kendinden emin bir tahminden daha iyidir.
Bu kurallar bariz görünüyor.
Değiller, çünkü varsayılan olarak Claude yardımcı görünecek şekilde optimize edilmiştir ve "bilmiyorum" demek, ona açıkça izin vermediğiniz sürece yardımcı olmayan bir şey gibi gelir.
Son satır en önemlisidir. "Bilmiyorum" lisansıdır ve çoğu insan bunu asla vermez.
Katman 2: Yazmadan önce doğrulama deseni
İkinci katman, Claude'u yazmadan önce doğrulamaya zorlar. Bunu CLAUDE.md dosyasına dürüstlük kurallarının altına ekleyin:
1## Doğrulama protokolü23Bir sembolü (fonksiyon, sınıf, tür, sabit) kullanan kod yazmadan veya4düzenlemeden önce, aşağıdakilerden birini yapın:561. Sembolün tanımlandığı dosyayı okuyun ve imzayı onaylayın72. `grep -r "sembolAdı" .` komutunu veya Glob aracını kullanarak bulun83. Bağımlılık için package.json, requirements.txt, Cargo.toml veya9 benzerini kontrol edin1011Doğrulamayı atlarsanız, kodun başına bir yorum ekleyin:12`// DOĞRULANMADI: Bu sembolün var olduğunu onaylamadım`1314Birden fazla dosyayı ilgilendiren herhangi bir görev için planla-sonra-uygula15modu tercih edilir. Başlamadan önce plan moduna girmek için Shift+Tab kullanın.
Bu, Claude'a oturum başına birkaç ekstra araç çağrısına mal olur. Sahte fonksiyon çağrılarında hata ayıklamak için harcayacağınız saatlerden tasarruf etmenizi sağlar.
Katman 3: Yalanları gerçek zamanlı yakalayan hook'lar
Üçüncü katman, settings.json dosyasındaki, Claude her dosya yazdığında bir tür denetleyicisi veya linter çalıştıran hook'lardır. Claude bir import uydurduysa, denetleyici anında başarısız olur ve Claude, görevin tamamlandığını iddia etmeden önce hatayı düzeltmek zorunda kalır.
1{2 "hooks": {3 "PostToolUse": [4 {5 "matcher": "Write(*.ts|*.tsx)|Edit(*.ts|*.tsx)",6 "hooks": [7 { "type": "command", "command": "npx tsc --noEmit --pretty false 2>&1 | head -20" }8 ]9 },10 {11 "matcher": "Write(*.py)|Edit(*.py)",12 "hooks": [13 { "type": "command", "command": "ruff check --quiet $file && pyright $file 2>&1 | head -20" }14 ]15 },16 {17 "matcher": "Write(*.rs)|Edit(*.rs)",18 "hooks": [19 { "type": "command", "command": "cargo check --message-format=short 2>&1 | head -20" }20 ]21 }22 ]23 }24}
Hook çıktısı, bağlam olarak Claude'a geri gider. tsc "Cannot find module 'foo'" derse, Claude bunu hemen görür ve uydurulmuş import'u düzeltir. Hiçbir uydurulmuş kod bir PostToolUse denetiminden sağ çıkamaz.
Testleri içeren görevler için, Claude oturumun bittiğini ilan edemeden önce test paketini çalıştıran bir Stop hook'u ekleyin:
1"Stop": [2 {3 "hooks": [4 { "type": "command", "command": "npm test 2>&1 | tail -30" }5 ]6 }7]
Artık Claude, testleri fiilen çalıştırmadan "bitti, testler geçti" diyemez. Hook onları çalıştırır.
Sonuç Claude'a geri gider. Başarısız olurlarsa, Claude onları düzeltmek veya geçmediklerini kabul etmek zorundadır.
Katman 4: Gerçek denetleyici alt-ajan
Dördüncü katman, tek işi Claude'un iddialarını göndermeden önce incelemek olan bir alt-ajandır.
Bunu .claude/agents/fact-checker.md dosyasına ekleyin:
1---2name: fact-checker3description: Bu ajanı, Claude kodun ne yaptığı, hangi testlerin geçtiği veya bir kütüphanenin neyi desteklediği hakkında iddialarda bulunduktan sonra kullanın. Her commit'ten önce, her kullanıcıya yönelik özetten önce ve yeni bağımlılıklar içeren her görevden sonra çağırın.4tools: Read, Grep, Glob, Bash5model: sonnet6---78İddiaları doğrularsınız, kod yazmazsınız.910Çağrıldığında şunları yapın:11121. Son konuşmadaki her olgusal iddiayı belirleyin. Örnekler:13 "X fonksiyonu Y'yi yapar", "testler geçti", "Z kütüphanesi W'yi destekler",14 "bu import doğru".15162. Her iddiayı bağımsız olarak doğrulayın:17 - Kod iddiaları: gerçek dosyayı okuyun ve onaylayın18 - Test iddiaları: testleri kendiniz çalıştırın19 - Kütüphane iddiaları: gerçek paketi veya belgelerini kontrol edin20 - Import iddiaları: paketin bağımlılık manifestosunda olduğunu onaylayın21223. Bir rapor hazırlayın:23 - DOĞRULANDI: iddia, kanıt (dosya:satır veya komut çıktısı)24 - YANLIŞ: iddia, gerçekte ne doğru25 - DOĞRULANAMAZ: iddia, neden kontrol edemediğiniz2627"Bana güven" iddialarını asla kabul etmeyin. Kendi iddialarınızda bulunmayın. Eğer28doğrulayamıyorsanız, doğru çıktı DOĞRULANAMAZ'dır.
Bu ajanı commit'lerden önce veya sonuçları ekibinizle paylaşmadan önce çağırın. Diğer 3 katmanın gözden kaçırdığı yalanları yakalar.

"Bilmiyorum" lisansı
Claude yardımcı olacak şekilde eğitildi ve cehaleti kabul etmek yardımcı olmayan bir şey gibi gelir. Bu yüzden tahmin eder ve tahmin doğru görünür.
Çözüm, bilmeme izni vermektir. CLAUDE.md bunun yarısıdır. Sizin tepkiniz diğer yarısıdır. "Bunu doğrulamadım"ı sabırla ödüllendirin ve her oturumda dürüst bir Claude elde edin. Bunu hayal kırıklığıyla cezalandırın ve Claude tahmin etmeye geri döner.
Bir yapılandırma değil, bir alışkanlık. Yığındaki en hafife alınan düzeltme.
Gerçekten çalıştığını nasıl anlarsınız?
Günlük oturumlarınızda üç işaret.
Claude, bağımlılık eklemeden önce sorar. Sessiz bir npm install yerine "X'i eklemeli miyim yoksa stdlib'i mi kullanmalıyım?" der.
Claude, mevcut koddan bahsederken dosya:satır referansı verir. "validateToken fonksiyonu Y'yi yapar" yerine "src/auth/middleware.ts:47 dosyasındaki validateToken Y'yi yapar" der.
tsc ve linter'ınız bağırmayı bırakır. Hook'lar nadir görülen uydurmaları anında yakalar ve Claude kendini düzeltir, böylece siz baktığınızda yalanlar gitmiş olur.
Bir iki gün sonra bunları görmüyor musunuz? Bir katman yüklenmemiştir. Genellikle CLAUDE.md, yanlış konum veya yanlış isim.

Claude'u yalan söylemeye devam ettiren yaygın hatalar
CLAUDE.md çok uzun. Claude ilk kısmı okur ve geri kalanını gözden geçirir. Dürüstlük kuralları ilk 50 satırda olmalıdır.
Hook'lar sessizce günlük kaydeder. Çıktı stdout'a ulaşmazsa, Claude yalan söylediğini bilmez. Hook çıktısının oturuma geri döndüğünden emin olun.
Plan modunu atlarsınız. Claude'un yazmadan önce yanlış varsayımları ortaya çıkardığı yer burasıdır. Atlayın ve yalanları yakalamak için en ucuz anı kaçırın.
Gerçek denetleyiciyi çağırmazsınız. Bir alt-ajan, yalnızca onu fiilen çağırırsanız çalışır. @fact-checker'ı commit akışınızın bir parçası haline getirin.
"Bilmiyorum"a kötü tepki verirsiniz. Dürüstlüğü bir kez cezalandırın ve Claude tahmin etmeye geri döner. Bu olmadan diğer 3 katman işe yaramaz.

5 dakikalık dürüstlük denetimi
1 dakika: CLAUDE.md dürüstlük kurallarını ve doğrulama protokolünü projenizin kök dizinine kopyalayın.
1 dakika: hook'lar bloğunu ~/.claude/settings.json veya .claude/settings.json dosyasına kopyalayın.
2 dakika: Yukarıdaki şablonla .claude/agents/fact-checker.md dosyasını oluşturun.
1 dakika: Normalde iki kez kontrol edeceğiniz bir görevi çalıştırın. tsc çıktısının Claude'a geri geldiğini izleyin. Claude'un açıkça "doğrulandı" veya "bunu doğrulamadım" dediğini onaylayın.
Bitti. Uydurma, "her iki oturumda bir"den "nadir ve hemen yakalanan"a düşer. Model daha akıllı olmadı. Sizin kurulumunuz oldu.
Okuduğunuz için teşekkürler!






