🚀 在 VS Code 中

Copilot 編輯 (預覽版) 介紹

2024 年 11 月 12 日,作者:Isidor Nikolic

直到最近,您可以在 VS Code 中透過兩種不同的方式使用 GitHub Copilot。您可以透過完成建議或內嵌聊天來修改編輯器內的程式碼。或者,您可以使用 Copilot 在聊天視圖中詢問關於程式碼的問題。Copilot 編輯功能 (預覽功能) 是一種在 VS Code 中使用 Copilot 的全新方式。它結合了聊天和內嵌聊天的優點:對話流程以及跨您管理的檔案集進行內嵌變更的能力。而且它真的很好用。

專為跨多個檔案的迭代設計

在 Copilot 編輯功能中,您可以指定要編輯的檔案集,然後使用自然語言詢問 Copilot 您需要的內容。Copilot 編輯功能會在您的工作區中跨多個檔案進行內嵌變更,並使用專為快速迭代設計的使用者介面。您可以停留在程式碼流程中,同時檢閱建議的變更、接受可行的部分,並透過後續詢問進行迭代。

Screenshot of the Copilot edits, and the proposed inline changes

Copilot 編輯功能之所以有效,是因為它讓您掌握控制權,從設定正確的上下文到接受變更,而不是因為它依賴於永遠不會犯錯的先進模型。而且體驗是迭代式的:當模型出錯時,您可以檢閱跨多個檔案的變更、接受好的部分並持續迭代,直到您與 Copilot 一起找到正確的解決方案。接受變更時,您可以執行程式碼來驗證變更,並且在需要時,在 Copilot 編輯功能中還原以回到先前的工作狀態。

保持掌控

有一個新的使用者介面概念 – 「工作集」- 讓您掌握控制權,並允許您定義需要在哪些檔案上應用編輯。您也可以透過拖放檔案或編輯器標籤,或按下 # 明確新增檔案來將檔案新增到工作集。Copilot 編輯功能會自動將您跨編輯器群組的活動編輯器新增到工作集。

Screenshot of the Working Set, showing the user adding index.js

工作集,連同還原和重做功能,讓您能夠精確控制變更,並允許您決定在何處以及如何應用它們。Copilot 編輯功能直接在您的程式碼中顯示產生的編輯內容,並為您提供程式碼檢閱流程,您可以在其中接受或捨棄每個 AI 產生的編輯內容。Copilot 編輯功能不會在工作集之外進行變更 – 唯一的例外是當它建議建立新檔案時。

Screenshot of the inline changes, showing the Accept / Discard widget

Copilot 編輯功能位於次要側邊欄 (預設在右側),因此您可以在檢閱建議的變更時,與主要側邊欄中的視圖 (例如「檔案總管」、「偵錯」或「原始檔控制」視圖) 互動。例如,您可以讓單元測試在左側的測試視圖中執行,同時在右側使用 Copilot 編輯功能視圖,以便在每次迭代中驗證 Copilot 編輯功能提出的變更是否通過單元測試。

在使用 Copilot 編輯功能時,使用您的語音是一種自然的體驗。只需與 Copilot 對話即可使來回互動變得流暢且對話式。這幾乎感覺像是與一位領域專家同事互動,使用與您在真實的配對程式設計中使用的迭代流程相同的流程。

Copilot 編輯功能使具有不同技能的使用者都能輕鬆使用 AI 程式碼編輯。作為 Microsoft 的產品經理,我可以使用 Copilot 編輯功能快速迭代早期想法,而無需編寫太多程式碼。對於我的 VS Code 工程師同事來說,Copilot 編輯功能可協助他們輕鬆地在 vscode 儲存庫中的多個檔案中建立複雜的重構。例如,一位沒有 Swift 經驗的團隊成員使用 Copilot 編輯功能從頭開始建立了一個自訂 macOS 應用程式 – 在每次迭代後,他們都執行該應用程式,找出哪些地方無法運作,並向 Copilot 編輯功能提供適當的後續指示。

幕後原理

Copilot 編輯功能利用雙模型架構來提高編輯效率和準確性。首先,基礎語言模型會考慮編輯工作階段的完整上下文,以產生初始編輯建議。您可以選擇您偏好的基礎語言模型:GPT-4o、o1-preview、o1-mini 和 Claude 3.5 Sonnet。為了獲得高效能的體驗,團隊開發了一個推測解碼端點,針對檔案中變更的快速應用進行了最佳化。來自基礎模型的建議編輯會被傳送到推測解碼端點,然後該端點將在編輯器中內嵌建議這些變更。推測解碼端點比常規模型更快,但團隊知道它可以更快,並且正在努力改進這一點,敬請期待。

今天可用

Copilot 編輯功能目前為預覽版,今天起對所有 GitHub Copilot 使用者開放!您過去提供的意見反應 #1#2,對於推出此功能至關重要,非常感謝您!

如需 Copilot 編輯功能的詳細概述,請閱讀官方文件

接下來,團隊計劃改進套用變更推測解碼端點的效能、支援從 Copilot 聊天過渡到 Copilot 編輯功能 (透過保留上下文)、建議工作集的檔案,並允許還原建議的區塊。如果您想成為第一批試用這些改進功能的人,請務必使用 VS Code InsidersGitHub Copilot Chat 擴充功能的預先發布版本。為了幫助改進此功能,請在我們的儲存庫中提交問題。

歸根結底,重點不僅僅在於 Copilot 編輯功能本身,更在於它幫助您建構的內容。

Coding 愉快!

Isidor