Claude Code Hooks 教學:AI 會忘,鉤子不會
文 / Coolkid發布:2026-07-23閱讀約 7 分鐘

短答給趕時間的人:hook(掛鉤)是在 Claude Code 的固定時機自動執行你指定動作的機制,像開場自動載入進度、改完檔案自動跑檢查、收工自動記錄。跟寫在 CLAUDE.md 的規則差在強制力:規則是「拜託 AI 記得做」,AI 可能忘。hook 是「系統到點就執行」,不經過 AI 的記性。設定寫在 settings.json,第一個 hook 可以叫 AI 幫你設,10 分鐘搞定。
會想用 hook,通常是被同一件事煩到。
我的情況是「AI 改完程式常忘記跑檢查」。
在 CLAUDE.md 寫了「改完要檢查」,8 成會做,但就是有那 2 成忘記,而炸掉的都在那 2 成裡。
後來把檢查做成 hook:只要 Python 檔被改了,檢查自動跑,有問題當場擋下來。
從此不靠 AI 的記性。這篇講 hook 是什麼、什麼該用 hook、第一個怎麼設。
Hook 是什麼?跟「寫規則」差在哪?
CLAUDE.md、skill 都是「用文字影響 AI 的行為」,那 hook 呢?
AI 讀了、理解了、大部分時候照做,但本質是「拜託」,忙起來會漏。
hook 不走這條路,而是設定在系統層的自動開關,到了指定時機,系統直接執行你指定的指令。
時機例如「AI 剛改完一個檔案」。AI 記不記得無所謂,反正一定會跑。
判斷該用哪個?一句話:「希望它做」寫規則,「必須每次都做」設 hook。
格式檢查、安全掃描、進度記錄這種「漏一次就可能出事」的,都是 hook 的守備範圍。
規則是家教(通常有效),hook 是門禁(刷卡才能過)。重要的事交給門禁。
5 個時機點,配我實際在用的例子
hook 可以掛在這些時機(名稱以官方文件為準,2026-07):
| 時機 | 白話 | 我的真實用法 |
|---|---|---|
| SessionStart | 每次開場 | 自動載入專案斷點檔,新對話不失憶的核心 |
| UserPromptSubmit | 你每送出一句話 | 自動附上現在時間,AI 從此知道今天幾號 |
| PreToolUse | AI 要動手之前 | 擋高風險動作 (碰到特定資料夾就攔下) |
| PostToolUse | AI 改完檔案之後 | 自動跑程式檢查,寫壞當場擋回去 |
| Stop | AI 回合結束時 | 檢查該更新的紀錄檔有沒有更新 |
表裡每一條,都是我電腦上真的在跑的 hook。
其中最有感的是兩個。
SessionStart 載斷點,跨對話接關不靠自己記得,就是 checkpoint 那篇的自動化版。
PostToolUse 跑檢查,AI 寫的 Python 有問題,存檔當下就被檢查工具擋下來要求修正,不會等到執行才炸。
第一個 hook 動手做:改完 Python 自動檢查
hook 設定放在 settings.json,個人層級或專案 .claude/ 都可以。
概念長這樣:PostToolUse 時機、對到編輯動作、跑檢查指令:
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{ "type": "command", "command": "你的檢查指令" }]
}]
}
}
非工程師會怕嗎?這段 JSON 不用自己手寫。
打開 Claude Code 直接說:「幫我設一個 hook,每次你改完 .py 檔就自動跑 ruff 檢查,設定寫到我的 settings.json」。
讓 AI 自己給自己上規矩,它對這套設定格式比誰都熟。
設完要驗收:隨便改一個 Python 檔,看檢查有沒有自動跑。
這裡有兩個安全提醒。
第一,hook 執行的是真實指令,叫 AI 設的時候看一眼寫進去的 command 是什麼,別放你看不懂的東西。
第二,hook 自己壞掉會很吵,每次觸發都報錯,AI 做什麼都被打斷。
感覺不對就先把那段設定拿掉,修好再放回來。
先從一個開始:什麼事值得做成 hook?
千萬別一口氣設一堆。
從「你被煩最多次的那件事」開始。
AI 常忘記跑檢查就設 PostToolUse。每個新對話都要重新交代進度,就設 SessionStart 載斷點。怕碰到不該碰的資料夾,就設 PreToolUse 攔截。
一個 hook 穩定跑順了,再加下一個,不用急。
我的順序參考:第一個設的是 PostToolUse 檢查,因為最痛。
第二個是 SessionStart 載斷點,配合斷點檔,完整做法在 checkpoint 系統那篇。
之後才慢慢長出其他的。
hooks、skills、MCP 三樣齊了之後,Claude Code 就從「很會做事的助理」變成「有你的 SOP、你的門禁、你的工具箱的分身」。
這也是這系列三篇想帶你走到的地方。
附帶一提:裝了 hook 不代表有在跑。我曾經設了 30 幾個安全掃描 hook,幾個月後才發現設定檔放錯位置,全部從頭到尾沒有執行過。怎麼驗證、還有哪些 AI 寫程式碼常見的資安漏洞,整理在〈用 AI 做產品,你有考慮到資安風險嗎?〉。
Hook 是在 Claude Code 固定時機自動執行指定動作的機制,跟 CLAUDE.md 規則的本質差別是強制力:規則靠 AI 記得(會漏),hook 由系統到點執行(必跑)。「希望它做」寫規則、「必須每次做」設 hook。5 個時機:SessionStart(開場載進度)、UserPromptSubmit(送話時附時間)、PreToolUse(動手前攔截)、PostToolUse(改完自動檢查)、Stop(收工檢查紀錄),每個我都有真實在用的例子。設定在 settings.json,第一個 hook 直接叫 AI 幫你設(「改完 .py 自動跑檢查」),10 分鐘搞定。原則:從最痛的一件開始,跑穩再加。
名詞解釋
- hook(掛鉤)
- 在工具的固定時機(開始對話、寫完檔案、結束回合)自動執行你指定動作的機制。像是幫 AI 設「進門要換鞋」的家規,設一次每次都自動生效。
- JSON
- 程式之間交換資料的通用格式,長得像一層層的「名稱:內容」清單,人眼也讀得懂。
- 命令列(CLI, Command Line Interface)
- 用打字指令操作電腦的方式,沒有按鈕跟視窗。Claude Code 就是命令列工具。
- 排程(cron)
- 讓程式「每天 8 點」「每小時」自動執行的定時器。自動發文、定期抓資料都靠它。
- Python
- 入門門檻最低的主流程式語言之一,資料處理、自動化、AI 領域的首選。
相關文章
常見問題FAQ
Claude Code 的 hook 是什麼?
在固定時機自動執行你指定動作的機制:開場自動載入進度、AI 改完檔案自動跑檢查、收工自動記錄。設定寫在 settings.json。跟寫規則的差別在強制力,CLAUDE.md 的規則靠 AI 記得(忙起來會漏),hook 由系統到點執行,不經過 AI 的記性,漏一次就出事的檢查都該用 hook。
Hook 跟 CLAUDE.md 的規則差在哪?
「拜託」跟「強制」的差別。CLAUDE.md 寫「改完檔案要跑檢查」,AI 讀了、大部分照做,但有 2 成機率忘記,炸掉的都在那 2 成。hook 設「PostToolUse 時自動跑檢查指令」,是系統層的門禁:AI 改完檔案,檢查一定執行。判斷口訣:希望它做 → 寫規則;必須每次都做 → 設 hook。
不會寫程式能設定 hooks 嗎?
能,用最偷懶也最實際的方法:叫 Claude Code 幫自己設。直接說「幫我設一個 hook:每次你改完 .py 檔自動跑 ruff 檢查,寫進 settings.json」,它對自己的設定格式最熟。你要做的是(1) 看一眼它寫的 command 內容合不合理 (2) 驗收:叫它改個檔案,看檢查有沒有自動跑。JSON 看不懂沒關係,會驗收就好。
Hook 有哪些觸發時機?
常用 5 個:SessionStart(每次開場,適合自動載入專案進度)、UserPromptSubmit(你每送出訊息,適合附加即時資訊如時間)、PreToolUse(AI 動手前,適合攔截高風險動作)、PostToolUse(AI 改完檔案後,適合自動檢查/格式化)、Stop(回合結束,適合檢查紀錄有沒有更新)。完整清單以官方文件為準。從你最痛的一個時機開始設,穩了再加。
Hooks、Skills、MCP 該先學哪個?
順序:先把基本操作跟 CLAUDE.md 用熟(零門檻) → 碰到「AI 摸不到外部服務」再接 MCP → 發現同一套做法每次都要重教,寫成 skill → 發現有些檢查「靠它記得」會漏,設 hook 強制。三件套各管一塊:MCP 給工具、skill 給知識、hook 給紀律,都到位後,你的 Claude Code 就是照你規矩做事的分身。
看完這篇之前先確認:
- 有些檢查希望「每次都自動做」而不是靠 AI 記得
- 想在 AI 改完檔案後自動跑檢查 / 格式化
- 想搞懂 hooks 跟 CLAUDE.md 寫規則差在哪
- 還不熟 Claude Code 基本操作 (hooks 是進階題)
- 完全不想碰設定檔 (hooks 要編輯 JSON)
- 想控制 AI 的回答內容 (hooks 管流程不管內容)
