快速开始
5 分钟内启动并运行 DeepReview。本指南将引导您完成将 AI 代码审查集成到 GitHub 工作流程的基本步骤。
前置要求
- 拥有至少一个仓库管理员权限的 GitHub 账户
- DeepReview 账户(提供免费版本)
第一步:安装 GitHub App
点击下方按钮安装 DeepReview GitHub App:
安装 DeepReview App
选择您希望 DeepReview 监控的仓库。您可以选择所有仓库或特定仓库。
第二步:配置项目
在仓库根目录创建 .deepreview.yml 文件:
version: "1.0"
review:
enabled: true
auto_review: true
languages:
- typescript
- python
- go
rules:
security: strict
performance: moderate
style: relaxed
ignore:
- "**/*.test.ts"
- "docs/**"
第三步:创建您的第一个 PR
配置完成后,像往常一样创建 Pull Request。DeepReview 将自动:
- 使用 ReAct 推理引擎分析代码变更
- 探索相关文件和依赖以获取完整上下文
- 发布带有可操作建议的审查评论
- 生成带有严重级别的摘要报告
提示:当 DeepReview 能访问您项目的文档时效果最佳。考虑添加 docs/ 文件夹或链接您的 Wiki。
安装部署
DeepReview 提供多种安装选项以满足您团队的需求。
云端部署(推荐)
最快的入门方式。无需基础设施管理。
- 在 app.deepreview.ai 注册
- 连接您的 GitHub/GitLab 账户
- 选择要监控的仓库
- 开始在您的 PR 上接收 AI 审查
私有化部署(企业版)
对于有严格合规要求的团队,DeepReview 可以部署在您自己的基础设施中。
docker pull deepreview/server:latest
docker run -d \
--name deepreview \
-p 8080:8080 \
-e DATABASE_URL=postgres://... \
-e LLM_API_KEY=your-api-key \
-e GITHUB_APP_ID=your-app-id \
-e GITHUB_PRIVATE_KEY=your-private-key \
deepreview/server:latest
Kubernetes 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: deepreview
spec:
replicas: 3
selector:
matchLabels:
app: deepreview
template:
spec:
containers:
- name: deepreview
image: deepreview/server:latest
ports:
- containerPort: 8080
配置说明
DeepReview 可以在多个级别进行配置:仓库、组织和全局。
配置文件参考
| 选项 |
类型 |
默认值 |
描述 |
version |
string |
"1.0" |
配置模式版本 |
review.enabled |
boolean |
true |
启用/禁用自动审查 |
review.auto_review |
boolean |
true |
PR 创建时自动审查 |
review.languages |
array |
["*"] |
要分析的语言 |
rules.security |
string |
"moderate" |
strict | moderate | relaxed |
rules.performance |
string |
"moderate" |
strict | moderate | relaxed |
ignore |
array |
[] |
要忽略的 Glob 模式 |
环境变量
| 变量 |
必需 |
描述 |
LLM_API_KEY |
是 |
LLM 提供商的 API 密钥 |
LLM_MODEL |
否 |
使用的模型(默认:gpt-4) |
LLM_FALLBACK_MODEL |
否 |
长上下文的备用模型 |
DATABASE_URL |
是 |
PostgreSQL 连接字符串 |
REDIS_URL |
否 |
Redis 任务队列 |
ReAct 引擎
ReAct(推理与行动)引擎是 DeepReview 智能代码审查能力的核心。与传统的静态分析器不同,ReAct 引擎能够思考、探索和迭代,直到完全理解代码变更。
工作原理
ReAct 引擎以迭代循环的方式运行,类似于人工审查员处理代码的方式:
ReAct 执行示例
PR 修改了认证函数。我需要了解密码哈希是如何实现的。
read_file("src/auth/password.ts")
文件包含使用 salt rounds = 10 的 bcrypt 实现
我发现了一个潜在的安全问题 - salt rounds 被硬编码了。
让我检查是否有安全设置的配置文件。
search_code("salt.*rounds", "src/", "*.ts")
找到:config/security.ts 定义了 SALT_ROUNDS 常量
PR 应该引用配置常量而不是硬编码。
我有足够的上下文来生成审查报告了。
可用工具
AI 代理在审查过程中可以使用以下工具:
| 工具 |
描述 |
使用场景 |
read_file |
读取任何文件的内容 |
理解完整的函数实现 |
search_code |
在代码库中搜索模式 |
查找函数的所有使用位置 |
list_directory |
探索项目结构 |
理解模块组织 |
fetch_docs |
查询库文档 |
检查 API 正确用法 |
read_wiki |
读取项目 Wiki 页面 |
理解项目约定 |
think |
内部推理记录 |
复杂逻辑推理 |
核心优势:与仅看 diff 的工具不同,DeepReview 可以追踪函数调用、理解架构模式,并检测需要跨文件上下文的问题。
审查工作流
了解从 PR 创建到审查完成的完整流程。
同步模式 vs 异步模式
| 模式 |
适用场景 |
响应时间 |
| 同步模式 |
小型 PR(<500 行) |
30-60 秒 |
| 异步模式 |
大型 PR,深度分析 |
2-10 分钟(Webhook 回调) |
审查输出结构
每次审查生成多种输出:
- 详细报告:包含所有发现的完整分析
- 摘要:用于快速概览的执行摘要
- 建议列表:带严重级别的可操作项
- 行内评论:直接发布到 PR 代码行上
严重级别
| 级别 |
图标 |
描述 |
| 严重 |
🔒 |
安全漏洞、数据丢失风险 |
| 警告 |
⚡ |
性能问题、潜在 bug |
| 提示 |
💡 |
代码风格、重构建议 |
重试与容错
DeepReview 实现了多层容错机制以确保可靠的审查。
重试策略
| 错误类型 |
策略 |
最大重试次数 |
| 网络超时 |
指数退避 |
3 |
| 速率限制 |
等待 + 重试 |
5 |
| 上下文过长 |
切换更大模型 |
1 |
| 模型不可用 |
备用模型 |
2 |
模型切换
当上下文超过主模型限制时,DeepReview 会自动切换到更大容量的模型:
主模型: gpt-4 (8K 上下文)
↓ (如果上下文 > 8K)
备用: gpt-4-32k (32K 上下文)
↓ (如果上下文 > 32K)
扩展: claude-3-opus (200K 上下文)
GitHub 集成
DeepReview 通过 GitHub App 提供原生的 GitHub 集成。
所需权限
- 读取:仓库内容、元数据、Pull Request
- 写入:Pull Request 评论、Checks
Webhook 事件
DeepReview 监听以下 GitHub 事件:
| 事件 |
操作 |
pull_request.opened |
触发自动审查 |
pull_request.synchronize |
新提交时重新审查 |
issue_comment.created |
响应 @deepreview 提及 |
REST API
使用我们的 REST API 将 DeepReview 集成到您的自定义工作流中。
认证
Authorization: Bearer YOUR_API_KEY
创建审查
POST /api/v1/reviews
Content-Type: application/json
{
"repository": "owner/repo",
"pull_request": 123,
"base_ref": "main",
"head_ref": "feature-branch",
"async": true,
"callback_url": "https://your-server/webhook"
}
响应
{
"review_id": "rev_abc123",
"status": "processing",
"created_at": "2024-01-15T10:30:00Z"
}
获取审查结果
{
"review_id": "rev_abc123",
"status": "completed",
"summary": "发现 3 个问题:1 个严重,2 个警告",
"suggestions": [
{
"severity": "critical",
"file": "src/auth.ts",
"line": 42,
"message": "SQL 注入漏洞",
"suggestion": "使用参数化查询"
}
],
"stats": {
"files_analyzed": 15,
"tool_calls": 23,
"tokens_used": 45000
}
}