~/VibeHandbook
免費 PDF

代理工具

docs.claude.com

Hooks

是什麼

想像一盞人體感應燈:有人走過的那一刻它會自己亮起,誰也不用記著去按開關。hook 的工作方式也是如此。hook 是你自己的命令,會在 agent 生命週期的特定時點自動執行——比如在它執行 shell 命令之前、編輯檔案之後、會話開始時等等。hook 讓你用普通指令碼來觀察和控制 agent 的行為,而不必指望它自己記住某條規則。它們是程式設計 harness 的執行層。

優勢

  • 確定性:hook 每次都會執行,所以規則不會被遺忘或被狡辯掉。
  • 以普通 shell 或指令碼編寫,因此你的機器能做的事它都能做。
  • 不僅能記錄,還能阻止某個操作——一個預命令 hook 可以拒絕一條危險命令。
  • 非常適合做護欄:儲存時格式化、編輯後跑測試、提交前掃描金鑰。

取捨

  • hook 是會自動執行的真實程式碼,一個有 bug 的 hook 可能拖垮整個工作流。
  • 慢的 hook 會為每次觸發事件增加延遲。
  • 它們按模式觸發,因此範圍過寬的 hook 可能干擾正當操作。
  • 需要更多的配置,出現意外行為時也多了一個排查點。

何時使用

當你想對 agent 的行為獲得硬性保證時使用 hook——自動格式化、強制執行測試、阻止破壞性命令,或記錄每一個操作——而不是依賴 agent 自覺遵守。

與 vibe coding 的契合度

hook 是你在讓 agent 快速推進的同時保證其安全的方式。agent 提出方案;hook 負責執行。一個阻止 rm -rf 的 "執行前" hook,或一個在 "編輯後" 執行型別檢查的 hook,能把一個自由發揮的助手變成一個在物理上無法繞過你護欄的助手。

// 每次檔案編輯後執行格式化器
{
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit", "command": "npx prettier --write $FILE" }
    ]
  }
}