Skip to content

alan22333/PRMind

Repository files navigation

PRMind — AI PR Review 助手

Go React TS DeepSeek License

智能分析 GitHub Pull Request,自动生成变更摘要、风险识别与 Review 建议,让代码评审更高效。

演示视频

演示视频

功能特性

  • PR 变更总结 — 自动理解 PR 意图,一键生成中文变更摘要
  • 风险代码识别 — 按高/中/低三级标注风险文件与代码位置
  • Review 建议生成 — 针对安全问题、逻辑错误、性能瓶颈给出具体修改建议
  • SSE 流式响应 — AI 分析结果实时逐字输出,无需等待
  • 语言感知 — 按 Go/Python/TypeScript/Rust 等语言定制审查规则
  • GitHub OAuth 登录 — 登录后可分析私有仓库 PR
  • 一键复制 — 每条建议一键复制到剪贴板

快速开始

前置要求

1. 克隆项目

git clone https://github.com/alan22333/PRMind.git
cd PRMind

2. 启动后端

cd backend
cp .env.example .env
# 编辑 .env,填入 DEEPSEEK_API_KEY
go run cmd/server/main.go

3. 启动前端

cd frontend
npm install
npm run dev

4. 使用

  1. 打开 http://localhost:3000
  2. 粘贴 GitHub PR 链接,如 https://github.com/gin-gonic/gin/pull/1
  3. 点击「开始分析」,实时查看 AI 分析结果
  4. (可选)点击「登录 GitHub」后即可分析私有仓库 PR

配置 OAuth 登录

  1. 前往 GitHub Developer Settings 注册 OAuth App
  2. 回调地址填写:http://localhost:8080/api/auth/callback
  3. Client IDClient Secret 填入 .env
GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret
JWT_SECRET=your-random-secret
FRONTEND_URL=http://localhost:3000

设计亮点

创新性

  • 自定义审查规则系统 — 业内首个支持用户自定义规则 + 大厂规范预设的 AI Review 工具。内置 Google Go、Uber Go、Airbnb JS/React、OWASP 安全审计、性能审查、空安全健壮性 6 套预设模板,可多选叠加,也可自由输入团队编码规范
  • 语言感知分析 — 自动识别变更文件语言(Go/Python/TypeScript/Rust/Java/SQL),注入对应的审查规则。例如 Go 文件会检查 goroutine 泄露和 error 处理,TSX 文件会检查 XSS 和 hooks 依赖
  • SSE 流式响应 — 不同于传统工具的 loading 等待,用户可实时看到 AI 的思考过程,首 token 延迟 <500ms

上下文理解策略

采用「按需获取 + 智能过滤」策略,不克隆完整仓库:

  • 通过 GitHub REST API 获取 PR metadata、description、file diffs
  • 自动跳过 lock/JSON/YAML/图片等非代码文件,节省 30-50% token 消耗
  • 大文件 diff >8000 字符自动截断,PR description >2000 字符截断
  • 保留文件级别的完整 patch 上下文,AI 可跨文件关联分析

误报控制

  • 风险分级 — high/medium/low 三级,颜色编码(红/黄/绿)一目了然
  • 结构化输出 — 要求 AI 返回固定 JSON Schema,避免自由文本的歧义
  • 降级容错 — AI 返回非法 JSON 时自动降级为原文展示,不丢失信息
  • 语言规则约束 — 语言特定规则缩小审查范围,避免通用建议式的"误报"

响应性能

场景 耗时
冷启动(GitHub API + AI 分析) ~3-5s
缓存命中 <1ms
SSE 首 token <500ms
不同规则组合 分别缓存,互不干扰

技术架构

Browser (React + TailwindCSS)
       │
       ├── GET /api/analyze         → JSON 结果
       ├── GET /api/analyze/stream  → SSE 流式输出
       ├── GET /api/auth/login      → GitHub OAuth
       └── GET /api/auth/callback   → JWT 签发
       │
Go Backend (Gin)
       │
       ├── GitHub API   → 获取 PR 信息 + diff
       ├── DeepSeek API → AI 代码分析
       └── Memory Cache → 1 小时 TTL
层级 技术
前端 React 18, TypeScript, TailwindCSS, Vite
后端 Go, Gin, golang-jwt
AI DeepSeek Chat (OpenAI 兼容接口)
认证 GitHub OAuth + JWT (HS256, 24h 过期)
缓存 内存缓存 (TTL 1h)

设计思路

模型选择

选用 DeepSeek Chat(OpenAI 兼容格式),基于三点考量:

  1. 成本优势 — DeepSeek 定价约为 GPT-4 的 1/50,适合高频 PR 分析场景
  2. 中文优化 — 对中文技术术语的理解准确度更高,中文 Review 建议更自然
  3. 接口兼容 — 完全兼容 OpenAI SDK,切换模型只需修改 baseURL,未来可无缝迁移到 GPT-4 或其他兼容模型

上下文获取方式

采用按需获取 + 智能过滤策略,而非全量克隆:

  • 通过 GitHub REST API 直接获取 PR metadata + file diffs
  • 自动跳过 lock/JSON/YML/图片等非代码文件,节省 token 消耗
  • 大文件 diff 超出 8000 字符自动截断
  • PR description 超出 2000 字符自动截断
  • 不克隆整个仓库,避免对大型项目的资源浪费

分析准确性与误报控制

策略 实现
语言感知 prompt .go/.py/.ts 等扩展名注入专属审查规则
结构化输出 要求 AI 返回固定 JSON schema,降低解析失败率
Markdown 容错 自动剥离 ```json ``` 包裹层
降级处理 AI 返回非法 JSON 时,以原始文本作为 summary,不从 diff 统计补充
风险分级 high/medium/low 三级,红色/黄色/绿色视觉区分

响应速度优化

  • 内存缓存 — 相同 PR 1 小时内直接返回,冷请求 ~3s,热请求 <1ms
  • SSE 流式 — 用户在看到第一个 token 后即感知"正在分析",而非等待完整响应
  • 跳过大文件 — 二进制/锁文件/配置文件自动跳过,减少上下文体积

未来扩展方向

  • 平台扩展 — 预留 GitLab/Bitbucket 接口适配层
  • 规则插件化 — 团队可自定义 Review 规则(如命名规范、安全策略)
  • 增量分析 — 仅分析 PR 新增 commits,避免重复分析
  • 历史趋势 — 记录 PR 质量趋势,识别项目热点模块
  • Webhook 集成 — 新 PR 自动触发分析,结果直接评论到 PR
  • 对比审查 — 展示同类 PR 的 AI 建议采纳率,帮助团队改进

项目结构

PRMind/
├── backend/                # Go 后端
│   ├── cmd/server/         # 入口
│   ├── internal/
│   │   ├── handler/        # HTTP handlers (pr, auth, health)
│   │   ├── service/        # 业务逻辑 (github, analyzer, auth, cache)
│   │   └── model/          # 数据模型
│   ├── pkg/openai/         # OpenAI 兼容客户端
│   └── test_e2e.sh         # E2E 测试脚本
├── frontend/               # React 前端
│   └── src/
│       ├── components/     # UI 组件 (Header, PRInput, AnalysisResult)
│       └── api/            # API 模块 (pr, auth)
└── docs/                   # 设计文档

运行测试

cd backend
bash test_e2e.sh

测试覆盖:单元测试、服务启停、URL 校验、真实 PR 分析、缓存验证、前端构建。

License

MIT

About

AI PR Review 助手

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors