跳到主要內容
AI News HubLIVE
站內改寫1 分鐘閱讀

更好的工具反而讓Copilot代碼審查變得更糟,我們是這樣改進的

文章摘要

將Copilot代碼審查遷移到共享的Unix風格代碼探索工具後,審查成本上升且發現的問題減少。問題不在工具,而在指令。通過重寫指令以適配審查者工作流,平均審查成本降低了約20%,同時保持了審查質量。

來源GitHub AI & ML作者: Napalys Klicius
更好的工具反而讓Copilot代碼審查變得更糟,我們是這樣改進的
報告錯誤

更正渠道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

給代理更好的工具,它應該做得更好——這是直覺。然而,當GitHub團隊將Copilot代碼審查的底層代碼探索工具替換為共享的Unix風格工具(grep、glob和view)時,他們發現審查成本上升了,發現的問題卻減少了。問題並不在於新工具本身,而在於代理使用這些工具的指令。原始指令是為通用編碼助手設計的,導致代理像瀏覽整個倉庫一樣去探索代碼,而不是從拉取請求(PR)的差異出發進行有針對性的審查。這種“瀏覽模式”使代理積累了過多無關上下文,增加了成本並稀釋了注意力。

團隊通過重寫工具指令來糾正這一行為。新的指令模擬了人類審查者的工作流程:從PR差異開始,形成具體的審查問題;使用grep和glob快速發現候選文件和符號,但推遲讀取;僅在確定位置後才使用view讀取精確的代碼範圍。這種“先縮小範圍,再精確讀取”的模式顯著提高了效率。例如,當審查一個授權輔助函數的變更時,代理不再搜索所有調用該函數的文件,而是通過grep查找調用者,再用glob定位相關路由文件,最後用view讀取關鍵調用點。

此外,指令還改進了錯誤恢復策略。如果grep失敗,代理會嘗試更簡單的轉義搜索;如果路徑錯誤,則轉向glob而不是猜測相鄰路徑。這些調整避免了小錯誤引發更大的探索循環。內部基準測試在此過程中發揮了關鍵作用,它們不僅顯示最終評分,還展示了代理的完整工具調用軌跡,使團隊能夠可視化代理行為並迭代指令。

優化後的結果令人滿意:生產環境中平均審查成本降低了約20%,且審查質量保持不變。這一改進的啓示在於,工具本身是通用的,但指令必須針對特定任務進行優化。同樣的工具在不同產品中需要不同的指令——Copilot CLI處理的是交互式編碼任務,而Copilot代碼審查專注於從差異出發的評估。團隊的經驗表明,共享工具與定製化指令、嚴格基準測試相結合,才能實現真正的效率提升。

展開要點與分析

文章情報

工程師進階

要點

  • 遷移到共享的Unix工具後,Copilot代碼審查的成本增加、效果下降。
  • 問題根源是工具指令,而非工具本身。指令使代理像編碼助手一樣瀏覽,而非像審查者一樣聚焦差異。
  • 重寫指令後,代理行為轉變為從差異出發,先使用grep和glob縮小範圍,再用view精確讀取,實現了約20%的成本降低。
  • 內部基準測試對調試代理行為、定位問題起到了關鍵作用。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。