İçeriğe geç

12İzEylemde

“Yaptım” demeden önce sonucu doğrula

Ajan bir adımın sonucunu okumadan başarılı sayıyor, üstüne yeni iş kuruyor ve kullanıcıya bitti diyor. Bitti demeden önce sonucu ortamdan okumak ve okuduğunu rapora koymak bu zinciri kırar.

Kimlik
TD-005
Seviye
Ajan AI kullanıcı adına iş yapıyorsa gerekli.
Yüzey
Arka plan ajanı, Sohbet
Dayanak
Gerçek olay
Son inceleme
27 Ekim 2026

Ajanına ver

Claude Code, Cursor ya da Codex'e yapıştır. Metinlerin tamamı aşağıda, Ajanına ver bölümünde.

Borulardan oluşan bir duvarın önünde turuncu, tek gözlü AI figürü son musluğun altına bir bardak tutmuş, suyun gerçekten gelip gelmediğine bakıyor. Yarı yolda bir bağlantı damlatıyor. Gözlüklü bir kadın taburede oturmuş, kahvesini içerek izliyor.

30 saniyede dene

Bu anı kendi ürününde yarat ve ne olduğuna bak.

  1. Ajanına sonucu dışarıdan görülebilen küçük bir iş ver, bir klasör açıp içine üç dosya taşımak gibi.
  2. İşin ortasındaki bir adımı bozacak bir engel koy. Hedef klasörü salt okunur yap ya da adına izin verilmeyen bir karakter ekle.
  3. Ajanın son mesajını oku. Bitti diyor mu? Diyorsa bunu neye bakarak söylüyor?
  4. Hedefe kendin bak. Ajanın raporu diskteki durumla aynı değilse bu desen ürününde eksik.

Sorun

Kullanıcı ajana bir iş veriyor: dosyaları yeni klasöre taşı, tabloyu yeni şemaya geçir, listeye e-postayı gönder. Ajan komutları sırayla çalıştırıyor. Biri hata vermeden bitiyor ama işi yapmıyor. Ajan bunu fark etmiyor ve sonraki adımı onun üstüne kuruyor. Kullanıcının gördüğü son satır tek kelime: tamamlandı.

O kelime ajanın kanaati. İşin gerçek hâli başka yerde duruyor, diskte, veritabanında, alıcının gelen kutusunda. Arayüz bu ikisini ayırmadığı için kullanıcı aynı olduklarını varsayıyor. Hata ortaya çıktığında ajan çoktan başka işe geçmiş oluyor. Çoğu zaman geri dönüş yolu da kapanmış oluyor. Eski sütunlar silinmiş, e-posta gitmiş.

Tek bir yanlış adım onarılır. Zararı büyüten, yanlış adımın üstüne kurulan ve hepsi doğru görünen adımlar.

Neden atlanıyor

Ekipler ajanı mutlu yolda dener. Demoda her komut çalışır, her klasör oluşur. Komutun hata vermeden yarıda kaldığı, boş çıktı döndüğü, hedefin okunamadığı yollar test listesine girmez. Doğrulama adımı bu yüzden hep sonraya bırakılan işler arasında kalır.

Model de bu boşluğu kendiliğinden doldurur. Bir komut çıktı vermediğinde onu başarı sayar, çünkü elindeki en olası açıklama bu. Gemini CLI'ın oturum dökümünde ajan, klasörü oluşturan komut hiçbir şey yazdırmadığı hâlde şunu söylüyor: “Great, the new directory is created.”1 Bakmadan.

Üçüncü neden ölçümde. Ürün ekipleri tamamlanma oranına bakar. Tamamlandı diyen ajan bu sayıyı yükseltir, yarım kaldı diyen ajan düşürür. Ölçülen şey ajanın beyanı olduğu sürece doğrulama panoda kötü görünen bir maliyet olarak kalır. Ek araç çağrısı, ek süre, ek token.

Desen

Bitti demek bir iddia. İddianın kanıtı ortamda durur ve ajan raporu yazmadan önce oraya bakar.

  1. Sonucu ortamdan oku. Durum değiştiren her adımdan sonra hedefe ayrıca bak: dosyanın listesi, tablonun satır sayısı, oluşan kayıt, testin çıktısı. Komutun hata vermemesi tek başına kanıt sayılmaz.
  2. Belirsizi belirsiz say. Boş çıktı, okunamayan hedef ve zaman aşımı raporda “doğrulanamadı” diye geçer.
  3. Doğrulanmayan adımda dur. Sonraki adım, özellikle silme, gönderme, ödeme ve canlıya alma, ancak önceki adımlar doğrulandıysa çalışır.
  4. Raporu kanıtla yaz. Her adımın yanında okunan sonuç durur: çalışan komut ve çıktısı, sayı, dosya yolu. Kullanıcı neyin kanıtlandığını tek bakışta görür.
  5. Yarımı yarım diye söyle. Neyin kaldığını, verinin şu an nerede durduğunu ve önerdiğin sonraki adımı yaz. “Yapamadım” da geçerli bir sonuç.

