指南●●○4 分钟 · +30 XP
Claude Code 中的 Hooks
Hooks 让你可以在 Claude Code 工作流程的特定节点自动执行自定义命令——例如在每次 tool 调用之前。
什么是 hook
Hook 是你自己定义的 shell 命令,Claude Code 会在流程中的特定节点自动执行它——这不是模型可选择性决定的行为,而是由系统确定性触发的。这样就能强制执行一些不依赖模型"随意发挥"的规则。
重要的 hook 事件
- PreToolUse:在某个 tool 执行之前运行——甚至可以阻止该 tool 的执行
- PostToolUse:在某个 tool 执行之后运行
- UserPromptSubmit:在你发送一条消息时运行
- SessionStart / Stop:在一个 session 开始或结束时运行
Hooks 的用途
- Guardrails:在危险命令(例如
rm -rf)执行之前自动拦截 - 每次文件修改后自动格式化或做 lint 检查
- 在特定操作发生时记录日志或发送通知
- 在 agent 继续执行之前进行自定义校验
配置方式
Hooks 在 Claude Code 的 settings.json 中配置——可以是项目级别,也可以是全局级别——因此它们独立于具体的 prompt,可以稳定复现,因为它们运行在模型之外。
示例
一个 PreToolUse hook 会检查每条 Bash 命令是否包含 'rm -rf' 这种模式,并在命令真正运行之前就以错误提示中止执行。
小测验
Hook 与 prompt 中的普通指令有什么区别?
来源
- Claude Code Doku: Hooks (Referenz) ↗ code.claude.com
- Claude Code Doku: Get Started with Hooks ↗ code.claude.com