3e93344c7b421015543e5cf4f8c45755b9b8190d
Deploy PR-Helper / deploy (push) Successful in 40s
PR-Helper
AI 驱动的 PR 描述生成器和代码审查工具。自托管设计,专为内部/本地使用。
功能特性
- PR 描述生成 — 从交互式 Git 图形中选择提交,通过 LLM 生成结构化 PR 描述
- AI 代码审查 — 按文件分析,严重程度评级,在差异视图中内联显示建议
- 交互式 Git 图形 — D3.js 可视化,点击选择 base/head 引用
- 差异查看器 — diff2html 驱动的分割/统一视图,支持语法高亮
- 审查笔记 — 在整体、文件或建议级别添加 Markdown 笔记
- PDF 导出 — 生成可打印的审查报告
- 仓库缓存 — 克隆的仓库缓存,可配置过期时间
快速开始
Docker(推荐)
docker compose up --build
手动构建
要求:Go 1.22+,CGO 启用(用于 SQLite),Chromium(用于 PDF 导出)
# 安装依赖
go mod download
# 构建
CGO_ENABLED=1 go build -o pr-helper .
# 运行
./pr-helper
服务器默认监听 :8080 端口。
配置
LLM 设置(必需)
导航到 设置 (/settings) 并配置:
| 设置 | 说明 | 默认值 |
|---|---|---|
| API 端点 | OpenAI 兼容 API URL | https://api.openai.com/v1 |
| API 密钥 | 您的 API 密钥 | (空) |
| 模型 | 模型名称 | gpt-4o |
支持任何 OpenAI 兼容 API:OpenAI、Deepseek、Ollama、vLLM 等。
审查设置
| 设置 | 说明 | 默认值 |
|---|---|---|
| Top-N 文件数 | 每次审查分析的最大文件数 (0 = 全部) | 20 |
| 并发数 | 并行文件分析数 | 5 |
缓存设置
| 设置 | 说明 | 默认值 |
|---|---|---|
| 最大保留天数 | 自动清理阈值 | 7 |
| 最大缓存大小 (MB) | 总缓存大小限制 | 5000 |
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
PORT |
服务器端口 | 8080 |
GIN_MODE |
Gin 模式 (debug/release) |
debug |
DATA_DIR |
数据目录路径 | ./data |
MYSQL_HOST |
MySQL 主机地址 | 127.0.0.1 |
MYSQL_PORT |
MySQL 端口 | 3306 |
MYSQL_USER |
MySQL 用户名 | root |
MYSQL_PASSWORD |
MySQL 密码 | (空) |
MYSQL_DATABASE |
MySQL 数据库名 | pr_helper |
使用方法
- 克隆仓库 — 在首页粘贴 Git URL,可选提供私有仓库的认证信息
- 浏览图形 — 在交互式 D3.js 图形中查看分支、标签和提交历史
- 选择引用 — 点击图形中的节点或使用下拉选择器选择 base 和 head
- 生成 PR 描述 — 导航到"生成",选择引用,点击"生成"
- 运行代码审查 — 导航到"审查",配置 Top-N 和并发数,点击"开始审查"
- 添加笔记 — 点击任何建议或整体部分添加 Markdown 笔记
- 导出 PDF — 点击"导出 PDF"下载格式化报告
API 路由
页面
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / |
首页 — 克隆表单和已缓存仓库 |
| GET | /repo/:id |
仓库详情 — Git 图形和差异查看器 |
| GET | /settings |
设置页面 |
API
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/repos |
克隆仓库 (SSE 流) |
| GET | /api/repos |
列出已缓存仓库 |
| DELETE | /api/repos/:id |
删除仓库缓存 |
| POST | /api/repos/:id/cleanup |
触发缓存清理 |
| POST | /api/repos/:id/pull |
拉取更新 |
| GET | /api/repos/:id/graph |
Git 图形数据 (JSON) |
| GET | /api/repos/:id/refs |
分支和标签 |
| GET | /api/repos/:id/commits |
提交日志 |
| GET | /api/repos/:id/diff |
两个引用之间的差异 |
| POST | /api/repos/:id/generate |
生成 PR 描述 (SSE) |
| POST | /api/repos/:id/review |
AI 代码审查 (SSE) |
| GET | /api/repos/:id/review/analyses |
列出历史审查 |
| GET | /api/repos/:id/review/analyses/:aid |
获取单个审查 |
| POST | /api/repos/:id/review/notes |
保存审查笔记 |
| GET | /api/repos/:id/review/notes |
获取审查笔记 |
| GET | /api/settings |
获取设置 |
| PUT | /api/settings |
更新设置 |
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Go、Gin、MySQL、go-git |
| 前端 | Go html/template、HTMX、D3.js、diff2html、Tailwind CSS |
| LLM | OpenAI 兼容 API (SSE 流式传输) |
| 部署 | Docker |
项目结构
PR-Helper/
├── main.go # 应用入口
├── config/ # 配置加载
├── database/ # 数据库初始化和迁移
├── handlers/ # HTTP 处理器 (页面 + JSON API + SSE)
├── models/ # 数据模型
├── services/ # 业务逻辑 (Git 操作、LLM 调用、缓存管理)
├── templates/ # Go HTML 模板
├── static/ # CSS (Tailwind)、JS、第三方库
├── data/ # 克隆的仓库缓存
└── docs/ # 技术文档
技术文档
详细的技术文档位于 docs/ 目录:
| 文档 | 说明 |
|---|---|
| 01-architecture.md | 架构概览 — 项目结构、技术栈、数据流 |
| 02-backend-services.md | 后端服务层 — Git、LLM、PR 生成、代码审查 |
| 03-frontend-interaction.md | 前端交互设计 — SSE、D3.js 图形、差异查看器 |
| 04-database-design.md | 数据库设计 — 表结构、索引、迁移策略 |
| 05-api-reference.md | API 接口文档 — 完整的 RESTful API 参考 |
| 06-sse-streaming.md | SSE 流式传输 — 协议、实现、错误处理 |
| 07-llm-integration.md | LLM 集成 — 配置、提示模板、流式调用 |
| 08-deployment.md | 部署运维 — Docker、反向代理、监控 |
| 09-development-guide.md | 开发指南 — 环境搭建、代码规范、测试 |
| 10-troubleshooting.md | 故障排查 — 常见问题和解决方案 |
安全
无认证机制。 请勿暴露到公网。仅限内部/本地使用。
许可证
MIT
Description
Languages
Go
41.3%
HTML
27.3%
JavaScript
26.9%
CSS
2.9%
Shell
1.4%
Other
0.2%