Ne yapıldı?
Anthropic’in güvenlik ekibinden Nicholas Carlini, 5 Şubat 2026’da yayımladığı yazıda bir deneyi anlattı. 16 ajan, Claude Opus 4.6 ile, Rust dilinde sıfırdan bir C derleyicisi yazdı. Derleyici, C kodunu işlemcinin çalıştırabileceği makine koduna çeviren program.
Rakamlar: İki haftada yaklaşık 2.000 Claude Code oturumu, 2 milyar girdi ve 140 milyon çıktı token’ı, 20 bin dolara yakın API maliyeti. Ortaya yaklaşık 100 bin satırlık bir derleyici çıktı. Geliştirme sırasında ajanların internet erişimi yoktu ve kod sadece Rust’ın standart kütüphanesine dayanıyor. Carlini’ye göre derleyici x86, ARM ve RISC-V için açılabilen bir Linux 6.9 çekirdeği derliyor. SQLite, PostgreSQL, Redis, FFmpeg ve QEMU’yu da derliyor, GCC’nin zorlu “torture” test paketinin yaklaşık yüzde 99’unu geçiyor. Doom da çalışıyor.
Yönetici yok, kilit dosyası var
Düzenek basit. Her ajan kendi Docker konteynerinde, sonsuz bir döngüde çalışıyor: Bir işi bitirince sıradakine geçiyor. Ortada paylaşılan bir git deposu var. Ajan kendi kopyasında çalışıyor, bitince değişiklikleri o depoya gönderiyor. Ajanı bir bash döngüsüne koyan bu fikrin tek ajanlı hâlini Ralph Wiggum döngüsü yazımızda anlattık.
Aynı işi iki ajanın yapmasını önleyen şey bir kilit dosyası. Ajan bir işe başlarken current_tasks/ klasörüne o işin adıyla bir metin dosyası yazıp gönderiyor. İki ajan aynı dosyayı yazmaya çalışırsa git ikincisinin gönderimini reddediyor, o da başka bir iş seçiyor. Ajanlar arasında başka bir iletişim ya da onları yöneten bir “şef ajan” yok. Her biri sıradaki en belirgin sorunu kendisi seçiyor.
Asıl şartname: Testler
Yazının en öğretici kısmı test düzeneği. Kimse ajanın yanında oturmadığı için ne yapacağına testler karar veriyor. Bu yüzden testlerin neredeyse kusursuz olması gerekiyor. Yoksa ajan yanlış sorunu çözüyor. Projenin sonlarına doğru, yeni bir değişikliğin eski özellikleri bozmasını engelleyen bir CI adımı eklenmiş. Bu “rica etme, denetle” fikrini ajanı raylarda tutmak yazımızda da anlattık.
Diğer dersler:
- Bağlamı kirletme. Test çıktısı kısa olmalı. Ayrıntılar dosyaya gidiyor, hatalar aynı satırda
ERRORkelimesiyle işaretleniyor ki ajan arayıp bulabilsin. - Ajan saati bilmez. Kendi hâline bırakılan ajan saatlerce test çalıştırabiliyor. Bu yüzden
--fastseçeneği testlerin rastgele yüzde 1’ini ya da 10’unu çalıştırıyor. Örnek her ajan için sabit ama ajanlar arasında farklı. Böylece hepsi birlikte tüm testleri kapsıyor. - Hafıza dosyaları. Her yeni oturum sıfırdan başladığı için ajanlardan README ve ilerleme notlarını güncel tutmaları isteniyor.
- Roller. Bazı ajanlara ayrı görevler verilmiş: tekrar eden kodu temizlemek, derleyiciyi hızlandırmak, belgeleri güncel tutmak, tasarımı deneyimli bir Rust geliştiricisi gözüyle eleştirmek.
GCC’yi hakem yapmak
Linux çekirdeği tek ve dev bir iş. 16 ajanın hepsi aynı hataya takılıp birbirinin düzeltmesinin üstüne yazmaya başlamış. Çözüm, bilinen iyi bir derleyiciyi, yani GCC’yi hakem olarak kullanmak. Yeni düzenek çekirdeğin çoğunu GCC ile, rastgele seçilen bir kısmını Claude’un derleyicisiyle derliyor. Çekirdek çalışıyorsa sorun o dosyalarda değil. Çalışmıyorsa küme daraltılıyor. Böylece her ajan farklı dosyadaki farklı bir hataya bakabildi.
Sınırlar
Carlini bunları kendisi yazıyor:
- x86’da Linux’u açmak için gereken 16 bitlik kodu üretemiyor. Ürettiği kod Linux’un 32 KB sınırını aşıyor, bu adım için GCC çağrılıyor. ARM ve RISC-V’de buna gerek yok.
- Yazıya göre kendi assembler ve linker’ı (makine kodunu dosyaya dönüştüren ve parçaları birleştiren araçlar) en son yazılan ve hâlâ hatalı parçalar. Tanıtım videosu GCC’nin assembler ve linker’ıyla hazırlanmış.
- Ürettiği kod, tüm iyileştirmeler açıkken bile GCC’nin hiç iyileştirme yapmadığı hâlinden daha yavaş.
- Yeni özellikler sık sık eskileri bozuyordu. Carlini’ye göre proje Opus’un yapabileceklerinin sınırına dayanmıştı.
Carlini’nin kaygısı da ilginç: Testler geçince iş bitti sanmak kolay. İnsanların hiç kendileri doğrulamadıkları yazılımı kullanıma almasından endişe ediyor.
Sonra ne oldu?
- Depo yayımlandığı 5 Şubat 2026’dan beri güncellenmedi. Arşivlenmedi ama bir deney olarak duruyor. README’nin çelişkili bir yanı var: Yerleşik assembler ve linker’ı varsayılan olarak gösteriyor, GCC’yi ise isteğe bağlı bir seçenek olarak. Aynı README, belgelerin yanlış iddialar içerebileceği ve derleyicinin kullanılmaması uyarısını taşıyor.
- Aynı “testler şartnamedir” yöntemini bir ay sonra Cloudflare, Next.js’i Vite üzerinde yeniden yazarken kullandı (vinext yazımız). Temmuz’da Bun, onlarca Claude ile yarım milyon satırı Rust’a taşıdı (Bun yazımız).
Düşün
- Senin projende bir ajanı iki hafta yalnız bırakacak kadar iyi testler var mı?
- Elinde GCC gibi “bilinen iyi” bir hakem olmasaydı, ajanın doğru yolda olduğunu nasıl anlardın?
Videoyu izle
Kaynaklar (3, İngilizce)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.