跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

Hook 的邊界與安全

接入真實工作流,先停一下

學了 Hook 的基本觀念,很多人會興沖沖地直接開始設定:把 Hook 接進工作資料夾、讓它自動移動檔案、自動改名、自動提交——

然後踩到第一個坑。

Hook 是自動執行的腳本。這代表它不會停下來問你「確定嗎?」它觸發了,就直接做。你在這裡犯的錯,會比手動操作更難發現、更難還原。

所以在把 Hook 接進真實工作流之前,要先建立幾個好習慣。


從測試資料夾開始

最重要的一條規則:先在測試資料夾跑,確認行為正確,再接到真實環境。

建立一個 ~/hook-test/~/sandbox/ 這樣的資料夾,把假資料丟進去,讓 Hook 在那裡練習。

在這個「沙盒」裡,你可以放心觀察 Hook 的行為:

  • 觸發條件對了嗎?
  • 它動到的是正確的檔案嗎?
  • 有沒有意外的副作用?

確認一切符合預期之後,再把設定指向真實資料夾。

涉及以下動作的 Hook 尤其要謹慎:

  • 移動或重命名檔案
  • 刪除任何東西
  • 自動填表或提交表單
  • 改寫設定檔

這些動作一旦執行,復原成本比你想的高。


Token 成本:Hook 觸發 AI 的那種

上一課說過,大部分 Hook 本身不耗 token——它就是一段腳本,跑完就結束。

但有一種情境要特別注意:Hook 觸發了一個 Skill,而那個 Skill 呼叫了 AI 模型。

舉個例子:

你設了一個 Hook,每次存檔就自動叫 AI 幫你 review 剛剛修改的段落。

這個流程跑起來很爽——存個十次,AI 自動給了十次回饋。然後你看到帳單。

這不是說這種用法不行,而是你要先想清楚:

  • 這個 Hook 一天大概會觸發幾次?
  • 每次觸發送給 AI 的 prompt 有多大?
  • 這個成本是你願意接受的嗎?

如果是低頻觸發(例如「任務全部完成時」才叫一次 AI 產報告),成本通常很合理。如果是高頻觸發(例如「每次按下存檔」),就要特別評估。


不要一次設太多 Hook

Hook 跟 Skill 一樣,設太多會讓系統變得難以維護。

你的 AI 工作流是一個整體,Hook 是裡面的自動觸發點。當你設了二十個 Hook,每個都在不同時刻觸發、做不同的事,幾個月後回頭看,你自己都搞不清楚這些 Hook 是在什麼情況下跑、它們之間有沒有衝突。

從少開始,確認穩定之後再增加。

一個確實在用的 Hook,勝過五個你忘記設定了什麼的 Hook。


好的 Hook 設計習慣

每個 Hook 只做一件事

一個 Hook 做太多事,除錯就變得很麻煩。你不知道是哪一步出問題。

把複雜的流程拆成幾個單純的 Hook,每個只負責一個動作,清楚很多。

命名要讓人一眼看懂

format-edits.sh        ✅ 清楚
notify-done.sh         ✅ 清楚
run-after-commit.sh    ✅ 還行
script1.sh             ❌ 是什麼?
final_v3.sh            ❌ 更不知道是什麼

檔名是你未來的自己、或是隊友看到的第一個線索。

記錄每個 Hook 的用途

在 Hook 腳本開頭,加幾行說明就夠了:

這不是文件主義,這是你未來的保險。


AI 協作:學了這個,跟 AI 怎麼配合?

你現在知道 Hook 的邊界在哪裡。下一步是讓 AI 幫你設計出符合這些邊界的 Hook。

你的人類優勢

  • 你知道哪些資料夾裡放的是不能出錯的東西
  • 你能判斷一個 Hook 在你的工作流裡會觸發多少次
  • 你能評估哪些動作需要人工確認、哪些可以全自動

可以這樣跟 AI 說

我想設一個 Hook,在 Claude Code 每次寫入檔案後,自動把那個檔案複製一份到 ~/backup/ 資料夾。
但我希望:1. 只有在 ~/projects/ 底下的檔案才觸發;2. 如果複製失敗要在終端機顯示錯誤;3. 不要叫 AI 做任何事,就是純腳本。
幫我寫這個 Hook 腳本,然後說明怎麼設定進 Claude Code。


互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩

挑戰任務

Task 1

想一個你打算設的 Hook。描述:1. 它會觸發什麼動作;2. 你會先在哪個測試資料夾試跑;3. 這個 Hook 會不會呼叫 AI?如果會,你打算怎麼控制它的觸發頻率?

BackNext Lesson →