Hooks
Apa itu ini
Bayangkan lampu dengan sensor gerak: lampu itu menyala sendiri begitu ada orang lewat, tanpa ada yang harus ingat untuk menekan saklar. Hook (kait) bekerja dengan cara yang sama. Hook adalah perintah buatanmu sendiri yang berjalan otomatis pada titik tertentu dalam siklus hidup sebuah — sebelum ia menjalankan perintah , setelah ia mengedit sebuah berkas, saat sebuah sesi dimulai, dan seterusnya. Hook memungkinkanmu mengamati dan mengendalikan apa yang dilakukan agent menggunakan skrip biasa, alih-alih hanya mempercayai agent untuk mengingat sebuah aturan dengan sendirinya. Hook adalah lapisan penegakan (enforcement layer) dari sebuah harness coding.
Kelebihan
- Deterministik: sebuah hook berjalan setiap kali, sehingga aturan tidak bisa terlupakan atau diabaikan begitu saja.
- Ditulis sebagai shell biasa atau skrip, jadi kamu bisa melakukan apa pun yang bisa dilakukan mesinmu.
- Bisa memblokir sebuah aksi, bukan sekadar mencatatnya — sebuah hook "pre-command" bisa menolak perintah yang berbahaya.
- Sangat berguna untuk pagar pengaman (guardrail): memformat otomatis saat menyimpan, menjalankan test setelah pengeditan, memindai rahasia () sebelum .
Kompromi
- Hook adalah kode sungguhan yang berjalan otomatis, jadi hook yang penuh bug bisa merusak alur kerja.
- Hook yang lambat menambah latensi pada setiap kejadian yang memicunya.
- Hook dipicu berdasarkan pola, jadi hook yang terlalu longgar cakupannya bisa mengganggu aksi yang sah.
- Butuh pengaturan lebih banyak, dan menjadi satu tempat lagi yang perlu diperiksa saat ada sesuatu yang berperilaku tak semestinya.
Kapan menggunakannya
Gunakan hook saat kamu menginginkan jaminan yang pasti (hard guarantee) atas perilaku agent — pemformatan otomatis, test yang wajib dijalankan, pemblokiran perintah yang merusak, atau pencatatan setiap aksi — alih-alih mengandalkan kepatuhan sukarela dari agent.
Kecocokan dengan vibe coding
Hook adalah cara kamu menjaga agent tetap aman sambil membiarkannya bergerak cepat. Agent mengusulkan; hook menegakkan. Sebuah hook "before run" yang memblokir rm -rf, atau sebuah hook "after edit" yang menjalankan type checker, mengubah asisten yang bebas bergerak menjadi asisten yang secara fisik tidak bisa melewati pagar pengamanmu.
// run the formatter after every file edit
{
"hooks": {
"PostToolUse": [
{ "matcher": "Edit", "command": "npx prettier --write $FILE" }
]
}
}