智能代码审查服务 | 支持 GitHub & GitLab | 双模式深度分析
pr-review 是一个开源的 AI 代码审查工具,支持 GitHub Pull Request 和 GitLab Merge Request, 提供 API 模式 和 Claude CLI 深度模式 两种审查方式,能够自动分析代码变更, 发现潜在的 Bug、安全漏洞、性能问题和代码规范问题,并提供专业的改进建议。
🎯 零成本构建你的 AI 代码审查 CI 流程 - 支持私有部署,数据完全可控, 可自定义 AI 模型和审查提示词,轻松集成到现有的开发工作流中。
pr-review 提供两种审查模式,可根据需求灵活选择,Claude CLI 模式失败时自动降级到 API 模式
基于 diff 的快速审查,适合日常 PR 的快速反馈,响应迅速,资源占用低
克隆完整仓库,基于项目全局上下文的深度审查,理解代码依赖关系,发现隐藏问题
支持 API 快速模式和 Claude CLI 深度模式,可配置切换,自动降级保障
同时支持 GitHub 和 GitLab,可根据需求灵活切换或混合使用
支持 Docker、Kubernetes 等多种部署方式,数据完全可控,支持私有 GitLab 实例
自定义 AI 模型、审查提示词、评分标准,打造专属的代码审查风格
通过 Webhook 自动触发,PR/MR 有新提交时立即进行审查
AI 深度分析代码变更,识别 Bug、安全漏洞、性能问题等多维度问题
Go 编写,单二进制文件,API 模式资源占用极低(20MB 内存即可运行)
MIT 协议,完全开源,可自由修改和商业使用
Go 1.23+,零依赖标准库,编译后单一二进制文件
API 模式支持 OpenAI、通义千问等,Claude CLI 模式使用 Anthropic Claude
GitHub API、GitLab API 深度集成,统一接口抽象设计
私有部署,数据安全可控,可定制审查标准
提高代码审查效率,保持代码质量一致性
自动化代码评审,帮助学生提高编码能力
自动检测常见安全漏洞,提前发现风险
无缝集成到现有 CI 流程,自动化审查
持续跟踪代码质量,建立质量基线
AI 会在 PR/MR 中自动发布结构化的审查报告:
审查效果示例
报告包含以下内容:
pr-review 是一个开源项目,欢迎任何形式的贡献!
发现 Bug?在 GitHub Issues 提交问题报告
修复 Bug、添加新功能,欢迎提交 Pull Request
改进文档、添加示例,帮助更多人使用
git clone https://github.com/fishcg/pr-review.git cd pr-review
复制配置模板并修改:
cp config.yaml.example config.yaml # 编辑 config.yaml,填写必要配置
docker build -t pr-review . docker run -d -p 7995:7995 \ -v $(pwd)/config.yaml:/app/config.yaml \ pr-review
编辑 k8s.yaml 中的 ConfigMap,填写必要配置
kubectl apply -f k8s.yaml
# VCS Provider(版本控制系统)
vcs_provider: "github" # 选择 github 或 gitlab
# 服务端口
port: "7995"
github_token: "ghp_xxxxx" # GitHub Personal Access Token
webhook_secret: "" # Webhook 签名密钥(可选)
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} # 代码差异占位符
ANTHROPIC_AUTH_TOKEN、ANTHROPIC_BASE_URL、ANTHROPIC_MODEL在仓库 Settings → Webhooks 中添加:
Payload URL: http://your-service-url/webhook Content type: application/json Secret: (填写 config.yaml 中的 webhook_secret) Events: 选择 "Pull requests"
在项目 Settings → Webhooks 中添加:
URL: http://your-service-url/webhook Secret Token: (填写 config.yaml 中的 gitlab_webhook_token) Trigger: 选择 "Merge request events"
说明:接收 GitHub/GitLab Webhook 事件
触发时机:PR/MR 创建、更新、重新打开
说明:手动触发 PR/MR 审查
请求体:
{
"repo": "owner/repository", // GitHub: owner/repo, GitLab: group/project
"pr_number": 123,
"provider": "github" // 可选,默认使用配置文件中的 vcs_provider
}
说明:健康检查