2026年7月16日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

如何用 AI 做业务级 Code Review

发布日期:2026-02-27 14:50:22 浏览次数: 2560
作者:货拉拉技术

微信搜一搜,关注“货拉拉技术”

推荐语

AI助力Code Review,让代码评审更智能高效,告别传统繁琐流程。

核心内容:
1. AI评审助手的核心价值与实现路径
2. 从Git Push到深度预处理的完整流程设计
3. 基于RAG的经验召回引擎构建方法

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

Code Review 遇到的挑战

对于核心的业务项目来说,Code Review (代码评审) 是必不可少的。但现实中的代码评审时常常被以下几件事所困扰:

  • Diff 太多,看不过来开
  • 类似的 Bug 出现过,复盘文档也有,然而新人不知道,老人记不清
  • AI 不懂业务,不能给出实质性的建议

因此,我们希望打造一个有记忆、懂业务、还看过你们线上事故的评审的 AI 助手,让它帮我们守最后一道门。

核心链路:从 git push 开始

整个流程可以大致分为以下几步

流程图示意图

触发机制

“触发机制的选择” 其实是个产品问题:什么时候介入,才不打扰人? 我们最后选的是 GitLab Webhook 的事件驱动模式。开发者无需安装插件,也无需在本地执行脚本,只需按照往常一样进行 push 代码即可。

  • 接入成本极低: 在 GitLab 项目或组织级别的 Webhook 配置中,只需勾选 Push events 和 Merge request events,并填入审核工具的统一回调地址。

  • 多场景触发 :

    • 代码驱动 :当发起目标为主分支的 MR,或已有的 MR 分支发生增量提交时,系统将即时开启审计。

    • 工程管控 :深度集成公司构建平台,支持通过构建 Hook 配置,针对特定业务分支在构建环节手动或自动触发评审任务。

Diff 的深度预处理与语义重塑

当 Webhook 触发后,审核工具接收到的是一段包含 + 和 - 符号的原始 Diff 文本。原始 Diff 文本包含大量冗余符号和非逻辑变更。如果直接投喂给模型,不仅消耗 Token,还会导致模型注意力分散。

我们设计了一套预处理流水线

  • 特征过滤 :自动剔除 .lock.json、样式及静态资源文件。

  • 切片化 Diff :先按文件切,单文件过大时再按行数或 chunk 二次切分

  • 深度提取: 通过接口获取当前变更的完整 Context,然后识别出哪些是逻辑改动,进行一层筛选,剔除干扰项

  • 补全逻辑代码: 识别到逻辑改动,会将整个逻辑方法的原实现也会带过去

  • 调用模型语义化重塑: 系统会将精简后的 Diff 提交给大模型,但此时并不要求模型直接进行审计,而是要求它完成一项任务:“告诉我这段代码在做什么?”

  • 模型分析代码的改动意图: 为后面的知识库匹配和深度 Review 打下基础

基于 RAG 的 “经验召回” 引擎

如果说语义分析是审核工具的 “眼睛”,那么基于向量数据库的 RAG (Retrieval-Augmented Generation) 流程就是它的 “大脑经验”。

这一块分为两个模块,知识库的数字化在线语义检索

知识库的数字化
  • 文档来源: 历史事故复盘、通用工具库、最佳业务实践、特定项目技术文档

  • 流程: 结构化 Chunk 切片 -> Embedding Model 向量化 -> 存入公司内部 AI 平台的向量数据库

我们使用公司内部 AI 平台的知识库搭建

将复盘文档添加金知识库中
如何使用
  • 查询向量化: 系统将代码变更简要作为查询指令,同样经过 Embedding Model 转换为嵌入向量。

  • 向量检索 (Vector Search): 在向量空间中计算当前变更向量与数据库中知识向量的余弦相似度 (Cosine Similarity),找出相关性最高的前 2 条上下文知识。

  • 代码打标: 这段与历史问题相似的代码进行打标并将该知识点注入 Prompt

深度 Review 与报告通知

将原始 Diff、语义简要以及检索到的历史问题,融合成复杂的上下文包,进行最终的请求:

  • 构建 Prompt: 将三者融合成一个复杂的上下文包,给到 LLM。

  • 可视化报告与反馈: 最终将评审意见渲染成一个可视化报告,发送消息通知给到用户。

实践中遇到的问题

模型选型与持续进化

模型的选择永远没有最优解。以下三件事需要一直持续下去:

  • 多维选型评分:借助公司的模型审核平台使用预设的案例检验各个模型,给模型进行打分,从而选择更好的模型。

  • 闭环反馈:抽检 review 的结果,结合用户反馈与修正行为,对模型的输出进行持续评估。

  • 动态调优: 定期检查模型版本,持续优化 Prompt 策略。

