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