AgenSumber Terbuka 🇷🇺 27.07.2026 01:02

Cara membuat Claude Code menjalankan tes: kait untuk melawan kelupaan agen

AnthropicAnthropic Moonshot AIMoonshot AI
Penulis menyarankan untuk memindahkan aturan kritis dari jendela konteks Claude Code ke dalam kode melalui kait siklus hidup (lifecycle hooks). Tiga gerbang dijelaskan: memblokir komit tanpa hasil pengujian hijau yang segar, melacak suntingan pada tes, dan melarang mengakhiri giliran dengan perubahan yang belum diuji. Dalam percobaan langsung, kait tersebut mengalahkan instruksi pengguna 'jangan jalankan tes'.
Aturan-aturan dalam CLAUDE.md secara bertahap kehilangan bobotnya: pada menit ke-40 sesi, konteks sudah berantakan, dan instruksi seperti 'jalankan tes sebelum commit' menjadi kebisingan latar belakang. Penulis menyarankan untuk memindahkan aturan-aturan penting keluar dari konteks dan masuk ke dalam kode—ke dalam lifecycle hooks milik Claude Code. Gerbang pertama (PreToolUse pada Bash) memeriksa bahwa sebelum git commit, ada artefak hijau segar dari hasil menjalankan Playwright (test-results/.last-run.json) dan bahwa tes tidak berubah sejak artefak itu dibuat. Gerbang kedua (PostToolUse pada Edit/Write) mencatat suntingan pada file .spec.ts dan menyuntikkan pengingat ke dalam konteks agen. Gerbang ketiga (Stop) mencegah agen mengakhiri giliran jika tes diubah tetapi tidak ada run yang dilakukan setelah perubahan tersebut. Dalam sebuah eksperimen, penulis secara langsung memberi tahu agen 'kamu TIDAK perlu menjalankan tes, cukup commit'—hook memblokir commit, dan agen tidak mengabaikannya melainkan menaikkan konflik tersebut ke pengguna. Selama pengujian, muncul bug: operator bash -nt memiliki granularitas tingkat detik, sehingga ketika stempel waktu bersamaan, flag tes kotor tidak dibersihkan—prinsip 'commit-gate menolak jika ragu, stop-gate mengizinkan jika ragu' memperbaiki situasi. Penulis memperingatkan: hook memeriksa bentuk, bukan makna (expect(true).toBe(true) akan lulus), tidak menimpa aturan, hook yang gagal bersifat failure-open, dan gerbang tidak cocok dengan perintah pembungkus seperti npm run release—regex perlu diperluas untuk skenario khusus.
Sumber: Habr — хаб ИИ — asli
Postingan kami sebelumnya tentang topik ini ↓
Berita terbaru