Claude Architect · Pelajaran

Anti-Corak Arahan dan Semakan

Semakan berbilang fail satu laluan dan semakan kendiri dalam sesi yang sama

Pelajaran 3 daripada 413 langkah

Anti-Corak Arahan dan Semakan ialah pelajaran Claude Architect percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Claude Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.

Dua Antipola, Satu Punca Asas

Pelajaran ini mengupas dua antipola semakan yang secara senyap menjejaskan kualiti semakan kod berasaskan ejen: semakan berbilang fail satu laluan dan semakan kendiri dalam sesi yang sama.

Kedua-duanya berkongsi satu punca asas: meminta satu konteks melakukan terlalu banyak perkara serentak. Apabila banyak fail dihimpunkan dalam satu laluan, perhatian menjadi tercair. Apabila sesi yang sama yang menulis kod turut menyemaknya, pengarang mengekalkan penaakulannya sendiri dan tidak akan mencabar dirinya sendiri.

Dalam peperiksaan Claude Certified Architect (Senario 5, CI/CD), ini ialah pengalih perhatian klasik. Mengenal pastinya — dan mengetahui struktur yang betul — memberikan markah yang bermakna.

Mengapa Semakan Berbilang Fail Satu Laluan Gagal

Bayangkan anda menyerahkan kepada model 14 fail yang diubah dan berkata "semak PR ini." Model membahagikan perhatian terhadnya kepada kesemuanya secara serentak. Pepijat halus bagi setiap fail terlepas, dan gambaran merentas fail — bagaimana fungsi yang dinamakan semula memberi kesan berantai kepada pemanggilnya — tidak pernah diperiksa dengan sengaja.

Dua mekanisme memburukkan lagi kegagalan ini:

  • Pencairan perhatian: lebih banyak fail dalam satu laluan bermaksud penelitian yang lebih cetek bagi setiap fail.
  • Hilang di tengah: model paling banyak memberi perhatian kepada permulaan dan penghujung konteks, jadi fail di tengah longgokan besar menerima penelitian paling sedikit.

Pembetulannya bukan tetingkap konteks yang lebih besar — tetapi penguraian yang lebih baik.

Struktur Semakan Berbilang Laluan

Corak yang betul ialah semakan berbilang laluan: laluan setempat setiap fail yang tertumpu pada setiap fail, THEN laluan penyepaduan merentas fail yang berasingan untuk meneliti bagaimana bahagian-bahagian itu sepadan.

Laluan setempat mengesan kecacatan dalam fail dengan perhatian penuh. Laluan penyepaduan mengesan pepijat yang hanya wujud antara fail: kontrak yang rosak, tandatangan yang tidak sepadan, pemanggil yang lapuk dan pengendalian ralat yang tidak konsisten.

Ini mencerminkan prinsip peperiksaan yang lebih luas: gunakan saluran paip tetap / perantaian gesaan untuk langkah berurutan yang diketahui, dan simpan penguraian adaptif untuk penyiasatan terbuka. Semakan mempunyai bentuk yang diketahui, jadi saluran paip sesuai digunakan.

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_findings

Mengapa Semakan Kendiri dalam Sesi yang Sama Gagal

Antipola kedua: membenarkan sesi yang sama yang menjana kod turut menyemaknya. Peperiksaan ini jelas — semakan bebas / tika baharu mengatasi semakan kendiri dalam sesi yang sama.

Sebabnya ialah keterikatan kognitif. Pengarang mengekalkan penaakulan, andaian dan rasionalisasi yang digunakannya semasa menulis. Ia sudah "memutuskan" bahawa kod itu betul, lalu cenderung mengesahkan dan bukannya mencabar. Penyemak yang bersih tidak membawa sebarang beban itu dan melihat kod sebagai artifak untuk disoal siasat.

Dengan kata lain: konteks penjanaan mencenderungkan semakan. Anda mahu penyemak cenderung kepada sikap skeptik, bukannya kepada kesimpulan awal pengarang.

Semak dalam Sesi Terasing

Penyelesaiannya ialah menjalankan semakan dalam sesi terasing, yang dipisahkan daripada konteks penjanaan. Dalam Claude Code CI/CD, ini semula jadi: penjanaan dan semakan ialah seruan berasingan yang bukan interaktif.

Bagi saluran paip, sentiasa jalankan semakan dengan -p / --print (bukan interaktif) dan keluarkan --output-format json supaya hasil boleh dihuraikan oleh mesin. Tugas semakan hanya menerima perbezaan dan kriteria — bukan sejarah sembang yang menghasilkan kod itu.

# 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.json

Percabangan Berkongsi Konteks — Berhati-hati

Kawalan sesi penting. --resume <name> meneruskan sesi bernama; fork_session bercabang daripada titik yang dikongsi. Untuk semakan, berhati-hatilah: percabangan daripada sesi penjanaan membawa penaakulan pengarang ke hadapan, lalu mencipta semula kecenderungan sesi yang sama yang cuba anda elakkan.

Utamakan sesi yang benar-benar baharu dan berikan ringkasan berstruktur tentang perkara yang perlu disemak. Terdapat juga aspek kesegaran: hasil alat yang disambung semula mungkin lapuk jika pangkalan kod telah berubah sejak itu — kadangkala sesi baharu dengan ringkasan berstruktur lebih baik daripada menyambung semula.

Berikan Kriteria Jelas kepada Penyemak melalui Gesaan

Penyemak terasing hanya sebaik arahannya. Gesaan yang kabur ("jadilah lebih tepat," "cari pepijat") menghasilkan output yang bising dan tidak konsisten. Kriteria jelas lebih baik: "tandakan ulasan hanya apabila ia bercanggah dengan kod" mengatasi "semak ulasan tersebut."

