SSD Nodes Learn 🎉 VPS dari $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-13

Mengapa ejen pengekodan sering mengabaikan arahan anda

Ejen pengekodan mengabaikan arahan anda kerana isu tetingkap konteks atau konflik kod. Ketahui cara mendiagnosis punca sebenar sebelum anda menulis semula peraturan tersebut.

Mengapa ejen pengekodan mengabaikan arahan anda

Ejen pengekodan mengabaikan arahan anda disebabkan oleh empat perkara, dan tiada satu pun daripadanya berkaitan dengan tahap kesopanan anda. Peraturan tersebut tidak pernah berada dalam tetingkap konteks. Peraturan itu terlalu samar untuk menyemak sesuatu tindakan. Sesuatu yang lain dalam konteks bercanggah dengannya, biasanya kod yang baru sahaja dibaca oleh ejen tersebut. Atau peraturan itu masih dimuatkan tetapi berada jauh di belakang giliran semasa, dan ejen tersebut bekerja berdasarkan maklumat yang berdekatan.

Setiap punca mempunyai penyelesaiannya sendiri, jadi tugas pertama adalah membezakannya. Huruf besar dan perkataan IMPORTANT bukanlah satu diagnosis. Mekanisme di bawah menggunakan Claude Code sebagai contoh kerja, kerana tingkah laku pemuatan dan pemadatannya didokumenkan secara terperinci setakat Ogos 2026. Alat lain berbeza dari segi perincian tetapi berkelakuan sama secara keseluruhannya.

Dua istilah terlebih dahulu. Tetingkap konteks ialah blok teks yang dilihat oleh model pada sesuatu giliran: prompt sistem, fail arahan anda, perbualan, dan setiap fail yang telah dibaca oleh ejen. Harness ialah program di sekeliling model, iaitu perkara yang membaca fail daripada cakera dan menyusun blok tersebut. Hampir setiap aduan dalam hantaran ini sebenarnya adalah aduan tentang harness, bukan model tersebut.

Fail arahan anda ialah mesej, bukan tetapan

Fail arahan bukanlah konfigurasi. Tiada apa-apa dalam runtime yang membaca CLAUDE.md dan menguatkuasakannya. Harness membaca fail tersebut daripada cakera dan menampal teks ke dalam perbualan. Dalam Claude Code, kandungan tersebut dihantar sebagai mesej pengguna yang diletakkan selepas prompt sistem, yang bermaksud model melihat peraturan anda sama seperti perkara lain yang anda taip.

Perkara ini membawa akibat yang tidak menyenangkan. Peraturan anda bersaing dengan setiap teks lain dalam tetingkap, pada kedudukan yang sama. Peraturan ialah satu tuntutan. Fail yang baru dibuka oleh ejen ialah bukti. Apabila kedua-duanya tidak bersetuju, bukti sering kali menang, dan tiada apa-apa yang mencetuskan ralat, kerana dari sudut pandangan model, tiada apa-apa yang tidak kena.

Dokumentasi rasmi menyatakan perkara ini dengan jelas: fail arahan dianggap sebagai konteks, bukan konfigurasi yang dikuatkuasakan. Untuk menyekat sesuatu tindakan tanpa mengira keputusan model, anda memerlukan hook, bukan ayat. Pegang prinsip itu. Kebanyakan pembetulan di akhir catatan ini adalah prinsip tersebut yang digunakan pada kes tertentu.

Fail arahan yang dimuatkan, dan bila ia berlaku

Claude Code menyemak direktori dari direktori tempat anda memulakannya. Setiap CLAUDE.md dan CLAUDE.local.md dari akar sistem fail sehingga ke direktori kerja anda dimuatkan sepenuhnya semasa pelancaran. Fail-fail ini digabungkan mengikut urutan tersebut, jadi fail yang paling hampir dengan lokasi anda melancarkan arahan dibaca paling akhir, dan dalam direktori yang sama, fail .local ditambah selepas fail utama.

