← Agent 實驗室
課程 6面試 7延伸 Hooks

Hooks 實驗

Hook 是 Claude Code 在特定時機「自動執行的 shell 指令」。規則寫成 hook,每次都會跑,不必靠模型記得。左邊組出 hook 設定、選要重播的動作;右邊看產生的 settings JSON,以及每個動作碰到哪些 hook、結果如何。

Hook 設定

改動即時重播
目前的 hooks
新增一個 hook

要重播的 agent 動作
對照情境

這是教學用模擬:JSON 欄位、exit code 的語意是常見做法的示意,實際設定欄位與行為請以 Claude Code 官方文件為準。Hook 本身會在你的電腦上執行,只放你看得懂、信得過的指令。

實際發生的事

0
擋下幾次
0
hook 自動跑幾次
0
自動修正/已記錄
0
事後才發現(擋不住)
示意:由左邊設定產生的 .claude/settings.json

      
逐步重播:每個動作碰到哪些 hook

exit 0 通常代表允許;PreToolUse 的 exit 2 通常代表擋下,並把 stderr 的文字回給模型(常見做法,以官方文件為準)。

對照:只寫在 CLAUDE.md vs 用 hook

同一批動作
動作與規則只寫在 CLAUDE.md用 hook(依左邊設定)
CLAUDE.md 是「請模型記得」,屬於機率;hook 是「系統一定執行」,屬於確定性。需要百分之百的規則(安全、禁區、必跑檢查)放 hook,風格偏好留在 CLAUDE.md。

看完要記得

口試怎麼答(約 30 秒)

Hook 就是 Claude Code 在生命週期事件點自動執行的 shell 指令,用來把規則變成確定性的強制,而不是靠模型記得。例如我會在 PreToolUse 掛一個 hook,偵測到 rm -rf 或 git push --force 就 exit 2 擋下,並把原因回給模型;在 PostToolUse 對改過的 .cs 檔自動跑 dotnet format。CLAUDE.md 只是提示,長對話壓縮後可能被忘掉,hook 每次都會跑。