AI Code Review

智能代码审查服务 | 支持 GitHub & GitLab | 双模式深度分析

快速构建您的 AI 代码审查工作流

产品介绍

pr-review 是一个开源的 AI 代码审查工具,支持 GitHub Pull RequestGitLab Merge Request, 提供 API 模式Claude CLI 深度模式 两种审查方式,能够自动分析代码变更, 发现潜在的 Bug、安全漏洞、性能问题和代码规范问题,并提供专业的改进建议。

🎯 零成本构建你的 AI 代码审查 CI 流程 - 支持私有部署,数据完全可控, 可自定义 AI 模型和审查提示词,轻松集成到现有的开发工作流中。

🌟 GitHub 仓库 📦 下载发布版

双审查模式

pr-review 提供两种审查模式,可根据需求灵活选择,Claude CLI 模式失败时自动降级到 API 模式

API 模式

快速 Diff 审查

基于 diff 的快速审查,适合日常 PR 的快速反馈,响应迅速,资源占用低

  • 审查速度:5-15 秒
  • 内存占用:20-50 MB
  • AI 模型:支持任意 OpenAI 兼容 API
  • 审查范围:仅分析代码 diff
  • 适用场景:快速迭代、日常 PR
Claude CLI 模式

深度上下文审查

克隆完整仓库,基于项目全局上下文的深度审查,理解代码依赖关系,发现隐藏问题

  • 审查速度:1-5 分钟
  • 内存占用:100-500 MB
  • AI 模型:Claude(Anthropic API)
  • 审查范围:完整项目上下文 + diff
  • 适用场景:重要功能、架构变更
  • 特色功能:可使用 Read、Glob、Grep 工具探索代码
💡 智能降级: Claude CLI 模式失败时(超时、网络错误等),系统会自动降级到 API 模式继续完成审查,确保服务稳定性

核心特性

🧠

双模式审查

支持 API 快速模式和 Claude CLI 深度模式,可配置切换,自动降级保障

🌐

双平台支持

同时支持 GitHub 和 GitLab,可根据需求灵活切换或混合使用

🏠

私有部署

支持 Docker、Kubernetes 等多种部署方式,数据完全可控,支持私有 GitLab 实例

🔧

高度可定制

自定义 AI 模型、审查提示词、评分标准,打造专属的代码审查风格

自动化触发

通过 Webhook 自动触发,PR/MR 有新提交时立即进行审查

🔍

智能分析

AI 深度分析代码变更,识别 Bug、安全漏洞、性能问题等多维度问题

🪶

轻量高效

Go 编写,单二进制文件,API 模式资源占用极低(20MB 内存即可运行)

📦

开源免费

MIT 协议,完全开源,可自由修改和商业使用

技术栈

🔧

后端

Go 1.23+,零依赖标准库,编译后单一二进制文件

🤖

AI 集成

API 模式支持 OpenAI、通义千问等,Claude CLI 模式使用 Anthropic Claude

🔌

API 集成

GitHub API、GitLab API 深度集成,统一接口抽象设计

适用场景

🏢

企业团队

私有部署,数据安全可控,可定制审查标准

👥

开源项目

提高代码审查效率,保持代码质量一致性

🎓

教学项目

自动化代码评审,帮助学生提高编码能力

🛡️

安全审计

自动检测常见安全漏洞,提前发现风险

CI/CD 集成

无缝集成到现有 CI 流程,自动化审查

🔬

代码质量监控

持续跟踪代码质量,建立质量基线

审查报告

AI 会在 PR/MR 中自动发布结构化的审查报告:

审查效果示例

审查效果示例

报告包含以下内容:

  • 📊 代码质量评分 - 100 分制,直观展示质量水平
  • 做得好的地方 - 值得肯定的代码实现
  • ⚠️ 需要注意的问题 - 严重问题和优化建议
  • 🔒 安全检查 - SQL注入、XSS、敏感信息泄露等
  • 性能建议 - 性能优化方向
  • 📝 代码规范 - 命名、注释、格式等
  • 💡 总体建议 - 改进方向总结
