【譯】Visual Studio Copilot 中更智能的人工智能編輯
當我們最初著手在 Visual Studio Copilot 中實現更智能的 AI 編輯功能時,我們就知道自己在應對一個極其復雜的問題。這不僅僅是生成出色的建議,還關乎弄清楚如何將這些建議無縫應用到你的代碼中。雖然乍一看這個想法似乎很簡單,但實際情況卻絕非如此。

實現人工智能生成編輯的復雜性
讓我們回顧一下我們早期的嘗試。Copilot 可能會給你一個很棒的建議 —— 一種新方法、一次有用的重構,甚至可能是一個修正后的邏輯塊。但真正的挑戰在于,當我們試圖將這些更改插入現有文件而不破壞任何內容時。編輯應該放在哪里?如果文件在建議生成之后又進行了更新,會發生什么情況?如果模型的輸出無意中引入沖突、與現有代碼重疊,甚至遺漏了一個必需的括號,又會怎樣呢?這些問題使得這個過程變得棘手,而由此產生的紅色波浪線也讓人難以信任人工智能的建議。
在早期,我們以盡可能直接的方式來處理這個問題:暴力破解。我們使用啟發式方法和基于規則的技術,如字符串匹配和模式識別,來確定編輯可能適用的位置。這方法……有點效果。但結果往往不一致,尤其是對于跨多行的復雜編輯。隨著 Copilot 的功能擴展到支持更多語言和場景,維護這些規則變得像追逐移動的目標 —— 總是在變化,而且越來越難以管理。成功率徘徊在 50% 左右,遠非理想狀態。事后看來,越來越明顯的是,我們無法用靜態規則跟上不斷演進的模型。
更優模型邂逅更智能的技術
隨著人工智能技術的進步,我們看到了一個以全新視角重新審視這個問題的機會。人工智能領域的兩項重大進展使我們能夠重新思考如何在 Visual Studio Copilot 中實現更智能的編輯:具有更大上下文窗口的現代模型,以及一種名為推測解碼的開創性技術。
推測解碼成為加速人工智能輔助編輯的變革性技術。它的工作原理是將一個快速模型與一個更復雜的模型配對。快速模型提前為編輯生成 token 預測,而更智能的模型僅在需要完善或驗證這些預測時介入。這種協作將平均 token 生成速度提高了2到3倍,并使利用模型實施生成的編輯成為可能,這在將更改整合到文件中時顯著提高了準確性。
通過使用推測解碼,我們采用了基于模型的方法來應用編輯,這種方法能夠填補先前方法無法觸及的空白。我們沒有依賴規則集,而是使用了一個人工智能模型來模擬你的文件的 “理想” 版本,其中所選建議無縫整合。然后,一個智能差異算法將這個理想版本與你的實際文件進行比較,以查明并精確映射編輯內容。這使得整個過程能夠比以往任何時候都更智能地處理邊緣情況,如重疊代碼或缺失語法。
平衡準確性與速度
雖然推測解碼極大地提高了性能,但應用人工智能編輯仍伴隨著一種自然的權衡:使用模型會引入延遲。此前,所有字符串計算都是在本地完成的,這意味著編輯幾乎瞬間就能出現。現在,每次編輯都涉及網絡調用和 token 生成 —— 這是一個作為 token 流逐步展開的過程,而不是作為單個即時響應。
為了讓用戶覺得這種體驗有意義,我們在編輯器中實現了流式動畫。當檢測到 token 流上的編輯時,用戶會看到他們的文檔逐行實時更新。這種動畫有兩個目的:展示進度,并讓用戶清楚了解更改是如何應用的。雖然這種方法犧牲了之前的速度以換取更高的準確性,但反饋表明,用戶更看重精確性而非原始速度,尤其是在保持代碼質量和減少混亂方面。
展望未來
這項工作為 Visual Studio Copilot 中的“Agent Mode”奠定了基礎。該功能使人工智能不僅能提出改進建議,還能積極協助執行這些建議。為使智能體模式有效運行,所需的編輯必須精確、流暢且可靠,以便智能體能夠構建、調試和測試代碼。推測解碼在平衡速度與準確性方面已取得重大進展,但我們不會就此止步。
我們的推測解碼技術即將迎來更快的實現方式。這個更新版本將利用在 token 生成和模型配對方面的進展,在保持用戶所期望的準確性的同時,進一步降低延遲。早期測試顯示,與最初推出的版本相比,有望實現2至4倍的速度提升,朝著精準與近乎即時響應時間相結合的理想體驗又邁進了一步。
原文鏈接:https://devblogs.microsoft.com/visualstudio/smarter-ai-edits-in-visual-studio-copilot/

作者:MeteorSeed
我希望您喜歡這篇博文,并一如既往地感謝您閱讀并與朋友和同事分享我的博文。
轉載請注明出處。

浙公網安備 33010602011771號