隆重推出 Copilot Edits(預覽版)
2024年11月12日,由 Isidor Nikolic 釋出
直到最近,在 VS Code 中使用 GitHub Copilot 還有兩種獨立的方式。您可以使用程式碼補全或內聯聊天 (Inline Chat) 在編輯器中修改程式碼。或者,您也可以在聊天檢視 (Chat view) 中使用 Copilot 提出關於程式碼的問題。Copilot Edits 是一個預覽功能,它是在 VS Code 中使用 Copilot 的一種全新方式。它結合了聊天和內聯聊天的優點:既有對話式的流程,又能在一系列您管理的檔案中進行內聯更改。而且,它就是這麼好用。
專為跨多檔案迭代而設計
在 Copilot Edits 中,您可以指定一組要編輯的檔案,然後用自然語言告訴 Copilot 您的需求。Copilot Edits 會在您的工作區中,跨多個檔案進行內聯更改,並採用專為快速迭代設計的使用者介面。您可以在審查建議的更改時保持編碼的流暢性,接受可行的部分,並通過後續提問進行迭代。
Copilot Edits 之所以有效,是因為它讓您掌握控制權——從設定正確的上下文到接受更改——而不是因為它依賴一個從不出錯的高階模型。這種體驗是迭代式的:當模型出錯時,您可以審查跨多個檔案的更改,接受好的部分,並不斷迭代,直到與 Copilot 共同找到正確的解決方案。在接受更改時,您可以執行程式碼來驗證這些更改,並在需要時,在 Copilot Edits 中使用“撤銷”功能恢復到之前可用的狀態。
一切盡在掌控
我們引入了一個新的 UI 概念——工作集 (Working Set)——它讓您掌握控制權,可以定義需要在哪些檔案上應用編輯。您還可以透過拖放檔案或編輯器標籤頁,或按 #
鍵來顯式地將檔案新增到工作集中。Copilot Edits 會自動將您在所有編輯器組中的活動編輯器新增到工作集中。
工作集,再加上撤銷 (Undo) 和重做 (Redo) 功能,讓您能夠精確控制更改,並決定在何處以及如何應用它們。Copilot Edits 會在您的程式碼中直接就地顯示生成的編輯,併為您提供一個程式碼審查流程,您可以接受或放棄每一處由 AI 生成的編輯。Copilot Edits 不會在工作集之外進行任何更改——唯一的例外是當它建議建立一個新檔案時。
Copilot Edits 位於次側邊欄(預設在右側),這樣您在審查建議的更改時,可以與主側邊欄中的檢視進行互動,例如資源管理器 (Explorer)、除錯 (Debug) 或原始碼管理 (Source Control) 檢視。例如,您可以在左側的測試檢視中執行單元測試,同時在右側使用 Copilot Edits 檢視,這樣在每次迭代中,您都可以驗證 Copilot Edits 提出的更改是否通過了單元測試。
在使用 Copilot Edits 時,使用您的語音是一種自然的體驗。直接與 Copilot 對話,使來回交流變得流暢且充滿對話感。這幾乎就像與一位領域專家同事互動一樣,採用與現實生活中的結對程式設計相同的迭代流程。
Copilot Edits 讓不同技能水平的使用者都能輕鬆地使用 AI 進行程式碼編輯。作為微軟的一名產品經理,我可以使用 Copilot Edits 快速迭代早期想法,而無需太多程式設計知識。對於我的 VS Code 工程師同事來說,Copilot Edits 幫助他們在 vscode 倉庫中輕鬆地建立跨多個檔案的複雜重構。例如,一位對 Swift 毫無經驗的團隊成員,使用 Copilot Edits 從零開始建立了一個自定義的 macOS 應用——每次迭代後,他們都會執行應用,找出問題所在,然後給 Copilot Edits 相應的跟進指令。
底層原理
Copilot Edits 利用雙模型架構來提高編輯效率和準確性。首先,一個基礎語言模型會考慮 Edits 會話的完整上下文,以生成初始的編輯建議。您可以選擇您喜歡的基礎語言模型,包括:GPT-4o、o1-preview、o1-mini 和 Claude 3.5 Sonnet。為了獲得高效能的體驗,團隊開發了一個推測解碼 (speculative decoding) 端點,專為在檔案中快速應用更改而最佳化。基礎模型提出的編輯建議會被髮送到推測解碼端點,然後該端點會在編輯器中內聯地提出這些更改。推測解碼端點比常規模型更快,但團隊知道它還可以更快,並正在努力改進這一點,敬請期待。
現已可用
Copilot Edits 現處於預覽階段,所有 GitHub Copilot 使用者今天就可以使用!您過去在 #1 和 #2 中提供的反饋對於釋出此功能至關重要,非常感謝!
有關 Copilot Edits 的詳細概述,請閱讀官方文件。
接下來,團隊計劃提高應用更改的推測解碼端點的效能,支援透過保留上下文從 Copilot Chat 轉換到 Copilot Edits,為工作集建議檔案,並允許撤銷建議的程式碼塊。如果您想成為第一批體驗這些改進的使用者,請確保使用 VS Code Insiders 和 GitHub Copilot Chat 擴充套件的預釋出版本。為了幫助改進該功能,請在我們的倉庫中提交問題。
最終,重要的不僅僅是 Copilot Edits 本身,而是它幫助您構建了什麼。
程式設計愉快!
Isidor