🚀 AI Code Review实践

771 阅读11分钟

背景: Q1组内OKR 定了一个用AI 进行code review的任务,主要还是过年的时候 deepseek爆火 虽然组内业务一直使用AI LLM/TTS, Leader那边也是一直推AI进行提高开发效率 或者自己做一些AI工具 然后定下来Q1任务ai_code_review, 组内多个人一起做 各自做自己 没有合作关系(无语 浪费大家时间 一起合作讨论不好吗),看谁的效果好,在进行推进,感觉在比赛一样,结果最后大家实现的效果都不好, 都是demo形式的版本 笑死 现在回想起来。

dmeo能做的只有 识别语法错误、检查代码风格和安全漏洞, 长上下文和业务理解的情况下表现不好

代码安全性保证不了(使用LLM开放api),审查上下文关联不了BUG发现不了(片段式的代码review 没有上下文关联), 内部标准信息获取不到(依赖于LLM训练的数据的规范 组内的code规范 没有上RAG知识库)等等一系列问题。

目前1.0.0 最小可行版本(MVP)

  • 技术方案: FastAPI,OpenAI,Ollama,zhipuai,requests
  • 👉 上线目的:用最小的成本跑通闭环
  • 流程 +效果
    • 用户提交 MR → GitLab Webhook → 内部应用解析 diff
    • 生成 Prompt → 调用 LLM → 输出结构化 Markdown 评论
    • 评论发布在 MR Note 底部 → 飞书群通知
  • 在mr/push commit 的note中进行评论
image.png image.png

1.0.0 版本

1.0.0 版本 最简单的版本就是 Gitlab+LLM 用最小的成本/最少的时间达到效果

image.png

