Agent'im Bir Akşamda 3 PR Gönderdi. Mesajlarımın %40'ı Düzeltmeydi.
Yapay zeka destekli kodlama agent'ım tek bir akşamda üç pull request gönderdi, ancak gönderdiğim 30 mesajın %40'ı düzeltmeydi.
Oturum sonucunda bir MCP client, bir Azure AI Agent ve bir M365 Copilot Agent üretildi. Otomatik kontroller her üç PR'ı da onayladı ve ben tek bir satır kod bile düzenlemedim. Yine de konuşma dökümü farklı bir hikaye anlatıyor: Toplam 710 mesajın 30'unu ben yazdım ve bunların 12'si agent'ı tekrar doğru yola soktu. "Yönlendirme oranı" (steering rate) – yani mesajlarımın düzeltme içeren payı – %40 seviyesinde.
Pipeline nasıl kurgulandı
- Claude, üst düzey bir uygulama planı taslak haline getirdi.
- DeepSeek V4-Flash, planı gözden geçirerek orkestratör (orchestrator) görevini üstlendi.
- Codex, asıl kodu oluşturdu.
- Orkestratör kodu inceledi ve pull request'leri açtı.
Orkestratörün asıl amacı sadece bağlantı kurmaktı; kendi başına kod yazmak yerine bileşenler arasındaki çakışmaları çözmeliydi. Uygulamada agent, yaklaşık 40 dakika içinde üç PR üzerinden 3.500 satır kod üretti, ancak iki tekrarlayan hata sınıfında hata yaptı.
İki hata grubu
- İş akışı ihlalleri – orkestratör zaman zaman "yapıştırıcı" (glue) rolünü göz ardı ederek kodlama adımını devraldı ve uygulama detaylarını bizzat yazdı.
- Bağlam geri çağırma (context-retrieval) hataları – açık talimatlara rağmen agent yanlış SDK veya versiyonu seçti. Doğru bilgi prompt bağlamında mevcuttu, ancak model bunu doğru zamanda ortaya çıkaramadı.
Bunlar akıl yürütme yeteneğindeki eksiklikler değil; iş akışının nasıl sınırlandırıldığıyla ilgili mühendislik hatalarıdır (bugs). Daha yetenekli bir dil modeli bile, orkestratörü kodlama dışı görevlerine sabitleyecek ve doğru SDK seçimini zorunlu kılacak katı, gözden kaçması imkansız bir kurala ihtiyaç duyacaktır.
Agent'ı dizginlemek için neyi değiştirdim
Sistemin rolünü adım listesinden çıkaracağını varsaymaktan vazgeçtim. Doğrudan bir ifade ekledim: “Sen bir orkestratörsün. Uygulama yapmazsın.” Talimatın kalıcı olması için beş düzeltme mesajı gerekti, sonrasında agent bu sınırı benimsedi.
Ayrıca bağlam geri çağırma mantığını sıkılaştırdım. Yanlış araç ortaya çıktığında, bunu bir halüsinasyondan ziyade geri çağırma pipeline'ındaki bir hata olarak ele aldım ve doğru versiyonun gözden kaçmasını imkansız hale getirmek için SDK detaylarını besleyen prompt'u yeniden yazdım.
Yapay zeka destekli geliştirme için pratik çıkarımlar
- Kendi mesajlarınızı sayın. Kabul edilen yüksek sayıda PR, bozuk bir süreci maskeleyebilir. Düzeltme sayınız, sistemin nerede sızdırdığının öncü bir göstergesidir.
- Rolü açıkça belirtin. Agent'lar kimliklerini bir kontrol listesinden çıkarmazlar; kim oldukları ve neler yapabilecekleri konusunda net, sabitlenmiş bir talimata ihtiyaç duyarlar.
- Araç seçimi hatalarını mühendislik hatası olarak değerlendirin. Eğer agent belirtilen bir SDK'yı görmezden geliyorsa, hata modelin "bilgisinde" değil, bağlam iletim mekanizmasındadır.
- Hataları yeniden kullanılabilir becerilere dönüştürün. Agent'ın kendi hatalarından bir doğrulama rutini oluşturmasına izin vererek, bir başarısızlığı gelecekteki bir koruma mekanizmasına dönüştürdüm.
