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,有的用千帆。
现在支持:
- 注册多个 AI 模型(名称、API Key、Base URL、Model Name)
- 设置全局默认模型
- 每个项目可以绑定不同的模型
1 | 项目 A → GPT-4o(代码质量要求高) |
审查时自动使用项目绑定的模型,没绑定的走全局默认。
四、审计日志
每次审查(成功或失败)都会记录一条日志:
| 字段 | 说明 |
|---|---|
| 状态 | 运行中 / 成功 / 失败 |
| 模型 | 使用的 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 | Go 1.25 |
架构:
1 | GitLab Webhook |
八、这个项目解决什么问题?
从”能用”到”能管”的转变:
- v0.1.0:跑通闭环,AI 能审查 MR 并贴评论
- v0.2.0:规则可配、模型可选、历史可查、失败可重试
实际使用中发现,不同团队、不同项目对代码审查的要求差异很大。有的团队只关心安全漏洞,有的团队连代码格式都要管。硬编码的规则不够用,必须让用户自己定义。
九、总结
v0.2.0 的核心价值:
- 规则引擎 — 内置规则 + 自定义规则 + 项目级覆盖,灵活但不复杂
- 多模型 — 不同项目用不同 AI,成本和质量的平衡
- 审计日志 — 每次审查有迹可循,Token 消耗透明
- 配置 Web 化 — 改配置不用重启,实时生效
如果你在折腾:
- Go + OpenAI 多模型调用
- GitLab 集成 + Webhook 处理
- 代码审查自动化
- 规则引擎设计
- 审计日志方案
可以拿去参考或者改着玩。