Fail dalam subdirektori di bawah direktori kerja anda berkelakuan berbeza. Ia tidak dimuatkan semasa pelancaran. Ia dimuatkan apabila ejen membaca fail dalam direktori tersebut. Perkara yang sama berlaku pada peraturan skop laluan dalam .claude/rules/ yang membawa medan frontmatter paths:: ia memasuki konteks apabila fail yang sepadan dibaca, bukan pada setiap giliran.

Perbezaan itu menjelaskan sebahagian besar kegagalan yang dilaporkan. Anda meletakkan peraturan dalam packages/api/CLAUDE.md, anda bertanya soalan tentang API, dan ejen menjawab tanpa membuka sebarang fail di bawah packages/api/. Peraturan itu tidak diabaikan. Ia tidak pernah wujud dalam konteks. Jika repositori anda membahagikan panduan merentas fail arahan bagi setiap pakej dalam monorepo, ini adalah perkara pertama yang perlu diperiksa, setiap kali.

Satu lagi perangkap pemuatan, dan ia merupakan versi paling biasa bagi "ejen mengabaikan arahan saya": Claude Code membaca CLAUDE.md, bukan AGENTS.md. Repositori yang menyeragamkan penggunaan AGENTS.md dan tidak mempunyai CLAUDE.md tidak memberikan apa-apa kepada Claude Code untuk dimuatkan. Jambatan yang disokong ialah CLAUDE.md yang baris pertamanya ialah @AGENTS.md, yang mengimport fail tersebut semasa pelancaran, dengan sebarang nota khusus Claude di bawahnya. Symlink juga berfungsi apabila anda tidak mempunyai apa-apa tambahan untuk disertakan. Menentukan perkara yang sepatutnya ada dalam fail tersebut adalah soalan berasingan, yang dibincangkan dalam memisahkan arahan ejen daripada dokumentasi manusia.

Sahkan fail dimuatkan sebelum anda menulis semula

Jangan ubah sebarang perkataan sehingga anda mempunyai bukti bahawa ejen boleh melihat fail tersebut. Terdapat dua pemeriksaan, dan pemeriksaan yang mudah dilakukan dahulu.

Jalankan /context di dalam sesi. Ia mencetak tetingkap semasa yang dipecahkan mengikut kategori, dan senarai Memory files menamakan setiap fail arahan yang benar-benar dimuatkan. Fail yang tiada dalam senarai itu tidak berada dalam perbualan, jadi apa sahaja yang anda tulis di dalamnya tidak akan memberi kesan. /memory menyenaraikan lokasi fail dan membukanya untuk disunting, termasuk fail yang belum wujud lagi.

Untuk jawapan yang lebih tepat, log muatan tersebut. Peristiwa hook InstructionsLoaded dicetuskan setiap kali CLAUDE.md atau fail peraturan memasuki konteks, dan pemadannya memberitahu anda sebab muatan itu berlaku: session_start, nested_traversal, path_glob_match, include, atau compact. Letakkan ini dalam .claude/settings.json:

{
  "hooks": {
    "InstructionsLoaded": [
      {
        "matcher": "nested_traversal",
        "hooks": [
          {
            "type": "command",
            "command": "cat >> /tmp/instructions-loaded.log"
          }
        ]
      }
    ]
  }
}

Hook tersebut menerima payload sebagai JSON pada input standard, jadi cat menambah keseluruhan rekod tersebut. Pantau ia dengan tail -f /tmp/instructions-loaded.log semasa anda bekerja. Status keluar peristiwa ini diabaikan, jadi hook hanya boleh memerhati, tidak boleh menyekat. Jika fail bersarang anda tidak pernah muncul dalam log tersebut semasa sesi di mana anda menjangkakannya, berhenti menulis semula. Masalahnya terletak pada penempatan.

Kesan sesi yang panjang terhadap peraturan anda

Dua kesan berasingan berlaku di sini, dan ia memerlukan respons yang berbeza.

