四、Hooks:后台的自动化管家
4.1 它是什么
Hooks 是在特定事件触发时自动执行的脚本。
前面讲的 CLAUDE.md、Skills、MCP 都需要 LLM 推理判断,而 Hooks 是确定性脚本——它们在特定事件发生时自动运行,不需要 Agent 思考。
4.2 Hooks vs Agent:何时用哪个
| 维度 | Agent(通过 Skills/MCP) | Hooks |
|---|---|---|
| 执行方式 | LLM 推理决策 | 确定性脚本 |
| 何时运行 | 对话中,需要判断 | 事件触发,自动执行 |
| 上下文成本 | 占用 token | 零(外部运行) |
| 适合场景 | 需要理解和判断 | 固定流程,无需判断 |
判断标准:
- 如果需要判断( ” 这段代码有没有问题 ” )→ 让 Agent 做
- 如果是固定流程( ” 每次编辑后格式化代码 ” )→ 用 Hooks
4.3 典型使用场景
场景1:编辑后自动格式化
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "pnpm lint-staged"
}
]
}
]
}
}
每次 Agent 编辑或写入文件后,自动运行 pnpm lint-staged 格式化代码。
场景2:提交前自动测试
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "./scripts/validate-commit.sh"
}
]
}
]
}
}
在 Agent 执行 git commit 之前,先运行测试脚本验证。
场景3:关键文件修改通知
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "./scripts/notify-if-env-changed.sh"
}
]
}
]
}
}
如果修改了 .env 等关键文件,自动发送 Slack 通知。
4.4 常见 Hook 事件
| 事件 | 何时触发 | 使用场景 |
|---|---|---|
PreToolUse |
工具执行前 | 验证、权限检查 |
PostToolUse |
工具执行后 | 格式化、测试、通知 |
SessionStart |
会话开始 | 环境初始化 |
Compact |
上下文压缩时 | 保存重要信息 |
4.5 何时用 Hook 而不是让 Agent 做
✅ 用 Hook:
- 代码格式化( ESLint、Prettier )
- 运行测试
- 发送通知
- 记录日志
- 环境检查
❌ 不用 Hook:
- 需要根据代码内容判断下一步
- 需要修复问题( 需要理解代码 )
- 需要与用户交互
例子:
- ❌ ” 检查代码有没有 bug ” → 让 Agent 做( 需要理解代码 )
- ✅ ” 编辑后运行 ESLint ” → 用 Hook( 固定流程 )
4.6 核心定位
Hooks 是自动化层。它们不占用上下文,不需要 LLM 推理,专注于确定性的自动化任务。
五、全景图:四者如何协作
把四者放在一起看:
┌─────────────────────────────────────────────────────┐
│ Agent 执行层 │
│ (Claude Code / Cursor 等) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────────────┐ │
│ │ CLAUDE.md │ │ Skills │ │
│ │ (背景知识) │ │ (工作流程) │ │
│ │ │ │ │ │
│ │ • 项目概览 │ │ • /commit │ │
│ │ • 技术栈 │ │ • /code-review │ │
│ │ • 代码规范 │ │ • /debug │ │
│ │ • 目录结构 │ │ • /deploy │ │
│ └─────────────┘ └──────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ MCP (外部工具能力) │ │
│ │ │ │
│ │ GitHub │ Slack │ DB │ Figma │ Drive │... │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ Hooks (自动化脚本) │ │
│ │ │ │
│ │ 格式化 │ 测试 │ 通知 │ 日志 │ 检查 │... │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
数据流向:
- 会话开始 → 自动读取 CLAUDE.md → 理解项目上下文
- 用户下达任务 → 触发对应 Skill → Agent 按流程执行
- 执行过程中 → 需要操作外部工具 → 通过 MCP 调用
- 特定事件触发 → Hooks 自动执行 → 完成自动化任务
四者各司其职,互不替代:
- CLAUDE.md = 背景知识( 这是什么项目 )
- Skills = 操作流程( 怎么做 )
- MCP = 执行能力( 能做什么 )
- Hooks = 自动化( 固定流程自动执行 )
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...