用 AI 自动 Code Review:一次提升团队代码质量的尝试

写在前面:一眨眼,又快到月底了。立下的“每周写一篇技术博客”的 FLAG,果然还是很容易被现实狠狠打脸……
本文内容源自 2025 年 6 月在事业部内部的一次技术分享,主题是《AI Code Review 技术实践》。今天整理成文,既是复盘,也希望能给同样在探索 AI 辅助开发的朋友们一些参考。


一、为什么我们需要 AI 自动 Code Review?

随着团队规模快速扩张,我们逐渐面临几个棘手的问题:

  1. 新人涌入,代码风格不一
    新成员技术背景各异,对团队规范的理解和执行参差不齐,导致代码一致性下降。
  2. 低级错误频发
    诸如空指针、未处理异常、重复逻辑等“本不该犯”的错误越来越多,直接影响系统稳定性和用户体验。
  3. 人工 Review 越来越吃力
    导师和项目经理的时间本就紧张,面对海量 PR(Pull Request),很难做到逐行细致审查,效率和覆盖率都难以保证。
  4. 质量依赖“人治”
    虽然有代码规范和检查工具,但是否执行、执行多严格,往往取决于个人习惯——这显然不可持续。

于是,我们开始思考:能否借助大模型的能力,实现自动化的、智能的代码审查?


二、我们的核心需求

在调研和讨论后,我们明确了几个关键需求:

  • 基于大模型自动审查:支持对多种语言的代码文件进行智能分析;
  • 内网可部署:保障代码安全,不依赖外部 SaaS 服务;
  • 深度集成 GitLab:公司使用 GitLab 管理代码,需支持 MR(Merge Request)和 Push 触发;
  • 结果推送钉钉:通过企业钉钉机器人,将审查结果实时同步到项目群,确保问题不被遗漏。

三、选型:为什么是 AI-Codereview-Gitlab?

经过对比多个开源方案,我们最终选择了 AI-Codereview-Gitlabhttps://github.com/sunmh207/AI-Codereview-Gitlab)。它不仅满足上述需求,还有不少亮眼特性:

🌟 核心优势

  • 自动触发,无需人工干预
    利用 GitLab Webhook,代码提交或 MR 创建时自动触发审查,响应迅速。
  • 深度集成 GitLab API
    可灵活扩展,未来支持自定义规则、标签过滤等高级功能。
  • 全自动覆盖多种提交场景
    无论是 push 还是 merge request,都能自动分析并评论到对应位置。
  • 网络异常自动重试
    内置 retrying 机制,确保在内网环境不稳定时仍能可靠运行。

🚀 额外加分项(来自官方 README)

  • 多模型支持:兼容 DeepSeek、ZhipuAI、OpenAI、通义千问、Ollama 等,想换就换;
  • 多平台消息推送:钉钉、企业微信、飞书一键打通;
  • 每日开发日报:基于 Git 提交记录自动生成日报,谁在“摸鱼”一目了然(开玩笑的 😼);
  • 可视化 Dashboard:集中展示所有审查记录、开发者统计,数据驱动改进;
  • Review 风格可选:
    • 🤵 专业型:严谨正式,直指问题;
    • 😈 讽刺型:毒舌吐槽(“这代码是用脚写的吗?”);
    • 🌸 绅士型:温柔建议(“或许这里可以再优化一下呢~”);
    • 🤪 幽默型:轻松搞笑(“这段 if-else 比我的相亲经历还曲折!”)。

虽然“讽刺型”很有趣,但我们生产环境还是乖乖用了“专业型”……

另附上原理图:

当用户在 GitLab 上提交代码(如 Merge Request 或 Push 操作)时,GitLab 将自动触发 webhook 事件,调用本系统的接口。系统随后通过第三方大模型对代码进行审查,并将审查结果直接反馈到对应的 Merge Request 或 Commit 的 Note 中,便于团队查看和处理。

image-20251029102122017


四、部署与配置简要流程

如果你也想尝试,以下是关键步骤(以内网 GitLab + 钉钉为例):

1、生成 GitLab Personal Access Token

​ 在gitlab中的用户设置生成个人访问令牌,该账号需要有对应项目的maintainer权限

image-20251029102308572

2、创建钉钉机器人

​ 由于我司采用的是钉钉,所以这边创建钉钉机器人,并记录对应的webhook地址。(PS:没有使用IM需求的人员,可以直接无视此内容)

image-20251029102315869

3、在 GitLab 项目中配置 Webhook

​ a. 填写webhook地址(即我们部署AI-Codereview-Gitlab的地址,正常是 IP:5001/review/webhook );

​ b. 选择触发来源事件,实际上只要推送事件即可,合并事件是否需要根据实际需求来;

​ c. 关闭SSL验证。

image-20251029102321527

4、修改项目配置文件

​ 来到项目中,调整项目的配置文件,配置在/conf/.env中,一般来说,需要调整几块内容:

​ a. 调整使用的大模型,根据注释里面选择对应的参数;

​ b. 调整大模型的配置的,调整对应的KEY及model名称;

​ c. 调整review支持的文件类型及review风格,此部分可不调整;

​ d. 调整gitlab配置,里面的token即我们在步骤1生成的用户token

​ e. 设置推送的IM参数,这边可以设置到具体的项目信息,即DINGTALK_WEBHOOK_URL_+项目名称

image-20251029102325972

5、重启服务,开始使用!


五、实际使用反馈:理想很丰满,现实需调和

上线后,效果没有想象中那么“惊艳”,但也带来了实实在在的价值:

  • 老员工有点“傲娇”
    一些资深开发者对 AI 的建议不太买账,尤其当问题只是“风格不一致”而非“逻辑错误”时,容易被忽略。
  • 新人受益明显
    对刚入职的同学,AI Review 成了“无声导师”,能快速指出常见错误,大幅降低辅导成本。
  • 重点关注低分代码
    我们设定了一个阈值(如评分 < 60),对这类代码进行人工复核,效果显著。

所以,AI Code Review 不是替代人工,而是辅助聚焦——把人力从重复劳动中解放出来,专注于真正需要深度思考的问题。


六、写在最后

AI 正在深刻改变软件开发的每一个环节。Code Review 作为保障质量的关键一环,引入大模型是顺势而为。虽然目前它还不能完全“读懂”业务意图,但在规范检查、漏洞预警、风格统一等方面,已经展现出巨大潜力。

如果你也在为团队代码质量头疼,不妨试试这类工具。哪怕只是从“帮新人把关”开始,也是迈向高效研发的重要一步。

技术不是万能的,但不用技术,可能连“能”都谈不上。