一文讲清 CLAUDE.md、Skills、MCP、Hooks 的实战用法

人工智能2周前更新 geekmao
252 0 0

四、Hooks:后台的自动化管家

4.1 它是什么

Hooks 是在特定事件触发时自动执行的脚本。

前面讲的 CLAUDE.md、SkillsMCP 都需要 LLM 推理判断,而 Hooks 是确定性脚本——它们在特定事件发生时自动运行,不需要 Agent 思考。

4.2 Hooks vs Agent:何时用哪个

维度 Agent(通过 Skills/MCP) Hooks
执行方式 LLM 推理决策 确定性脚本
何时运行 对话中,需要判断 事件触发,自动执行
上下文成本 占用 token 零(外部运行)
适合场景 需要理解和判断 固定流程,无需判断
 

判断标准:

  • 如果需要判断( ” 这段代码有没有问题 ” )→ 让 Agent 做
  • 如果是固定流程( ” 每次编辑后格式化代码 ” )→ 用 Hooks

4.3 典型使用场景

场景1:编辑后自动格式化

JSON
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "pnpm lint-staged"
          }
        ]
      }
    ]
  }
}

每次 Agent 编辑或写入文件后,自动运行 pnpm lint-staged 格式化代码。

场景2:提交前自动测试

JSON
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "./scripts/validate-commit.sh"
          }
        ]
      }
    ]
  }
}

在 Agent 执行 git commit 之前,先运行测试脚本验证。

场景3:关键文件修改通知

JSON
{
  "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 推理,专注于确定性的自动化任务。

 

五、全景图:四者如何协作

把四者放在一起看:

Markdown

┌─────────────────────────────────────────────────────┐
│                   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 = 自动化( 固定流程自动执行 )

© 版权声明

相关文章

暂无评论

暂无评论...