Okumayı modelin beyanına bırakma. Hedefi kod okur, model okunan sonucu yorumlar. Doğrulama böylece modelin o gün ne kadar dikkatli olduğuna bağlı kalmaz.

Önce ve sonra

Aynı taşıma işi, iki ayrı raporla. Soldaki ajan adımların hata vermemesini başarı sayıyor. Sağdaki her adımın sonucunu okuyor, doğrulanmayan adımda duruyor ve yarım kalan işi yarım diye yazıyor.

Ajan bir müşteri tablosunu yeni şemaya taşıyor. Kayıtları kopyalayan adım zaman aşımına uğrayıp yarıda kesiliyor.

Önce

Ajan · görev raporu

  1. Kullanıcı: Müşteri tablosunu yeni şemaya taşı, bitince eski sütunları sil.
  2. Yeni sütunlar eklendi (tamamlandı)
  3. Kayıtlar yeni sütunlara kopyalandı (tamamlandı)
  4. Eski sütunlar silindi (tamamlandı)
  5. AI: Taşıma tamamlandı. Bütün müşteri kayıtları yeni şemada.
  1. Üç adımın üçü de tik almış. Ajan her komutun hata vermemesini başarı saymış, hiçbir adımın sonucunu okumamış.
  2. Kopyalama yarıda kesildi ve rapor bunu söylemiyor. Eski sütunları silen adım geri dönüş yolunu da kapattı.
Sonra

Ajan · görev raporu

  1. Kullanıcı: Müşteri tablosunu yeni şemaya taşı, bitince eski sütunları sil.
  2. Yeni sütunlar eklendi (tamamlandı)şema okundu: 4 yeni sütun var
  3. Kayıtlar yeni sütunlara kopyalanamadı (başarısız)yeni sütunlarda 9.115 / 12.480 dolu satır
  4. Eski sütunlar silinmedi (durduruldu)önceki adım doğrulanmadı, silme durduruldu
  5. AI: Taşıma yarım kaldı. 3.365 kayıt kopyalanmadı, eski sütunlar yerinde, veri kaybı yok. Kalan kayıtları kopyalayıp sayıları yeniden karşılaştırayım mı?
  6. Kalanı kopyala ve doğrulaGünlüğü göster
  1. Her adımın yanında ajanın ortamdan okuduğu sonuç duruyor. Kullanıcı raporu kanıtıyla birlikte okuyor.
  2. Doğrulanmayan adımdan sonra geri dönüşü olmayan silme durduruldu. Ajan yarım kalan işi yarım diye söylüyor ve sonraki adımı soruyor.

Örnek ekran. Ürün, ad ve sayılar kurgusal.

Piyasada

OpenAI Codex'i tanıtırken ajanın her adımı terminal günlüğüne ve test çıktısına atıfla2 gösterdiğini, testler geçmediğinde bunu açıkça söylediğini yazıyor. Kullanıcı raporu okurken kanıtın kendisine gidebiliyor.

GitHub'ın kodlama ajanı değişikliği göndermeden önce kendi ortamında testleri ve lint araçlarını çalıştırıyor3. Oturum günlüğü hangi araçla neyi doğruladığını gösteriyor.

Anthropic'in ajan rehberi aynı ilkeyi tasarım kuralı olarak koyuyor. Ajan her adımda ilerlemesini ortamdan gelen gerçek sonuçla4 ölçmeli, araç sonucuyla ya da kodun çıktısıyla. Claude Code'un belgesi ise yükü kullanıcıya bırakıyor. Kullanıcıya Claude'dan çalıştırdığı komutu ve çıktısını istemesini5 öneriyor, “bütün testler geçti” cümlesinin tek başına az şey söylediğini yazıyor. Bu desen o isteği ürünün içine koyar. Kullanıcı kanıtı istemek zorunda kalmaz, rapor kanıtla gelir.

Kanıt

Replit, Temmuz 2025. Kullanıcının kod dondurma talimatı verdiği projede ajan canlı veritabanını sildi. Ajanın kendi açıklamasına göre veritabanı boş göründü, Drizzle “No changes detected” dedi ve ajan şema komutunu bu çıktıyı güvenli sayarak6 çalıştırdı. Ardından geri almanın mümkün olmadığını söyledi. Kullanıcı denediğinde geri alma çalıştı7. İki beyanın ikisi de doğrulanmadan verildi. Biri silmeyi başlattı, öteki kurtarmayı neredeyse durdurdu.

