Vibe Coding 课程-干货集训
07 Hooks:让开发流程自动化
Hooks是什么?
定义
Hooks是你设置的一个自动检查员,它会监控Claude Code,让CC自动执行你设置的事件

例子
你在使用CC时一定会遇到过一个问题
Hooks不会让这种情况发生
Hooks能做什么?
- 拦截危险操作
- Claude Code要删除你的核心文件(比如配置表、数据库文件),Hooks及时出来阻止
- 自动存档
- 这次改动完成了,要提交到Github。提交前Hooks自动留档,记录本次迭代的改动点
- 代码检查
- 某个模块或功能做了大的迭代,Claude Code说改完了。Hooks执行Code Review,认真阅读它的代码
- 自动功能测试
- 某个模块高频改动了多次。一些小改动可以直接跑Hooks,让它自动化测试
Hooks长什么样
示例
{
"hookss": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "python3 -c \"import json, sys; data=json.load(sys.stdin); path=data.get('tool_input',{}).get('file_path',''); sys.exit(2 if '.env' in path else 0)\""
}
]
}
]
}
}要素
- 要素1 · 触发事件
- “matcher”代表触发事件,如"Edit|Write"(“编辑|写入”)
- 要素2 · 行为
- “Hooks”描述行为,包含类型和事件
类型介绍
Command
- 适用情况
- 规则简单,不需要额外判断,通常是一句命令。如“碰到 .env 就拦住”
- 示例
{ "hooks": { "PreToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "python3 -c \"import json, sys; data=json.load(sys.stdin); path=data.get('tool_input',{}).get('file_path',''); sys.exit(2 if '.env' in path else 0)\"" } ] } ] } }
Prompt
- 适用情况
- 需要做一些简单的判断。如“扫描Claude Code工作过程的对话历史,看是不是用户要求的所有功能都完成了”
- 示例
{ "hooks": { "Stop": [ { "hooks": [ { "type": "prompt", "prompt": "Review the conversation. Did the user's request get fully completed? Check: all files created, all features implemented, no TODO left. Respond with {\"ok\": true} if done, or {\"ok\": false, \"reason\": \"what remains\"} if not.", "timeout": 30 } ] } ] } }
Agent
- 适用情况
- 不只是简单判断,还涉及多步判断或行为。如“测试这个页面的UI和点击事件”
- 示例
{ "hooks": { "Stop": [ { "hooks": [ { "type": "agent", "prompt": "Verify the work is complete: 1) Read the HTML/JSX files that were created or modified. 2) Check that all buttons and links have proper click handlers. 3) Run the test suite to confirm UI renders without errors. 4) Report any missing event bindings or broken UI elements.", "timeout": 120 } ] } ] } }
- 放置规则
- 用户级别(全局生效)
- 对你电脑上所有项目生效。适合放通用规则,比如桌面通知、危险命令拦截这些不管做什么项目都需要的东西。
~/.claude/settings.json - 项目级别(仅该项目生效)
- 只对当前项目生效。适合放项目专属规则,比如保护这个项目特定的配置文件、自动跑这个项目的格式化工具。可以提交到 git,团队共享同一套规则。
你的项目根目录/.claude/settings.json
- 用户级别(全局生效)
创建&管理Hooks
创建Hooks
- 让Claude Code帮你创建
- 直接用一句话描述你想要的效果,Claude Code 帮你生成所有配置
帮我创建一个 PreToolUse Hook,不允许你修改 .env 文件和 package-lock.json 文件
管理Hooks

查看Hook
- 在 Claude Code 中输入
/hooks,可以看到所有已配置的 Hook 列表,按事件分类展示
修改已有Hook
- 两种方法
- 在
/hooks菜单中选择对应的 Hook 进行编辑 - 直接修改 settings.json 文件后在
/hooks菜单中确认
- 在
删除Hook
- 在
/hooks菜单中选择要删除的 Hook,移除即可。也可以直接从 settings.json 中删掉对应的配置
禁用所有Hook
- 在
/hooks菜单中有一个Disable all hooks选项,可以一键关闭所有 Hook。排查问题的时候很有用——如果你怀疑某个 Hook 导致了异常,先全部关掉看看问题是否消失。