本教程面向已掌握Claude Code基础操作的开发者,系统讲解如何将Claude Code深度融入Git工作流和代码审查流程。你将学会:智能commit生成、PR自动化审查、GitHub Actions集成、多Agent代码审查体系、分支策略优化,以及团队级代码质量门禁的完整搭建。学完后,你的团队代码审查效率可提升3-5倍。
适用人群:有6个月以上开发经验、日常使用Git和GitHub/GitLab的工程师,以及希望引入AI辅助代码审查的技术负责人。
前置条件:
- Claude Code CLI已安装并完成基础配置(npm install -g @anthropic-ai/claude-code)
- Git 2.40+、Node.js 20+
- GitHub账号及一个可操作的仓库
- Claude Team或Enterprise订阅(用于完整Code Review功能)
Claude Code并非简单的命令行包装器——它对Git仓库有深度理解。启动Claude Code时,它会自动:
CLAUDE.md和文件树理解项目上下文# 启动Claude Code后,查看它对仓库的理解
claude
> 请分析当前仓库的Git状态和最近的变更趋势
预期输出:
当前分支: feature/user-auth
最近5次提交:
a3f2c1d feat: 添加JWT token刷新逻辑
b7e4d2f fix: 修复登录页面表单验证
...
工作区变更: 3个文件已修改,1个新文件未追踪
Claude Code能根据diff内容生成符合Conventional Commits规范的提交信息:
# 方式1:让Claude Code分析变更并生成commit
claude
> 分析当前暂存区的变更,生成一个规范的commit message
# 方式2:直接用-p模式(非交互式)
claude -p "分析git diff --cached,生成conventional commit message" \
--allowedTools "Bash(git commit:*)"
实际生成的commit message示例:
feat(auth): implement JWT refresh token rotation
- Add refresh token endpoint at /api/auth/refresh
- Implement token family tracking for reuse detection
- Add automatic cleanup of expired refresh tokens
- Include unit tests for token rotation edge cases
Closes #142
在项目根目录的CLAUDE.md中定义commit规范:
# Git Commit 规范
## 格式
type(scope): description
## Type 枚举
- feat: 新功能
- fix: Bug修复
- refactor: 重构(不改功能)
- perf: 性能优化
- test: 测试相关
- docs: 文档
- chore: 构建/工具
## 规则
- description用英文,不超过72字符
- Body可选,详细说明改动的why
- 关联Issue编号(如有)
- 不要自动加版本号
常见问题:commit message中出现中文混合? 解决:在
CLAUDE.md中明确指定语言偏好,如"commit message用英文,注释可用中英混合"。
Claude Code可以根据分支的所有commits和diff自动生成结构化的PR描述:
# 在feature分支上,让Claude Code生成PR描述
claude -p "
对比 main..HEAD 的所有变更,生成一个结构化的PR描述:
1. Summary(3句话概括)
2. Changes(按模块分组的变更列表)
3. Testing(如何验证这些变更)
4. Breaking Changes(如有)
5. Checklist
"
输出示例:
## Summary
本PR实现了用户认证模块的JWT token管理,包括token刷新、撤销和
自动清理机制。引入了Redis作为token黑名单存储。
## Changes
### Auth Module
- 新增 `RefreshTokenService` 处理token轮换逻辑
- 添加 `/api/auth/refresh` 端点
- 实现 token family 追踪防止token重放攻击
### Infrastructure
- 新增 Redis 连接配置(`config/redis.ts`)
- 添加 `token_blacklist` Redis key schema
### Tests
- 35个新增单元测试(覆盖率94%)
- 4个集成测试覆盖E2E token流程
结合gh CLI工具,Claude Code可以完成从commit到PR的完整流程:
# 安装GitHub CLI(如未安装)
# macOS: brew install gh
# Linux: sudo apt install gh
# 用Claude Code创建PR
claude
> 请基于当前分支的所有变更,生成PR描述并创建Pull Request到main分支
Claude Code会执行类似以下操作:
# 自动执行的实际命令序列
git diff main...HEAD --stat # 分析变更范围
git log main..HEAD --oneline # 获取commit历史
# ... 生成PR描述 ...
gh pr create \
--title "feat(auth): JWT refresh token rotation" \
--body-file /tmp/pr-description.md \
--base main \
--assignee @me
在.github/PULL_REQUEST_TEMPLATE.md中加入Claude Code指引:
## 变更说明
<!-- Claude Code将自动填充此部分 -->
## 变更类型
- [ ] 新功能 (feat)
- [ ] Bug修复 (fix)
- [ ] 重构 (refactor)
- [ ] 性能优化 (perf)
## 自测清单
- [ ] 本地测试通过
- [ ] 新增测试覆盖核心逻辑
- [ ] 无Breaking Changes
## 相关Issue
Closes #
/code-review命令Claude Code提供了内置的代码审查能力,这是最常用的审查方式:
# 方式1:审查当前未提交的变更
claude
> /code-review
# 方式2:审查特定commit范围
claude
> /code-review main..HEAD
# 方式3:审查某个PR
claude
> /code-review --pr 247
# 方式4:审查时自动修复
claude
> /code-review --fix
/code-review的工作原理:
它采用多Agent架构,并行启动多个专业审查员:
flowchart TB
subgraph CR["/code-review 多Agent审查"]
A[Diff输入] --> B[调度器]
B --> C1[🔍 正确性审查员]
B --> C2[🔒 安全审查员]
B --> C3[⚡ 性能审查员]
B --> C4[📐 风格审查员]
C1 --> D[发现聚合]
C2 --> D
C3 --> D
C4 --> D
D --> E[严重度排序]
E --> F[审查报告]
end
style CR fill:#f0f4ff,stroke:#4a6cf7
style F fill:#e8f5e9,stroke:#388e3c
输出格式示例:
## Code Review Report
### 🔴 Critical (1)
- **[security]** `auth/login.ts:45` - JWT secret hardcoded in environment
variable fallback. Use secrets manager instead.
```typescript
// ❌ Current
const secret = process.env.JWT_SECRET || 'fallback-secret';
// ✅ Suggested
const secret = await secretsManager.getSecret('jwt-secret');
```
### 🟡 Warning (2)
- **[correctness]** `utils/date.ts:12` - Timezone not handled in date comparison
- **[performance]** `api/users.ts:88` - N+1 query in user role fetching
### 🔵 Suggestion (1)
- **[style]** Consider extracting the validation logic into a shared utility
/review命令(轻量级审查)/review是一个更轻量的审查命令,适合快速检查:
claude
> /review
# 指定审查强度
> /review --effort high # 深度审查,覆盖更广
> /review --effort low # 快速审查,只看关键问题
# 审查并直接提交评论到PR
> /review --comment
# 审查并自动修复
> /review --fix
effort级别对比:
| 级别 | 审查范围 | 发现数量 | 耗时 | 适用场景 |
|---|---|---|---|---|
| low | 只看明显bug | 少 | ~30秒 | 快速提交前检查 |
| medium | bug+性能+安全 | 中 | ~2分钟 | 日常PR审查 |
| high | 全面审查+架构 | 多 | ~5分钟 | 重要功能/发布前 |
在项目的CLAUDE.md中定义审查重点,让Claude Code的审查更贴合团队标准:
# 代码审查规则
## 必查项
1. 所有API端点必须有输入验证(使用zod schema)
2. 数据库查询必须使用参数化,禁止字符串拼接SQL
3. 新增的public函数必须有JSDoc注释
4. 错误处理使用 Result<T, E> 模式,不要throw
## 禁止模式
- `any` 类型(除非有 // @ts-expect-reason 注释)
- `console.log`(使用结构化日志库)
- 硬编码的URL/密钥
- 超过200行的函数
## 性能要求
- 列表API必须有分页(默认20条)
- 数据库查询要有对应索引
- 大文件上传使用流式处理
这是2026年最强大的功能——Claude Code直接作为GitHub Action运行,在PR创建时自动审查:
# .github/workflows/claude-code-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Claude Code Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 审查触发条件:PR中@claude 或自动
trigger_phrase: "@claude review"
# 自动审查所有PR
auto_review: true
# 审查配置
review_options: |
effort: high
comment: true
auto_fix: false
配置说明:
- trigger_phrase:PR评论中输入@claude review触发审查
- auto_review:设为true则在PR创建/更新时自动审查
- comment:将审查结果作为PR评论发布
- auto_fix:设为true时Claude会尝试自动修复问题
更高级的用法是让Claude Code自动修复CI失败:
# .github/workflows/claude-ci-fix.yml
name: Claude CI Fix
on:
workflow_run:
workflows: ["CI"] # 监听你的CI workflow
types: [completed]
# 只在失败时触发
# 注意:需要配合判断条件
jobs:
auto-fix:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Claude Auto Fix
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
CI失败了,请分析失败日志并尝试修复。
修复后创建一个新的commit推送到当前分支。
如果无法自动修复,请在PR中评论说明原因。
在GitHub PR中,你可以通过评论与Claude Code交互:
# 在PR评论中使用
@claude review # 完整代码审查
@claude review --effort high # 深度审查
@claude fix the failing tests # 修复失败的测试
@claude explain this change # 解释某个变更
@claude generate tests for this # 为变更生成测试
@claude update the documentation # 更新文档
完整工作流架构:
sequenceDiagram
participant Dev as 开发者
participant GH as GitHub
participant CI as CI Pipeline
participant CC as Claude Code Action
participant PR as Pull Request
Dev->>GH: git push (创建/更新PR)
GH->>CI: 触发CI流水线
GH->>CC: 触发自动审查
par 并行执行
CI->>CI: 运行测试/Lint/构建
CC->>CC: 多Agent代码审查
end
CC->>PR: 发布审查评论
alt CI失败
CI->>CC: 触发auto-fix
CC->>CC: 分析失败日志
CC->>PR: 推送修复commit或评论说明
end
Dev->>PR: @claude review --effort high
CC->>PR: 发布深度审查报告
# 创建feature分支(Claude Code会自动理解分支上下文)
claude
> 创建一个feature分支,从main拉取,名称为feat/payment-integration
# Claude Code执行:
# git checkout main && git pull && git checkout -b feat/payment-integration
当遇到merge conflict时,Claude Code可以理解冲突双方意图并给出建议:
claude
> 当前有合并冲突,请分析冲突文件并解决
# Claude Code会:
# 1. 读取冲突文件,理解双方的变更意图
# 2. 判断冲突类型(逻辑冲突/格式冲突/功能冲突)
# 3. 给出解决方案并应用
冲突解决示例:
// <<<<<<< HEAD
// const timeout = 5000; // HEAD: 增加超时到5秒
// =======
// const timeout = 3000; // feat/retry: 设置3秒超时配合重试
// >>>>>>> feat/retry
// Claude Code分析后可能给出:
// 建议:使用feat/retry的3秒超时(因为有重试机制),
// 但添加注释说明如果重试次数为0则使用5秒
const timeout = retryCount > 0 ? 3000 : 5000;
# 交互式rebase(Claude Code会帮你整理commit历史)
claude
> 请rebase当前分支到main,合并相关的commits保持历史整洁
# squash相关commits
claude
> 将最近3个commits squash成一个,保留最有意义的message
使用husky配合Claude Code实现pre-commit质量门禁:
# 安装husky
npm install -D husky lint-staged
npx husky init
# .husky/pre-commit(使用Claude Code快速检查)
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 运行lint
npx lint-staged
# 快速AI审查(-p模式,超时30秒)
claude -p "快速检查git diff --cached中的变更,只报告critical级别的bug和安全问题。如果有问题输出BLOCK,否则输出PASS" \
--allowedTools "Bash(git diff:*)" \
--max-turns 1 \
--timeout 30000
// .lintstagedrc.json
{
"*.{ts,tsx}": ["eslint --fix", "prettier --write"],
"*.test.{ts,tsx}": ["vitest related --run"]
}
# .husky/pre-push
#!/usr/bin/env sh
# 运行完整测试套件
npm test
# Claude Code深度审查(仅检查即将push的commits)
REMOTE_HEAD=$(git rev-parse origin/main 2>/dev/null || echo "")
if [ -n "$REMOTE_HEAD" ]; then
claude -p "审查 $(git diff $REMOTE_HEAD...HEAD --stat) 的所有变更。这是一个pre-push检查。只报告真正的bug和安全漏洞,忽略风格问题。如果有严重问题,输出 BLOCK_PUSH。" \
--allowedTools "Bash(git diff:*)" \
--max-turns 2 \
--timeout 60000
fi
flowchart LR
A[开发者编写代码] --> B[git add]
B --> C{Pre-commit Hook}
C --> D[ESLint/Prettier]
D --> E[Claude快速检查]
E -->|PASS| F[git commit]
E -->|BLOCK| A
F --> G[git push]
G --> H{Pre-push Hook}
H --> I[完整测试套件]
I --> J[Claude深度审查]
J -->|PASS| K[推送到远程]
J -->|BLOCK| A
K --> L{GitHub Actions}
L --> M[CI流水线]
L --> N[Claude自动审查]
M -->|通过| O[合并就绪]
M -->|失败| P[Claude auto-fix]
N --> O
style E fill:#fff3e0,stroke:#f57c00
style J fill:#fff3e0,stroke:#f57c00
style N fill:#e3f2fd,stroke:#1976d2
假设我们有一个中型Node.js/TypeScript项目(20名开发者),需要建立完整的AI辅助代码审查体系。目标是: - 每个PR在合并前都经过AI审查 - Critical/Security问题自动拦截 - 常见问题自动修复 - 审查结果与团队Code Owner联动
CLAUDE.md(项目根目录):
# 项目:OrderFlow API
## 技术栈
- Node.js 22 + TypeScript 5.6
- Fastify + Prisma + PostgreSQL
- 测试:Vitest + Supertest
- 部署:AWS ECS
## 代码审查规则
- 所有PR必须经过AI审查
- 安全问题(SQL注入、XSS、认证绕过)为Critical
- 性能问题(N+1查询、大循环、内存泄漏)为Warning
- 代码风格问题由ESLint处理,不在此审查
## 项目特定规则
1. Prisma查询必须包含select,禁止使用include *
2. API响应使用DTO,不直接暴露数据库模型
3. 所有金额使用int(分为单位),前端格式化
4. 国际化文本通过i18n key引用,不硬编码
.github/workflows/ai-code-review.yml:
name: AI Code Review Pipeline
on:
pull_request:
types: [opened, synchronize, ready_for_review]
pull_request_review_comment:
types: [created]
jobs:
# Job 1: 快速安全扫描
security-scan:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
has_issues: ${{ steps.scan.outputs.has_issues }}
steps:
- uses: actions/checkout@v4
- name: Run Semgrep
uses: semgrep/semgrep-action@v1
with:
config: >-
p/security-audit
p/secrets
p/owasp-top-ten
- name: Check Results
id: scan
run: |
if [ -f semgrep-results.json ]; then
issues=$(jq '.results | length' semgrep-results.json)
echo "has_issues=$([ "$issues" -gt 0 ] && echo true || echo false)" >> $GITHUB_OUTPUT
fi
# Job 2: Claude Code审查
claude-review:
needs: security-scan
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Claude Code Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
auto_review: true
review_options: |
effort: high
comment: true
focus_areas:
- correctness
- security
- performance
ignore_patterns:
- "*.md"
- "*.json"
- "docs/**"
# .github/CODEOWNERS
# 安全相关变更需要安全团队审批
src/auth/** @security-team
src/middleware/auth* @security-team
# 数据库相关变更需要DBA审批
prisma/migrations/** @dba-team
src/repositories/** @dba-team
# API接口变更需要架构师审批
src/routes/** @architects
flowchart TB
A[开发者创建PR] --> B[GitHub Actions触发]
B --> C1[Job: Security Scan<br/>Semgrep扫描]
B --> C2[Job: Claude Review<br/>多Agent深度审查]
B --> C3[Job: CI Pipeline<br/>测试/Lint/构建]
C1 --> D{安全问题?}
D -->|是| E[🚫 阻止合并<br/>发布安全警告]
D -->|否| F[✅ 安全通过]
C2 --> G[发布审查评论]
G --> H{Critical问题?}
H -->|是| I[请求修改<br/>@开发者]
H -->|否| J[✅ 审查通过]
C3 --> K{测试通过?}
K -->|否| L[❌ CI失败]
K -->|是| M[✅ CI通过]
F --> N{所有检查通过?}
J --> N
M --> N
N -->|是| O[CODEOWNERS审批]
N -->|否| P[等待修复]
O --> Q[合并到main]
style E fill:#ffebee,stroke:#c62828
style Q fill:#e8f5e9,stroke:#2e7d32
style N fill:#fff9c4,stroke:#f9a825
将Claude Code的审查结果转化为可追踪的Issue:
claude
> 审查 main..HEAD 的变更,对每个Critical和Warning级别的问题,
> 创建对应的GitHub Issue,标签为 bug/security/performance,
> 并在PR评论中引用这些Issue编号
当PR变更超过500行时,建议分块审查:
claude
> 这个PR有3000行变更,请按模块分块审查:
> 1. 先审查 src/auth/ 目录下的变更
> 2. 再审查 src/api/ 目录
> 3. 最后审查 src/utils/ 和 tests/
> 每块审查后给出该块的评估,最后给一个综合评分
利用Claude Code对项目历史的理解:
claude
> 审查当前变更时,请参考:
> 1. 最近一周的commit历史,理解变更趋势
> 2. CLAUDE.md中定义的项目规范
> 3. 之前类似变更中出现过的问题
> 4. 项目的架构设计文档(如果存在)
# 生成Markdown格式的审查报告
claude -p "审查 main..HEAD 的变更,生成一份Markdown格式的审查报告,保存到 review-report-$(date +%Y%m%d).md,包含:变更概览、风险评级、具体问题列表、改进建议" \
--allowedTools "Bash(git log:*),Bash(git diff:*),Bash(date:*),Write(*)"
# 在团队共享的.claude/目录下创建审查配置
# .claude/review-config.json
{
"review_rules": {
"critical_keywords": ["SQL", "auth", "password", "token", "payment"],
"max_file_lines": 300,
"required_test_coverage": 80,
"banned_patterns": ["console.log", "any", "TODO"],
"team_members": {
"security": "@security-team",
"architecture": "@architects"
}
}
}
# 调整审查严格度
# 在CLAUDE.md中添加:
# "代码审查时,重点关注correctness和security问题。
# 风格问题不要报告(由ESLint处理)。
# 如果不确定是否是真正的bug,标记为Suggestion而非Warning。"
检查清单:
1. ANTHROPIC_API_KEY是否正确配置在Repository Secrets中
2. permissions字段是否包含pull-requests: write
3. fetch-depth: 0是否设置(否则无法获取完整diff)
4. PR是否从fork发起(fork PR默认不触发secrets)
# 限制审查范围
claude
> 只审查最近3个commit涉及的文件变更,忽略未变更的文件
# 或限制审查深度
claude
> /review --effort low # 快速模式
# 使用--max-turns控制审查深度
claude -p "审查 git diff HEAD~3..HEAD" \
--max-turns 3 # 限制Agent轮次
--model claude-sonnet-4-6 # 指定模型确保一致性
| 资源 | 说明 |
|---|---|
| Claude Code官方Code Review文档 | 多Agent审查的官方配置指南 |
| Claude Code GitHub Actions文档 | CI/CD集成的完整参考 |
| Anthropic Claude Code Best Practices | 社区维护的最佳实践集合 |
| Claude Code PR Automation | 开源的PR自动化Skill |
| 评估维度 | 说明 |
|---|---|
| 适合训练营类型 | 企业级DevOps训练营、AI辅助开发训练营、团队工程效能提升Workshop |
| 预计教学时长 | 4-6小时(含动手实验) |
| 难度级别 | ⭐⭐⭐ 中高级 |
| 实验依赖 | GitHub仓库、Claude Team订阅、Docker(可选) |
| 推荐分组 | 2-3人一组,每组一个仓库 |
| 产出物 | 完整的AI审查流水线配置文件 + CLAUDE.md + GitHub Actions Workflow |
💡 51学通信(微信公众号)持续输出通信与AI技术深度内容,站长爱卫生(微信:gprshome201101)欢迎技术交流。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
