AIDive

Claude Code Kendine PASS Dedi ama Kod Bozuktu

AIDive tarafından · Yayın

Kodlama agent'larıYapay zekâ modelleri

Kendini notladı: PASS

Claude Code'un yerleşik doğrulama kontrolü olan /verify, bozuk bir özellik üzerinde PASS döndürdü. Bu sonuç, gerçek bir depo üzerinde çalıştırılan 116 Claude Code oturumluk bir bench'ten geliyor; burada her "done" sonradan, ajanın hiç görmediği kabul testleriyle notlandı.

Claude Code'u yaratan Boris Cherny, doğrulamayı ona verebileceğin en önemli şey olarak tanımlıyor. Yerleşik kontrol, Claude Code v2.1.215'ten beri yalnızca istek üzerine çalışıyor: ya /verify yazarsın ya da hiç çalışmaz. Bu bench'te 24 çalıştırmanın 24'ünde de PASS dedi ve bunlardan biri bozuk bir özelliği kapsıyordu. Aşağıda gerçekte hatayı neyin yakaladığı, ve hiçbir şeyi değiştirmeden 2,5 kat daha pahalıya mal olan kurulum anlatılıyor.

Test düzeneği: 116 çalıştırma, hiç görmediği testler

Sahte bir "done", gizli bir kabul testinin veya deponun kendi test paketinin başarısız olduğu halde işin bittiğini iddia ederek biten bir oturumdur. Bench, bunun altı farklı doğrulama kurulumu altında ne sıklıkla gerçekleştiğini ölçüyor.

Bunun ardındaki şüphe, Claude Code'un kendi issue tracker'ından geliyor: 2026-09-23 tarihinde açılan issue #96416, 19 endişe sıralayan, bunlardan 5'ini doğrulayan ve yine de "accept as is" sonucuna varan bir incelemeyi anlatıyor.

Parametre Değer
Depo msiemens/tinydb (Python doküman veritabanı), commit 18d73a1
Depo test paketi 226 test
Özellik istekleri 6, her biri 5 gereksinim belirtiyor
Gizli kabul testleri her belirtilen gereksinim için bir tane, her çalıştırmadan önce yazıldı, ajana hiç gösterilmedi
Modeller Opus 5.5, Sonnet 5, Haiku 4.5
Claude Code 2.1.283, headless (claude -p), 60 tur sınırı
Oturumlar 112 görev çalıştırması + 4 modeller-arası /verify çalıştırması = 116
Harcama 66,29 $ API-eşdeğeri

Altı kurulum, yalnızca isteği içeren sade Claude Code'dan, işi durma anında kontrol eden ikinci bir modele kadar uzanıyor:

Kurulum Eklediği şey
A sade hiçbir şey
B /verify ikinci tur olarak yazılan yerleşik /verify
C verify skill Anthropic'in iş akışına göre yazılmış bir proje skill'i
D Stop hook test paketi kırmızıyken durmayı engelleyen ve her gereksinim için kanıt isteyen bir script
E önce testler bir CLAUDE.md kuralı: herhangi bir kod yazılmadan önce her gereksinim için başarısız bir test
F Opus doğrulayıcı değişiklik üzerinde Opus ile /verify çalıştıran bir Stop hook

İyi test edilmiş bir kütüphanede net istekler, kolay durum. Sade Opus 5.5, 12 çalıştırmasının 12'sini de doğru yaptı ve bunların 11'inde done demeden önce test paketini kendisi çalıştırdı.

Yerleşik /verify: her seferinde PASS, 2.5 kat

/verify, Claude Code ile birlikte gelen doğrulama skill'idir. Değişikliği çalıştırır, diff'i okur ve adım adım bir karar yazar. v2.1.215'ten beri yalnızca kullanıcı tarafından çağrılıyor, bu yüzden bench'te her görevden sonra ikinci bir tur olarak yazıldı.

Üç model genelinde 24 çalıştırmanın 24'ünde de PASS verdi, Haiku'nun bozuk değişikliği dahil. Opus 5.5'te hiçbir sonucu değiştirmedi ve 2,5 kat daha pahalıya mal oldu:

Opus 5.5, görev başına Sade /verify ile
Maliyet 0,39 $ 0,96 $
Duvar saati 75 s 125 s
Değişen sonuçlar 12'de 0

