
字节跳动BitsAI-CR:大模型两阶段审查,代码质量与效率双提升
Addsion Brain
3
7-30字节跳动开发的BitsAI-CR是一个创新的自动化代码审查框架,通过结合基于大型语言模型(LLM)的两阶段审查流水线(RuleChecker和ReviewFilter)和数据飞轮机制,显著提升了代码审查的效率和准确性。该系统在大规模工业部署中表现出色,实现了高精确度和低“过时率”,有效帮助程序员提升代码质量并减轻人工审查负担。
BitsAI-CR核心组成与机制
- 两阶段审查意见生成流水线:
- 规则检查器 (RuleChecker): 基于微调LLM,依据219条规则识别代码问题,包含规则类别阻止器。
- 审查过滤器 (ReviewFilter): 独立的微调LLM,验证RuleChecker结果,解决“幻觉”和错误,显著提高精确度。
- 上下文准备与意见聚合: 对代码差异分块并扩展上下文,保留结构信息;使用余弦相似度聚合相似评论,避免信息过载。
- 代码审查规则分类法:
- 采用三层结构(审查维度、类别、规则),简化数据收集和模型优化,支持Go、JavaScript、TypeScript、Python和Java五种语言。
- 数据飞轮:持续改进:
- 通过挖掘审查规则、系统化数据集构建(抽样和标注)和在线用户反馈(点赞/点踩、过时率监控)驱动系统演进。
评估指标与性能表现
- 精确度 (Precision): BitsAI-CR优先考虑的指标,峰值达到75.0%,避免开发者“警报疲劳”。
- 过时率 (Outdated Rate): 衡量开发者采纳度的指标,Go语言审查中保持26.7%,显著低于人工审查的35%-46%。
- 离线评估: 基于分类法的BitsAI-CR版本精确度达57.03%,远超基线模型;ReviewFilter将精确度从54.50%提升至67.12%。
- 持续改进: 18周内每周精确度从约25%持续提升至75%;用户调查显示74.5%的用户肯定其价值。
大规模工业部署与经验教训
- 部署规模与用户留存: 已在字节跳动部署,服务超过12,000名周活跃用户,第二周留存率61.64%,八周后仍保持约48%。
- 关键经验教训:
- 明确的审查规则分类法是系统化问题分类和评估的基石。
- 两阶段审查意见生成(RuleChecker + ReviewFilter)对实现生产级可靠性至关重要,可有效缓解LLM幻觉。
- 精确度和过时率指标是建立用户信任和驱动持续优化的核心。
- 行业影响: LLM代码审查工具通常能减少15-30%的引入Bug和缩短20-40%的手动审查时间。