· 4 dk okuma
Neden vibe coding değil de agentic coding
yazan: Furkan Durna
#ai #workflow #agents
Vibe coding ile agentic coding dışarıdan bakınca aynı görünür: ne istediğini anlatırsın, kodu bir yapay zekâ yazar. Fark bundan sonra başlar. Birinde sonucu kabul edip devam edersin. Diğerinde ise üretilen sonuç, geçerli sayılmadan önce kendini kanıtlamak zorundadır. Başkalarının kullanacağı bir yazılım söz konusu olduğunda, mantıklı olan yaklaşım ikincisidir.
İki terim, aralarında tek bir çizgi
Andrej Karpathy, 2 Şubat 2025'teki paylaşımında "vibe coding" terimini ortaya attı. Tarif ettiği şey, kendini tamamen akışa bıraktığın, üstel gelişmeyi kabullenip yoluna devam ettiğin ve bir noktada "kodun var olduğunu bile unuttuğun" bir kodlama biçimiydi. Değişiklikleri diff'lere bakmadan kabul ettiğini, hata mesajlarını hiçbir yorum yapmadan modele geri verdiğini ve bir hata düzelmediğinde de "hata kaybolana kadar rastgele değişiklikler" istediğini anlatıyor. Sınırını da kendisi koyuyor: hafta sonu uğraşısı olarak yapılacak, çöpe atılabilir projeler için "fena değil".
Simon Willison ise birkaç hafta sonra bu çizgiyi netleştirdi: vibe coding, "bir LLM ile, yazdığı kodu incelemeden yazılım geliştirmek" demek. Kodu inceliyor, test ediyor ve nasıl çalıştığını açıklayabiliyorsan, ona göre bu "vibe coding değil, yazılım geliştirme".
Agentic coding bu çizginin diğer tarafında duruyor. Ajan kod tabanını okur, birden fazla dosyaya yayılan değişiklikleri planlar, komutları ve testleri çalıştırır, sonuçlara göre tekrar dener. Kısıtları sen belirlersin, kararları sen verirsin, ajanın sunduğu çıktının dayanaklarını sen kontrol edersin ve sonucun sorumluluğu yine sende kalır.
Neden önemli
Kod çalışıyor ama güvenli değil
Veracode, 2025 GenAI Code Security Report kapsamında 100'den fazla dil modelini 80 kodlama görevinde test etti. Görevlerin %45'inde üretilen kod, OWASP Top 10'da yer alan bilinen bir güvenlik açığı içeriyordu. Cross-site scripting'e karşı modeller, ilgili örneklerin %86'sında yeterli koruma sağlayamadı. Daha yeni ve daha büyük modeller de daha güvenli değildi; yalnızca çalışan kod üretme konusunda daha başarılıydılar.
Vibe coding'de kontrol edilen şey de temelde kodun çalışmasıdır. Bir güvenlik açığı, geri yapıştırabileceğin bir hata mesajı üretmez. Kodu kimse okumuyorsa, oradaki açığı ancak başka biri kodu açıp gerçekten ne olup bittiğine baktığında bulabilir.
Talimat, korkuluk değildir
Temmuz 2025'te Jason Lemkin, Replit üzerinde yürüttüğü bir vibe coding projesinin dokuzuncu gününde, platformun ajanının canlı veritabanını sildiğini açıkladı. Veritabanında 1.200'den fazla yöneticinin ve 1.190 şirketin kayıtları bulunuyordu. Üstelik bu olay, değişiklik yapılmaması gereken bir kod dondurma döneminde ve büyük harflerle yazılmış on bir ayrı uyarının ardından gerçekleşti. Ajan daha sonra verilerin kurtarılamayacağını söyledi; bunun da doğru olmadığı ortaya çıktı. Replit'in CEO'su olayı "kabul edilemez" olarak nitelendirdi ve geliştirme ile canlı veritabanlarını otomatik olarak birbirinden ayıran bir güncelleme yayınladı.
Buradaki ders, ajanların kötü niyetli olduğu değildir. Bir modele neyi yapmaması gerektiğini söylemek bir talimattır, kontrol mekanizması değil. Asıl güvence, ajanın canlı ortama erişememesi, değişikliklerin gözden geçirilmesi ve yedeklerin gerektiğinde gerçekten geri yüklenebildiğinin test edilmiş olmasıdır.
Hızlı hissetmek kanıt değildir
METR'in yaptığı rastgele bir deneyde, deneyimli açık kaynak geliştiriciler 2025'in başındaki yapay zekâ araçlarını kullanırken gerçek görevleri %19 daha uzun sürede tamamladı. Deneye başlamadan önce %24 daha hızlı olacaklarını düşünüyorlardı; deney sonrasında bile kendilerini %20 daha hızlı sanıyorlardı. METR'in 2026'daki devam çalışması, geliştiricilerin yeni araçlarla büyük olasılıkla hızlandığını söylüyor; ancak kendi verilerinin bunun ne ölçüde gerçekleştiğini göstermek için zayıf bir kanıt olduğunu da belirtiyor.
Burada önemli olan, algı ile ölçüm arasındaki fark. Ne kadar hızlı ilerlediğine dair hissine güvenemiyorsan, kodun doğru olup olmadığına dair hissine de güvenemezsin. Testlerin, tip kontrollerinin ve ekran görüntülerinin böyle bir sorunu yok.
Kimsenin anlamadığı kod borçtur
Karpathy bunu kendisi söylüyor: kod, "alışılmış kavrayışının ötesine geçiyor." Bir hafta sonu projesi için sorun olmayabilir. Çalışmaya devam etmesi gereken bir yazılım içinse bu, gelecekte çıkacak her hatanın ekipte kimsenin okuyamadığı bir kodun içinde olabileceği anlamına gelir. "Hata kaybolana kadar rastgele değişiklikler iste" yaklaşımı, bir ödeme akışının arkasında görmek isteyeceğin bir hata ayıklama yöntemi değil.
Sonucun hâlâ bir sahibi var
Kullanıcılar, verilerini sızdıran hatayı hangi modelin yazdığını umursamaz. Sorumluluk, o kodu yayına alan kişidedir ve insan ancak kontrol ettiği bir kodun sorumluluğunu gerçekten üstlenebilir.
Agentic coding pratikte nasıl görünüyor
Bu site kodlama ajanları kullanılarak yapıldı. Pratikte bunun karşılığı şu:
- Kısıtları yazıya dök. Depoda ajanlara bu Next.js sürümünün eğitim verilerinden farklı olduğunu ve öncelikle projeyle birlikte gelen dokümanları okumaları gerektiğini söyleyen bir
AGENTS.mdvar. Proje kuralları, sitenin düz metin rehberini uygulamalarla senkron tutmak gibi konuları kapsıyor. İçerik kuralları ise sitede e-posta adresi bulunmamasını ve kodla çelişen hiçbir iddiaya yer verilmemesini söylüyor. - Ajanın neye dokunabileceğini sınırla. Gizli anahtarlar hiçbir zaman commit edilmeyen ortam dosyalarında tutuluyor. Commit ve push işlemlerini kendim yapıyorum.
- Her değişiklik kendini kanıtlasın. Tip kontrolü, lint ve görsel değişiklikler için sayfayı açıp test eden ve ekran görüntüsü alan bir tarayıcı betiği kullanıyorum. Tetris'e geri sayım eklediğimde ilk test, olmaması gereken bir yeniden başlatma tespit etti. Ekran görüntüsü bunun testten kaynaklandığını gösterdi: oyun bittikten sonra bile Space tuşuna basılmaya devam ediyordu ve bu da yeni bir oyun başlatıyordu. Ekran görüntüsü olmasaydı çalışan kodu "düzeltmeye" çalışacaktık.
- İddiaları koda karşı kontrol et. Site rehberinin ilk taslağında Ayarlar uygulamasında bir dil seçeneği olduğu yazıyordu. Yok. The Finger of Hope'un proje sayfasında şifreleme katmanının hiç bağlanmadığı yazıyor; kod da bunu doğruluyor.
- Ajanın söylediklerini doğrula. Eski bir deponun geçmişinden bir ismi silmeye çalışırken bir ajan, silinen commit'lerin yalnızca kimliklerini zaten bilen biri tarafından bulunabileceğini söyledi. GitHub'ın herkese açık olay akışı bunları listeliyordu. İddia makul görünüyordu; kontrol edildiği için yanlış olduğu ortaya çıktı.
Vibe coding ne zaman sorun değil
Karpathy ve Willison bu konuda aynı ayrımı yapıyor; ben de katılıyorum: çöpe atılacak bir prototip, tek seferlik bir betik ya da bir modelin neler yapabildiğini görmek için yapılan bir deney söz konusuysa, işi akışına bırakmak sorun olmayabilir. Risk düşüktür, kullanıcı verisi yoktur, ortada para yoktur ve kimsenin yazılıma bağımlı olması beklenmez.
Kod başka insanların kullanacağı bir şey haline geldiği anda döngünün kapanması gerekir.
Kısaca
Kodu ajan yazsın. Ama son bakan o olmasın. Hız ajandan gelir; güven kontrollerden gelmek zorunda, sorumluluk da commit'i atan kişide kalır.