字節(jié)跳動(dòng)BitsAI-CR:基于LLM的代碼審查系統(tǒng)技術(shù)揭秘
在人工智能浪潮席卷全球的今天,大語(yǔ)言模型 (LLM) 正在重塑軟件開(kāi)發(fā)流程。近日,字節(jié)跳動(dòng)首次對(duì)外披露其內(nèi)部廣泛應(yīng)用的代碼審查系統(tǒng) BitsAI-CR 的技術(shù)細(xì)節(jié),展示了 AI 在提升企業(yè)研發(fā)效率方面的重要進(jìn)展。
論文地址:https://arxiv.org/abs/2501.15134
代碼審查是保障軟件質(zhì)量的關(guān)鍵環(huán)節(jié),但在大規(guī)模企業(yè)環(huán)境下面臨嚴(yán)峻挑戰(zhàn)。字節(jié)跳動(dòng)內(nèi)部數(shù)據(jù)顯示,67% 的工程師表示迫切需要更高效的工具支持。雖然 LLM 在代碼理解方面展現(xiàn)出巨大潛力,但要實(shí)現(xiàn)工業(yè)級(jí)應(yīng)用仍面臨三大挑戰(zhàn):評(píng)論準(zhǔn)確性不足、價(jià)值有限的評(píng)論過(guò)多,以及缺乏系統(tǒng)化的改進(jìn)機(jī)制。為此,字節(jié)跳動(dòng)研究團(tuán)隊(duì)提出代碼審查系統(tǒng) BitsAI-CR,在服務(wù)超 1.2 萬(wàn)周活開(kāi)發(fā)者的規(guī)?;?yàn)證中,實(shí)現(xiàn) 75% 的審查準(zhǔn)確率與 26.7% 的評(píng)論過(guò)時(shí)率(Outdated Rate)。
兩階段評(píng)論生成架構(gòu)確保高質(zhì)量審查
傳統(tǒng) LLM 代碼審查方案受限于準(zhǔn)確率較低和幻覺(jué)頻發(fā),研究團(tuán)隊(duì)通過(guò)系統(tǒng)性實(shí)驗(yàn)發(fā)現(xiàn),僅依賴單一模型微調(diào),即使采用優(yōu)化訓(xùn)練樣本和強(qiáng)化學(xué)習(xí)等方法也收效有限。這促使研究團(tuán)隊(duì)引入專門的驗(yàn)證模塊,形成了 "識(shí)別 + 驗(yàn)證" 的兩階段生成架構(gòu):
1. RuleChecker:針對(duì) Code Diff,通過(guò) Tree-sitter 實(shí)現(xiàn)精確的代碼塊識(shí)別和函數(shù)邊界檢測(cè)來(lái)組成上下文,基于字節(jié)內(nèi)部 219 條多維審查規(guī)則,采用 LoRA 微調(diào)的 Doubao-Pro-32K-0828 模型來(lái)生成相關(guān)的審查評(píng)論。這些審查規(guī)則涵蓋代碼缺陷、安全漏洞、可維護(hù)性和性能問(wèn)題等 4 大維度,同時(shí) RuleChecker 也集成了動(dòng)態(tài)規(guī)則黑名單,可實(shí)時(shí)剔除低效規(guī)則,確保審查標(biāo)準(zhǔn)與企業(yè)實(shí)踐動(dòng)態(tài)對(duì)齊。
2. ReviewFilter:針對(duì)模型幻覺(jué)與低價(jià)值評(píng)論,通過(guò)另一個(gè)微調(diào)的 Doubao-Pro-32K-0828 對(duì) RuleChecker 的輸出進(jìn)行二次驗(yàn)證。ReviewFilter 針對(duì)每一條審查評(píng)論,輸出一個(gè)二元判斷(Yes 或 No)來(lái)決定是否保留評(píng)論,以及相應(yīng)的判斷依據(jù)。研究團(tuán)隊(duì)對(duì) ReviewFilter 的推理模式進(jìn)行了深入實(shí)驗(yàn),比較了 "直接結(jié)論"、"推理在前" 和 "結(jié)論在前" 三種模式。最終,"結(jié)論在前" 模式以其優(yōu)異的性能脫穎而出:準(zhǔn)確率達(dá) 77.09%,同時(shí)保持了較低的推理時(shí)間。
在完成審查后,系統(tǒng)通過(guò)評(píng)論聚合機(jī)制處理輸出結(jié)果。該機(jī)制使用基于 Doubao-embedding-large 的向量化方法計(jì)算評(píng)論相似度,從每組相似評(píng)論中隨機(jī)保留一條,有效避免了開(kāi)發(fā)者被過(guò)多重復(fù)信息打擾。實(shí)驗(yàn)表明,該架構(gòu)使系統(tǒng)的評(píng)論準(zhǔn)確率在 Go 語(yǔ)言的離線評(píng)測(cè)集上達(dá)到 65.59%。
其中 BitsAI-CR w/o Taxonomy 表示訓(xùn)練數(shù)據(jù)來(lái)自于沒(méi)有進(jìn)行審查分類的隨機(jī)采樣內(nèi)部審查數(shù)據(jù),BitsAI-CR 表示訓(xùn)練數(shù)據(jù)是根據(jù)審查規(guī)則分類法特別構(gòu)建的,兩者保持了相同的訓(xùn)練數(shù)據(jù)規(guī)模。結(jié)果表明,基于兩階段評(píng)論生成都提高了準(zhǔn)確度,但分類指導(dǎo)的版本在所有審查類別中實(shí)現(xiàn)了更高的準(zhǔn)確度。
Outdated Rate 評(píng)價(jià)指標(biāo)
研究團(tuán)隊(duì)通過(guò)早期實(shí)踐發(fā)現(xiàn),開(kāi)發(fā)者面對(duì)大量審查評(píng)論時(shí)往往采取完全忽視的策略,而初期的不準(zhǔn)確評(píng)論更會(huì)嚴(yán)重?fù)p害用戶信任。這促使團(tuán)隊(duì)將準(zhǔn)確率作為首要優(yōu)化目標(biāo)。通過(guò)兩階段評(píng)論生成審查架構(gòu),BitsAI-CR 將評(píng)論準(zhǔn)確率提升至 75%,顯著提升了系統(tǒng)可用性。然而,僅依靠準(zhǔn)確率指標(biāo)存在兩個(gè)根本性限制:無(wú)法反映開(kāi)發(fā)者是否真正采納了審查建議,且人工評(píng)估準(zhǔn)確率需要大量人力投入。
為此,研究團(tuán)隊(duì)使用了評(píng)論過(guò)時(shí)率(Outdated Rate)指標(biāo),通過(guò)追蹤被標(biāo)記代碼行在后續(xù)提交中的修改比例,量化審查建議的實(shí)際價(jià)值。其中 表示在一周的度量窗口期間內(nèi)代碼提交者對(duì) Reviewer 評(píng)論進(jìn)行審查的評(píng)論集合,isOutdated(c)在評(píng)論 c 被認(rèn)為評(píng)論過(guò)時(shí)才會(huì)返回 true,即表示當(dāng)前評(píng)論標(biāo)記的代碼范圍內(nèi)的任何行在后續(xù)提交中,有被修改。
數(shù)據(jù)飛輪驅(qū)動(dòng)系統(tǒng)優(yōu)化
為完善審查規(guī)則集并更好地利用用戶反饋,研究團(tuán)隊(duì)設(shè)計(jì)了數(shù)據(jù)飛輪。最初,研究團(tuán)隊(duì)將代碼樣式指南與實(shí)際審查經(jīng)驗(yàn)結(jié)合起來(lái),設(shè)計(jì)了代碼審查規(guī)則分類,包含 5 種編程語(yǔ)言和 219 條評(píng)審規(guī)則。隨后從內(nèi)部倉(cāng)庫(kù)中抽取了 12 萬(wàn)條 MR 中的審查評(píng)論,包括靜態(tài)分析結(jié)果和人工審查反饋。在經(jīng)歷了數(shù)據(jù)清洗(過(guò)濾非實(shí)質(zhì)性的內(nèi)容,并依照代碼審查規(guī)進(jìn)行分類)和質(zhì)量控制環(huán)節(jié)后,最終構(gòu)成了 BitsAI-CR 的訓(xùn)練數(shù)據(jù)。
實(shí)踐表明,代碼審查規(guī)則需要持續(xù)優(yōu)化以適應(yīng)實(shí)際開(kāi)發(fā)。某些規(guī)則雖然在技術(shù)上完全正確,但可能缺乏實(shí)際價(jià)值。BitsAI-CR 通過(guò)三個(gè)關(guān)鍵反饋渠道收集優(yōu)化信號(hào):
1. 用戶的直接反饋(如點(diǎn)贊點(diǎn)踩)能夠及時(shí)捕捉開(kāi)發(fā)者的真實(shí)需求;
2. 每日抽樣的人工準(zhǔn)確率標(biāo)注(抽樣率不超過(guò) 10%)提供了高質(zhì)量的評(píng)估基準(zhǔn)和數(shù)據(jù);
3. 每周的 Outdated Rate 監(jiān)控則實(shí)現(xiàn)了大規(guī)模自動(dòng)化評(píng)估。
數(shù)據(jù)飛輪機(jī)制會(huì)檢測(cè)線上用戶數(shù)據(jù),識(shí)別準(zhǔn)確率高但 Outdated Rate 低的審查規(guī)則,通過(guò)優(yōu)化這些規(guī)則,確保系統(tǒng)始終保持高實(shí)用性。
這一機(jī)制的效果顯著。在過(guò)去 18 周的部署過(guò)程中,BitsAI-CR 的評(píng)論準(zhǔn)確率從初期的 25% 提升至 75%,Go 語(yǔ)言場(chǎng)景下的 Outdated Rate 達(dá)到了 26.7%,接近人工審查水平。目前,系統(tǒng)已在字節(jié)內(nèi)部服務(wù)超過(guò) 1.2 萬(wàn)名周活開(kāi)發(fā)者,用戶調(diào)研顯示 74.5% 的開(kāi)發(fā)者認(rèn)可其實(shí)際價(jià)值。
字節(jié)跳動(dòng)此次披露 BitsAI-CR 的技術(shù)細(xì)節(jié),不僅展示了其在 AI 輔助開(kāi)發(fā)領(lǐng)域的探索成果,也為業(yè)界提供了寶貴的實(shí)踐經(jīng)驗(yàn)。該系統(tǒng)的成功部署證明了 LLM 在提升企業(yè)軟件開(kāi)發(fā)效率方面的巨大潛力,為未來(lái) AI 編程助手的規(guī)?;瘧?yīng)用提供了重要參考。