💡 自定义审查标准: 可在 config.yaml 中修改 system_prompt 和 user_prompt_template, 定制符合团队规范的审查风格和输出格式

参与贡献

pr-review 是一个开源项目,欢迎任何形式的贡献!

🐛

报告问题

发现 Bug?在 GitHub Issues 提交问题报告

提交 PR

修复 Bug、添加新功能,欢迎提交 Pull Request

📖

完善文档

改进文档、添加示例,帮助更多人使用

⭐ Star on GitHub 🍴 Fork 项目

快速部署

方式一:Docker 部署

1 克隆项目
git clone https://github.com/fishcg/pr-review.git
cd pr-review
2 配置服务

复制配置模板并修改:

cp config.yaml.example config.yaml
# 编辑 config.yaml,填写必要配置
3 构建并运行
docker build -t pr-review .
docker run -d -p 7995:7995 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  pr-review

方式二:Kubernetes 部署

1 修改配置

编辑 k8s.yaml 中的 ConfigMap,填写必要配置

2 部署到集群
kubectl apply -f k8s.yaml

配置说明

🔧 基础配置

# VCS Provider(版本控制系统)
vcs_provider: "github"  # 选择 github 或 gitlab

# 服务端口
port: "7995"

🔑 GitHub 配置

github_token: "ghp_xxxxx"  # GitHub Personal Access Token
webhook_secret: ""         # Webhook 签名密钥(可选)

🦊 GitLab 配置

gitlab_token: "glpat-xxxxx"   # GitLab Personal Access Token
gitlab_base_url: ""           # GitLab 实例地址(默认 gitlab.com)
gitlab_webhook_token: ""      # Webhook Token(可选)

🎯 审查模式配置

review_mode: "api"  # 选择 "api" 或 "claude_cli"

# API 模式配置
ai_api_url: "http://your-ai-service/chat/completions"
ai_api_key: "sk-xxxxx"
ai_model: "qwen-max-latest"

# Claude CLI 模式配置(仅当 review_mode: "claude_cli" 时需要)
claude_cli:
  binary_path: "claude"
  allowed_tools: ["Read", "Glob", "Grep", "Bash"]
  timeout: 600                    # 超时时间(秒)
  max_output_length: 100000
  api_key: "sk-ant-xxxxx"         # Anthropic API Key
  api_url: ""                     # API 地址(可选)
  model: ""                       # 模型(可选)
  # 例如:"anthropic/claude-sonnet-4.5"

# 仓库克隆配置(仅 Claude CLI 模式需要)
repo_clone:
  temp_dir: "/tmp/pr-review-repos"
  clone_timeout: 180              # 克隆超时(秒)
  shallow_clone: true             # 浅克隆
  shallow_depth: 100
  cleanup_after_review: true      # 审查后清理

📝 审查提示词(可自定义)

system_prompt: |
  你是一个资深的代码审查专家...

user_prompt_template: |
  审查以下代码变更...
  {diff}  # 代码差异占位符
💡 配置优先级:
  • Claude CLI 环境变量:配置文件 > 环境变量 > Claude CLI 全局配置
  • 环境变量名:ANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URLANTHROPIC_MODEL

Webhook 配置

GitHub Webhook

在仓库 Settings → Webhooks 中添加:

Payload URL: http://your-service-url/webhook
Content type: application/json
Secret: (填写 config.yaml 中的 webhook_secret)
Events: 选择 "Pull requests"

GitLab Webhook

在项目 Settings → Webhooks 中添加:

URL: http://your-service-url/webhook
Secret Token: (填写 config.yaml 中的 gitlab_webhook_token)
Trigger: 选择 "Merge request events"

API 端点

POST /webhook

说明:接收 GitHub/GitLab Webhook 事件

触发时机:PR/MR 创建、更新、重新打开

POST /review

说明:手动触发 PR/MR 审查

请求体:

{
  "repo": "owner/repository",  // GitHub: owner/repo, GitLab: group/project
  "pr_number": 123,
  "provider": "github"         // 可选,默认使用配置文件中的 vcs_provider
}

GET /health

说明:健康检查