乐于分享
好东西不私藏

AI训练营——Day34:Claude Code 自动化流水线

AI训练营——Day34:Claude Code 自动化流水线

Day 6|自动化流水线:Hooks + MCP 实战

🎯 目标:把”提交前检查”变成全自动的质量门禁


一、理论部分

痛点引入

“每次 commit 前手动跑检查,你烦不烦?”

开发者的日常:

  • • 写完代码 → 手动运行 ESLint
  • • 提交前 → 手动跑安全扫描
  • • Review PR → 手动查看 GitHub 差异
  • • … 一套流程下来,10 分钟没了

Hooks + MCP = 自动化质量门禁,让你专注于创造价值。


Hooks:事件驱动的自动化脚本

Hooks 让你在特定事件发生时自动执行脚本:

你写代码 → 事件触发 → 自动格式化 → 自动检查 → 完成

工作原理:

┌─────────────────────────────────────────────────────┐│                   Hooks 工作流                        │├─────────────────────────────────────────────────────┤│                                                      ││  事件触发                                             ││     │                                                ││     ├── Write(写入文件)                            ││     ├── Edit(编辑文件)                             ││     ├── Bash(执行命令)                             ││     ├── GitPush(推送代码)                          ││     └── ...                                          ││     │                                                ││     ▼                                                ││  自动执行脚本                                         ││     │                                                ││     ├── format-code.sh(格式化)                    ││     ├── security-scan.sh(安全扫描)                 ││     └── lint-check.sh(代码检查)                   ││     │                                                ││     ▼                                                ││  通过 → 继续流程                                     ││  失败 → 阻止操作 + 提示错误                          ││                                                      │└─────────────────────────────────────────────────────┘

25 个事件节点

类别
事件
触发时机
文件操作 Write
写入文件后
Edit
编辑文件后
Read
读取文件后
Browse
浏览文件后
命令执行 Bash
命令执行后
Before Bash
命令执行前
After Bash
命令执行后
Git 操作 GitPush
推送代码后
GitCommit
提交代码后
GitPull
拉取代码后
会话管理 SessionStart
会话开始时
SessionEnd
会话结束时

MCP(Model Context Protocol):让 AI 连接世界

MCP 是一个协议,让 Claude Code 实时连接外部工具和数据:

┌──────────┐       ┌─────────────┐       ┌──────────┐│   AI     │ ←───→ │ MCP Server  │ ←───→ │ GitHub   ││          │       │             │       │ 数据库   │└──────────┘       └─────────────┘       │ API     │                                         └──────────┘

MCP 能做什么?

  • • 实时查询 GitHub PR 状态
  • • 访问数据库获取项目数据
  • • 连接 Slack/Notion 等工具
  • • 调用任何外部 API

组合威力

代码写入 → Hook 触发 → MCP 查询数据 → AI 决策    │            │              │           │    ▼            ▼              ▼           ▼  Write 事件   自动运行      获取PR信息    智能判断              格式化脚本     差异对比      是否安全

实战场景:

  1. 1. 你写完代码提交 PR
  2. 2. Hook 自动触发格式检查
  3. 3. MCP 获取 PR 差异信息
  4. 4. AI 综合分析并输出审查报告

二、实操部分

场景:每次 git commit 前,自动检查格式和安全问题


Step 1:安装 Hooks 脚本

# 创建 hooks 目录mkdir -p ~/.claude/hooks# 安装格式化脚本cp claude-howto/06-hooks/format-code.sh ~/.claude/hooks/# 安装安全扫描脚本cp claude-howto/06-hooks/security-scan.sh ~/.claude/hooks/# 添加执行权限chmod +x ~/.claude/hooks/*.sh

Step 2:配置 settings.json 启用 Hooks

# 编辑配置文件cat >> ~/.claude/settings.json << 'EOF'{  "hooks": {    "PreToolUse": [      {        "matcher": "Write|Edit",        "hooks": ["~/.claude/hooks/format-code.sh"]      }    ]  }}EOF

配置说明:

  • • matcher:匹配的事件(Write=写入,Edit=编辑)
  • • hooks:触发的脚本路径

Step 3:配置 GitHub MCP(实时访问 PR 信息)

# 设置 GitHub Tokenexport GITHUB_TOKEN="your_github_token_here"# 添加 GitHub MCPclaude mcp add github -- npx -y @modelcontextprotocol/server-github

Step 4:实战——审查 PR

# 启动 Claude Codeclaude# 输入审查请求"审查这个 PR 的代码质量,重点检查安全漏洞"

AI 自动执行流程:

1. 加载项目记忆(CLAUDE.md)         ↓2. 通过 MCP 获取 PR 差异         ↓3. 执行安全扫描(Hooks)         ↓4. 综合分析并输出报告

实际输出示例:

## PR 审查报告### 基本信息- PR: #123 feature/user-auth- 作者: @zhangsan- 变更: +200/-50 行### 安全检查✅ 无 SQL 注入风险✅ 无 XSS 漏洞⚠️ 发现 1 处敏感信息泄露:users.ts:45### 代码质量✅ 类型定义完整⚠️ 建议添加错误处理### 审查结论✅ 可以合并(修复安全问题后)

三、学员带走

2 个 Hooks 脚本

脚本
功能
触发时机
format-code.sh
自动格式化代码
Write/Edit 事件
security-scan.sh
安全漏洞扫描
Write/Edit 事件

GitHub MCP 一键配置

export GITHUB_TOKEN="your_token"claude mcp add github -- npx -y @modelcontextprotocol/server-github

settings.json 完整配置

{  "hooks": {    "PreToolUse": [      {        "matcher": "Write|Edit",        "hooks": ["~/.claude/hooks/format-code.sh"]      }    ],    "Bash": [      {        "matcher": "git commit",        "hooks": ["~/.claude/hooks/security-scan.sh"]      }    ]  }}

四、公众号内容要点

痛点共鸣

“每次 commit 前手动跑检查,你烦不烦?”

  • • 写完代码 → 手动 ESLint
  • • 提交前 → 手动安全扫描
  • • Review PR → 手动看 GitHub

一套流程 10 分钟,每天 3 次 = 30 分钟 = 每年 150 小时

Hooks 工作流可视化

┌─────────────────────────────────────────────────────┐│                                                      ││  你写代码                                             ││     │                                                ││     ▼                                                ││  ┌──────────────┐                                    ││  │  Write 事件   │                                   ││  └──────┬───────┘                                    ││         │                                            ││         ▼                                            ││  ┌──────────────┐                                    ││  │  Hook 触发   │ → format-code.sh                  ││  └──────┬───────┘                                    ││         │                                            ││         ▼                                            ││  ┌──────────────┐                                    ││  │  自动检查    │ → 安全扫描 + 格式检查               ││  └──────┬───────┘                                    ││         │                                            ││    ┌────┴────┐                                       ││    ▼         ▼                                       ││  通过      失败                                       ││    │         │                                       ││    ▼         ▼                                       ││  继续      提示修复                                   ││                                                      │└─────────────────────────────────────────────────────┘

MCP + Hooks 组合效果

操作
无自动化
有自动化
代码格式
手动运行
自动完成
安全检查
手动扫描
自动完成
PR 审查
手动查看
AI 智能分析
总耗时
10 分钟
0 分钟

📚 相关资源

  • • MCP 官方文档:https://modelcontextprotocol.io
  • • claude-howto Hooks:https://github.com/anthropics/claude-code-howto
  • • GitHub MCP Server:https://github.com/modelcontextprotocol/server-github