字节跳动代码审查系统BitsAI-CR技术揭秘:LLM加持,效率飞升

字节跳动开源代码审查系统BitsAI-CR,基于LLM,准确率达75%,助力企业研发效率提升。

原文标题:字节跳动BitsAI-CR:基于LLM的代码审查系统技术揭秘

原文作者:机器之心

冷月清谈:

字节跳动开源了其内部使用的代码审查系统BitsAI-CR,该系统基于大语言模型(LLM)并针对代码审查的痛点问题提出了解决方案。BitsAI-CR采用了“识别+验证”的两阶段生成架构,先通过RuleChecker根据预设的219条审查规则生成评论,再由ReviewFilter过滤掉不准确或低价值的评论。

为解决传统代码审查方案准确率低和幻觉多的问题,BitsAI-CR引入了专门的验证模块,并通过“结论在前”的推理模式提升了ReviewFilter的准确性和效率。此外,系统还采用了评论聚合机制,避免开发者被重复信息干扰。

为了评估系统效果,除了准确率之外,BitsAI-CR还引入了“评论过时率(Outdated Rate)”指标,用于衡量审查建议的实际价值。

此外,BitsAI-CR还构建了数据飞轮机制,通过用户反馈、人工标注和Outdated Rate监控持续优化审查规则集,确保系统实用性。

目前,BitsAI-CR已在字节内部服务超过1.2万名周活开发者,评论准确率达到75%,Go语言场景下的Outdated Rate达到26.7%,接近人工审查水平。

怜星夜思:

1、BitsAI-CR 的“评论过时率”指标是如何实际应用的?如何避免开发者随意修改代码导致指标波动?
2、相比于其他代码审查工具,BitsAI-CR 的主要优势在哪里?除了准确率和过时率,还有哪些指标可以衡量其有效性?
3、BitsAI-CR 的审查规则是固定的吗?如何根据不同项目的特定需求进行定制?

原文内容

机器之心发布

机器之心编辑部


在人工智能浪潮席卷全球的今天,大语言模型 (LLM) 正在重塑软件开发流程。近日,字节跳动首次对外披露其内部广泛应用的代码审查系统 BitsAI-CR 的技术细节,展示了 AI 在提升企业研发效率方面的重要进展。



论文地址:https://arxiv.org/abs/2501.15134

代码审查是保障软件质量的关键环节,但在大规模企业环境下面临严峻挑战。字节跳动内部数据显示,67% 的工程师表示迫切需要更高效的工具支持。虽然 LLM 在代码理解方面展现出巨大潜力,但要实现工业级应用仍面临三大挑战:评论准确性不足、价值有限的评论过多,以及缺乏系统化的改进机制。为此,字节跳动研究团队提出代码审查系统 BitsAI-CR,在服务超 1.2 万周活开发者的规模化验证中,实现 75% 的审查准确率与 26.7% 的评论过时率(Outdated Rate)。


两阶段评论生成架构确保高质量审查

传统 LLM 代码审查方案受限于准确率较低和幻觉频发,研究团队通过系统性实验发现,仅依赖单一模型微调,即使采用优化训练样本和强化学习等方法也收效有限。这促使研究团队引入专门的验证模块,形成了 "识别 + 验证" 的两阶段生成架构:

1. RuleChecker:针对 Code Diff,通过 Tree-sitter 实现精确的代码块识别和函数边界检测来组成上下文,基于字节内部 219 条多维审查规则,采用 LoRA 微调的 Doubao-Pro-32K-0828 模型来生成相关的审查评论。这些审查规则涵盖代码缺陷、安全漏洞、可维护性和性能问题等 4 大维度,同时 RuleChecker 也集成了动态规则黑名单,可实时剔除低效规则,确保审查标准与企业实践动态对齐。


2. ReviewFilter:针对模型幻觉与低价值评论,通过另一个微调的 Doubao-Pro-32K-0828 对 RuleChecker 的输出进行二次验证。ReviewFilter 针对每一条审查评论,输出一个二元判断(Yes 或 No)来决定是否保留评论,以及相应的判断依据。研究团队对 ReviewFilter 的推理模式进行了深入实验,比较了 "直接结论"、"推理在前" 和 "结论在前" 三种模式。最终,"结论在前" 模式以其优异的性能脱颖而出:准确率达 77.09%,同时保持了较低的推理时间。


在完成审查后,系统通过评论聚合机制处理输出结果。该机制使用基于 Doubao-embedding-large 的向量化方法计算评论相似度,从每组相似评论中随机保留一条,有效避免了开发者被过多重复信息打扰。实验表明,该架构使系统的评论准确率在 Go 语言的离线评测集上达到 65.59%。

其中 BitsAI-CR w/o Taxonomy 表示训练数据来自于没有进行审查分类的随机采样内部审查数据,BitsAI-CR 表示训练数据是根据审查规则分类法特别构建的,两者保持了相同的训练数据规模。结果表明,基于两阶段评论生成都提高了准确度,但分类指导的版本在所有审查类别中实现了更高的准确度。


Outdated Rate 评价指标

