什么是 Hooks
Hooks 是用户定义的 shell 命令,在 Claude Code 生命周期的特定时刻自动执行。 类比:React 的useEffect 让你在组件渲染后执行自定义逻辑。Claude Code 的 Hooks 让你在 AI 的关键行为前后执行自定义脚本。
可用的 Hook 事件
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
| PreToolUse | 工具调用前 | 拦截危险操作、自定义审批逻辑 |
| PostToolUse | 工具调用后 | 记录日志、触发通知、自动格式化 |
| PreCompact | 上下文压缩前 | 标记不可丢失的信息 |
| PostCompact | 上下文压缩后 | 验证关键信息是否保留 |
| Notification | AI 发出通知时 | 自定义通知渠道(Slack、邮件等) |
| StopFailure | AI 循环异常停止时 | 自定义错误处理 |
Hook 的能力
Hook 脚本不仅能”观察”,还能”干预”:拦截操作
返回特定信号可以阻止工具调用执行
修改行为
返回结构化的 JSON 输出,影响 Claude Code 的后续行为
注入上下文
向 AI 的对话中注入额外信息
触发外部流程
调用 CI/CD、发送通知、更新 Issue tracker
配置方式
Hooks 在settings.json 中配置:
安全控制
- 托管设置(企业管理员)的 Hooks 优先级最高,用户不能覆盖
- Hook 执行有超时限制
- Hook 的输出会被解析和验证,防止注入攻击