Jarak. Peraturan yang dinyatakan pada pusingan 1 masih berada dalam tetingkap pada pusingan 90, kini bersaing dengan 90 pusingan teks yang lebih baharu dan lebih khusus kepada perkara yang sedang anda lakukan sekarang. Anda tidak boleh mengkonfigurasinya untuk hilang, tetapi anda boleh mengukurnya. Jalankan tugasan yang sama dalam sesi baharu. Jika peraturan itu kekal di sana tetapi gagal jauh di dalam sesi yang panjang, jarak adalah jawapannya.

Pemadatan. Apabila tetingkap penuh, sistem akan meringkaskan perbualan setakat ini dan meneruskan daripada ringkasan tersebut. Apa yang kekal adalah apa yang dianggap penting oleh sistem peringkasan, yang tidak sama dengan apa yang anda anggap penting. Claude Code mendokumentasikan hasil bagi setiap mekanisme, dan perbezaannya adalah besar. Akar projek CLAUDE.md dan peraturan tanpa skop akan disuntik semula daripada cakera selepas pemadatan. Memori automatik akan disuntik semula daripada cakera. Peraturan dengan frontmatter paths: akan hilang sehingga fail yang sepadan dibaca semula. Fail CLAUDE.md bersarang dalam subdirektori akan hilang sehingga fail dalam subdirektori tersebut dibaca semula.

Susun arahan anda mengikut jadual tersebut dan tahap kerapuhan akan kelihatan. Peraturan yang anda taip dalam sembang adalah perkara paling rapuh dalam sesi: ia hanya kekal jika ringkasan kebetulan menyimpannya. Peraturan dalam packages/api/CLAUDE.md adalah seterusnya, kerana ia dimuatkan sekali, diringkaskan, dan hanya kembali pada bacaan seterusnya dalam direktori tersebut. Peraturan dalam fail akar projek adalah yang paling tahan lama, kerana ia dibaca semula daripada cakera setiap kali.

Oleh itu, jika sesuatu arahan mesti kekal untuk keseluruhan sesi, ia perlu diletakkan dalam fail akar projek tanpa frontmatter paths:. Segala perkara lain adalah pertukaran (tradeoff) yang perlu anda buat dengan sengaja. Mengurus perkara yang kekal dalam tetingkap konteks merangkumi /compact dengan hujah fokus dan /clear antara tugasan yang tidak berkaitan, yang kedua-duanya mengubah kekerapan sistem peringkasan menentukan peraturan anda.

Mengapa kod sedia ada mengatasi peraturan

Ini adalah kegagalan yang paling kerap diterangkan oleh pengguna tetapi paling jarang didiagnosis. Fail anda menyatakan bahawa akses pangkalan data perlu melalui lapisan repositori. Ejen menulis pengendali yang memanggil ORM (object relational mapper) secara terus. Anda tidak diabaikan atas alasan gaya. Anda dikalahkan oleh bukti.

Sesuatu peraturan menerangkan satu keutamaan. Kod pula menunjukkan satu amalan. Apabila ejen membuka tiga fail dalam modul yang akan disunting dan ketiga-tiganya memanggil ORM secara terus, konteks tersebut mengandungi satu ayat abstrak di satu pihak dan tiga contoh konkrit, terkini, serta sepadan dengan tugasan di pihak yang lain. Menyalin corak tempatan biasanya merupakan tindakan yang betul. Ia hanya salah di sini kerana anda mengetahui sesuatu yang tidak diketahui oleh konteks tersebut: fail-fail itu adalah kod legasi.

Jadi, tuliskan perkara itu ke dalam peraturan. Peraturan yang menyatakan bukti penyanggahnya sendiri mampu bertahan apabila berhadapan dengan repositori sebenar. Peraturan yang hanya menyatakan keutamaan kosong tidak akan bertahan.

Akses pangkalan data baharu perlu melalui app/repositories/. Fail di bawah app/legacy/ masih memanggil ORM secara terus. Itu adalah kod lama, bukan corak yang sepatutnya. Jangan salin kod tersebut.

