TL;DR
Claude Code Hooks 是一套自動化機制,讓你替 AI 設定「工作守則」。 改完程式碼自動排版、敏感檔案碰不得、做完自動跑測試——設定一次,永遠生效,再也不用重複提醒。
這篇文章適合:
- 已在用 Claude Code,但發現自己重複說「幫我排版一下」「記得跑測試」的人
- 想讓 AI 助理的行為更可預測、更符合專案規矩的人
- 擔心 AI 改到密碼檔或環境設定的謹慎派
- 用過 Agent Skill 或 MCP,想進一步把工作流自動化的 Vibe Coder
本文基於 Claude Code 2026 年版本。 詳細設定語法請參考 Claude Code 官方 Hooks 文件。
那句你每天都在說的話
小美用 Claude Code 半年了。
從一個簡單的部落格改版開始,她已經能叫 Claude 幫她重構整個元件、改完 API 路由、加上新功能。效率很好,成果也不錯。
但有一件事讓她很困擾。
每次 Claude 改完檔案,她都要補一句:「幫我跑一下 prettier。」
第一次說,正常。第二次說,好吧。第十次說的時候,她開始懷疑人生——「我雇了一個這麼強的助理,為什麼連整理桌面都要我提醒?」
第二十次說的時候,她才意識到:這句話她可能要說一輩子。
除非,有一個方法能把這件事變成「自動的」。
什麼是 Hooks?
Hooks 是你替 Claude 設定的「工作守則」。
你可以把它想像成這樣:你雇了一個很能幹的助理,但他有點隨性。做完事不一定會整理,偶爾會動到你說過不能動的東西,而且你不在旁邊的時候他不知道要叫你。
你有兩個選擇:
- 每次開口提醒他——「記得排版」「不要動 .env」「做完跑測試」
- 把規矩寫在牆上——設定一次,永遠生效
Hooks 就是第二種。
它不需要 AI 去「理解」你的意思——這是確定性的規則,觸發就執行,沒有例外。用流程圖來看,Hook 的運作方式是這樣的:
flowchart LR
A[Claude 執行動作] --> B{Hook 檢查}
B -->|條件符合| C[自動執行指令]
B -->|條件不符| D[跳過]
C --> E[繼續工作]
D --> EClaude Code 目前支援超過 15 種 Hook 事件,本文聚焦其中最實用的 4 種。
Hooks 跟 Skill、Permission 有什麼不同?
如果你用過 Claude Code 的其他功能,可能會好奇三者的差別:
| 功能 | 做什麼 | 像什麼 |
|---|---|---|
| Permission | 控制 Claude 能做什麼 | 門禁卡——「這扇門你不能進」 |
| Skill | 教 Claude 新的指令 | 新技能——「教你怎麼煮飯」 |
| Hooks | 自動執行特定動作 | 規矩——「飯煮好自動關火」 |
Permission 是靜態的限制,Skill 是要 AI 理解的指令,Hooks 則是確定性的自動化——觸發條件一滿足,不管 AI 當下在想什麼,指令一定執行。
有 Hooks vs 沒有 Hooks:到底差在哪?
最直覺的理解方式,是看同一件事在兩種狀態下會怎樣發展。
你現在每天重複說幾次同樣的提醒?數一下,可能比你想的多。
改完程式碼要排版
沒有 Hooks 的小美:
小美叫 Claude 改了首頁標題的樣式。Claude 改好了——但排版亂了。小美說:「幫我跑一下 prettier。」Claude 跑了。隔天,小美又叫 Claude 加一個 API 路由。Claude 加好了——排版又亂了。小美又說了同一句話。
有 Hooks 的小美:
小美叫 Claude 改了首頁標題。Claude 改好了,排版自動整齊——因為 Hook 在改完的那一瞬間就自動執行了 prettier。小美什麼都沒說。隔天加 API 路由,一樣。她再也不用開口提醒。
碰到敏感檔案
阿凱是個有安全意識的開發者。他在用 Claude 重構一個有金流的專案,.env 裡面放了 API key——非常敏感。
沒有 Hooks:Claude 在重構的過程中,順手改了 .env.local 裡的一個變數名稱。阿凱沒注意,直接 push。上線後金流掛了,花了兩小時才找到原因。
有 Hooks:Claude 想改 .env.local,Hook 直接擋掉。Claude 收到訊息:「此檔案受保護,不可修改。」阿凱什麼都不用做,因為保險箱本來就鎖著。
差別在哪裡? 不是 AI 變聰明了,是你把信任邊界用機制鎖住,而不是靠回憶和提醒。
做完想停下來
小陳想確保每次 Claude 停下來前都跑過測試。
沒有 Hooks:Claude 說「全部改完了!」就停了。小陳問:「有跑測試嗎?」Claude:「抱歉,有兩個失敗了。」小陳:「那先修好再停。」
有 Hooks:Claude 改完準備停止——Hook 自動跑測試——兩個失敗——Hook 不讓他停——Claude 繼續修——修完再跑——全過了——停止。全程不需要小陳開口。
差別在哪裡? 不是每次拜託他「記得跑測試」,而是用機制保證每次停止前都會經過同樣的檢查。
四大應用場景
場景一:改完自動排版(自動化)
這是最多人第一個用的 Hook,也是我自己每天都在用的。
flowchart LR
A[Claude 改完檔案] --> B[Hook 自動觸發] --> C[執行 Prettier 排版] --> D[檔案自動整齊]痛點:Claude 改完程式碼不會自動跑 formatter,你每次都要手動提醒。
怎麼做:在設定檔裡告訴 Claude:「每次你改完或寫入任何檔案之後,自動跑 prettier 排版。」
設定完之後,你再也不用說「幫我 prettier」。Claude 每次改完,排版自動整齊。
場景二:保護敏感檔案(守護)
flowchart LR
A[Claude 要改檔案] --> B{是敏感檔案?}
B -->|.env .pem .key| C[❌ 直接擋掉]
B -->|一般檔案| D[✅ 允許修改]痛點:Claude 不知道哪些檔案是禁區,可能在重構時順手改到 .env(放密碼的檔案)。
怎麼做:在設定檔裡告訴 Claude:「你在修改任何檔案之前,先檢查一下,如果是 .env、.pem、.key 這類敏感檔案,直接擋掉,不准動。」
這就像在保險箱上裝鎖——他想開都開不了。
場景三:壓縮後重新提醒規矩(記憶補強)
痛點:對話太長時,Claude Code 會自動壓縮上下文。壓縮後 Claude 可能忘記「這個專案用 Bun 不要 npm」這類規矩。
怎麼做:在設定檔裡告訴 Claude:「每次上下文被壓縮後,自動重新提醒以下規矩——本專案用 Bun、port 是 3004、部署前跑測試。」
這樣就算對話壓縮了,Claude 也不會忘記最關鍵的事。
場景四:做完通知你一聲(不用盯螢幕)
我自己也在用這個。叫 Claude 做耗時的任務,你去泡咖啡,做完後電腦會發出聲音通知你。
怎麼做:在設定檔裡告訴 Claude:「當你需要我注意的時候(做完了、需要確認),播放一個系統音效。」
macOS 上就是一聲清脆的玻璃聲;想要桌面彈窗通知也行。你不用一直盯著螢幕等。
怎麼設定?
好消息是,Hooks 的設定門檻很低。你需要做的只有一件事:
在你的專案裡,建立一個設定檔 .claude/settings.json。
這個檔案用來告訴 Claude:在什麼時間點、自動做什麼事。每個 Hook 就是一條規矩。
你也可以不手動建檔——直接在 Claude Code 裡輸入 /hooks 指令,它會帶你用互動方式一步步設定。
設定放哪裡?三個層級
| 位置 | 適用範圍 | 適合什麼時候用 |
|---|---|---|
專案裡的 .claude/settings.json |
只有這個專案 | 專案特有規矩(如:「這個專案用 Bun」) |
家目錄的 ~/.claude/settings.json |
所有專案 | 通用規矩(如:自動排版、聲音通知) |
在 Claude Code 輸入 /hooks |
互動式設定 | 不想手動改檔案的時候 |
建議:自動排版和聲音通知放全域(所有專案都用),檔案保護和規矩提醒放專案層級。
兩種 Hook 的差別:「自動做」vs「先擋住」
Hook 只有兩種基本行為:
- 自動做:Claude 完成動作後,自動執行你設定的指令(比如自動排版、播放音效)。不需要擋住任何東西。
- 先擋住:Claude 準備做某件事之前,Hook 先檢查一下,不符合條件就阻止(比如保護敏感檔案、測試沒過不准停)。
大部分人最常用的是「自動做」——改完自動排版、做完叫你一聲。簡單、安全、不用想太多。
這就是我目前在用的設定
我自己每天在用的就兩個:改完自動排版和做完叫我一聲。
簡單、不花時間、每天都在幫我省事。不需要複雜的設定,也不需要懂什麼程式語法——打開 /hooks 指令,照著畫面點幾下就好。
從「提醒」到「自動」
設定了第一個 Hook 之後,小美再也沒說過「幫我跑 prettier」。改完檔案,自動整齊。
後來她又加了敏感檔案保護、壓縮後提醒、做完通知——四個 Hook,十分鐘設定完。
工具應該替你想,而不是等你提醒。
如果你現在想開始,打開 Claude Code,輸入 /hooks,先設定一個「改完自動排版」。設定完之後,你會馬上感受到那個「啊,我不用說了」的舒暢感。然後你會忍不住加第二個、第三個。
你會先設定哪個 Hook?
