GitLab AI 代码审查工具 v0.2.0

用 Go 写了一个 GitLab AI 代码审查工具(v0.2.0:规则引擎 + 审计日志实践)

上一版把”Webhook → AI → 评论回写”的闭环跑通了。这段时间继续迭代,主要解决三个问题:审查规则能不能自定义?多个项目能不能用不同模型?审查失败了怎么排查?

📦 项目地址 👉 GitReviewAI


一、v0.2.0 做了什么?

一句话:从”能用”到”能管”。

上一版的审查规则是写死在代码里的,改规则就得改代码重新部署。现在:

  • ✅ 审查规则可视化管理(内置 11 条 + 自定义)
  • ✅ 多 AI 模型注册,项目级绑定
  • ✅ 审计日志:每次审查的 Token 消耗、耗时、成功/失败全记录
  • ✅ 业务配置全部迁到 Web 端,不用重启服务
  • ✅ 审查失败可重试

二、审计规则管理

内置规则

系统预置了 11 条规则,按严重性分三级:

级别 规则 说明
ERROR 逻辑错误、安全漏洞、并发问题、错误处理、数据一致性 必须修复
WARNING 性能问题、代码规范、可维护性、代码格式 建议修复
INFO 最佳实践、文档建议 可选优化

每条规则可单独启用/禁用,也可以添加自定义规则。

项目级覆盖

不同项目可以有不同的审查策略:

  • 项目 A 启用全部规则(严格模式)
  • 项目 B 只检查 ERROR 级别(宽松模式)
  • 项目 C 额外加一条自定义规则:”检查 API 版本号是否递增”

规则配置存在数据库里,Web 端改完立即生效。


三、多模型支持

一个实际场景:有的项目用 GPT-4o,有的用 DeepSeek,有的用千帆。

现在支持:

  1. 注册多个 AI 模型(名称、API Key、Base URL、Model Name)
  2. 设置全局默认模型
  3. 每个项目可以绑定不同的模型
1
2
3
项目 A → GPT-4o(代码质量要求高)
项目 B → DeepSeek(成本敏感)
项目 C → 千帆(内网部署)

审查时自动使用项目绑定的模型,没绑定的走全局默认。


四、审计日志

每次审查(成功或失败)都会记录一条日志:

字段 说明
状态 运行中 / 成功 / 失败
模型 使用的 AI 模型名称
规则数 启用的规则数量
评论数 生成的评论数量
Token 消耗 输入 / 输出 / 总 Token
耗时 审查耗时(毫秒)
错误信息 失败原因(如 API 额度用完)

实际用下来最有用的是 Token 消耗错误信息。Token 消耗能帮你估算成本,错误信息能快速定位问题(比如”API key 无效”、”模型额度用完”)。

失败的审查可以点「重新审查」按钮重试。


五、配置 Web 化

上一版所有配置都在 config.yaml 里,改配置得重启服务。现在:

迁到 Web 端的配置:

  • GitLab URL / Token
  • AI 模型管理
  • 审查规则
  • 忽略路径(支持 glob 模式)
  • 最大评论数
  • 自动提交开关
  • Webhook Token
  • 日志级别
  • JWT 过期时间

保留在 config.yaml 的(基础设施):

  • 端口、数据库路径、密码、JWT 密钥、加密密钥

config.yaml 的值作为首次启动的默认值,之后以数据库为准。


六、项目自动发现

不用手动注册项目。第一次收到某个项目的 MR Webhook 时,自动创建项目配置,用全局默认设置直接开始审查。

用户事后在 Web 端调整模型、规则、策略即可。


七、技术实现

1
2
3
4
5
Go 1.25
openai-go(OpenAI SDK)
Gin(HTTP 框架)
SQLite(数据存储)
Vue 3 + Naive UI(前端)

架构:

1
2
3
4
5
6
7
8
GitLab Webhook
→ 项目配置查询(自动建仓)
→ 触发条件检查(Draft / 分支过滤)
→ 动态选择 AI 模型
→ 动态生成系统提示词(规则 + 自定义)
→ AI 审查(带 Token 统计)
→ 结果持久化 + 审计日志
→ 可选自动提交到 GitLab

八、这个项目解决什么问题?

从”能用”到”能管”的转变:

  • v0.1.0:跑通闭环,AI 能审查 MR 并贴评论
  • v0.2.0:规则可配、模型可选、历史可查、失败可重试

实际使用中发现,不同团队、不同项目对代码审查的要求差异很大。有的团队只关心安全漏洞,有的团队连代码格式都要管。硬编码的规则不够用,必须让用户自己定义。


九、总结

v0.2.0 的核心价值:

  1. 规则引擎 — 内置规则 + 自定义规则 + 项目级覆盖,灵活但不复杂
  2. 多模型 — 不同项目用不同 AI,成本和质量的平衡
  3. 审计日志 — 每次审查有迹可循,Token 消耗透明
  4. 配置 Web 化 — 改配置不用重启,实时生效

如果你在折腾:

  • Go + OpenAI 多模型调用
  • GitLab 集成 + Webhook 处理
  • 代码审查自动化
  • 规则引擎设计
  • 审计日志方案

可以拿去参考或者改着玩。

📌 项目地址: https://github.com/yuhua2000/GitReviewAI