Ayat kedua melakukan kerja tersebut. Ia memberitahu ejen tentang apa yang bakal ditemui dan cara untuk membacanya, sebelum ejen itu menemuinya. Pembaikan yang sama terpakai kepada mana-mana peraturan yang secara jelas bercanggah dengan repositori anda: gaya commit yang tidak diikuti oleh sejarah anda, susun atur ujian yang diabaikan oleh separuh daripada suite anda, atau konvensyen import yang hanya terpakai pada kod baharu. Di mana sahaja kod tidak bersetuju dengan fail, nyatakan percanggahan tersebut di dalam fail itu.

Peraturan yang samar tidak boleh disemak, maka ia tidak boleh dipatuhi

"Tulis kod yang bersih." "Jangan lakukan kejuruteraan berlebihan." "Pastikan ia ringkas." "Berhati-hati dengan migrasi." Tiada satu pun daripada ini boleh diuji terhadap tindakan khusus, sama ada oleh ejen atau oleh anda. Ejen yang diberikan peraturan yang tidak boleh disemak terhadap outputnya sendiri hanya meneka, dan anda pula menilai tekaan tersebut berdasarkan perasaan.

Berikut adalah ujian yang perlu digunakan pada setiap baris dalam fail anda. Tulis arahan shell yang akan keluar dengan status bukan sifar apabila peraturan dilanggar. Jika anda tidak boleh menulis arahan tersebut, peraturan itu tidak boleh disemak. Bandingkan pasangan ini:

  • Tidak boleh disemak: "Pastikan fungsi kecil." Boleh disemak: "Fungsi yang melebihi 60 baris memerlukan komen di atasnya yang menjelaskan sebabnya."
  • Tidak boleh disemak: "Uji perubahan anda." Boleh disemak: "Jalankan npm test dan tampal kiraan kegagalan sebelum menandakan tugasan selesai."
  • Tidak boleh disemak: "Pastikan fail tersusun." Boleh disemak: "Pengendali HTTP diletakkan dalam src/api/handlers/. Tiada fail lain yang boleh berada dalam direktori tersebut."
  • Tidak boleh disemak: "Format kod dengan betul." Boleh disemak: "Gunakan inden 2 ruang dalam fail .ts."

"Jangan lakukan kejuruteraan berlebihan" adalah perkara pertama yang orang abaikan, kerana pembaikannya bukanlah ayat yang lebih pendek tetapi lebih panjang: menjelaskan maksud sebenar perubahan terkecil yang berfungsi memberikan ejen kriteria yang boleh dibandingkan dengan diff miliknya sendiri.

Saiz adalah masalah yang sama dengan wajah berbeza. Panduan Claude Code menyasarkan bawah 200 baris bagi setiap fail arahan dan menyatakan secara langsung bahawa fail yang lebih panjang mengurangkan tahap pematuhan. Fail 700 baris bukanlah arahan yang lebih tegas. Ia adalah 700 baris tuntutan dengan lebih banyak peluang untuk bercanggah antara satu sama lain, dan ia dikenakan terhadap tetingkap anda pada setiap pusingan, yang kelihatan secara langsung dalam penggunaan token anda. Menyusun fail supaya setiap peraturan berada di bawah tajuk yang boleh diimbas oleh pembaca diliputi dalam menulis fail arahan yang boleh dilaksanakan oleh ejen.

Cara mendiagnosisnya dalam sepuluh minit