遇到了什么问题 怎么解决的?

  • AI评论数量过多,造成干扰 需要就是减少干扰评论
    • GitLab MR 的 webhook 在 MR 有任何修改时都会触发(包括修改描述、提交新 commit、关闭、合并)
    • 解决方式: 只处理首次提 MR 时的全量改动,后续 commit 支持增量 CR
    • 评论筛选机制,仅输出 High 及以上的改动评论
  • 提升评论质量
    • 上下文信息有限,目前只提供了行修改相关内容,单轮 AI 分析缺乏自我验证和纠错能力
    • 多轮 LLM 分析: LLM 评论流程增加多轮校验,渐进式深度分析 (减少误判率/上下文理解更加全面)
      • 提示词中携带更丰富的上下文信息
      • 由当前 改动行上下文  → 当前文件改动完整上下文
      • 第一轮:初步识别问题
      • 第二轮:审查第一轮结果,结合上下文再次分析
      • 第三轮:对前两轮结果进行汇总与优化
  • Gitlab api对接/回调数据解析
    • 目前都是request 请求 有点麻烦 后续看看有没有直接拿来用的库
    • diff 回调数据结构化 解析 修改代码行具体位置(确定需要评论的行 通过结构化数据处理,我们能够明确改动对应的新旧文件行数以及相关上下文,提高 AI 分析的准确性。

遇到问题 & 解决方式总结

  • 噪音过多:LLM 产出评论泛滥,干扰开发者。
    • → 优化触发逻辑,仅首次 MR 触发全量,后续增量触发;评论只保留 High 及以上等级。
  • 上下文不足:单行 diff → 审查片面。
    • → 多轮 LLM 分析(初筛 → 审核 → 汇总),逐步增加上下文(行 → 文件 → MR)。
  • 回调解析繁琐:diff 定位难。
    • → 将回调结构化,精确定位改动行。 ⚡ 1.0.0 版本虽然简单,但把“提交 MR → AI 自动审查 → 评论反馈”跑通,证明了可行性。

后续规划需要接入的能力 参考标准:基于大模型 + 知识库的 Code Review 实践

🔮 未来规划

  • 基于 LangChain 重构代码封装 Agent,接入RAG知识库(Chroma/Faiss/Redis),文档Embedding、LLaMA Factory微调Code模型,实现本地小模型部署和行级代码评论。
  • 数据安全: LLaMA Factory 小模型微调 本地部署。
  • 自定义知识库: 轻量级向量数据库(Chroma/Faiss/Redis)搭建 文档 chunk embedding 模型。
  • 评论到变更行: CR 助手将结果评论到变更代码行上 目前在Note下面。
  • LangChain/LangGraph/LangSmith: 基于 LangChain/LangGraph/LangSmith 搭建 CR 助手的 Agent 架构。
  • mcp 集成: CR 助手与 mcp 集成,实现代码变更自动触发 CR 助手。

目前自己简历写的(没什么亮点)

image.png

  • 目前是用trae-pro claude-4 model 对项目进行优化了, FastAPI开放Gitlab回调接口,langchain(LLM调用/提示词模版/RAG集成)+RAG(FAISS/Chroma/Redis)+大模型微调集成(Qwen2.5-7B-Instruct模型微调+本地部署 LoRA方法对sft阶段微调 使用LLaMA Factory 数据集目录准备(代码规范))
  • github.com/hakusai22/a…

image.png

2.0.0:RAG 增强 + 内部知识库

  • 痛点:LLM 不懂公司内部框架 & Code Style,导致建议不落地。
  • 方案:引入 RAG(检索增强生成)
    • 将项目代码总结、代码规范、优秀案例文档 → embedding → 存入向量数据库(Chroma/FAISS/Redis)。
    • 每次 MR diff → 提取知识点 → 相似度搜索 → 将命中文档拼接到 Prompt,再交给 LLM 分析。 👉 效果:
    • LLM 评论更贴合组内规范,不再“放空炮”。
    • 支持动态更新知识库,快速适应团队规范变化。
  • 技术方案: FastAPI,LangChain,RAG(Chroma,Faiss,Redis),Requests

2.0.0 版本 加一层内部知识库 存储(把项目代码总结,日常审批的好案例,Java/Python代码规范文档) 调用LLM直接query重写 加一层RAG增强式的搜索 根据当前diff数据相似性搜索-> 作为上下文+diff内容进行二次LLM 拿到结果 进行gitlab接口调用 评论

  • 提⾼模型对code review专有信息的理解、增强模型在特定⾏业领域的知识、获取和⽣成最新的、实时的信息 - RAG 少量数据 支持实时性的更新
  • 自定义知识库:CR 助手基于提供的飞书文档进行学习,将匹配部分作为上下文,结合代码变更进行 CR,这将大大提升 CR 的准确度,也更符合团队自身的 CR 规范。

Ollama模型介绍与本地化使⽤(Linux环境)

  • ollama官网地址 github.com/ollama/olla…

  • 大模型基座只包含互联网上的公开数据,对公司内部的框架知识和使用文档并不了解, 解决方案就是rag知识库.

image.png

图片来源Al代码审查实践:从构想到快速落地

  • RAG模块的话 参考下面的流程图进行逻辑编写 LLM 部分代码(节省token)提取code知识点汇总 再embedding去知识库中搜索匹配度topN文档 构成知识库上下文 进行模版填充
    • 官方文档-知识库(内置)embedding 内置官方文档
    • 日常review的好案例整理飞书 代码规范文档

image.png

图片来源

3.0.0:安全与工程化

  • 目标:合规、安全、降本增效。
  • 方案
    • 模型微调 & 本地化部署
      • 选用 Qwen2.5-7B、DeepSeek 等开源模型
      • 使用 LoRA + LLaMA Factory 在组内代码规范数据集上做 SFT
      • 部署在内网,隔离外网调用,避免敏感代码泄露
    • Agent 架构(LangChain/LangGraph/LangSmith)
      • Code Review 助手具备决策流转能力
      • 自动处理 MR 全量/增量 diff,结合 RAG 知识库,多轮分析并评论到具体行 👉 收益:
  • 数据安全可控(内网闭环,不依赖外部 API)
  • 模型对组内代码风格 & 框架知识掌握度提升
  • 评审粒度细化(行级评论),减少人工重复劳动

3.0.0 版本 为了安全性合规问题

  • 技术方向 LangChain/LangGraph/LangSmith 搭建Agent, LLaMAFactory微调小模型, 本地部署, RAG知识库搭建选型 文档embedding,
  • 本地部署LLM 考虑到本地又是蒸馏的model(⼩模型能够在尽量保持性能的同时,显著减少模型的参数量和计算需求) 数据的训练需要自己增强, 增强model 在特定领域的知识点-SFT
  • 下一步 进行model微调 Qwen2.5-7B-Instruct模型微调+本地部署 LoRA方法对sft阶段微调(最著名的部分参数微调)
  • 使用LLaMA Factory(国内最火的微调框架) 数据集目录准备(代码规范) 拥有充足的数据
  • 参考weclone开源项目 (通过历史聊天记录,复刻前任的消息聊天人)github.com/xming521/We…
  •  数据安全:基于开源大模型做私有化部署,隔离外网访问,确保代码 CR 过程仅在内网环境下完成。
  • 无调用次数限制:部署在内部平台,只有 GPU 租用成本。

image.png

可以微调的模型 去菜市场看看(千问/deepseek等等)

image.png

  • LoRA (Low-Rank Adaptation) 在旁路添加两个可训练的低秩矩阵(A 和 B)训练时仅优化 A 和 B

image.png

2025/09/14 周日 现在10点了 累了 饭没吃 下楼抽根烟 从下午到晚上 一直在弄简历上的第二个项目 ai-code-review

简历优化(替换掉“流水账式写法”)

作为第三个版本项目就已经很成熟了,后续简历可以写成这样 目前实现是没有难点的 只能讲讲后续规划 现在实现阶段在哪?

AI Code Review 平台(GitLab MR 自动化审查助手)

  • 独立设计并落地 GitLab+LLM 自动化 Code Review 平台,完成从 MVP → RAG 增强 → 私有化部署的三阶段迭代。
  • 解决痛点:减少噪音评论(多轮分析+触发优化)、补齐上下文不足(行→文件→MR)、结合内部知识库提升准确率。
  • 技术亮点:FastAPI + LangChain + RAG(Chroma/FAISS/Redis)+ LLaMA Factory 微调(Qwen/DeepSeek,本地化 LoRA-SFT)。
  • 成果:代码安全内网闭环,行级精准审查;团队 CR 效率提升,内部规范得到自动化落地。

IMG_1769.HEIC

参考