研究团队通过早期实践发现,开发者面对大量审查评论时往往采取完全忽视的策略,而初期的不准确评论更会严重损害用户信任。这促使团队将准确率作为首要优化目标。通过两阶段评论生成审查架构,BitsAI-CR 将评论准确率提升至 75%,显著提升了系统可用性。然而,仅依靠准确率指标存在两个根本性限制:无法反映开发者是否真正采纳了审查建议,且人工评估准确率需要大量人力投入。

为此,研究团队使用了评论过时率(Outdated Rate)指标,通过追踪被标记代码行在后续提交中的修改比例,量化审查建议的实际价值。其中 图片 表示在一周的度量窗口期间内代码提交者对 Reviewer 评论进行审查的评论集合,isOutdated(c)在评论 c 被认为评论过时才会返回 true,即表示当前评论标记的代码范围内的任何行在后续提交中,有被修改。


数据飞轮驱动系统优化

为完善审查规则集并更好地利用用户反馈,研究团队设计了数据飞轮。最初,研究团队将代码样式指南与实际审查经验结合起来,设计了代码审查规则分类,包含 5 种编程语言和 219 条评审规则。随后从内部仓库中抽取了 12 万条 MR 中的审查评论,包括静态分析结果和人工审查反馈。在经历了数据清洗(过滤非实质性的内容,并依照代码审查规进行分类)和质量控制环节后,最终构成了 BitsAI-CR 的训练数据。

实践表明,代码审查规则需要持续优化以适应实际开发。某些规则虽然在技术上完全正确,但可能缺乏实际价值。BitsAI-CR 通过三个关键反馈渠道收集优化信号:

1. 用户的直接反馈(如点赞点踩)能够及时捕捉开发者的真实需求;
2. 每日抽样的人工准确率标注(抽样率不超过 10%)提供了高质量的评估基准和数据;
3. 每周的 Outdated Rate 监控则实现了大规模自动化评估。

数据飞轮机制会检测线上用户数据,识别准确率高但 Outdated Rate 低的审查规则,通过优化这些规则,确保系统始终保持高实用性。

这一机制的效果显著。在过去 18 周的部署过程中,BitsAI-CR 的评论准确率从初期的 25% 提升至 75%,Go 语言场景下的 Outdated  Rate 达到了 26.7%,接近人工审查水平。目前,系统已在字节内部服务超过 1.2 万名周活开发者,用户调研显示 74.5% 的开发者认可其实际价值。


字节跳动此次披露 BitsAI-CR 的技术细节,不仅展示了其在 AI 辅助开发领域的探索成果,也为业界提供了宝贵的实践经验。该系统的成功部署证明了 LLM 在提升企业软件开发效率方面的巨大潜力,为未来 AI 编程助手的规模化应用提供了重要参考。


© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:[email protected]


我觉得可以考虑加入一个“修改原因”的记录机制,开发者在修改代码时需要说明修改原因。这样系统可以根据修改原因判断修改是否合理,从而更准确地计算“评论过时率”。

主要优势?那必须是用了 LLM 啊,现在不用 LLM 的工具都不好意思出来混了(手动狗头)。不开玩笑,BitsAI-CR 的两阶段架构和数据飞轮机制确实很有创新性,值得借鉴。除了提到的指标,我觉得还可以考虑代码审查的覆盖率,以及发现的代码缺陷的严重程度。

我觉得 BitsAI-CR 的主要优势在于它结合了 LLM 的理解能力和预设的审查规则,既能发现一些潜在的代码缺陷,又能提供一些有价值的改进建议。除了准确率和过时率,还可以考虑代码审查的效率、开发者满意度等指标来衡量其有效性。

这个目前看文章里没说,我盲猜一下,它应该会支持自定义规则,毕竟每个项目的代码风格和规范都不一样。搞个一刀切的规则集,估计没啥人用。可以去看看他们的开源代码或者文档有没有相关说明。

这问题问得好!我猜想字节内部应该有一套完善的代码版本管理和提交规范,可以有效区分哪些修改是针对 BitsAI-CR 评论的,哪些是其他原因导致的。不然这指标确实容易被干扰。

文章提到了 BitsAI-CR 的审查规则集包含 219 条规则,涵盖了代码缺陷、安全漏洞、可维护性和性能问题等四个维度。虽然没有明确说明是否可以自定义规则,但我认为应该会提供一定的定制化能力,例如允许用户根据项目需求添加或修改规则,或者调整规则的权重。

我觉得可以参考一些已有的代码规范和最佳实践,例如 Google 的 Java 编码规范,结合项目的实际情况进行调整。另外,还可以通过分析项目的代码库和历史审查数据,提取一些特定领域的规则。

“评论过时率”的计算是根据被标记代码行在后续提交中的修改比例得出的。为了避免开发者随意修改代码的影响,系统可能会结合代码修改的规模、修改内容的语义等因素进行综合判断,而不是简单地根据代码行的修改就判定评论过时。具体细节可能需要参考论文或官方文档。

相比于传统的代码审查工具,BitsAI-CR 能够自动化生成审查评论,节省了开发人员的时间和精力。此外,它还能根据实际开发情况不断优化审查规则,更贴合企业的需求。除了文章提到的指标,还可以考虑代码缺陷的修复率、代码质量的提升程度等。