Jalankan langkah ini mengikut urutan. Melangkau terus ke langkah terakhir adalah punca mengapa ramai orang berakhir dengan fail panjang yang mengandungi peraturan yang tidak berfungsi.

  1. Sahkan ia dimuatkan. Jalankan /context dan baca senarai fail Memory. Jika fail tersebut tiada, betulkan lokasinya dan berhenti. Tiada langkah lain dalam senarai ini yang terpakai buat masa ini.
  2. Uji semula dalam sesi baharu. Mulakan sesi baharu dan berikan tugasan paling kecil yang sepatutnya mencetuskan peraturan tersebut. Jika ia berjaya di sini tetapi gagal dalam sesi yang panjang, ini menunjukkan masalah jarak atau pemadatan (compaction). Jika ia gagal di sini juga, bermakna peraturan itu sendiri adalah masalahnya.
  3. Alih keluar persaingan. Minta perubahan yang sama dalam direktori yang kod sedia adanya sudah mematuhi peraturan tersebut. Jika pematuhan kembali normal, bermakna kod di sekelilingnya telah mengatasi arahan anda.
  4. Cari konflik. Dua fail yang memberikan panduan berbeza untuk tingkah laku yang sama adalah kegagalan yang didokumentasikan: model mungkin memilih salah satu secara arbitrari, dan ia tidak akan memberitahu anda mengenainya.
  5. Jadikannya boleh diperiksa dan uji semula. Tulis semula peraturan dengan laluan dan syarat yang konkrit. Lonjakan besar dalam pematuhan bermakna gaya bahasa anda adalah puncanya.

Langkah 4 hanya memerlukan satu arahan. Gunakan grep pada setiap sumber arahan untuk topik tersebut, bukan sekadar fail yang sedang anda sunting:

grep -rni "migration" --include="CLAUDE.md" --include="CLAUDE.local.md" .
grep -rni "migration" .claude/rules/ ~/.claude/CLAUDE.md ~/.claude/rules/ 2>/dev/null

Jika terdapat hasil dalam dua fail yang menyatakan perkara berbeza, itulah pepijat anda. Padamkan salah satu. Jangan cuba meletakkan kedudukan (ranking) antara keduanya dengan menggunakan perkataan yang lebih tegas, kerana tiada enjin kedudukan yang boleh dirujuk.

Pembaikan, mengikut urutan keberkesanan

Setiap langkah di bawah mempunyai keberkesanan yang lebih tinggi daripada langkah sebelumnya, namun memerlukan kos penyediaan yang lebih besar. Mulakan dari atas apabila sesuatu peraturan mudah untuk diolah semula. Beralih ke bawah sebaik sahaja sesuatu peraturan menjadi cukup penting sehingga kegagalan sekali-sekala tidak boleh diterima.

  1. Jadikan peraturan tersebut konkrit. Namakan path, command atau syarat. Tambahkan bukti penyangkal yang akan ditemui oleh ejen dalam repositori, seperti yang ditunjukkan sebelum ini. Ini adalah percuma dan menyelesaikan sebahagian besar kes yang mengejutkan.
  2. Gerakkan ia lebih dekat dengan perkara yang dikawal. CLAUDE.md yang bersarang, peraturan yang dilingkupi path dalam .claude/rules/, atau komen di bahagian atas fail itu sendiri. Peraturan tersebut kemudiannya dibaca bersama-sama dengan kod yang dikawalnya. Terima pertukaran ini: apa-apa yang dimuatkan dengan cara itu akan digugurkan pada pemadatan seterusnya dan kembali pada bacaan padanan yang berikutnya.
  3. Pindahkan penguatkuasaan ke dalam hook. Prosa sekadar meminta. Hook membuat keputusan. Hook berjalan sebagai kod pada peristiwa kitaran hayat yang tetap dan terpakai tanpa mengira apa yang disimpulkan oleh model.
  4. Berikan peraturan kepada alat deterministik dan padam prosa tersebut. Pemformatan, susunan import, panjang baris, import yang dilarang, bentuk mesej commit. ruff format, prettier --write, eslint, hook pre-commit. Pemformat sentiasa betul dan tidak menggunakan token. Ayat hanya betul pada kebanyakan masa dan menggunakan token pada setiap pusingan.

Langkah 3 secara penuh. Andaikan fail migrasi tidak boleh disunting oleh ejen. Letakkan ini dalam .claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/guard-migrations.sh"
          }
        ]
      }
    ]
  }
}

Dan ini dalam .claude/hooks/guard-migrations.sh:

#!/usr/bin/env bash
set -euo pipefail

path=$(jq -r '.tool_input.file_path // empty')

