Mengapa Ejen Pengekodan Mengabaikan Arahan Anda
Arahan anda menyuruh ejen berhenti, tetapi ia terus bekerja. Ketahui empat punca sebenar dan diagnosis yang boleh dijalankan sebelum menulis semula peraturan.
Mengapa ejen pengekodan mengabaikan arahan anda
Ejen pengekodan mengabaikan arahan anda atas empat sebab, dan tiada satu pun berpunca daripada anda terlalu sopan. Peraturan itu tidak pernah dimuatkan ke dalam tetingkap konteks. Peraturan itu terlalu kabur untuk dibandingkan dengan sesuatu tindakan. Kandungan lain dalam konteks bercanggah dengannya, biasanya kod yang baru sahaja dibaca oleh ejen. Atau peraturan itu masih dimuatkan, tetapi berada jauh di belakang giliran semasa, lalu ejen bekerja berdasarkan kandungan yang paling hampir.
Setiap punca mempunyai pembaikan tersendiri, jadi tugas pertama ialah membezakannya. Huruf besar dan perkataan IMPORTANT bukan diagnosis. Mekanisme di bawah menggunakan Claude Code sebagai contoh, kerana tingkah laku pemuatan dan pemampatannya didokumenkan secara terperinci setakat August 2026. Alat lain berbeza dari segi butiran, tetapi secara umum berfungsi dengan cara yang sama.
Dua istilah perlu difahami dahulu. Tetingkap konteks ialah blok teks yang dilihat oleh model pada sesuatu giliran: system prompt, fail arahan anda, perbualan dan setiap fail yang telah dibaca oleh ejen. Harness ialah program di sekeliling model, iaitu komponen yang membaca fail daripada cakera dan menyusun blok tersebut. Hampir setiap aduan dalam catatan ini sebenarnya ialah aduan tentang harness, bukan model.
Fail arahan anda ialah mesej, bukan tetapan
Fail arahan bukan konfigurasi. Tiada apa-apa dalam runtime membaca CLAUDE.md lalu menguatkuasakannya. Harness membaca fail itu daripada cakera dan menampal teksnya ke dalam perbualan. Dalam Claude Code, kandungan itu dihantar sebagai mesej pengguna yang diletakkan selepas system prompt. Oleh itu, model melihat peraturan anda seperti melihat apa-apa teks lain yang anda taip.
Kesan yang sukar diterima ialah peraturan anda bersaing dengan setiap teks lain dalam tetingkap itu pada kedudukan yang sama. Sesuatu peraturan ialah dakwaan. Fail yang baru dibuka oleh ejen ialah bukti. Apabila kedua-duanya bercanggah, bukti sering mengatasi peraturan. Tiada ralat dibangkitkan kerana dari sudut pandangan model, tiada apa-apa yang gagal.
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 arahan. Ingat perkara itu. Kebanyakan pembaikan pada penghujung catatan ini ialah penerapan prinsip tersebut pada kes tertentu.
Fail arahan yang dimuatkan dan bila
Claude Code bergerak naik melalui pepohon direktori, bermula dari direktori tempat anda melancarkannya. Setiap CLAUDE.md dan CLAUDE.local.md dari akar sistem fail hingga ke direktori kerja anda dimuatkan sepenuhnya semasa pelancaran. Fail-fail itu digabungkan mengikut susunan tersebut, jadi fail yang paling hampir dengan lokasi pelancaran dibaca terakhir. Dalam direktori yang sama, fail .local ditambahkan selepas fail utama.
Fail dalam subdirektori di bawah direktori kerja anda berkelakuan secara berbeza. Fail-fail itu tidak dimuatkan semasa pelancaran. Fail-fail itu dimuatkan apabila ejen membaca fail dalam direktori tersebut. Perkara yang sama berlaku untuk peraturan berdasarkan skop laluan dalam .claude/rules/ yang mempunyai medan frontmatter paths:: peraturan itu dimasukkan ke dalam konteks apabila fail yang sepadan dibaca, bukan pada setiap giliran.
Perbezaan ini menerangkan sebahagian besar kegagalan yang dilaporkan. Anda meletakkan peraturan dalam packages/api/CLAUDE.md, bertanya soalan tentang API, dan ejen menjawab tanpa pernah membuka fail di bawah packages/api/. Peraturan itu bukan diabaikan. Peraturan itu tidak pernah wujud dalam konteks. Jika repositori anda membahagikan panduan merentas fail arahan bagi setiap pakej dalam monorepo, semak perkara ini dahulu setiap kali.
Terdapat satu lagi perangkap pemuatan, dan inilah punca paling biasa bagi dakwaan "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 Claude Code apa-apa untuk dimuatkan. Penghubung yang disokong ialah CLAUDE.md yang baris pertamanya ialah @AGENTS.md. Fail ini mengimport fail tersebut semasa pelancaran, dengan sebarang nota khusus Claude di bawahnya. Symlink juga boleh digunakan jika tiada kandungan tambahan yang perlu ditambah. Menentukan perkara yang patut dimasukkan ke dalam fail itu ialah persoalan berasingan, yang dibincangkan dalam memisahkan arahan ejen daripada dokumentasi manusia.
Sahkan fail dimuatkan sebelum anda menulisnya semula
Jangan ubah teks sehingga anda mempunyai bukti bahawa ejen boleh melihat fail tersebut. Terdapat dua semakan, dan semakan yang lebih mudah perlu dibuat dahulu.
Jalankan /context dalam sesi tersebut. Perintah ini mencetak tetingkap semasa mengikut kategori, dan senarai Memory files menyenaraikan setiap fail arahan yang benar-benar dimuatkan. Fail yang tiada dalam senarai itu tidak berada dalam perbualan, jadi tiada kandungan yang anda tulis di dalamnya akan berkesan. /memory menyenaraikan lokasi fail dan membukanya untuk diedit, termasuk fail yang belum wujud.
Untuk mendapatkan pengesahan yang lebih terperinci, logkan proses pemuatan. Event hook InstructionsLoaded dicetuskan setiap kali CLAUDE.md atau fail peraturan masuk ke dalam konteks, dan padanannya menunjukkan sebab fail itu dimuatkan: session_start, nested_traversal, path_glob_match, include atau compact. Letakkan kandungan ini dalam .claude/settings.json:
{
"hooks": {
"InstructionsLoaded": [
{
"matcher": "nested_traversal",
"hooks": [
{
"type": "command",
"command": "cat >> /tmp/instructions-loaded.log"
}
]
}
]
}
}Hook menerima muatannya sebagai JSON melalui input standard, jadi cat menambahkan keseluruhan rekod. Pantau rekod itu dengan tail -f /tmp/instructions-loaded.log semasa anda bekerja. Status keluar event ini diabaikan, jadi hook hanya boleh memerhati dan tidak boleh menghalang proses. Jika fail tersarang anda tidak pernah muncul dalam log itu semasa sesi yang sepatutnya memuatkannya, berhenti menulis semula. Masalahnya ialah lokasi fail.
Kesan sesi yang panjang terhadap peraturan anda
Dua kesan berasingan berlaku di sini, dan kedua-duanya memerlukan tindak balas yang berbeza.
Jarak. Peraturan yang dinyatakan pada giliran 1 masih berada dalam tetingkap pada giliran 90, tetapi kini bersaing dengan teks daripada 90 giliran yang lebih baharu dan lebih khusus kepada perkara yang sedang anda lakukan. Anda tidak boleh menghapuskan kesan ini melalui konfigurasi, tetapi anda boleh mengukurnya. Jalankan tugasan yang sama dalam sesi baharu. Jika peraturan itu dipatuhi dalam sesi baharu tetapi gagal jauh ke dalam sesi yang panjang, jarak ialah puncanya.
Pemadatan. Apabila tetingkap penuh, harness meringkaskan perbualan setakat itu dan meneruskannya daripada ringkasan tersebut. Perkara yang kekal ialah perkara yang dianggap penting oleh peringkas, dan perkara itu tidak semestinya sama dengan perkara yang anda anggap penting. Claude Code mendokumenkan hasil bagi setiap mekanisme, dan perbezaannya ketara. Root projek CLAUDE.md serta peraturan tanpa skop dimasukkan semula daripada cakera selepas pemadatan. Memori automatik dimasukkan semula daripada cakera. Peraturan dengan frontmatter paths: hilang sehingga fail yang sepadan dibaca semula. Fail CLAUDE.md bersarang dalam subdirektori hilang sehingga fail dalam subdirektori tersebut dibaca semula.
Susun kedudukan arahan anda mengikut jadual itu, dan urutan kerapuhan akan menjadi jelas. Peraturan yang hanya anda taipkan dalam chat ialah perkara paling rapuh dalam sesi: peraturan itu hanya kekal jika ringkasan secara kebetulan mengekalkannya. Peraturan dalam packages/api/CLAUDE.md berada pada tahap seterusnya, kerana peraturan itu dimuatkan sekali, disingkirkan daripada ringkasan, dan kembali hanya apabila direktori tersebut dibaca semula. Peraturan dalam fail root projek ialah yang paling tahan lama, kerana fail itu dibaca semula daripada cakera setiap kali.
Jadi, jika sesuatu arahan mesti dipatuhi sepanjang sesi, letakkannya dalam fail root projek tanpa frontmatter paths:. Perkara lain ialah pertukaran yang perlu anda tetapkan dengan sengaja. Mengurus perkara yang kekal dalam tetingkap konteks merangkumi /compact dengan hujah focus dan /clear antara tugasan yang tidak berkaitan. Kedua-duanya mempengaruhi kekerapan peringkas menentukan perkara yang berlaku kepada peraturan anda.
Mengapa kod sekeliling mengatasi peraturan
Inilah kegagalan yang paling kerap diterangkan tetapi paling jarang didiagnosis. Fail anda menyatakan bahawa akses pangkalan data mesti melalui lapisan repositori. Agent menulis handler yang memanggil ORM (object relational mapper) secara langsung. Arahan anda bukan diabaikan kerana gaya. Arahan itu kalah berdasarkan bukti.
Peraturan menerangkan keutamaan. Kod menunjukkan satu keutamaan. Apabila agent membuka tiga fail dalam modul yang akan dieditnya dan ketiga-tiganya memanggil ORM secara langsung, konteks mengandungi satu ayat abstrak di satu pihak dan tiga contoh konkrit, terkini serta sepadan dengan tugasan di pihak yang lain. Menyalin corak setempat biasanya ialah tingkah laku yang betul. Dalam kes ini, tindakan itu salah hanya kerana anda mengetahui sesuatu yang tidak diketahui oleh konteks: fail-fail itu ialah kod legasi.
Jadi, nyatakan perkara itu dalam peraturan. Peraturan yang menyatakan bukti balasnya sendiri dapat bertahan apabila digunakan dalam repositori sebenar. Peraturan yang hanya menyatakan keutamaan umum tidak dapat berbuat demikian.
Akses pangkalan data baharu mesti melaluiapp/repositories/. Fail di bawahapp/legacy/masih memanggil ORM secara langsung. Itu ialah kod lama, bukan coraknya. Jangan salin kod tersebut.
Ayat kedua itulah yang menjalankan fungsi utama. Ayat itu memberitahu agent perkara yang bakal ditemuinya dan cara menafsirkannya sebelum agent menemuinya. Pembaikan yang sama terpakai pada mana-mana peraturan yang jelas bercanggah dengan repositori anda: gaya commit yang tidak dipatuhi oleh sejarah anda, susun atur ujian yang tidak digunakan oleh separuh daripada suite anda, atau konvensyen import yang hanya terpakai dalam kod baharu. Apabila kod bercanggah dengan fail, nyatakan percanggahan itu dalam fail.
Peraturan yang kabur tidak boleh disemak, maka peraturan itu tidak boleh dipatuhi
"Write clean code." "Do not over engineer." "Keep it simple." "Be careful with migrations." Tiada satu pun peraturan ini boleh diuji berdasarkan tindakan tertentu, sama ada oleh agent atau oleh anda. Agent yang diberikan peraturan yang tidak boleh disemak terhadap outputnya sendiri hanya membuat tekaan, manakala anda menilai tekaan itu berdasarkan perasaan.
Gunakan ujian ini pada setiap baris dalam fail anda. Tulis arahan shell yang akan keluar dengan kod bukan sifar apabila peraturan itu dilanggar. Jika anda tidak dapat menulis arahan tersebut, peraturan itu tidak boleh disemak. Bandingkan pasangan berikut:
- Tidak boleh disemak: "Pastikan fungsi kecil." Boleh disemak: "Fungsi yang melebihi 60 baris memerlukan ulasan di atasnya yang menerangkan sebabnya."
- Tidak boleh disemak: "Uji perubahan anda." Boleh disemak: "Jalankan
npm testdan tampal bilangan kegagalan sebelum menandakan tugasan sebagai selesai." - Tidak boleh disemak: "Pastikan fail tersusun." Boleh disemak: "Pengendali HTTP berada dalam
src/api/handlers/. Tiada perkara lain boleh diletakkan dalam direktori itu." - Tidak boleh disemak: "Format kod dengan betul." Boleh disemak: "Gunakan inden 2 ruang dalam fail
.ts."
"Do not over engineer" ialah peraturan yang paling awal ditinggalkan oleh orang ramai kerana pembaikannya bukan ayat yang lebih pendek, tetapi ayat yang lebih panjang: menjelaskan perkara yang sebenarnya dimaksudkan oleh perubahan terkecil yang berfungsi memberikan agent kriteria yang boleh digunakan untuk menyemak diffnya sendiri.
Saiz ialah masalah yang sama dalam bentuk berbeza. Panduan Claude Code menyasarkan kurang daripada 200 baris bagi setiap fail arahan dan menyatakan secara langsung bahawa fail yang lebih panjang mengurangkan pematuhan. Fail 700 baris bukan arahan yang lebih tegas. Fail itu mengandungi 700 baris dakwaan dengan lebih banyak kemungkinan untuk saling bercanggah, dan kandungannya menggunakan ruang konteks anda pada setiap giliran, yang terus kelihatan dalam penggunaan token anda. Menyusun fail supaya setiap peraturan berada di bawah heading yang boleh diimbas oleh pembaca dibincangkan dalam menulis fail arahan yang boleh dilaksanakan oleh agent. Lebih baik lagi, potong bahagian yang menerangkan dan bukannya memberikan arahan: penerangan direktori tentang lokasi pengendali dan model ialah struktur yang boleh dicari oleh agent apabila diperlukan daripada peta repository yang telah dihuraikan, bukannya disimpan dalam ruang konteks pada setiap giliran.
Cara mendiagnosisnya dalam masa sepuluh minit
Jalankan langkah ini mengikut urutan. Jika terus melangkau ke langkah terakhir, anda mungkin menghasilkan fail panjang yang penuh dengan arahan tegas tetapi masih tidak berfungsi.
- Sahkan bahawa fail dimuatkan. Jalankan
/contextdan semak senarai fail Memory. Jika fail itu tiada, betulkan lokasinya dan berhenti. Tiada langkah lain dalam senarai ini yang boleh digunakan lagi. - Ulangi dalam sesi baharu. Mulakan sesi baharu dan berikan tugasan paling kecil yang sepatutnya mencetuskan peraturan itu. Jika peraturan dipatuhi pada peringkat ini tetapi gagal dalam sesi yang panjang, puncanya mungkin jarak konteks atau pemadatan konteks. Jika peraturan gagal di sini juga, masalahnya terletak pada peraturan itu sendiri.
- Buang persaingan. Minta perubahan yang sama dalam direktori yang kod sedia ada di dalamnya sudah mematuhi peraturan tersebut. Jika pematuhan kembali, kod di sekeliling telah mengatasi ayat anda.
- Cari konflik. Dua fail yang memberikan panduan berbeza untuk tingkah laku yang sama ialah kegagalan yang telah didokumenkan: model mungkin memilih salah satu secara sewenang-wenangnya dan tidak akan memberitahu anda bahawa perkara itu berlaku.
- Jadikan peraturan itu boleh disemak dan uji semula. Tulis semula peraturan dengan path khusus dan syarat. Peningkatan pematuhan yang ketara menunjukkan bahawa puncanya ialah cara peraturan itu dirumuskan.
Langkah 4 hanya memerlukan satu arahan. Cari topik itu dalam setiap sumber arahan, bukan hanya dalam fail yang sedang anda edit:
grep -rni "migration" --include="CLAUDE.md" --include="CLAUDE.local.md" .
grep -rni "migration" .claude/rules/ ~/.claude/CLAUDE.md ~/.claude/rules/ 2>/dev/nullJika dua fail yang ditemui memberikan arahan berbeza, itulah puncanya. Padamkan salah satu. Jangan cuba menentukan keutamaan dengan menggunakan ayat yang lebih tegas kerana tiada enjin pengutamaan untuk menentukan keputusannya.
Pembaikan mengikut tahap keberkesanan
Setiap langkah di bawah memberikan keberkesanan yang lebih tinggi berbanding langkah sebelumnya dan memerlukan lebih banyak usaha untuk disediakan. Mulakan dari atas apabila peraturan mudah diubah suai. Turun ke langkah seterusnya apabila peraturan itu cukup penting sehingga kesilapan sekali-sekala tidak boleh diterima.
- Jadikan peraturan itu konkrit. Nyatakan path, command atau syarat. Tambahkan bukti balas yang akan ditemui oleh agent dalam repository, seperti yang ditunjukkan sebelum ini. Langkah ini tidak memerlukan kos dan menyelesaikan lebih banyak kes daripada yang dijangka.
- Letakkannya lebih dekat dengan perkara yang dikawalnya. Gunakan
CLAUDE.mdbersarang, peraturan yang dikhususkan kepada path dalam.claude/rules/atau komen di bahagian atas fail itu sendiri. Dengan itu, peraturan dibaca bersama-sama kod yang dikawalnya. Terima kompromi ini: apa-apa yang dimuatkan dengan cara tersebut akan hilang semasa compaction seterusnya dan dimuatkan semula pada bacaan sepadan yang berikutnya. - Pindahkan penguatkuasaan ke dalam hook. Prosa hanya meminta. Hook membuat keputusan. Hook berjalan sebagai kod pada event kitar hayat yang tetap dan digunakan tanpa mengira kesimpulan model.
- Serahkan peraturan kepada tool deterministik dan padamkan prosa tersebut. Pemformatan, susunan import, panjang baris, import yang dilarang dan format mesej commit.
ruff format,prettier --write,eslintatau hookpre-commit. Formatter memberikan hasil yang betul setiap kali dan tidak menggunakan token. Ayat itu betul pada kebanyakan masa dan menggunakan token pada setiap giliran.
Langkah 3 secara terperinci. Andaikan fail migrasi tidak boleh diedit oleh agent sama sekali. Letakkan kandungan ini dalam .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/guard-migrations.sh"
}
]
}
]
}
}Kemudian letakkan kandungan 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 0Jalankan chmod +x .claude/hooks/guard-migrations.sh, kemudian mulakan sesi baharu dan minta agent mengedit fail di bawah migrations/. Edit tersebut ditolak dan mesej anda dikembalikan sebagai sebabnya. Exit status 2 pada PreToolUse menyekat tool call sebelum ia dijalankan, manakala teks stderr anda diserahkan kepada model sebagai mesej sekatan. ${CLAUDE_PROJECT_DIR} merujuk kepada root projek, jadi hook tersebut berfungsi tanpa mengira direktori tempat agent berada. Agent tidak perlu bersetuju dengan peraturan itu, mengingatinya atau masih mempunyai peraturan tersebut dalam konteks. Edit itu tidak berlaku.
Untuk larangan mudah tanpa logik, permissions.deny dalam tetapan anda melaksanakan tugas yang sama tanpa script untuk diselenggara, dan mod permission menentukan perkara yang dijalankan tanpa meminta pengesahan anda terlebih dahulu. Jika arahan itu benar-benar perlu berada pada tahap system prompt dan bukannya dalam mesej pengguna, --append-system-prompt meletakkannya di situ. Namun, arahan tersebut mesti dihantar pada setiap invocation, jadi kaedah ini lebih sesuai untuk script berbanding kerja interaktif.
Perkara yang tidak boleh diarahkan
Jelaskan bahagian yang menjadi tanggungjawab anda. Penempatan, frasa, konflik antara fail dan saiz fail ialah masalah pengarang yang perlu diselesaikan oleh pengarang. Selebihnya ialah tingkah laku model, dan pemilihan kata yang lebih baik tidak akan menghapuskannya.
Persetujuan bukan pematuhan. Ejen akan mengakui sesuatu peraturan, mengulanginya semula dengan betul, kemudian melanggarnya dua panggilan alat kemudian. Pengakuan itu tidak memerlukan apa-apa dan tidak meramalkan apa-apa. Jangan anggap pengakuan sebagai pembaikan dan jangan kira sebagai ujian.
Sesetengah tabiat berterusan. Menambah komen, menambah pengendalian ralat defensif, menulis ringkasan penutup dan menjalankan arahan seterusnya yang jelas. Semua ini akan muncul semula apabila terdapat peraturan yang melarangnya, tetapi pada kadar yang lebih rendah, bukan sifar. Anda boleh mengukur kadarnya sendiri: jalankan tugas yang sama sepuluh kali dalam sesi baharu dan kira pelanggaran. Jika bilangannya perlu sifar, peraturan itu perlu dikeluarkan daripada prompt. Menganggap tugas telah selesai sedangkan sebahagian daripadanya masih belum selesai ialah bentuk tabiat yang sama. Pembaikannya bersifat struktur, bukan lisan: skill unlazy menukar ayat itu kepada Depth Tree dan fail gate yang perlu dilalui ejen sebelum boleh mengisytiharkan tugas selesai.
Sesi anda sendiri menjadi contoh. Jika ejen melanggar peraturan pada giliran 12 dan anda membiarkannya, pelanggaran itu kini berada dalam konteks sebagai contoh dan jauh lebih terkini berbanding peraturan tersebut. Betulkan pelanggaran sebaik sahaja anda melihatnya. Pelanggaran yang tidak dibetulkan mengajar seluruh sesi.
Fail arahan bukan sempadan keselamatan. Fail itu membentuk tingkah laku tetapi tidak menguatkuasakannya. Apa-apa perkara yang mahal akibat kegagalan, seperti kelayakan atau arahan yang merosakkan, hendaklah dikawal melalui permission atau hook. Menjauhkan rahsia daripada capaian ejen menggunakan prinsip yang sama terhadap data: jangan minta ejen supaya tidak membaca fail; pastikan fail itu tidak boleh dibaca.
Ringkasnya: buktikan bahawa fail telah dimuatkan, jadikan peraturan boleh disemak, letakkannya bersebelahan dengan perkara yang dikawalnya, dan apabila kadar kegagalan masih penting, keluarkan peraturan itu daripada prosa. Peraturan yang tidak boleh diabaikan oleh ejen ialah peraturan yang tidak pernah diminta daripada ejen.
FAQ
Mengapakah Claude Code mengabaikan CLAUDE.md saya?
Semak dahulu sama ada fail itu telah dimuatkan sebelum menganggapnya diabaikan. Jalankan /context dan lihat senarai Memory files; fail yang tidak disenaraikan di situ tidak terdapat dalam perbualan. Fail arahan dihantar sebagai mesej pengguna selepas gesaan sistem dan dianggap sebagai konteks, bukan konfigurasi yang dikuatkuasakan. Oleh itu, tiada jaminan pematuhan yang ketat. Kebanyakan kes sebenar berpunca daripada salah satu daripada empat perkara: fail berada dalam subdirektori yang tidak pernah dibaca oleh ejen, dua fail bercanggah lalu model memilih salah satu secara arbitrari, peraturan terlalu umum untuk dibandingkan dengan sesuatu tindakan, atau kod sekeliling menunjukkan perkara yang bertentangan dengan peraturan itu.
Adakah penyuntingan fail arahan semasa sesi mengubah apa-apa?
Tidak bagi salinan yang sudah berada dalam perbualan. Fail di atas direktori kerja anda dimuatkan sepenuhnya semasa pelancaran, jadi teks yang dipegang oleh model ialah teks pada waktu pelancaran. Untuk memuatkan perubahan, mulakan sesi baharu atau minta ejen membaca fail itu menggunakan alat fail biasanya. Tindakan tersebut memasukkan versi semasa ke dalam perbualan sebagai mesej baharu. Selepas pemadatan, fail akar projek dibaca semula daripada cakera, jadi versi baharu turut dimuatkan pada ketika itu.
Fail manakah yang diutamakan apabila CLAUDE.md akar dan fail bersarang bercanggah?
Tiada satu pun yang boleh diutamakan dengan pasti. Fail yang ditemui digabungkan ke dalam konteks dan bukannya mengatasi satu sama lain. Susunannya bergerak dari akar sistem fail ke direktori kerja anda, jadi fail yang paling hampir hanya dibaca kemudian. Tiada enjin keutamaan untuk menyelesaikan percanggahan, dan dokumentasi Claude Code menyatakan bahawa peraturan yang bercanggah mungkin diselesaikan secara arbitrari. Tulis fail bersarang sebagai tambahan yang menyatakan path yang dikawalnya, dan padamkan percanggahan itu. Jangan cuba mengatasinya dengan peraturan yang dianggap lebih tinggi keutamaannya.
Adakah arahan saya kekal selepas /compact?
Bergantung pada cara arahan itu dimuatkan. CLAUDE.md akar projek, peraturan tanpa skop dan memori automatik disuntik semula daripada 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 hanya ditaip dalam chat akan kekal jika peringkas kebetulan mengekalkannya. Jika sesuatu peraturan mesti berkuat kuasa sepanjang sesi, letakkannya dalam fail akar projek tanpa frontmatter paths:.
Bilakah sesuatu peraturan patut dijadikan hook dan bukannya prosa?
Apabila semakan itu bersifat deterministik dan kos jika terlepas lebih tinggi daripada kos menulis skrip kecil. Sekatan path fail, arahan yang wajib dijalankan sebelum commit dan panggilan alat yang dilarang semuanya sesuai. Hook PreToolUse yang keluar dengan status 2 menyekat panggilan alat sepenuhnya dan menyerahkan teks stderr anda kepada model sebagai sebabnya. Oleh itu, hook tersebut terus berkuat kuasa sama ada peraturan itu masih terdapat dalam konteks atau tidak. Apa-apa sahaja yang boleh diputuskan oleh formatter atau linter hendaklah dikendalikan oleh alat tersebut dan dipadamkan sepenuhnya daripada fail arahan.