~/VibeHandbook
$39

智能体工具

docs.claude.com

Hooks

是什么

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" }
    ]
  }
}