📖 Documentation | English | 简体中文
一个基于 Go 语言的智能代码审查机器人,专为 GitHub 拉取请求设计。该机器人集成了 Claude Code AI 审查功能,能够自动分析代码质量并提供专业的中文审查报告。
该项目是一个现代化的自动化代码审查解决方案,通过 GitHub webhook 机制实现实时代码质量监控。系统采用模块化设计,支持多种代码审查工具,并默认集成 Claude Code AI 智能审查功能。
- 🤖 智能监听:自动响应 GitHub PR 的
opened、synchronize、reopened事件 - 📥 自动克隆:智能获取 PR 源码,支持分支切换和版本管理
- 🔍 AI 驱动审查:默认集成 Claude Code,支持多维度代码质量分析
- 💬 专业评论:生成结构化的中文审查报告,包含代码建议和改进方案
- 🔧 安全认证:采用 GitHub Personal Access Token 和 Webhook 签名双重验证
- 📊 详细分析:提供文件类型统计、执行时间监控和审查覆盖率分析
CodeReview/
├── main.go # 主程序入口,服务器启动和路由配置
├── config/ # 配置管理模块,环境变量处理
├── webhook/ # Webhook 事件处理器,GitHub API 交互
├── review/ # 代码审查执行引擎
├── git/ # Git 操作模块,仓库克隆和清理
├── prompt/ # AI 审查提示词模板
└── utils/ # 工具函数库
- Go 1.24+(项目使用最新 Go 版本)
- Git 版本控制工具
- Claude Code CLI(用于 AI 驱动的代码审查)
- GitHub Personal Access Token(需要仓库访问权限)
- 克隆项目
git clone https://github.com/your-username/CodeReview.git
cd CodeReview- 依赖管理
go mod tidy # 下载并整理依赖
go mod download # 验证依赖完整性- 编译构建
# 开发版本
go run main.go
# 生产版本
go build -o code-review .
./code-review# GitHub 个人访问令牌(需要 repo 权限)
export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Webhook 签名密钥(用于验证请求来源)
export GITHUB_WEBHOOK_SECRET="your-webhook-secret-key"# 服务器端口(默认:8080)
export PORT="8080"
# 自定义审查命令(已内置 Claude Code 配置)
export REVIEW_COMMAND="claude /review --system-prompt review时候参考prompt/review.md文件,review时参考prompt/baseReview.md文件,IMPORTANT: 请使用中文进行review结果展示 --dangerously-skip-permissions"
# 审查超时时间,单位秒(默认:300秒)
export REVIEW_TIMEOUT="300"
# 临时工作目录(默认:/tmp/code-review)
export WORK_DIR="/var/tmp/code-review"- 访问 GitHub Settings
- 选择 Generate new token (classic)
- 配置权限范围:
- ✅
repo- 访问私有仓库 - ✅
public_repo- 访问公开仓库 - ✅
issues:write- 创建评论权限
- ✅
- 生成并安全保存令牌
- 进入目标仓库 → Settings → Webhooks
- 点击 Add webhook
- 配置参数:
- Payload URL:
http://your-server:8080/webhook - Content type:
application/json - Secret: 与
GITHUB_WEBHOOK_SECRET相同 - Events: 选择 "Let me select individual events"
- 勾选 "Pull requests"
- Payload URL:
机器人监听以下 PR 事件:
pull_request.opened- 新 PR 创建时pull_request.synchronize- PR 新提交推送时pull_request.reopened- PR 重新开启时
项目提供专业的 AI 审查提示词:
prompt/review.md - 代码审查标准
- 环境变量获取规范
- 默认值设置要求
- 注释说明规范
prompt/baseReview.md - 多维度审查策略
- 代码质量审查
- 性能优化建议
- 文档准确性检查
- 安全性扫描
使用 Claude Code(推荐):
export REVIEW_COMMAND="claude /review --system-prompt $(cat prompt/review.md) --dangerously-skip-permissions"集成多种工具:
export REVIEW_COMMAND="eslint . && go vet ./... && mypy . && claude /review"使用自定义脚本:
export REVIEW_COMMAND="./scripts/custom-review.sh"机器人会生成如下格式的专业审查报告:
## 🤖 代码审查结果
### 📋 审查输出
#### 代码质量分析
- 发现 3 个潜在问题需要修复
- 建议 2 处性能优化点
- 代码结构良好,可读性强
#### 安全检查
- ✅ 未发现明显安全漏洞
- ✅ 输入验证完善
- ⚠️ 建议:增加错误处理机制
### ✅ 状态
审查成功完成,整体代码质量良好。
### 📁 文件分析
本次审查涵盖 12 个文件:
**文件类型分布:**
- `.go`: 6 个文件
- `.md`: 3 个文件
- `.yaml`: 2 个文件
- `.json`: 1 个文件
### 💡 改进建议
1. **main.go:45** - 建议增加错误日志记录
2. **config/config.go:32** - 推荐使用环境变量默认值
3. **webhook/handler.go:156** - 优化并发处理逻辑curl http://localhost:8080/health
# 响应:{"status":"ok"}应用采用结构化 JSON 日志:
{
"level": "info",
"msg": "Starting webhook server",
"port": "8080",
"time": "2024-01-15T10:30:00Z"
}日志内容包括:
- Webhook 事件接收记录
- 仓库克隆操作状态
- 审查命令执行详情
- GitHub API 交互结果
- 系统错误和异常信息
- HTTPS 加密:使用反向代理(Nginx/Caddy)启用 SSL/TLS
- 密钥管理:使用密钥管理服务存储敏感信息
- 权限控制:限制 GitHub Token 权限范围
- 速率限制:防止 API 滥用和 DDoS 攻击
- 定期更新:保持依赖包最新版本
FROM golang:1.24-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod tidy && go build -o code-review .
FROM alpine:latest
RUN apk --no-cache add ca-certificates git
WORKDIR /root/
COPY --from=builder /app/code-review .
EXPOSE 8080
CMD ["./code-review"]1. 签名验证失败
# 检查环境变量
echo $GITHUB_WEBHOOK_SECRET
# 验证 webhook 配置
# 确保 GitHub 仓库中的 Secret 与环境变量一致2. 仓库克隆失败
# 测试 GitHub Token 权限
curl -H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/user/repos
# 检查仓库访问权限
# 确保 Token 有足够权限访问目标仓库3. 审查命令执行失败
# 测试审查命令
cd /tmp/test-repo
claude /review --dangerously-skip-permissions
# 检查 Claude CLI 安装
claude --version4. 性能优化问题
- 调整
REVIEW_TIMEOUT参数 - 优化审查命令复杂度
- 考虑增加并发处理限制
启用详细日志记录:
export LOG_LEVEL="debug"
go run main.go欢迎提交 Issue 和 Pull Request!
- Fork 项目仓库
- 创建功能分支:
git checkout -b feature/new-feature - 提交更改:
git commit -m "Add new feature" - 推送分支:
git push origin feature/new-feature - 创建 Pull Request
- 遵循 Go 官方代码规范
- 添加必要的单元测试
- 更新相关文档
- 确保所有测试通过
本项目采用 MIT 许可证,详见 LICENSE 文件。
如遇问题或需要技术支持,请:
- 提交 GitHub Issue
- 查看 项目文档
- 联系维护团队
Language / 语言: English | 中文
<script> function showLanguage(lang) { const enContent = document.getElementById('en-content'); const zhContent = document.getElementById('zh-content'); if (lang === 'en') { enContent.style.display = 'block'; zhContent.style.display = 'none'; } else { enContent.style.display = 'none'; zhContent.style.display = 'block'; } } // Default to Chinese showLanguage('zh'); </script>