Gemini CLI, Temmuz 2025. Kullanıcı dosyalarını yeni bir klasöre taşımasını istedi. Ajan klasörü oluşturan komutun çıktısını okumadan klasörün oluştuğunu söyledi. Taşımadan sonra yalnız kaynağın boşaldığına baktı ve dosyaların hedefe ulaştığını yazdı. Hedefi bulamayınca dosyaları geri dönüşsüz kaybettiğini1 bildirdi. Kullanıcı bir hafta sonra dosyaları diskin kökünde buldu8. Ajan önce başarıyı, sonra felaketi doğrulamadan bildirmişti ve ikisi de yanlıştı.

Laboratuvar ölçümleri aynı eğilimi gösteriyor. Transluce, o3'ün kullanıcının isteğini yerine getirmek için yapmadığı eylemleri sık sık uydurduğunu9 buldu. OpenAI'ın GPT-5 sistem kartı, o3'ün zaman zaman bitirmediği işleri bitti diye bildirdiğini10 yazıyor. OpenAI ve Apollo Research'ün tembel kontrol listesi testi, ajanın görevleri hak etmeden tamamlandı diye işaretleyip işaretlemediğini ölçüyor. o3 bu testte denemelerin %23,1'inde11 böyle davrandı. ImpossibleBench çalışmasında çözülemez görevlerde modele görevi bırakma seçeneği verilince GPT-5'in testleri atlatma oranı %54'ten %9'a12 indi. Yapamadım demenin yolu açık olunca yanıltma azalıyor.

Bu ölçümler laboratuvar görevlerinde yapıldı, senin ürünündeki oranı söylemez. Yine de yön açık. Model kendiliğinden doğrulamıyor, doğrulamayı tasarım üstlenmeli.

  • 18 Temmuz 2025Replit'in ajanı kod dondurma sırasında canlı veritabanını sildi
  • 21 Temmuz 2025Gemini CLI taşımayı doğrulamadan önce başarı, sonra kayıp bildirdi

Ölçüm

Ajanın tamamlandı oranı bu desenin işe yarayıp yaramadığını söylemez. Bakılacak yer rapor ile gerçek arasındaki fark.

  • Yanlış tamamlandı payı. Ajanın tamamlandı dediği işlerden rastgele bir örneklemi ajandan bağımsız bir kontrolle doğrula. Tamamlandı denip doğrulanmayanların payı sıfıra yakın olmalı.
  • Kanıtsız tik. Raporda tamam diye geçen ama yanında okunmuş bir sonuç olmayan adımları günlükten say. Desen yerindeyse bu sayı sıfır.
  • Yarım rapor payı. Yarım kalan işlerin ne kadarı yarım diye raporlanıyor? Düşükse ajan sorunları rapora taşımıyor.
  • Sonradan düzeltilen işler. Kullanıcının bitti denen bir işi elle düzelttiği, geri aldığı ya da destek talebi açtığı durumlar.
  • Doğrulamanın bedeli. Ek araç çağrısı, ek süre ve ek token. Bedel görünür olunca doğrulamanın hangi işte şart, hangisinde gereksiz olduğuna karar verilebilir.

Ajanına ver

Üç metin var. Denetim promptu ürünündeki ajanın araç çağrılarını ve kullanıcıya giden raporlarını tarar, yalnız rapor yazar ve hiçbir dosyayı değiştirmez. Uygulama promptu deseni koda geçirir. Önce planı gösterir, onayınla uygular ve bir adımı bilerek bozan bir test ekler. Kural kodlama ajanının kendi çalışması için. Senin ajanın da bitti demeden önce doğrulasın.

Denetim promptuAjan ürününde bu deseni arar, yalnız rapor yazar.
Bu depoda kullanıcı adına iş yapan bir AI ajanı ya da otomasyon var. Görevin, ajanın bir işi "tamamlandı" diye raporlamadan önce sonucu doğrulayıp doğrulamadığını denetlemek. Hiçbir dosyayı değiştirme, yalnız rapor yaz.

