Silindi, ölçüldü, bir kural bozuldu
CLAUDE.md'yi silmek, Claude Code'un her konuşmanın başında okuduğu talimat dosyasını kaldırmak demektir. Claude Code'un yaratıcısı Boris Cherny, sahnede bu dosyayı altı ayda bir silmeyi önerdi. Yedi hafta içinde yirmi iki video onu tekrarladı. Hiçbiri bir repo açmadı.
Bu yazı videoların yapmadığını yapıyor: 177 satırlık bir CLAUDE.md, üç skill, dört komut ve bir hook içeren gerçek bir uygulamayı alıyor, beş günlük görevi dosyayla ve dosyasız çalıştırıyor, sonucu sayıyor. Kırk dört koşunun sonunda tam olarak bir kural bozuldu. Dosya her görevde token maliyeti getirdi, her seferinde farklı miktarda, ve satırlarından biri kimsenin uyamadığı bir talimattı.
Klip, kelimesi kelimesine, ve ona ait olmayan iki cümle
Klip, Opus 5'in çıkışından bir gün sonra kaydedilen Boris Cherny'nin YC Startup School konuşmasından geliyor. Sözleri şöyle: her altı ayda bir CLAUDE.md'ni sil, skill'lerini sil, hook'larını sil. Modelin ne yaptığını gör, seni şaşırtabilir. Opus 5 için, diyor, Anthropic bunu denemeyi gerçekten öneriyor: model artık tüm o talimatlara ihtiyaç duymuyor olabilir.
Otuz saniye önce, kimsenin alıntılamadığı uyarı geliyor. Anthropic tüm kod tabanını silmiyor. Çoğunu siliyor ve buna ablation diyor. Yazılı transkript bu satırı bugün eksiksiz taşıyor. Claude Code sistem promptunun yüzde seksen'i bu şekilde gitti: her şeyi sil, satır satır geri getir, her satırı ölç.
Tepki videolarının onun ağzına koyduğu iki cümle konuşmada yok. "Bağlam, hedefler ve bir tamamlanma tanımı" hiçbir yerde geçmiyor; en yakın söylediği görev, koruma kuralları, çıkış kriterleri. "Bun'u yeniden yazan altmış dört agent" de onun sayısı değil: bu, Bun yazısında Jarred Sumner'a ait. Cherny on bir gün diyor ve bir sayı istendiğinde binlerce diye tahmin ediyor.
Yedi haftada yirmi iki video bu klibi alıntıladı. Hiçbiri testi çalıştırmadı. Bu yüzden bu yazı onun gerçekten anlattığını yapıyor: sil, bir parça bir parça geri getir, ölç.
Araç: ablation, silme değil
Bir ablation, her şeyi silip tahmin etmek yerine, bir konfigürasyonun tek bir parçasını çıkarır ve etkisini ölçer. CLAUDE.md her konuşmanın başında ve her turda yeniden okunuyor; skill'ler yalnızca çağrıldığında yükleniyor. Ölçülen fark tam olarak bu.
Anthropic silme anahtarını hazır sunuyor: yalın bir flag, Cherny'nin sahnede adını verdiği aynı değişken. Repo benim gerçek bir uygulamam: 177 satırlık talimat, üç skill, dört komut ve her aramada tetiklenen bir hook.
| Boyut | Değer |
|---|---|
| Günlük görevler | 5 (yeni komponent, düzenleme, refactor, store değişikliği, mimari sorusu) |
| Konfigürasyonlar | 5 (tam, dosyasız, skill'siz, hook'suz, hiçbiri) |
| Model | tek, sabitlenmiş |
| Ortam | boş config dizini, her koşudan önce yeni clone |
| Koşu | 44 |
| Maliyet | $39 |
Her koşu aynı şekilde, aynı clone üzerinde, elle değil bir script tarafından puanlandı. Neyin bozuk sayıldığı: reponun kendi kuralları (import'lar, type'lar, tasarım token'ları, çeviriler) artı typecheck ve lint.
Bu tür bir ablation için yapılmış tek araç olan Caliper, skill'leri ve MCP sunucularını ablate ediyor ama dosyaya hiç dokunmuyor; CLAUDE.md değişimi elle yapıldı. Sınırlar, bir kez belirtildi: tek repo, tek model, hücre başına iki koşu, transkript yok. İlk sonuç setinin tonu şuydu: refactor görevi dosyayla altmış dört sent, dosyasız altmış üç sent ile birebir aynı çıktı verdi.
Ne bozuldu: bir kural, yeni dosyalarda
Bozulan kural bir uluslararasılaştırma kuralı, dosyanın kendi ifadesiyle: her zaman hem İngilizce hem Fransızca ekle, kullanıcının gördüğü bir string'i asla hardcode etme. Yeni komponent görevinde, dosyayla dört koşunun tamamı çeviri dosyasını yazdı. Dosyasız, dört koşudan üçü başlığı hardcode etti. Aynı görev, aynı repo, aynı model, aynı prompt.
| Yeni komponent | Çeviri dosyasını yazdı |
|---|---|
| CLAUDE.md ile | 4/4 |
| CLAUDE.md olmadan | 1/4 |
Düzenleme görevi diğer yarıyı anlatıyor. Her konfigürasyon, hiçbir şey olmadığı halde bile doğru sonuç verdi, çünkü komşu kod bunu zaten öğretiyor: düzenlenen komponentin yanındaki her komponentin zaten bir çeviri dosyası var. Kırk dört koşunun tamamında geri kalan her şey tuttu: import alias'ı, interface yerine type, tasarım token'ları, store deseni. Kod bunları gösteriyor; dosya sadece tekrarlıyor.
ETH Zurich'ten bir makale aynı şeyi 138 gerçek issue üzerinde ölçtü. Bulgusu: context dosyaları başarıyı artırmıyor ve yaklaşık yüzde yirmi daha pahalıya mal oluyor, üstelik model talimatlara gerçekten uyuyor. Bir istisna: dosyasız bir koşu yine de çeviri dosyasını yazdı. Kural dosyasız imkansız değil, güvenilmez. Bir kural bozuldu, kodun öğretemediği o kural. Ve o işi atlayan koşu aynı zamanda en ucuzu oldu.
Dosyanın maliyeti, görev görev
Bir CLAUDE.md'nin token maliyeti, dosyayla yapılan bir koşu ile aynı koşunun dosyasız hali arasında okunan token farkıdır.
| Görev | Dosyasız daha az okunan token |
|---|---|
| Yeni komponent | %61 |
| Düzenleme | %15 |
| Refactor | %5 |
| Store değişikliği | %4 |
| Mimari sorusu | %14 |
| On koşu üzerinde | %32 token, %22 para |
Yüzde otuz iki, her videonun manşete çıkaracağı sayı, ve yanlış olan da bu. En büyük tasarruf, çeviri dosyasını yazmayan koşudan geliyor: daha az iş yaptığı için daha ucuz. Çıktının aynı olduğu yerlerde, dosyanın maliyeti yüzde dört ile on dört arasındaydı. Bu onun gerçek fiyatı, ve makalenin yüzde yirmisi tam bu iki sayının arasına düşüyor.
Mekanizma yaklaşık 1,800 token, her turda yeniden okunuyor. Skill'ler, hook ve bilgi grafiği, var ya da yok, ölçülebilir hiçbir şey üretmedi. Gürültü, bunların çoğundan daha büyük: aynı görev, aynı dosya, bir koşuda $2.11, diğerinde $1.33'e mal oldu. İki koşu tur sınırına takıldı, biri dosyayla biri dosyasız. Yani dosya her yerde biraz maliyet getiriyor ve yerini bir kez hak ediyor, tabii yalan söylemiyorsa.
Yalan söyleyen satırlar
Yalan söyleyen bir satır, modelin uyamadığı ya da hiçbir şeyi değiştirmeyen bir talimattır. Başta değindiğim satır: temayı design-tokens alias'ından import et. Bu alias mevcut değil: TypeScript config'i tek bir prefix'e eşliyor ve token'lar klasöründe tema dosyası yok. Dosyayla ya da dosyasız her koşu, komşuların yaptığını yaptı, kırk dört kez aynı import satırı.
Dosyada seksen iki satırlık bir mimari özet var. Aynı soru, altı cevap: altısı da aynı dokuz dosyayı, backend'den ekrana, aynı sırayla buldu, özetle ve özetsiz. Bir blok, clone'da bulunmayan bir bilgi grafiğine işaret ediyor; grafik mevcut olduğunda bile soru aynı maliyeti taşıdı.
| Ölçüt | Değer |
|---|---|
| Anthropic'in boyut kuralı | 200 satırın altı |
| Bu dosya | 177 satır |
| reporails'in 30 bin repo veri setindeki medyan dosya | 50 öğe, 12 direktif |
| Bu dosyadaki direktif satırları | 177 satırın 24'ü |
Çelişen iki kuraldan hangisinin kazandığına konum karar veriyor, ve model bunu hiç söylemiyor, bir vendor'ın testinde yaklaşık doksan puan fark. Özet, burada çalıştırılmayan bir görev için işe yarayabilir: tek deneme, tek cevap. Üç tür satır o zaman: yerini hak eden, kodun zaten öğrettiği, yalan söyleyen.
Tut, taşı, sil: kısa liste
Üç yığın, ve her birinin arkasındaki ölçüm.
| Yığın | Neler gider | Ölçüm |
|---|---|---|
| Tut | Kodun gösteremediği kural | 4 koşuyu kurtaran 6 satır |
| Taşı | Mimari özet ve komutlar | Ölçülmüş kazancı olmayan 107 satır |
| Sil | Yalan söyleyen satırlar, ve ağacın zaten gösterdiği satırlar | 44 aynı koşu |
Modelin iki kez yanlış yaptığı şeyi tut: bu zaten Anthropic'in dosya için kendi kriteri. Özeti ve komutları, ihtiyaç duyulduğunda yüklenen bir dosya ağacına taşı; Anthropic'in Temmuz yazısı merkezi repoyu bir efsane olarak adlandırıyor. Hook'lar kalır: bir kapının süresi, model daha iyi olduğunda dolmaz. Aştığı düzyazıyı kes, kapıyı tut.
Sonrasında dosya: yaklaşık yetmiş satır, üstüne o yerini hak eden altı satır. Bu, Cherny'nin yöntemi, bütünüyle okunduğunda: sil, satır satır geri getir, ölç. Tek repo, tek model, hücre başına iki koşu; yığınların farklı olacak, yöntem farklı olmayacak. Silmek bir kurala mal oldu ve az şey kazandırdı. Kazanç, yalan söyleyen satırları bulmaktı.
AIDive