Bagi CI secara khusus, matlamatnya adalah untuk meminimumkan positif palsu — semakan yang sering memberi amaran palsu akan diabaikan. Kriteria yang ketat dan boleh diuji mengekalkan isyarat pada tahap tinggi.

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."""

Contoh Sedikit Tembakan Menajamkan Penyemak

Apabila kekaburan masih ada, tambahkan 2-4 contoh sedikit tembakan yang disasarkan bagi setiap kekaburan. Model membuat generalisasi daripada contoh tersebut — ia bukan sekadar mengulanginya. Sedikit tembakan ialah pengungkit terbaik untuk ketekalan, kes pinggir, format output dan pengurangan dapatan yang dihalusinasikan.

Bagi penyemak, tunjukkan satu contoh yang patut ditandakan dan satu contoh yang NOT. Ini menentukur sempadan positif palsu dengan jauh lebih baik berbanding perenggan prosa tambahan.

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."""

Paksa Output Berstruktur untuk Dapatan

Untuk menjadikan hasil semakan boleh dipercayai dan boleh dihuraikan, paksa output berstruktur dengan alat serta Skema JSON. Menetapkan tool_choice kepada "any" menjamin model memanggil sesetengah alat, sekali gus menghapuskan penyimpangan teks bebas; alat khusus yang dipaksa memberikan kawalan yang lebih ketat.

Disiplin skema penting: tandakan medan sebagai required ONLY jika ia sentiasa wujud. Jangan sekali-kali mewajibkan medan yang mungkin tiada — model akan mereka-reka satu medan untuk memenuhi skema. Gunakan enum dengan nilai "other" serta medan butiran teks bebas untuk kebolehkembangan.

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}])

Jalankan Semula: Laporkan Isu Baharu Sahaja

Semakan dijalankan berulang kali apabila PR berkembang. Apabila anda menjalankannya semula, sertakan hasil terdahulu dan laporkan hanya isu baharu atau yang masih belum dibetulkan. Menandakan semula semuanya dari awal menenggelamkan masalah yang benar-benar baharu dan melatih penyemak untuk mengabaikan bot.

Ini juga memastikan laluan penyepaduan kekal telus: pembetulan dalam satu fail mungkin memperkenalkan kerosakan merentas fail yang baharu, dan itulah perkara yang perlu didedahkan oleh larian seterusnya — bukannya hingar yang telah diselesaikan.

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."""

Jangan Gunakan API Batch di Sini

Satu perangkap terakhir. Semakan prcantum / yang menyekat adalah sensitif terhadap masa, jadi ia TIDAK sesuai menggunakan API Message Batches. Kelompok adalah 50% lebih murah dengan tetingkap sehingga 24 jam tetapi tidak mempunyai SLA kependaman dan tidak menyokong panggilan alat berbilang giliran — tidak sesuai untuk apa-apa yang menyekat percantuman.

Simpan API Batch untuk tugas yang tidak menyekat: audit semalaman, imbasan seluruh repositori setiap malam dan penjanaan laporan pukal. Gunakan custom_id untuk mengaitkan permintaan dan hantar semula kegagalan sahaja. Pintu kawalan prcantum kekal pada panggilan standard berkependaman rendah.

Semakan Pantas: Mereka Bentuk Peringkat Semakan

CI rakan sepasukan memanggil Claude Code untuk menyemak permintaan tarik. Ia menyambung semula sesi yang sama yang menjana kod dan memintanya menyemak kesemua 14 fail yang diubah dalam satu gesaan. Positif palsu adalah tinggi dan pepijat merentas fail yang sebenar terlepas. Reka bentuk semula yang manakah paling baik membetulkan keadaan ini?

Imbas Kembali: Semak Seperti Arkitek

Kesimpulan utama:

  • Elakkan semakan berbilang fail satu laluan — ia mencairkan perhatian dan bahagian tengah hilang. Lakukan laluan setempat setiap fail THEN laluan penyepaduan merentas fail yang berasingan.
  • Elakkan semakan kendiri dalam sesi yang sama — pengarang mengekalkan penaakulannya dan tidak akan mencabar dirinya sendiri. Semak dalam sesi baharu yang terasing; berhati-hati kerana percabangan/penyambungan semula membawa kecenderungan dan hasil yang lapuk.
  • Berikan gesaan dengan kriteria jelas + 2-4 contoh sedikit tembakan untuk meminimumkan positif palsu.
  • Paksa output berstruktur (alat + skema, tool_choice:"any"); wajibkan hanya medan yang sentiasa wujud.
  • Semasa menjalankan semula, laporkan hanya isu baharu/belum dibetulkan.
  • Jauhkan semakan yang menyekat daripada API Batch — tiada SLA kependaman; simpan kelompok untuk audit semalaman.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
26
Pelajaran
104

Soalan Lazim

Adakah pelajaran “Anti-Corak Arahan dan Semakan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Claude Architect, termasuk “Anti-Corak Arahan dan Semakan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Anti-Corak Arahan dan Semakan”?

Semakan berbilang fail satu laluan dan semakan kendiri dalam sesi yang sama Anda berlatih Claude Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Claude Architect?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Claude Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Anti-Corak Arahan dan Semakan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Claude Architect ini?

Ya. Setiap pelajaran Claude Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Anti-Corak Gelung dan Orkestrasi
  2. Anti-Corak Alat dan Ralat
  3. Anti-Corak Arahan dan Semakan
  4. Anti-Corak Eskalasi dan Metrik
← Kembali ke Claude Architect