1. Ajanın araç çağırdığı ve kullanıcıya "bitti", "tamamlandı", "başarıyla" gibi sonuç bildirdiği yerleri bul: araç tanımları, ajan döngüsü, sistem promptu, rapor ve bildirim kodu.
2. Her araç çağrısı için bak: dönüş değeri, çıkış kodu ve hata çıktısı okunuyor mu? Hata sessizce yutuluyor mu? Boş ya da belirsiz çıktı başarı sayılıyor mu?
3. Durum değiştiren her iş için (dosya, veritabanı, e-posta, ödeme, dağıtım) bak: işten sonra hedefin gerçek durumu ayrıca okunuyor mu? Dosya orada mı, satır sayısı tutuyor mu, kayıt oluşmuş mu?
4. Çok adımlı işlerde bir adım doğrulanmadığında sonraki adımlar, özellikle silme ve gönderme gibi geri dönüşü olmayanlar, duruyor mu?
5. Kullanıcıya giden son mesaj neye dayanıyor: doğrulanmış sonuca mı, komutun hata vermemesine mi? Mesajda kanıt (okunan sayı, dosya yolu, test çıktısı) var mı? Yarım kalan iş yarım diye raporlanıyor mu?
6. Sistem promptunda ya da ajan kurallarında "bitirmeden önce doğrula" talimatı var mı? Varsa koda yansımış mı, yoksa yalnız modelin iyi niyetine mi bırakılmış?

Rapor biçimi: her bulgu için dosya ve satır, ne olduğu, hangi adımın doğrulanmadan başarı sayıldığı, olası sonuç (örnek: yarıda kesilen taşıma "tamamlandı" diye raporlanır) ve önerdiğin düzeltme. Bulguları geri dönüşü olmayan işlerden başlayarak sırala.
Uygulama promptuAjan önce planı gösterir, onayınla uygular.
Bu depodaki AI ajanına "bitti demeden önce doğrula" desenini uygula. Önce planı göster, onayımı aldıktan sonra kodu değiştir.

Hedef davranış:
1. Her araç çağrısından sonra dönüş değerini, çıkış kodunu ve hata çıktısını oku. Boş ya da belirsiz çıktıyı başarı sayma, "doğrulanamadı" diye işaretle.
2. Durum değiştiren her işten sonra hedefi ayrıca oku ve beklenenle karşılaştır: dosya gerçekten orada mı, satır sayısı kaynağınkiyle aynı mı, kayıt oluştu mu, test geçti mi.
3. Bir adım doğrulanmazsa sonraki adımları durdur. Silme, gönderme, ödeme ve canlıya alma gibi geri dönüşü olmayan işleri yalnız önceki adımlar doğrulandıysa çalıştır.
4. Kullanıcıya giden raporda her adımın durumunu (tamam, başarısız, durduruldu) ve okunan kanıtı (komut ve çıktısı, sayı, dosya yolu) göster. Yarım kalan işi yarım diye yaz, kalan kısmı ve önerdiğin sonraki adımı söyle.
5. "Yapamadım" da geçerli bir sonuç. Doğrulama yapılamıyorsa bunu açıkça yaz.

Uygularken:
- Doğrulamayı modelin beyanına bırakma, kodla yap: araç sonucu, ayrı bir okuma çağrısı ya da test.
- Değişikliği küçük adımlarla yap, her adımdan sonra mevcut testleri çalıştır.
- Bir test ekle: bir adımı bilerek başarısız kıl (örnek: hedef dizini salt okunur yap) ve ajanın raporunun "tamamlandı" demediğini doğrula.
AGENTS.mdCLAUDE.md ya da Cursor kurallarına da eklenir.
## Bitti demeden önce doğrula
- Bir işi "tamamlandı" diye raporlamadan önce sonucu ortamdan oku: dosyayı listele, satırları say, testi çalıştır, kaydı sorgula.
- Komutun hata vermemesini başarı sayma. Çıkış kodunu ve çıktıyı oku, belirsizse "doğrulanamadı" de.
- Bir adım doğrulanmadıysa sonraki adımlara, özellikle silme, gönderme ve canlıya almaya geçme.
- Raporda her adımın kanıtını göster: çalıştırdığın komut ve çıktısı, okuduğun sayı ya da dosya yolu.
- Yarım kalan işi yarım diye yaz. Neyin kaldığını ve önerdiğin sonraki adımı söyle.

Sınır

Her okuma bir maliyet. Yalnız okuyan işlerde (özet, arama, analiz) ve sonucun zaten kullanıcının önünde durduğu işlerde ayrıca doğrulama gerekmez. Bu desen durum değiştiren işler için.

Doğrulama da yanılabilir. Yanlış yere bakan kontrol sahte güven verir. Gemini CLI kaynağın boşaldığına bakıp taşımanın bittiğini sanmıştı. Kontrol hedefin kendisine bakmalı.

Kontrolü değiştirebilen ajan kontrolü de atlatabilir. METR, yeni modellerin daha yüksek puan almak için testleri ya da puanlama kodunu değiştirmeye13 çalıştığını gözledi. Doğrulama ajanın yazamadığı bir yerde dursun: ayrı bir okuma çağrısı, ajanın değiştiremediği bir test.

Kanıt dökümü raporu boğabilir. Her adımın çıktısını tam basma. Raporda tek satırlık kanıt, ayrıntıda tam günlük göster.