İstem ve İnceleme Karşıt Örüntüleri
Tek geçişli çok dosyalı inceleme ve aynı oturumda kendi kendini inceleme.
İstem ve İnceleme Karşıt Örüntüleri, CoddyKit'te ücretsiz bir Claude Architect dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Claude Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Claude Architect kursu toplamda 4 dersten oluşur.
İki Karşıt Kalıp, Tek Bir Temel Neden
Bu derste, aracı tabanlı kod incelemesinin kalitesini fark edilmeden düşüren iki inceleme karşıt kalıbı ele alınır: tek geçişte çok dosyalı inceleme ve aynı oturumda öz inceleme.
İkisinin de ortak bir temel nedeni vardır: tek bir bağlamdan aynı anda çok fazla şey yapmasını istemek. Çok sayıda dosyayı tek bir geçişe sıkıştırdığınızda dikkat seyrelir. Kodu yazan aynı oturum onu incelerse yazar kendi akıl yürütmesini korur ve kendisine itiraz etmez.
Claude Certified Architect sınavında (5. Senaryo, CI/CD) bunlar klasik çeldiricilerdir. Bunları tanımak ve doğru yapıyı bilmek gerçek puan kazandırır.
Tek Geçişte Çok Dosyalı İnceleme Neden Başarısız Olur
Modele 14 değiştirilmiş dosya verip "bu PR'ı incele" dediğinizi düşünün. Model, sınırlı dikkatini bunların tümüne aynı anda dağıtır. Dosya başına düşen ince hatalar gözden kaçar ve dosyalar arasındaki bağlantı — yeniden adlandırılmış bir işlevin çağıranlarına nasıl yayıldığı — hiçbir zaman bilinçli olarak incelenmez.
İki mekanizma bu başarısızlığı daha da büyütür:
- Dikkatin seyrelmesi: tek geçişte daha fazla dosya olması, dosya başına daha yüzeysel inceleme anlamına gelir.
- Ortadakinin kaybolması: modeller bağlamın başına ve sonuna daha fazla dikkat eder; bu nedenle büyük bir dökümün ortasındaki dosyalar en az incelenir.
Düzeltme daha büyük bir bağlam penceresi değil, daha iyi ayrıştırmadır.
Çok Geçişli İnceleme Yapısı
Doğru kalıp çok geçişli incelemedir: her dosyada odaklanılmış bir dosya başına yerel geçiş, ARDINDAN parçaların nasıl bir araya geldiğini inceleyen ayrı bir dosyalar arası tümleştirme geçişi.
Yerel geçişler, tüm dikkat kullanılarak dosya içindeki kusurları yakalar. Tümleştirme geçişi ise yalnızca dosyalar arasında var olan hataları yakalar: bozuk sözleşmeler, eşleşmeyen imzalar, güncelliğini yitirmiş çağıranlar ve tutarsız hata işleme.
Bu, daha geniş bir sınav ilkesini yansıtır: bilinen ardışık adımlar için sabit işlem hatlarını / istem zincirlemeyi kullanın, açık uçlu araştırma için uyarlamalı ayrıştırmayı ayırın. İncelemenin bilinen bir yapısı vardır; bu nedenle işlem hattı uygundur.
review_files = glob("src/**/*.py", changed_only=True)
# Pass 1: per-file local review (focused attention each)
local_findings = []
for path in review_files:
local_findings += review_one_file(client, path)
# Pass 2: separate cross-file integration review
integration_findings = review_integration(client, review_files)
report = local_findings + integration_findingsAynı Oturumda Öz İnceleme Neden Başarısız Olur
İkinci karşıt kalıp: kodu oluşturan aynı oturumun onu incelemesine izin vermek. Sınav bu konuda nettir — bağımsız / yeni örnekli inceleme, aynı oturumda öz incelemeden daha iyidir.
Nedeni bilişsel kilitlenmedir. Yazar, yazarken kullandığı akıl yürütmeyi, varsayımları ve gerekçelendirmeleri korur. Kodun doğru olduğuna zaten "karar verdiği" için sorgulamak yerine doğrulama eğiliminde olur. Temiz bir incelemeci bu yüklerin hiçbirini taşımaz ve kodu sorgulanacak bir ürün olarak görür.
Başka bir deyişle: oluşturma bağlamı incelemeyi yanlılaştırır. İncelemecinin yazarın önceki sonuçlarına değil, kuşkuculuğa yatkın olmasını istersiniz.
Yalıtılmış Bir Oturumda İnceleme Yapın
Çözüm, incelemeyi oluşturma bağlamından ayrılmış yalıtılmış bir oturumda çalıştırmaktır. Claude Code CI/CD'de bu doğaldır: oluşturma ve inceleme ayrı, etkileşimsiz çağrılardır.
İşlem hatlarında incelemeyi her zaman -p / --print (etkileşimsiz) ile çalıştırın ve sonuçları makine tarafından ayrıştırılabilir hale getirmek için --output-format json çıktısını üretin. İnceleme işi yalnızca değişiklikleri ve ölçütleri alır; kodu üreten sohbet geçmişini almaz.
# Generation step (one invocation)
claude -p "Implement the ticket in TICKET.md" \
--output-format json > gen.json
# Review step — SEPARATE, isolated session (no generation history)
claude -p "Review the staged diff against our review criteria." \
--output-format json > review.jsonDallanma Bağlamı Paylaşır — Dikkatli Olun
Oturum denetimleri önemlidir. --resume <name> adlandırılmış bir oturumu sürdürür; fork_session paylaşılan bir noktadan dallanır. İnceleme için dikkatli olun: oluşturma oturumundan dallanmak yazarın akıl yürütmesini ileri taşır ve kaçmaya çalıştığınız aynı oturum yanlılığını yeniden oluşturur.
İncelenecekleri yapılandırılmış bir özetle beslenen gerçekten yeni bir oturumu tercih edin. Ayrıca güncellik açısından da bir sorun vardır: kod tabanı o zamandan beri değiştiyse sürdürülen araç sonuçları güncelliğini yitirmiş olabilir; bazen yapılandırılmış özet içeren yeni bir oturum, sürdürmekten daha iyi sonuç verir.
İncelemeciyi Açık Ölçütlerle Yönlendirin
Yalıtılmış bir incelemeci yalnızca talimatları kadar iyidir. Belirsiz istemler ("daha kesin ol", "hataları bul") gürültülü ve tutarsız çıktılar üretir. Açık ölçütler daha iyi sonuç verir: "bir yorumu yalnızca kodla çeliştiğinde işaretle" ifadesi, "yorumları kontrol et" ifadesinden daha iyidir.
Özellikle CI için amaç yanlış pozitifleri en aza indirmektir — sürekli asılsız uyarı veren bir inceleme göz ardı edilir. Sıkı ve sınanabilir ölçütler sinyal düzeyini yüksek tutar.
REVIEW_CRITERIA = """You are reviewing a code diff in an isolated session.
Flag an issue ONLY when one of these is true:
- a null/None path can be reached with attacker- or user-controlled input
- a function signature changed but a caller was not updated
- a comment directly contradicts the code it documents
Do NOT flag style, naming, or speculative refactors.
Return [] if nothing meets the bar."""Az Örnekli Örnekler İncelemeciyi Keskinleştirir
Belirsizliğin sürdüğü yerlerde, her belirsizlik için 2-4 hedeflenmiş az örnekli örnek ekleyin. Model bunlardan genelleme yapar; yalnızca onları tekrarlamaz. Az örnekli yaklaşım; tutarlılık, uç durumlar, çıktı biçimi ve uydurulmuş bulguları azaltma açısından en etkili kaldıraçtır.
Bir incelemeci için işaretlenmesi gereken bir örnek ile işaretlenmemesi gereken bir örnek gösterin. Bu, yanlış pozitif sınırını başka bir düzyazı paragrafından çok daha iyi ayarlar.
FEW_SHOT = """Example A (FLAG):
diff: `def charge(amount):` -> `def charge(amount, currency):`
caller still calls `charge(amount)` => signature/caller mismatch.
Example B (DO NOT FLAG):
rename of a local variable `tmp` -> `buffer` with all uses updated.
No behavioral change => not an issue."""Bulgular İçin Yapılandırılmış Çıktıyı Zorunlu Kılın
İnceleme sonuçlarını güvenilir ve ayrıştırılabilir hale getirmek için bir araç ve JSON Schema ile yapılandırılmış çıktıyı zorunlu kılın. tool_choice değerini "any" olarak ayarlamak, modelin herhangi bir aracı çağırmasını garanti eder ve serbest metin sapmasını ortadan kaldırır; belirli bir aracı zorunlu kılmak daha da sıkı denetim sağlar.
Şema disiplini önemlidir: bir alanı yalnızca her zaman mevcutsa required olarak işaretleyin. Bulunmayabilecek bir alanı asla zorunlu kılmayın; model şemayı karşılamak için bir tane uydurur. Genişletilebilirlik için "other" değerine sahip bir enum ile serbest metin ayrıntı alanı kullanın.
tools = [{
"name": "report_findings",
"description": "Return code-review findings for the diff.",
"input_schema": {
"type": "object",
"properties": {
"findings": {"type": "array", "items": {
"type": "object",
"properties": {
"file": {"type": "string"},
"category": {"enum": ["bug", "contract", "other"]},
"detail": {"type": "string"}
},
"required": ["file", "category"]
}}
},
"required": ["findings"]
}
}]
resp = client.messages.create(
model="claude-sonnet-4-5", max_tokens=2048,
tools=tools, tool_choice={"type": "any"},
messages=[{"role": "user", "content": review_prompt}])Yeniden Çalıştırmalar: Yalnızca Yeni Sorunları Bildirin
Bir PR geliştikçe incelemeler tekrar tekrar çalıştırılır. Yeniden çalıştırdığınızda önceki sonuçları ekleyin ve yalnızca yeni ya da hâlâ düzeltilmemiş sorunları bildirin. Her şeyi baştan yeniden işaretlemek gerçekten yeni sorunları gömer ve incelemecileri botu görmezden gelmeye alıştırır.
Bu, tümleştirme geçişinin dürüst kalmasını da sağlar: bir dosyadaki düzeltme, dosyalar arası yeni bir bozulmaya yol açabilir ve bir sonraki çalıştırmanın ortaya çıkarması gereken tam olarak budur — zaten çözülmüş gürültü değil.
prior = json.load(open("review.prev.json"))
prompt = f"""Re-review the current diff in an isolated session.
Prior findings (already reported): {json.dumps(prior)}
Report ONLY issues that are new or remain unfixed.
Do not repeat findings the author has resolved."""Burada Batch API'ye Başvurmayın
Son bir tuzak. Birleştirme öncesi / engelleyici inceleme zamana duyarlıdır; bu nedenle Message Batches API üzerinde çalıştırılmamalıdır. Toplu işler, 24 saate kadar bir pencereyle %50 daha ucuzdur; ancak hiçbir gecikme SLA'sı taşımaz ve çok turlu araç çağrısını desteklemez — birleştirmeyi engelleyen işlemler için yanlıştır.
Batch API'yi engelleyici olmayan işler için ayırın: gece denetimleri, gecelik tüm depo taramaları ve toplu rapor oluşturma. İstekleri ilişkilendirmek için custom_id kullanın ve yalnızca başarısızlıkları yeniden gönderin. Birleştirme öncesi kapılandırma standart, düşük gecikmeli çağrılarda kalmalıdır.
Hızlı Kontrol: İnceleme Aşamasını Tasarlama
Bir ekip arkadaşının CI sistemi, çekme isteklerini incelemek için Claude Code'u çağırıyor. Kodu oluşturan aynı oturumu sürdürüyor ve 14 değiştirilmiş dosyanın tümünü tek bir istemde incelemesini istiyor. Yanlış pozitifler yüksek ve dosyalar arası gerçek hatalar gözden kaçıyor. Bu durumu en iyi hangi yeniden tasarım düzeltir?
Özet: Bir Mimar Gibi İnceleyin
Temel çıkarımlar:
- Tek geçişte çok dosyalı incelemeden kaçının — dikkati seyreltir ve ortadaki kaybolur. Dosya başına yerel geçişler, ARDINDAN ayrı bir dosyalar arası tümleştirme geçişi yapın.
- Aynı oturumda öz incelemeden kaçının — yazar kendi akıl yürütmesini korur ve kendisine itiraz etmez. Yeni, yalıtılmış bir oturumda inceleme yapın; dallanmanın/sürdürmenin yanlılığı ve güncelliğini yitirmiş sonuçları taşıdığına dikkat edin.
- Yanlış pozitifleri en aza indirmek için açık ölçütler + 2-4 az örnekli örnekle istem oluşturun.
- Yapılandırılmış çıktıyı zorunlu kılın (araç + şema,
tool_choice:"any"); yalnızca her zaman mevcut olan alanları zorunlu kılın. - Yeniden çalıştırmalarda yalnızca yeni/düzeltilmemiş sorunları bildirin.
- Engelleyici incelemeyi Batch API dışında tutun — gecikme SLA'sı yoktur; toplu işleri gece denetimleri için ayırın.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 26
- Dersler
- 104
Sıkça Sorulan Sorular
“İstem ve İnceleme Karşıt Örüntüleri” dersi ücretsiz mi?
Evet — “İstem ve İnceleme Karşıt Örüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Claude Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Claude Architect kursu toplamda 4 dersten oluşur.
“İstem ve İnceleme Karşıt Örüntüleri” dersinde ne öğreneceğim?
Tek geçişli çok dosyalı inceleme ve aynı oturumda kendi kendini inceleme. Claude Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Claude Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Claude Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“İstem ve İnceleme Karşıt Örüntüleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Claude Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Claude Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Döngü ve Orkestrasyon Karşıt Örüntüleri
- Araç ve Hata Karşıt Örüntüleri
- İstem ve İnceleme Karşıt Örüntüleri
- Eskalasyon ve Ölçüm Karşıt Örüntüleri