Hook 是最簡單的升級方式。只需 5 分鐘,就能強制執行安全規則。本文提供可複製的模板。
什麼是 Hook?
Hook 是在 Claude 工作流程的特定時刻自動觸發的指令。作用類似非同步程式設計的「條件判斷」和「回呼函式」。
3 種 Hook 類型
| Hook 類型 | 何時使用 | 例子 |
|---|---|---|
| PreToolUse | 工具執行前阻止 | 阻止讀取 .env |
| PostToolUse | 工具執行後自動化 | 自動執行 prettier |
| Stop | 完成前驗證並迭代 | 驗證 JSON 有效性 |
模板 1:PreToolUse Hook(保護敏感檔案)
用途:阻止 Claude 讀取或修改 .env、secrets、credentials 檔案
// ~/.claude/settings.json
{
"hooks": {
"preToolUse": [
{
"description": "Prevent reading .env files",
"toolName": "Read",
"condition": "filename contains '.env' OR filename contains 'secrets'",
"action": "block",
"message": "❌ Cannot read .env files. Use environment variables instead."
}
]
}
}
模板 2:Stop Hook(驗證 JSON)
用途:在完成前驗證 JSON 有效性,失敗則自動重試
// ~/.claude/settings.json
{
"hooks": {
"stop": [
{
"description": "Validate JSON before stopping",
"condition": "task involves JSON",
"validator": {
"command": "jq empty /tmp/output.json",
"allowRetry": true,
"maxRetries": 3,
"retryMessage": "JSON invalid. Fixing syntax..."
}
}
]
}
}
快速 4 步實施
- 選擇規則:找到被多次違反的規則
- 寫 Hook:複製上面的模板,修改 condition
- 編輯 settings.json:添加到 ~/.claude/settings.json
- 重啟 Claude Code:Hook 在啟動時載入
- 測試:故意違反規則,驗證 Hook 是否阻止
故障排除
Q:Hook 不生效?
- ✓ 確保重啟了 Claude Code
- ✓ 檢查 settings.json 是否有效:`jq . ~/.claude/settings.json`
- ✓ 查看日誌:`tail ~/.claude/logs/hooks.log`
下一步:
Hook 太簡單了?嘗試 Skill(複雜工作流自動化)
→ 文章 3:Skill 操作指南(1 小時深度)
發佈留言