Claude Code Hooks 完全指南 — 讓 AI 自動化你的開發流程
如果你已經在用 Claude Code 開發專案,你可能會想:能不能讓 AI 在執行特定動作時自動做些事情?比如寫完程式碼就自動格式化,或者執行危險指令前先攔截?
答案是:Hooks。
Hooks 是 Claude Code 藏在 .claude/settings.json 裡的強大功能,讓你在 AI 的關鍵行為節點(執行工具前、執行工具後、對話結束前)插入自訂腳本,實現自動化品質閘門、安全檢查、甚至學習回顧。
這篇文會用繁體中文帶你從零理解 Hooks,包含設定方式與三個實際可用的範例。
Hooks 是什麼?
Claude Code 的 Hooks 分為三種:
1. PreToolUse — 工具執行前觸發
在 Claude Code 呼叫任何工具(Read、Bash、Write、Edit 等)之前執行。
常見用途:
- 危險指令攔截(
rm -rf、破壞性 git 操作) - 權限檢查
- 必要檔案驗證
2. PostToolUse — 工具執行後觸發
在工具執行完成後執行。這時候可以看到工具的輸出結果。
常見用途:
- 程式碼格式化(black、prettier)
- 語法檢查
- 自動化測試
- 部署後健康檢查
3. Stop — 對話結束前觸發
當使用者輸入 exit 或 Claude Code 決定結束對話時觸發。
常見用途:
- Session 結束前的學習摘要
- 成本追蹤統計
- 未完成決策提醒
為什麼需要 Hooks?
以下是我認為 Hooks 最有價值的三個場景:
品質閘門(Quality Gate)
「每次 Commit 前自動檢查程式碼品質」——過去需要 CI/CD pipeline,現在一個 Hook 就能做到。
安全檢查
Claude Code 很強,但難免會執行危險指令。PreToolUse Hook 可以在 rm -rf 執行前跳出確認,或者對 DROP TABLE 直接說不。
自動化紀錄與學習
每次 Session 結束自動跑成本統計、學習摘要,把 AI 協作變成一個有記憶的系統。
設定方式
在專案或全域的 .claude/settings.json 中加入 hooks 欄位:
| |
每個 Hook 由以下元素組成:
| 欄位 | 說明 |
|---|---|
matcher | 符合哪個工具才觸發,如 Bash、`Edit |
hooks[].type | 目前只支援 command |
hooks[].command | 要執行的指令,可帶環境變數如 $TOOL_INPUT |
hooks[].statusMessage | 執行時顯示在 Claude Code 的提示文字(可選) |
hooks[].timeout | 逾時秒數(可選,預設 30s) |
實際範例
範例一:PostToolUse — 寫完 Python 自動跑 Black 格式化
當你用 Edit 或 Write 修改 .py 檔案後,自動執行 black 格式化:
| |
| |
範例二:PreToolUse — Bash 指令安全攔截
在執行任何 Bash 指令前,先檢查是否為危險操作:
| |
| |
範例三:Stop — Session 結束前自動學習
每次對話結束前,自動生成這次 Session 的學習摘要與成本統計:
| |
| |
進階用法
1. Matcher 萬用字元
| Matcher | 說明 |
|---|---|
* | 所有工具 |
Bash | 僅 Bash |
| `Edit | Write` |
| `Read | Glob |
2. statusMessage — 友善提示
| |
執行時 Claude Code 會在介面顯示這段文字,讓你知道正在發生什麼。
3. timeout — 避免卡死
| |
預設 30 秒。對格式化工具或網路操作建議設 timeout,避免無限等待。
4. 多個 Hook 串聯
可以對同一個觸發點掛多個 Hook:
| |
結語
Hooks 是 Claude Code 最被低估的功能之一。它把 AI 從一個「被動回答問題的工具」變成「主動參與開發流程的自動化夥伴」。
從簡單的程式碼格式化,到複雜的安全閘門與學習系統,Hooks 的可能性取決於你的開發流程需要什麼。
下一篇預告: 我們會討論如何在 Claude Code 中結合 MCP(Model Context Protocol)打造更強大的 AI 工作流。敬請期待。
參考資料
- Hooks reference — Claude Code 官方文件 — PreToolUse、PostToolUse、Stop 三種 Hook 的完整 API 參考與參數說明
- Claude Code settings — 官方設定文件 —
settings.json設定格式、層級覆蓋規則與環境變數配置 - Intercept and control agent behavior with hooks — Claude API Docs — Agent SDK 層級的 Hook 攔截與控制行為文件
- Claude Code Hooks Mastery — GitHub — 社群整理的 Hooks 實作範例與進階模式集合