Skip to main content

什么是 Hooks

Hooks 是用户定义的 shell 命令,在 Claude Code 生命周期的特定时刻自动执行。 类比:React 的 useEffect 让你在组件渲染后执行自定义逻辑。Claude Code 的 Hooks 让你在 AI 的关键行为前后执行自定义脚本。

可用的 Hook 事件

事件触发时机典型用途
PreToolUse工具调用前拦截危险操作、自定义审批逻辑
PostToolUse工具调用后记录日志、触发通知、自动格式化
PreCompact上下文压缩前标记不可丢失的信息
PostCompact上下文压缩后验证关键信息是否保留
NotificationAI 发出通知时自定义通知渠道(Slack、邮件等)
StopFailureAI 循环异常停止时自定义错误处理

Hook 的能力

Hook 脚本不仅能”观察”,还能”干预”:

拦截操作

返回特定信号可以阻止工具调用执行

修改行为

返回结构化的 JSON 输出,影响 Claude Code 的后续行为

注入上下文

向 AI 的对话中注入额外信息

触发外部流程

调用 CI/CD、发送通知、更新 Issue tracker

配置方式

Hooks 在 settings.json 中配置:
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": { "tool_name": "Write" },
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH"
          }
        ]
      }
    ]
  }
}
这个例子:每当 AI 写入一个文件后,自动用 Prettier 格式化。

安全控制

  • 托管设置(企业管理员)的 Hooks 优先级最高,用户不能覆盖
  • Hook 执行有超时限制
  • Hook 的输出会被解析和验证,防止注入攻击