Hooks = 自动化规则

Track B: CC 进阶 ~25 分钟

🎯 学完这课你能

📊 你的 CC 数据说:你的最大痛点之一是"外部 API 权限卡住整个 session"(4 次外部阻塞)。这正好是 Hook 能解决的——比如写一个 PreToolUse Hook,在 CC 调用飞书 API 之前自动检查权限和网络连通性。你的 Prisma 版本冲突问题也可以用 Hook 在部署前自动验证。

你有没有想过:每次 CC 改完代码,你都想让它自动跑一下测试?或者每次创建新文件,自动加个文件头注释?

Hooks 就是做这个的——在 CC 的特定操作自动执行你定义的规则。

Hooks = 公司里的自动化流程

想想你们 HR 系统里的自动化:
- 新员工入职 → 自动开通邮箱、飞书、门禁
- 员工离职 → 自动关闭权限、清理工位
- 报销审批通过 → 自动打款

CC 的 Hooks 是一样的逻辑:
- CC 保存文件后 → 自动跑代码检查
- CC 创建 worktree 时 → 自动安装依赖
- CC 执行命令前 → 自动检查是否安全

Hooks 的工作原理

触发事件 如: CC 保存了文件 Hook 执行 自动跑你定义的命令 ✓ 通过 → 继续 ✗ 失败 → 阻止/提醒

CC 的生命周期事件

CC 有 21 种事件可以挂载 Hook。最常用的几个:

PreToolUse

CC 使用工具前触发。比如在 CC 执行 Bash 命令前,检查命令是否安全。
HR 类比:员工提交出差申请,自动检查预算是否充足。

PostToolUse

CC 使用工具后触发。比如 CC 编辑完文件后,自动跑 lint 检查代码格式。
HR 类比:合同签署,自动归档到文档系统。

WorktreeCreate / WorktreeRemove

创建/删除 Worktree 时触发。可以自动安装依赖、复制环境变量等。
HR 类比:新部门成立时,自动配备办公设备。

UserPromptSubmit

你发消息触发。可以自动分析你的需求、注入上下文信息。
HR 类比:收到员工申请后,自动查询该员工的历史记录附在申请后面。

Hook 的四种执行方式

command

执行一条 shell 命令。最常用。
例:npm run lint

http

调用一个 HTTP 接口。
例:通知飞书机器人

prompt

注入额外的提示词给 CC。
例:自动提醒"检查安全性"

agent

触发一个 Agent 去处理。
例:自动让 Agent 做代码审查

怎么配置 Hook

Hooks 配置在 ~/.claude/settings.json(全局)或项目的 .claude/settings.json(项目级)中:

{ "hooks": { "PostToolUse": [ { "matcher": "Edit", // 当使用 Edit 工具后 "hooks": [ { "type": "command", "command": "npm run lint --fix" // 自动修复代码格式 } ] } ] } }
新手建议:先不急着自己写 Hook。理解它是什么、能做什么就够了。等你用 CC 一段时间后,发现总在重复做同一件事——那就是该写 Hook 的时候。

实用 Hook 场景

场景 1:每次改代码自动检查

PostToolUse + Edit → 跑 npm run lint。保证代码风格一致。

场景 2:提交前自动构建验证

PreToolUse + Bash(git commit) → 先跑 npm run build,失败就阻止提交。

场景 3:自动注入项目上下文

UserPromptSubmit → 自动读取相关的 CLAUDE.md 和项目状态,附在你的消息后面。

📝 小测验

你想让 CC 每次编辑文件后自动跑代码格式化。应该用哪个事件?

📝 小测验 2

以下哪个 HR 流程最像 "PreToolUse" Hook?

← 第 7 课:Plan & Agent 第 9 课:Git Worktree →