长 Diff 的上下文窗口优化

  • 针对非核心文件筛选

    • 删除文件过滤
    • 扩展名过滤: 排除 .json.png.lock.css.scss.less
  • 优先级权重计算: 在审核服务中会有优先级的配置项

class DiffProcessor {
private readonly coreDirs: readonly string[] = [] asconst;
private readonly baseWeight = 1;
private pathWeightCache = new Map<stringnumber>();

// 根据路径和重要程度计算权重,优先处理核心逻辑
private calculateWeight(change: Change): number {
    // 权重计算逻辑...
  }
}
  • 分片策略

先粗略估算 Token,当累计超过安全余量 (30000 tokens) 时创建新 Chunk。每个 Chunk 包含文件列表、变更元信息及平均权重。

// 将changes 进行切片化处理
private groupIntoChunks(changes: Change[]): Chunk[] {
    const chunks: Chunk[] = [];
    let currentChunk: ChunkData[] = [];
    if (currentChunk.length > 0) {
      chunks.push(this.createChunk(currentChunk));
    }
    return chunks;
  }
  • 并发 API 调用
async processMR(params) {
  const processor = new DiffProcessor();
  const chunks = processor.processChanges(changes);
  try {
    // 并行处理所有 chunks,提升审计时效
    await Promise.all(chunks.map((chunk) => this.callAPI(params)));
  } catch (error) {
    // ...
  }
}

多 Chunk 报告整合

采用缓存机制处理异步结果:通过 reportStore 缓存各 Chunk 报告,利用 isAllChunksDone 进行校验,触发最终报告的聚合与推送。

const isAllChunksDone = (
  reportStore: StorageReport,
  report_id: string,
  chunksLen: number,
) => {
  const expected = reportStore[report_id]?.chunks.length || 0;
  return chunksLen === expected;
};

// 保存分块结果
reportStore[report_id].chunks.push(params);

实践反馈

该审核工具自上线以来,作为内部的 Code Review 工具,经过一段时间的推广与迭代,在多个部门中的使用并得到很好的反馈。

核心业务深度实践

审核工具目前已在内部核心业务大组中完成深度落地。通过对底层服务及复杂业务中台等多种场景的覆盖,其实战价值得到了充分验证

  • 全流程质量守卫: 系统已平稳运行于多个核心项目,确保每一行代码变更在合入主干前,都能经过知识库的逻辑校准。

  • 馈驱动进化 :凭借基于业务上下文的风险预警能力,工具在团队内部获得了积极的反馈。

老事故的复发率明显下降

历史复盘文档的命中为参与评审的开发者提供了极其重要的上下文。它告诉评审者:“当前代码与历史某次事故的逻辑模式相似度达 85%,请重点关注。” 这种的提醒,极大缩小了人工审计的盲区。

未来规划

结合用户的使用与反馈,目前主要存在以下待解决的问题,也是后续的优化方向

RAG 召回的 “噪音” 与 “幻觉”

由于代码的逻辑复杂性,单纯的语义向量检索有时会召回一些 “似是而非” 的历史案例。如果注入了无关的知识,模型可能会产生幻觉,输出一些与代码无关的建议,导致 “误报”。

优化方向:

  • 筛选相似度高的案例:过滤一些相似度低于 0.85 的案例,剩余命中的案例进入最终的环节,从而将干扰降至最低

  • 构建知识库的 ‘反馈学习链路’。当审核给出建议后,如果开发者标记为 ‘误报’,系统将自动根据反馈进行微调检索策略。

如何做到可以一键采用建议

目前生成的建议是放在报告中的,无法让评审人员可以一键采用,还有生成的建议代码可能不是很完善

优化方向:

  • 调优模型,给出直接可运行的修复代码,或者给出 2+种不同方式处理的代码,供使用者选择。
  • 建议直接同步为 MR 评论。

与 cursor 相结合

我们将进一步强化与 Cursor 的原生集成,借助 Cursor CLI 实现本地与审核工具结合,将审计反馈直接嵌入编辑器内侧边栏,用户可一键采纳和修复。

与发布平台相结合

增加发布卡点校验:将审核工具的审计结果作为发布流水线的标准条件。

结语

AI 的能力不仅仅是局限于代码生成,我们希望把它视为一个有经验,懂业务的好搭档。我们做的事情,本质上就是:把团队踩过的坑,变成模型的直觉。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