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. 你写完代码提交 PR -
2. Hook 自动触发格式检查 -
3. MCP 获取 PR 差异信息 -
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 |
|
|
security-scan.sh |
|
|
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 组合效果
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📚 相关资源
-
• MCP 官方文档:https://modelcontextprotocol.io -
• claude-howto Hooks:https://github.com/anthropics/claude-code-howto -
• GitHub MCP Server:https://github.com/modelcontextprotocol/server-github
夜雨聆风