Hooks 允许你在 Claude 使用工具前后运行自定义命令。它非常适合做自动化,比如在编辑后自动格式化代码、 运行测试,或阻止访问特定文件。
Hooks 如何工作
在常规流程中,Claude 接收你的问题,决定使用工具,然后 Claude Code 执行工具并把结果返回给模型。 Hooks 会插入到这个流程中,让你在工具执行前或后运行自己的逻辑。
Hooks 分为两类:
- PreToolUse:在工具执行前触发
- PostToolUse:在工具执行后触发
Hooks 配置位置
Hooks 写在 Claude 的设置文件中,可放在:
- 全局:
~/.claude/settings.json(影响所有项目) - 项目级:
.claude/settings.json(团队共享) - 项目级(不提交):
.claude/settings.local.json(个人配置)
也可以在 Claude Code 内使用 /hooks 命令进行设置。
配置结构大致如下:
PreToolUse 示例
"PreToolUse": [
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/read_hook.ts"
}
]
}
]
该配置会在执行 Read 工具前运行指定命令,你可以:
- 允许工具正常执行
- 阻止操作,并向 Claude 返回错误信息
PostToolUse 示例
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/edit_hook.ts"
}
]
}
]
PostToolUse 无法阻止工具执行,但可以:
- 在编辑后自动运行格式化或测试
- 把额外反馈返回给 Claude
常见应用场景
- 代码格式化:编辑后自动格式化
- 自动测试:文件变更后运行测试
- 访问控制:阻止读写敏感文件
- 代码质量:跑 linter/类型检查并反馈
- 日志记录:追踪 Claude 访问的文件
- 规则校验:强制命名或编码规范
Hooks 能把你的工具和流程整合进 Claude Code。PreToolUse 给你控制权,PostToolUse 让你增强 Claude 的结果。