本项目是一个基于 AI 的代码审查服务,支持多种模型(本地模型/OpenAI/DeepSeek)和多种代码托管平台(GitHub/GitLab)。
- 支持多种 AI 模型:本地模型、OpenAI API、DeepSeek API
- 支持多种代码托管平台:GitHub、GitLab
- 支持 Push 事件和 PR/MR 自动评审
- 支持自动评论功能
- 支持容器化部署
- 支持向量化搜索相关代码
-
克隆项目并安装依赖:
git clone <repo-url> cd code-review-service pip install -r requirements.txt
-
配置环境:
cp .env.example .env # 编辑 .env 文件,设置必要的配置项
-
启动服务:
python main.py
本项目使用 .env.{environment}
文件管理不同环境的配置:
-
配置模板:
.env.example
: 包含所有配置项的说明和默认值- 不包含实际的密钥或敏感信息
- 用于生成各环境的配置文件
-
环境配置:
# 开发环境 cp .env.example .env.dev vim .env.dev # 设置开发环境的配置 # 生产环境 cp .env.example .env.prod vim .env.prod # 设置生产环境的配置
-
启动服务:
# 开发环境 ENVIRONMENT=dev docker-compose up -d # 生产环境 ENVIRONMENT=prod docker-compose up -d
-
.env.example:
- 配置模板文件
- 包含所有配置项的说明
- 用于创建环境特定的配置
-
.env.dev:
- 开发环境配置
- 可以使用测试密钥
- 通常启用调试模式
-
.env.prod:
- 生产环境配置
- 使用正式密钥
- 禁用调试模式
- 需要安全保管
-
模型配置(必选其一):
# OpenAI MODEL_TYPE=openai OPENAI_API_KEY=your_key_here # 或 DeepSeek MODEL_TYPE=deepseek DEEPSEEK_API_KEY=your_key_here
-
GitHub配置(可选):
GITHUB_TOKEN=your_token_here WEBHOOK_SECRET=your_secret_here
# 开发环境
ENVIRONMENT=dev docker-compose up -d
# 生产环境
ENVIRONMENT=prod docker-compose up -d
# 查看服务日志
docker-compose logs -f
# 查看特定环境日志
ENVIRONMENT=prod docker-compose logs -f
# 拉取最新代码
git pull
# 重建并启动服务
docker-compose down
ENVIRONMENT=prod docker-compose up -d --build
vector_db/
: 向量数据库文件logs/
: 应用日志.env.{environment}
: 环境配置
# 创建备份
tar -czf backup-$(date +%Y%m%d).tar.gz vector_db/ logs/ .env.*
# 恢复备份
tar -xzf backup-20240101.tar.gz
-
直接评审接口:
- URL:
/webhook/direct
- 方法: POST
- 用途: 直接代码评审
- URL:
-
GitHub Webhook:
- URL:
/webhook/github
- 方法: POST
- 用途: GitHub 事件处理
- URL:
-
配置问题:
- 检查环境配置文件是否正确
- 验证 API 密钥是否有效
- 确认端口映射是否正确
-
资源问题:
- 检查 CPU/内存限制
- 验证磁盘空间
- 确认目录权限
本项目使用 CodeBERT 模型进行代码向量化,有两种部署方式:
-
在线下载(默认):
- 设置
EMBEDDING_MODEL=microsoft/codebert-base
- 首次启动时自动下载模型
- 需要确保网络可访问 HuggingFace
- 设置
-
离线部署(推荐):
- 模型文件已包含在 Docker 镜像中
- 设置
EMBEDDING_MODEL=/app/models/codebert-base
- 无需额外下载,启动更快
如果需要使用其他向量化模型:
- 修改
scripts/download_models.py
- 重新构建 Docker 镜像:
docker-compose build --no-cache
如果需要在本地开发环境使用:
-
下载模型:
python scripts/download_models.py
-
修改配置:
# .env.dev EMBEDDING_MODEL=./models/codebert-base