現已釋出!閱讀關於 11 月新增功能和修復的內容。

隆重推出 Copilot Edits (預覽版)

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

直到最近,您還可以在 VS Code 中透過兩種獨立的方式使用 GitHub Copilot。您可以使用程式碼補全或內聯聊天來修改編輯器中的程式碼。或者,您可以使用 Copilot 在聊天檢視中提問,以瞭解您的程式碼。Copilot Edits 是一項預覽功能,是您在 VS Code 中使用 Copilot 的一種全新方式。它結合了聊天和內聯聊天的優點:對話式流程以及跨您管理的多個檔案進行內聯修改的能力。而且它效果顯著。

專為跨多個檔案進行迭代設計

在 Copilot Edits 中,您可以指定一組要修改的檔案,然後使用自然語言告訴 Copilot 您需要什麼。Copilot Edits 會利用為快速迭代設計的使用者介面,在工作區內的多個檔案中進行內聯修改。在審查建議的更改時,您可以保持程式碼的流暢性,接受有效的部分,並通過後續請求進行迭代。

Screenshot of the Copilot edits, and the proposed inline changes

Copilot Edits 之所以有效,是因為它讓您掌控一切,從設定正確的上下文到接受更改,而不是因為它依賴於一個從不出錯的高階模型。並且該體驗是迭代的:當模型出錯時,您可以審查多個檔案中的更改,接受好的部分,並進行迭代,直到您與 Copilot 一起找到正確的解決方案。在接受更改時,您可以執行程式碼來驗證更改,並在需要時,在 Copilot Edits 中撤銷,以恢復到先前的有效狀態。

保持掌控

有一個新的 UI 概念——“工作集”(Working Set),它讓您掌控一切,並允許您定義需要應用編輯的檔案。您還可以透過拖放檔案或編輯器標籤頁,或者按 # 顯式新增檔案來將檔案新增到工作集中。Copilot Edits 會自動將您跨編輯器組中的活動編輯器新增到工作集中。

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

工作集與撤銷和重做功能一起,讓您能夠精確控制更改,並允許您確切地決定在哪裡以及如何應用它們。Copilot Edits 會在您的程式碼中就地顯示生成的編輯,併為您提供程式碼審查流程,您可以接受或拒絕每個 AI 生成的編輯。Copilot Edits 不會在工作集之外進行更改——唯一的例外是當它提議建立新檔案時。

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

Copilot Edits 位於輔助側邊欄(預設為右側),這樣您在審查建議的更改時,就可以與主側邊欄中的檢視(如資源管理器、除錯或原始碼管理檢視)進行互動。例如,您可以在左側的 測試 檢視中執行單元測試,同時使用右側的 Copilot Edits 檢視,以便在每次迭代中驗證 Copilot Edits 提出的更改是否通過了單元測試。

使用 語音 與 Copilot Edits 互動是一種自然體驗。只需與 Copilot 對話,就能實現流暢、對話式的來回交流。這幾乎就像與一位領域專家的同事互動,使用與您在實際結對程式設計中相同的迭代流程。

Copilot Edits 使具有不同技能水平的使用者都可以使用 AI 進行程式碼編輯。作為 Microsoft 的產品經理,我可以快速迭代早期想法,而無需太多編碼。對於我的 VS Code 工程同事來說,Copilot Edits 幫助他們在 vscode 倉庫 中輕鬆地跨多個檔案進行復雜的重構。例如,一位沒有任何 Swift 經驗的團隊成員,使用 Copilot Edits 從零開始建立了一個自定義 macOS 應用程式——每次迭代後,他們都會執行應用程式,找出不起作用的地方,並向 Copilot Edits 提供適當的後續指示。

底層原理

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

今日可用

Copilot Edits 現已推出預覽版,今天即可供所有 GitHub Copilot 使用者使用!您在過去的 #1#2 中提供的反饋,對於此功能的釋出至關重要,因此非常感謝!

有關 Copilot Edits 的詳細概述,請閱讀 官方文件

接下來,團隊計劃改進應用更改的推測性解碼端點的效能,透過保留上下文來支援從 Copilot Chat 過渡到 Copilot Edits,為工作集建議檔案,以及允許撤銷建議的程式碼塊。如果您想成為最先體驗這些改進的人之一,請確保使用 VS Code InsidersGitHub Copilot Chat 擴充套件的預釋出版本。為了幫助改進該功能,請在 我們的倉庫 中提交問題。

最終,這不僅僅是關於 Copilot Edits 本身,而是它能幫助您構建什麼。

程式設計愉快!

Isidor

© . This site is unofficial and not affiliated with Microsoft.