case "$path" in
  */migrations/*)
    echo "Files under migrations/ are written by hand. Stop and ask first." >&2
    exit 2
    ;;
esac

exit 0

Jalankan chmod +x .claude/hooks/guard-migrations.sh, kemudian mulakan sesi baharu dan minta ejen menyunting fail di bawah migrations/. Suntingan tersebut ditolak dan mesej anda dikembalikan sebagai sebabnya. Exit status 2 pada PreToolUse menyekat panggilan alat sebelum ia dijalankan, dan teks stderr anda diserahkan kepada model sebagai mesej penyekat. ${CLAUDE_PROJECT_DIR} merujuk kepada root projek, jadi hook tersebut berfungsi tidak kira direktori mana ejen berada. Ejen tidak perlu bersetuju dengan peraturan, mengingati peraturan, atau masih mempunyai peraturan tersebut dalam konteks. Suntingan tidak berlaku.

Untuk larangan mutlak tanpa sebarang logik di dalamnya, permissions.deny dalam tetapan anda melakukan tugas yang sama tanpa skrip untuk diselenggara, dan mod kebenaran menentukan apa yang berjalan tanpa bertanya kepada anda terlebih dahulu. Jika sesuatu arahan benar-benar perlu berada pada tahap system prompt dan bukannya dalam mesej pengguna, --append-system-prompt meletakkannya di sana, walaupun ia mesti diluluskan pada setiap invokasi, yang lebih sesuai untuk skrip berbanding kerja interaktif.

Perkara yang tidak boleh diselesaikan melalui arahan

Jelaskan bahagian mana yang menjadi tanggungjawab anda. Penempatan, olahan ayat, konflik antara fail, dan saiz fail adalah masalah penulis yang perlu diselesaikan oleh penulis. Selebihnya adalah tingkah laku model, dan olahan ayat yang lebih baik tidak akan menghilangkannya.

Persetujuan bukan bermakna pematuhan. Ejen akan mengakui sesuatu peraturan, menyatakan semula peraturan tersebut kepada anda dengan betul, dan melanggarnya dua panggilan alat kemudian. Pengakuan tersebut tidak membawa sebarang kos dan tidak meramalkan apa-apa. Jangan anggap ia sebagai penyelesaian, dan jangan kira ia sebagai ujian.

Sesetengah tabiat adalah berterusan. Menambah komen, menambah pengendalian ralat defensif, menulis ringkasan penutup, menjalankan arahan seterusnya yang jelas. Tabiat ini akan muncul semula di bawah peraturan yang melarangnya, pada kadar yang berkurangan dan bukannya sifar. Anda boleh mengukur kadar anda sendiri: jalankan tugas yang sama sepuluh kali dalam sesi baharu dan kira pelanggarannya. Jika nombor tersebut perlu menjadi sifar, peraturan itu perlu dikeluarkan daripada prompt.

Sesi anda sendiri menjadi contoh. Jika ejen melanggar peraturan pada giliran 12 dan anda membiarkannya, pelanggaran itu kini berada dalam konteks sebagai demonstrasi, dan ia jauh lebih baharu daripada peraturan tersebut. Betulkan pelanggaran sebaik sahaja anda melihatnya. Pelanggaran yang tidak dibetulkan akan mengajar sepanjang sesi tersebut.

Fail arahan bukan sempadan keselamatan. Ia membentuk tingkah laku dan tidak menguatkuasakannya. Apa-apa perkara yang melibatkan kos tinggi jika tersilap, seperti kelayakan (credentials) atau arahan yang merosakkan, perlu diletakkan di bawah kebenaran (permissions) atau cangkuk (hook). Menjauhkan rahsia daripada capaian ejen menggunakan prinsip yang sama terhadap data: jangan minta ejen untuk tidak membaca fail, sebaliknya pastikan fail tersebut tidak boleh dibaca.

Versi ringkasnya. Buktikan fail telah dimuatkan, jadikan peraturan boleh diperiksa, letakkannya bersebelahan dengan perkara yang dikawalnya, dan apabila kadar kesilapan masih penting, keluarkannya daripada bentuk prosa. Peraturan yang tidak boleh diabaikan oleh ejen adalah peraturan yang tidak pernah diminta daripada ejen tersebut.

FAQ

Mengapa Claude Code mengabaikan CLAUDE.md saya?

Pastikan fail tersebut telah dimuatkan sebelum membuat andaian bahawa ia diabaikan. Jalankan /context dan lihat senarai Memory files; fail yang tidak tersenarai di situ tidak berada dalam perbualan. Fail arahan dihantar sebagai mesej pengguna selepas prompt sistem dan dianggap sebagai konteks dan bukannya konfigurasi yang dikuatkuasakan, jadi tiada jaminan pematuhan yang ketat. Kebanyakan kes sebenar berpunca daripada salah satu daripada empat perkara ini: fail tersebut berada dalam subdirektori yang tidak pernah dibaca oleh ejen, dua fail bercanggah dan model memilih salah satu secara rawak, peraturan terlalu samar untuk menyemak sesuatu tindakan, atau kod di sekeliling menunjukkan perkara yang bertentangan dengan apa yang dinyatakan oleh peraturan.

Adakah menyunting fail arahan di pertengahan sesi mengubah apa-apa?

Tidak untuk salinan yang sudah ada dalam perbualan. Fail di atas direktori kerja anda dimuatkan sepenuhnya semasa pelancaran, jadi teks yang dipegang oleh model adalah teks dari masa pelancaran. Untuk mengambil suntingan, mulakan sesi baharu, atau minta ejen membaca fail tersebut dengan alat fail biasa, yang akan memasukkan versi semasa ke dalam perbualan sebagai mesej baharu. Selepas pemadatan (compaction), fail akar projek dibaca semula dari cakera, jadi versi baharu akan tiba pada ketika itu juga.

Fail mana yang diutamakan apabila CLAUDE.md akar dan fail bersarang bercanggah?

Tiada satu pun yang boleh diharap. Fail yang ditemui akan digabungkan ke dalam konteks dan bukannya mengatasi satu sama lain, disusun dari akar sistem fail sehingga ke direktori kerja anda, jadi fail yang paling hampir hanya dibaca terakhir. Tiada enjin keutamaan yang menyelesaikan percanggahan, dan dokumentasi Claude Code menyatakan bahawa peraturan yang bercanggah mungkin diselesaikan secara rawak. Tulis fail bersarang sebagai tambahan yang menamakan laluan yang dikawal olehnya, dan padamkan percanggahan tersebut daripada cuba mengatasinya.

Adakah arahan saya kekal selepas /compact?

Ia bergantung kepada cara ia dimuatkan. CLAUDE.md akar projek, peraturan tanpa skop dan memori automatik disuntik semula dari cakera selepas pemadatan. Peraturan dengan frontmatter paths: dan fail CLAUDE.md bersarang dalam subdirektori akan hilang sehingga fail yang sepadan dibaca semula. Apa-apa sahaja yang anda taip ke dalam sembang hanya akan kekal jika penyimpul (summariser) kebetulan menyimpannya. Jika sesuatu peraturan mesti kekal sepanjang sesi, letakkannya dalam fail akar projek tanpa frontmatter paths:.

Bilakah peraturan harus menjadi hook dan bukannya prosa?

Apabila semakan bersifat deterministik dan kos kegagalan adalah lebih tinggi daripada kos menulis skrip kecil. Sekatan laluan fail, arahan yang diperlukan sebelum commit, dan panggilan alat yang dilarang semuanya layak. Hook PreToolUse yang keluar dengan status 2 akan menyekat panggilan alat tersebut sepenuhnya dan memberikan teks stderr anda kembali kepada model sebagai sebab, jadi ia kekal sama ada peraturan itu masih ada di mana-mana dalam konteks atau tidak. Apa-apa sahaja yang boleh diputuskan oleh pemformat atau linter harus dikendalikan oleh alat tersebut dan dipadamkan sepenuhnya daripada fail arahan.