Adil olmak gerekirse, /verify gerçek bir hata da buldu: bir Opus görevinde, kontrol ettiği değişiklikten kaynaklanmayan, kütüphanede zaten var olan bir "reuse-after-close" sorununu işaretledi. Zaten doğru olan bir iş üzerinde, pahalı bir ikinci görüş.

Skill mi hook mu: atlanan hangisi

Bir skill, Claude'un uygun gördüğünde açabileceği markdown bir prosedürdür. Anthropic'in doğrulama döngüleri üzerine blog yazısı altı adımlı bir tarif anlatıyor: en sık yaptığın manuel takip işini seç, önce yerleşik /verify'ı dene, prosedürü sade İngilizce yaz, bir skill'e dönüştür, ardından yeni bir görevde çağır ve yinele. Bench'in skill'i olan verify-change, tam olarak bu şekilde inşa edildi ve Claude'a done demeden önce her gereksinimi gerçek kod üzerinde kanıtlamasını söylüyor.

Bir skill bir öneridir ve onu açıp açmayacağına Claude karar verir:

Model Skill'i açan oturumlar
Opus 5.5 12'de 8
Sonnet 5 6'da 2
Haiku 4.5 6'da 0
Toplam 24'te 10

Sonnet'in tek sahte "done"'ı, skill'in hiç açılmadığı bir oturumdan geldi: oturum, kendi yeni testlerinden ikisi başarısızken bitti.

Bir Stop hook, ajan bitirmeyi her denediğinde Claude Code'un çalıştırdığı bir scripttir. Durmayı reddedip ajanı bir gerekçeyle geri gönderebilir. Bench'in hook'u test paketini çalıştırır, kırmızıyken engeller ve ilk durma anında her gereksinim için bir satır kanıt ister. Her oturumda tetiklendi. Opus'ta yüzde 20 daha pahalıya mal oldu, görev başına 0,47 $'a karşı 0,39 $ (94 s'ye karşı 75 s). Bu bench'te durma anında hiç başarısız bir test paketiyle karşılaşmadı, yani yakalayacak bir şeyi olmadı: bir hook her zaman tetiklenir, ama yalnızca ona ne kontrol etmesini söylediysen onu kontrol eder.

Kör nokta: 11'de 11 kaçtı

Başarısız olan görev, bir tabloda benzersiz alanlar istiyordu: iki kullanıcı aynı e-postayı paylaşamaz ve iki dokümanı aynı benzersiz değerle bırakacak herhangi bir güncelleme DuplicateKeyError fırlatmalıdır.

Haiku 4.5, bir kullanıcıyı başka bir kullanıcının e-postasına taşımayı test etti ve bu doğru şekilde reddedildi. Birden fazla dokümanla eşleşen ve hepsine aynı yeni e-postayı yazan tek bir güncellemeyi hiç test etmedi. Bu durum, aynı-model kurulumlarının her birinde — sade, /verify, skill, Stop hook ve önce testler — 11 Haiku oturumunun 11'inde de hatasız geçti.

Haiku'nun kendi /verify'ı, denediği durumu işaretledi ve PASS yazdı. Gizli test DID NOT RAISE DuplicateKeyError bildirdi. Aynı değişiklik üzerinde /verify çalıştırması istenen Sonnet 5 de PASS döndürdü. Opus ve Sonnet, bu özelliği kendi başlarına doğru yazdı, yani bu tek bir görevde tek bir model, ama aynı model tarafından yazılan bir kontrol, o modelin kör noktasını paylaşır.

Dış kontrol: Opus FAIL diyor

Aynı Haiku değişikliği üzerinde, bu kez Opus 5.5 tarafından çalıştırılan aynı /verify, 3 çalıştırmanın 3'ünde de FAIL döndürdü ve her seferinde kaçırılan durumu adlandırdı: birden fazla dokümanla eşleşen tek bir güncelleme, hepsine hatasız aynı değeri yazıyor. Yakalama, yazardan değil ve yazarın kendi kontrolünden değil, farklı bir modelden geldi.

Bir Stop hook olarak bağlandığında (kurulum F), Opus, Haiku her bitirmeyi denediğinde işi kontrol ediyor. Sonuçlar:

