GitLab AI 代码审查工具
用 Go 写了一个 GitLab AI 代码审查工具(大模型调用实践)
最近在学习大模型 API 调用,想找一个既实用又不复杂的场景练手。正好平时用 GitLab 做代码评审,每次盯着 diff 逐行看总觉得有些机械化的工作可以交给 AI。于是动手写了一个自动 Review 工具,顺便把调用 OpenAI API 的完整流程跑一遍。
📦 项目地址
👉 GitReviewAI https://github.com/yuhua2000/GitReviewAI
一、GitReviewAI:一个 GitLab 自动代码审查工具
🧠 是干嘛的?
一句话:
用 AI 自动审查 GitLab MR 的代码变更,并把意见贴到评论区。
提交 MR 后,它会自动:
- 接收 GitLab Webhook 通知
- 获取代码 diff
- 调用 OpenAI 分析代码
- 生成 Review 意见贴回 MR
⚙️ 核心思路:AI + Webhook 闭环
流程不复杂,关键是把这个闭环跑通:
1 | MR 触发 → GitLab Webhook → 解析 diff → 调用 OpenAI → 生成意见 → 通过 GitLab API 贴评论 |
具体就是:
- GitLab 发来 webhook 事件
- 提取 diff 内容,控制 token 长度
- 构造 Prompt,调用 GPT 分析
- 把结果写回 MR 评论区
二、做了哪些东西?
1️⃣ Webhook 处理
- 接收 GitLab MR 事件
- 校验 Secret Token
- 提取 diff 和文件变更信息
- 过滤不需要审查的文件(如 lock 文件)
2️⃣ Prompt 设计(关键)
- 设计 System Prompt:告诉 GPT 它是资深代码审查员
- 约束输出维度:安全、性能、可读性、逻辑错误
- 控制输出格式,方便展示
3️⃣ OpenAI 调用封装
- 超时控制 + 重试机制
- 错误日志记录
- Token 用量统计
4️⃣ 评论回写
- 通过 GitLab API 将审查意见贴到对应 MR
- 支持多条意见批量提交
三、技术实现
- Go
- openai-go
- GitLab Webhook + API
- YAML 配置驱动
- Docker 多阶段构建
四、这个项目解决什么问题?
一个很现实的问题:
小团队没精力每个 MR 都仔细 Review,但直接跳过又容易出问题。
这个工具的目标是:
- 帮你做第一轮“机械审查”
- 把明显问题(空指针、SQL 注入、死循环等)先筛出来
- 不追求 100% 准确,但要好用、省时间
五、一些实际使用场景
1️⃣ 小团队提效
人少事多,MR 经常没人看。GitReviewAI 先过一遍,人工再重点看 AI 标记的地方。
2️⃣ 新手代码把关
实习生或新人提交的代码,AI 先扫一遍常见坑,带新人更省心。
3️⃣ 学习大模型调用
代码量不大,核心逻辑清晰,适合想学习如何在业务里集成 OpenAI 的同学。
六、当前状态
学习项目性质:
- ✅ Webhook 处理跑通
- ✅ OpenAI 调用跑通
- ✅ MR 评论回写跑通
- ✅ Docker 部署支持
- 🚧 Prompt 持续优化中
七、为什么做这个?
主要还是出于学习目的,在实践中回答一个问题:
如何把大模型 API 调用嵌入到真实工作流中?
→ GitReviewAI
把“代码审查”这件事,用 AI + Webhook 的模式跑通一个完整闭环。
整体来说,更多是:
在动手过程中理解大模型调用和业务整合,而不是做一个完整产品。
八、总结
这个项目不复杂,但对我来说主要价值是:
把“Webhook 接收 → 调用 AI → 结果回写”这个链路完整跑通。
同时也验证了一点:
- Prompt 设计直接决定输出质量
- 大模型应用的关键不只是调 API,而是怎么把它嵌入业务流
📌 最后
这个项目更像是:
学习大模型 API 调用的实验项目。
如果你在折腾:
- Go + OpenAI
- GitLab 集成
- 代码审查自动化
- Webhook 处理
可以拿去参考或者改着玩。