← Radar

Konu: Kodlama3 dk okuma

Vibe coding'i düzeltmek: Ajana his değil, ölçüm ver

Bu neden önemli?

Bir ajan, kendi işini kontrol edemiyorsa tahmin eder. Aynı soruya her seferinde aynı cevabı veren (deterministik) araçlar, bu tahmini somut bir hata listesine çeviriyor. Ajan da listeyi okuyup kendi hatasını düzeltebiliyor.

Sorun: “Bence güzel olmuş”

Vibe coding, kodu satır satır okumadan, yapay zekâya tarif edip sonuca bakarak yazılım yapmak demek. Hızlı ama bir kusuru var: Kontrol de hisle yapılıyor. Ajan “bitti” diyor, sayfa açılıyor, sen de devam ediyorsun. Bu arada aynı yardımcı fonksiyon üçüncü kez yazılıyor, eski dosyalar ortada kalıyor, bir butonun tıklanmadığını kimse fark etmiyor.

Syntax’ın 998. bölümünde Wes Bos ve Scott Tolinski’nin önerisi basit: Ajana “iyi kod yaz” demek yerine, ona geçti/kaldı cevabı veren araçlar ver. Linter’ın işi zaten bu. Ama liste linter’la bitmiyor.

Tekrar eden ve kullanılmayan kod

Ajanların en sık yaptığı hata, projede zaten olan bir şeyi baştan yazmak. Bunu bulan araçlar:

  • jscpd: Kopyala-yapıştır dedektörü. Birbirine çok benzeyen kod bloklarını 200’den fazla dilde arıyor.
  • Knip: JavaScript ve TypeScript projelerinde hiçbir yerden çağrılmayan dosyaları, dışa aktarımları (export) ve package.json’da duran ama kullanılmayan paketleri listeliyor.
  • Fallow: Rust ile yazılmış, ayar gerektirmeyen tek bir araç. npx fallow ile ölü kodu ve tekrarları buluyor, ayrıca döngüsel bağımlılıkları ve çok karmaşık fonksiyonları işaretliyor. Syntax’ın ayrı kısa videosunda Scott bunu gösteriyor. Wes’e göre karmaşıklık ölçümü, ajanların her soruna bir if daha ekleme alışkanlığına iyi bir fren.

Scott’ın bir uyarısı var: Bu araçların “otomatik düzelt” seçeneğine körü körüne güvenme. Önce listeye bak, sonra ajana ne düzelteceğini söyle.

Ajanın gözü: Başsız tarayıcı

Ajan bir arayüz yaptığında sonucu görmüyor. Headless (başsız, yani ekransız) bir tarayıcı bu açığı kapatıyor. Ajan sayfayı açıyor, tıklıyor, ekran görüntüsü alıyor, konsol hatalarını okuyor.

  • agent-browser: Vercel’in ajanlar için yaptığı komut satırı aracı. Electron ile yapılmış masaüstü uygulamalara bile bağlanabiliyor.
  • Chrome DevTools MCP: Görebildiğin bir Chrome penceresi açıyor. Ajanın yanlış porttaki sayfayı test ettiğini gözünle yakalayabiliyorsun.
  • Lightpanda: Zig ile sıfırdan yazılmış, ekrana hiçbir şey çizmeyen bir tarayıcı motoru. Bu yüzden Chrome tabanlı araçlardan çok daha hızlı ve hafif. agent-browser onu motor olarak kullanabiliyor.

Chrome DevTools MCP’yi zaten açık olan, oturum açtığın Chrome’a bağlamayı ayrı bir yazıda anlattık.

Görev listesi ve güncel belgeler

Uzun bir işte ajan sırayı kaybedebiliyor. dex ve beads gibi araçlar görevleri depoda bir dosyada ya da küçük bir veritabanında tutuyor. Hangi görevin hangisini beklediği yazılı olduğu için ajan bir sonraki işi tahminle seçmiyor. Context7 ise kütüphanelerin güncel belgelerini ajana veriyor, böylece ajan eski bir API’yi uydurmuyor.

Ajan bunları kullansın diye

Asıl püf noktası burada. Talimat dosyasına “her iş bitince jscpd çalıştır” yazmak yetmiyor, çünkü ajan bunu unutabiliyor. Önerilen düzen:

  1. Tüm kontrolleri tek bir kalite betiğinde topla (npm run check gibi).
  2. Ajana her özellikten sonra bu betiği çalıştırmasını söyle.
  3. Aynı betiği bir pre-commit hook’una koy. Kontrolden geçmeyen kod commit’e giremesin.

Bu, ajanı raylarda tutmak yazısındaki fikirle aynı: Rica etme, bariyer kur. Kendi ekibinin kurallarını yazılı bir lint kuralına çevirmek de mümkün. Bunun hazır bir örneği anti-slop.

Sonra ne oldu?

Araçların hepsi Ekim 2026 itibarıyla aktif olarak geliştiriliyor. Fallow 3.x sürümlerine ulaştı ve kod ajanları için bir MCP sunucusu da sunuyor. Lightpanda, 2 Ekim 2026’da 1.0 sürümünü yayımladı.

Düşün

  • Senin projende kaç tane “neredeyse aynı” yardımcı fonksiyon var? Bir kez npx fallow çalıştırıp bak.
  • Ajanın “bitti” dediği bir işi, sen bakmadan önce hangi kontrolden geçirebilirsin?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (12, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.