章节 01
导读 / 主楼:sefc-pr-review-agent:基于MCP的AI驱动代码审查工作流
sefc-pr-review-agent:基于MCP的AI驱动代码审查工作流
代码审查的痛点与自动化需求
在软件开发团队中,代码审查(Code Review)是保证代码质量的关键环节,但也面临诸多挑战:
- 人力成本高:资深工程师需要花费大量时间审查PR
- 标准不统一:不同审查者的关注点和严格程度差异大
- 遗漏风险:人工审查容易忽略安全漏洞、命名规范等问题
- 反馈延迟:审查者忙碌时,PR可能长时间处于待审状态
随着AI能力的提升,越来越多的团队开始探索AI辅助代码审查。quishop开源的sefc-pr-review-agent项目,展示了一种基于MCP协议的完整解决方案。
项目概述
sefc-pr-review-agent是一个MCP Agent驱动的PR审查自动化系统,专为quishop组织下的所有仓库设计。它通过GitHub Actions触发,利用Claude Sonnet大模型自动分析代码变更,并发布结构化的审查评论。
核心特点
- 技能驱动(Skills-based):根据变更文件类型动态加载对应的审查规则
- 跨项目复用:一套配置,整个组织共享
- 仅评论模式:AI只提供建议,不阻塞合并(continue-on-error)
- MCP原生:基于Anthropic MCP协议,无缝集成Jira和GitHub
系统架构与工作流程
整个系统的工作流程设计精巧,实现了从PR创建到AI审查评论的完整闭环:
你的仓库(提交PR)
│
├── .github/workflows/pr-review.yml ← 10行调用工作流
│
└── 触发 ─────────────────────────────┐
▼
sefc-pr-review-agent(本仓库)
├── scripts/skill-loader.mjs ← 检测变更文件,加载对应技能
├── scripts/mcp-agent.mjs ← Claude Sonnet + MCP生成审查
└── skills/*.md ← 审查规则定义
│
▼
PR Review Comment(出现在PR review标签页)
技术实现细节
MCP协议的应用
项目采用Anthropic的MCP(Model Context Protocol)协议,这是其技术架构的关键亮点:
使用的MCP服务器:
- Atlassian MCP:从Jira读取ticket的验收标准(Acceptance Criteria)
- GitHub MCP:在PR上发布审查评论
这种设计的优势在于无需在CI runner上运行MCP server进程,直接通过Anthropic Messages API的server-side MCP功能完成所有交互。
动态技能加载机制
skill-loader.mjs脚本实现了智能的规则匹配系统:
必载技能(所有PR都加载):
| 技能 | 内容 |
|---|---|
| review.md | PR结构验证、AC覆盖确认、1-5分评分 |
| naming.md | camelCase/PascalCase/kebab-case命名规范 |
| security.md | 硬编码密钥、SQL注入、敏感目录标记 |
条件加载技能(根据文件类型):
| 技能 | 触发条件 | 内容 |
|---|---|---|
| typescript.md | .ts/.tsx文件 | 禁止any、async/await规范、React props规则 |
| python.md | .py文件 | Type hints、禁止bare except、import排序 |
| migration.md | migration/schema目录 | Rollback必需、禁止裸DROP、大表NOT NULL |
| api.md | routes/controllers | RESTful规范、request validation、认证 |
| infra.md | .tf/k8s/helm | Tags必填、禁止latest tag、最小权限 |
这种设计确保了审查的针对性——Python项目不会收到TypeScript相关的审查建议。
部署与配置
调用方仓库配置
任何仓库只需添加一个10行的工作流文件即可接入:
name: PR Review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
pull-requests: write
contents: read
jobs:
mcp-agent-review:
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.draft }}
continue-on-error: true
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: actions/checkout@v4
with:
repository: quishop/sefc-pr-review-agent
path: .review-agent
- uses: actions/setup-node@v4
with: { node-version: '20' }
- name: Get PR diff
run: git diff origin/${{ github.base_ref }}...HEAD > /tmp/pr.diff
- name: Extract Jira ticket
id: jira
run: echo "key=$(echo '${{ github.head_ref }}' | grep -oP '[A-Z]+-\d+' | head -1)" >> $GITHUB_OUTPUT
- name: Run MCP Agent
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
JIRA_BASE_URL: ${{ vars.JIRA_BASE_URL }}
JIRA_EMAIL: ${{ vars.JIRA_EMAIL }}
JIRA_TOKEN: ${{ secrets.JIRA_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
JIRA_TICKET: ${{ steps.jira.outputs.key }}
run: node .review-agent/scripts/mcp-agent.mjs
组织级密钥配置
需要在GitHub组织Settings中配置以下Secrets和Variables:
Secrets:
ANTHROPIC_API_KEY:Anthropic API密钥JIRA_TOKEN:Atlassian API令牌
Variables:
JIRA_BASE_URL:Jira Cloud地址(如https://company.atlassian.net)JIRA_EMAIL:Atlassian账户邮箱
成本与性能分析
运行成本
| 项目 | 数值 |
|---|---|
| 模型 | Claude Sonnet(claude-sonnet-4-20250514) |
| 单次审查 | ~$0.06-0.25(取决于diff大小和MCP调用次数) |
| 每日10个PR | ~$0.60-2.50 |
这个成本对于中小型团队来说非常可控,相当于雇佣一名初级审查员成本的千分之一。
实际应用案例
quishop组织内多个仓库已接入该系统:
| 仓库 | 技术栈 | 自动加载的技能 |
|---|---|---|
| fluffy-agent-core | Python | review, naming, security, python |
| fluffy-core | Django | review, naming, security, migration, api |
| fluffy-core-internal-dashboard | Next.js | review, naming, security, typescript |
设计哲学与最佳实践
为什么采用"仅评论"模式?
项目明确设定continue-on-error: true,确保审查失败不会阻塞合并。这种设计体现了务实的态度:
- AI是助手而非守门员:最终决策权仍归人类审查者
- 避免过度依赖:防止团队对AI产生盲目信任
- 渐进式采用:降低团队接受新工具的心理门槛
技能即代码(Skills as Code)
审查规则以Markdown文件形式存储在skills/目录,这种设计带来多重好处:
- 版本控制:规则的变更历史可追溯
- 易于维护:非开发者也能编辑Markdown文件
- 即时生效:修改后所有引用的仓库下次PR自动生效
- 可扩展:新增skill只需创建.md文件并在skill-loader中注册
局限性与改进方向
当前局限
- 仅支持GitHub:尚未支持GitLab、Bitbucket等其他平台
- 依赖Anthropic API:需要有效的API密钥和额度
- Jira集成单一:目前只支持Atlassian Jira Cloud
- 语言支持有限:主要针对TypeScript和Python项目优化
潜在改进
- 支持更多代码托管平台
- 增加更多编程语言的skill
- 引入代码覆盖率、测试通过率等CI数据
- 支持自定义LLM提供商(OpenAI、本地模型等)
行业意义与启示
sefc-pr-review-agent代表了AI辅助软件开发的一个典型范式:
- MCP协议的应用落地:展示了MCP在企业工作流中的实际价值
- AI与人类协作的新模式:AI负责初筛,人类负责终审
- 组织级效率工具:通过标准化审查规则提升整体代码质量
- 成本效益优化:用极低的成本实现7x24小时代码审查覆盖
对于希望引入AI辅助审查的团队,这是一个可直接复用的参考实现。其模块化、可扩展的架构设计,也为类似工具的开发提供了有价值的借鉴。
总结
sefc-pr-review-agent通过MCP协议将Claude Sonnet与Jira、GitHub无缝集成,构建了一套完整的AI驱动代码审查工作流。它的核心创新在于动态技能加载机制和"仅评论"的设计理念,既保证了审查的针对性和全面性,又避免了AI过度干预开发流程。
对于追求代码质量又受限于审查人力的团队,这种AI辅助审查模式值得尝试。随着MCP生态的成熟,我们可以期待更多类似的AI增强开发工具涌现。