一句话总结
Claude Code Hooks 允许你在 Claude Code 运行的每个关键时机(调用工具前后、提交 prompt、想结束对话等)触发你预先配好的脚本,从而实现对 Claude Code 行为的精细控制。
不过说实话,目前模型的指令遵从能力已经很强了,hooks 更多的是一种能力扩展,大部分时候没必要使用,所以大家了解一下这个功能即可。
Claude Code 的常用技巧 里讲过用 CLAUDE.md 告诉 Claude 你的项目约定,让它「记住」该怎么干活。但 CLAUDE.md 终究是软提醒,Claude 还是会忘,还是会跳过你交代过的步骤,还是会拍着胸脯说「已完成」,但其实代码根本没跑通。
这篇讲的 hooks 可以一定程度上解决这个问题。在 Claude 的每个关键节点(如调用工具前后、提交 prompt、想结束对话时)都会触发你预先配好的脚本,脚本的输出/返回值可以影响 Claude Code 的下一步行动。
说白了,hooks 把那些「指望 Claude 自觉」的约定,变成了系统层面的强制。
hooks 写在 settings.json 里,跟权限设置在同一个文件。主要有两个位置:
- 用户级:
~/.claude/settings.json,所有项目都生效,适合放跨项目通用的规则(比如拦危险命令)。 - 项目级:项目根目录下的
.claude/settings.json,可以跟着项目走,团队共享。建议把跟具体项目相关的 hook(比如 git commit 规范等)放这里。
两个文件里的 hook 会同时生效,不会互相覆盖。