T6, çalıştırma başına Haiku + Opus kontrolcü Sade Opus 5.5
Hata düzeltildi / sahte "done" 3'te 3 düzeltildi 0 sahte "done"
Turlar her çalıştırmada 60 tur sınırına ulaşıldı
Maliyet kontrolcü dahil 1,36 $ 0,76 $

Dışarıdan kontrol işe yarıyor. Bu görevde, daha güçlü modelin özelliği tek başına yazmasından daha pahalıya mal oldu.

Neyi kopyalamalı, nelere mal olur

Bir değişikliği yazan modelin, onu kontrol eden tek şey olmasına izin vermeyi bırakın.

Kural Neden Bu bench'teki maliyet
Bir script'in kontrol edebileceği her şey için bir Stop hook tutun her oturumda tetiklenir Opus'ta yaklaşık yüzde 20 daha fazla
Gerçek kontrolün yazarın dışından gelmesini sağlayın: kapıda daha güçlü bir model, ya da istekten yazdığınız kendi testleriniz aynı model kendi hatasını 11'de 11 kaçırdı Haiku + Opus kontrolcü için görev başına 1,36 $
Opus ile net bir istekte /verify yazmayı atlayın 0 sonuç değişti 2,5 kat maliyet, 125 s'ye karşı 75 s

Sınırlar: tek bir küçük kütüphane, altı net istek, hücre başına bir ile üç çalıştırma, headless oturumlar ve yalnızca her isteğin belirttiğini kontrol eden gizli testler. Daha karmaşık işlerde bu rakamlar değişecektir.

Kaynaklar

Sık sorulan sorular

Claude Code'un /verify'ı hataları yakalıyor mu?
Aynı model kendi işini kontrol ettiğinde güvenilir değil. 116 oturumluk bir bench'te /verify, belirtilen bir gereksinimi bozan bir Haiku 4.5 değişikliği dahil, 24 çalıştırmanın 24'ünde PASS döndürdü; aynı değişiklik üzerinde Opus 5.5 tarafından çalıştırıldığında 3'te 3 FAIL dedi.
Opus ile Claude Code'da /verify'a değer mi?
Net isteklerde değil. Opus 5.5'te görev başına maliyeti 0,39 $'dan 0,96 $'a (2,5 kat) çıkardı, süreyi 75 s'den 125 s'ye taşıdı ve 12 sonuçtan hiçbirini değiştirmedi, çünkü sade Opus zaten test paketini 12 çalıştırmanın 11'inde kendisi çalıştırıyordu.
Doğrulama için Claude Code skill'i mi Stop hook mu kullanmalıyım?
Bir script'in kontrol edebileceği her şey için Stop hook. Claude, doğrulama skill'ini yalnızca 24 oturumun 10'unda açtı (Opus 12'de 8, Sonnet 6'da 2, Haiku 6'da 0), bir Stop hook ise ajan bitirmeyi her denediğinde çalışır; Opus'ta yaklaşık yüzde 20 daha fazla maliyete mal oldu.
Claude Code Stop hook nedir?
Ajan bitirmeyi her denediğinde Claude Code'un çalıştırdığı bir scripttir. Bir block kararı ve bir gerekçeyle durmayı reddedip ajanı geri gönderebilir; yalnızca script'in test ettiğini kontrol eder.
Claude Code'da daha güçlü bir model, daha zayıf bir modelin kodunu kontrol edebilir mi?
Evet. Stop hook olarak bağlanan bir Opus 5.5 /verify, Haiku 4.5'e kaçırdığı durumu 3'te 3 kez düzelttirdi. Pahalıya mal oldu: her çalıştırma 60 tur sınırına takıldı ve ortalama 1,36 $ tuttu, Opus'un özelliği tek başına yazması ise 0,76 $ tuttu.
Bir AI modeli kendi kodundaki hataları neden kaçırır?
Kontrolü, zaten düşündüğü durumları test eder. Haiku, bir kullanıcıyı başka bir kullanıcının e-postasına taşımayı doğruladı ama birden fazla dokümanı etkileyen tek bir güncellemeyi hiç test etmedi, bu yüzden kendi /verify'ı denediği durumu işaretleyip PASS yazarken gizli test başarısız oldu.

İlgili videolar