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

例子
你在使用CC时一定会遇到过一个问题
迭代后项目出大BUG,无法正常运行 不论是多强的AI,一定会犯错。很多时候它思维错乱,把你的项目搞崩溃了。 如果你没有保存上个版本,它就没办法快速恢复正常。 即便你使用了CLAUDE.md,在说明书里跟它强调:“每次改完文件,记得帮我保存一个版本,我怕改坏了回不去”。Claude Code有时候也不会严格执行
Hooks不会让这种情况发生
Hooks能防止这种情况发生 加一个Hooks事件,让Claude每一次改动之前,都自动保存上个版本的内容。 这样当出错时,你只需要跟Claude Code说:回滚到上一版本。即可快速恢复项目
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 } ] } ] }}
- 放置规则
- 用户级别(全局生效) 1. 对你电脑上所有项目生效。适合放通用规则,比如桌面通知、危险命令拦截这些不管做什么项目都需要的东西。 ``` ~/.claude/settings.json
2. 项目级别(仅该项目生效)
1. 只对当前项目生效。适合放项目专属规则,比如保护这个项目特定的配置文件、自动跑这个项目的格式化工具。可以提交到 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 导致了异常,先全部关掉看看问题是否消失。