认识 Hooks
Hooks 允许你在 Claude 使用工具前后运行自定义命令。它非常适合做自动化,比如在编辑后自动格式化代码、运行测试,或阻止访问特定文件。
Hooks 如何工作
Section titled “Hooks 如何工作”在常规流程中,Claude 接收你的问题,决定使用工具,然后 Claude Code 执行工具并把结果返回给模型。Hooks 会插入到这个流程中,让你在工具执行前 or 后运行自己的逻辑。

Hooks 分为两类:
- PreToolUse:在工具执行前触发
- PostToolUse:在工具执行后触发
Hooks 配置位置
Section titled “Hooks 配置位置”Hooks 写在 Claude 的设置文件中,可放在:
- 全局:
~/.claude/settings.json(影响所有项目) - 项目级:
.claude/settings.json(团队共享) - 项目级(不提交):
.claude/settings.local.json(个人配置)
也可以在 Claude Code 内使用 /hooks 命令进行设置。

配置结构大致如下:

PreToolUse 示例
Section titled “PreToolUse 示例”"PreToolUse": [ { "matcher": "Read", "hooks": [ { "type": "command", "command": "node /home/hooks/read_hook.ts" } ] }]该配置会在执行 Read 工具前运行指定命令,你可以:
- 允许工具正常执行
- 阻止操作,并向 Claude 返回错误信息
PostToolUse 示例
Section titled “PostToolUse 示例”"PostToolUse": [ { "matcher": "Write|Edit|MultiEdit", "hooks": [ { "type": "command", "command": "node /home/hooks/edit_hook.ts" } ] }]PostToolUse 无法阻止工具执行,但可以:
- 在编辑后自动运行格式化或测试
- 把额外反馈返回给 Claude

常见应用场景
Section titled “常见应用场景”- 代码格式化:编辑后自动格式化
- 自动测试:文件变更后运行测试
- 访问控制:阻止读写敏感文件
- 代码质量:跑 linter/类型检查并反馈
- 日志记录:追踪 Claude 访问的文件
- 规则校验:强制命名或编码规范
Hooks 能把你的工具和流程整合进 Claude Code。PreToolUse 给你控制权,PostToolUse 让你增强 Claude 的结果。