Copilot 編輯
使用 Copilot 編輯開始 AI 驅動的程式碼編輯工作階段,並使用自然語言快速反覆運算多個檔案的程式碼變更。Copilot 編輯會直接在編輯器中套用編輯,您可以在編輯器中檢閱這些編輯,並具有周圍程式碼的完整內容。
Copilot 編輯可以兩種模式運作
- 編輯模式:選取要編輯的檔案、提供相關內容和提示,Copilot 就會建議程式碼編輯。
- 代理人模式 (預覽):讓 Copilot 自主規劃實作請求所需的任務和相關檔案。Copilot 將套用程式碼編輯並建議終端機命令,並持續反覆運算以解決發生的任何問題。
代理人模式目前為預覽版,僅適用於 VS Code Insiders。請在 Copilot 存放庫中提供意見反應並回報問題。
如果您使用筆記本,Copilot 編輯支援目前受到限制。我們建議您在 VS Code 中將 Copilot Chat 或 內嵌聊天與筆記本搭配使用。
以下影片示範如何使用 Copilot 編輯來擴充基本 Express 應用程式,例如新增頁面、導覽列和佈景主題切換器。
如果您還沒有 Copilot 訂閱,您可以註冊 Copilot 免費方案,即可免費使用 Copilot,並獲得每月完成次數和聊天互動的限制。
開始 Copilot 編輯工作階段
您可以透過 Copilot 編輯檢視存取 Copilot 編輯,您可以在其中輸入自然語言提示以取得編輯建議。依預設,Copilot 編輯檢視可在次要側邊欄中使用。
若要存取 Copilot 編輯檢視
-
使用 ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) 鍵盤快速鍵
-
開啟 VS Code 標題列中的 Copilot 功能表,然後選取 [開啟 Copilot 編輯]
-
在命令選取區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中使用 [檢視:切換 Copilot 編輯] 或 [Copilot 編輯:焦點放在 Copilot 編輯檢視] 命令
由於進行程式碼變更可能是反覆運算的過程,因此 Copilot 編輯中的編輯工作階段可以包含一連串的請求 (或回合)。您可以傳送所需的請求次數,以使程式碼達到您想要的狀態。
使用編輯模式
在編輯模式中,您可以選取要編輯的檔案,並提供相關內容和提示。Copilot 將根據您的提示建議程式碼編輯。
-
開啟 Copilot 編輯檢視 (⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I))
-
從模式下拉式清單中選取 [編輯]
-
使用 [新增檔案] 將檔案新增至工作集
工作集表示工作區中哪些檔案可以由 Copilot 編輯編輯。
-
輸入提示以請求程式碼編輯。請針對您想要的變更具體且精確,並將較大的工作分解為較小的工作。
Copilot 編輯會在編輯器中串流編輯。在工作集中,由 Copilot 編輯的檔案會以粗體標示。
-
檢閱建議的編輯,並接受或捨棄建議的編輯
-
反覆運算程式碼變更
如果您對編輯不太滿意,您可以詢問後續問題,例如「不要包含電話號碼」或「使用 jest 而不是 vitest」。或者您可以進一步以累加方式編輯程式碼。例如,在建置 Web 應用程式時,請使用一系列提示,例如「新增導覽列」、「新增佈景主題切換器」、「以 JSON 格式在 MongoDB 中儲存訂單項目」。
使用代理人模式 (預覽)
在代理人模式中,Copilot 編輯以更自主且動態的方式運作,以達成預期的結果。若要處理請求,Copilot 會迴圈執行下列步驟,並在需要時反覆運算多次
- 自主判斷要編輯的相關內容和檔案。
- 提供程式碼變更和終端機命令,以完成工作。例如,Copilot 可能會編譯程式碼、安裝套件、執行測試等等。
- 監視程式碼編輯和終端機命令輸出的正確性,並反覆運算以修正問題。
Copilot 編輯代理人模式使用一組 工具 來完成這些工作。這些工具可以平行執行,以完成要求的任務。
若要在 Copilot 編輯中使用代理人模式
-
開啟 Copilot 編輯檢視 (⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I))
-
從模式下拉式清單中選取 [代理人]
-
輸入提示以請求程式碼編輯。
您不必指定工作集。在代理人模式中,Copilot 編輯會自主判斷要編輯的相關內容和檔案。
Copilot 編輯會在編輯器中串流編輯,並更新工作集。此外,Copilot 可以建議要執行的終端機命令。
-
檢閱建議的程式碼編輯,並確認 Copilot 是否可以執行建議的終端機命令
身為使用者,您可以掌控對專案所做的變更,並且可以 檢閱產生的編輯,而且需要確認要執行的終端機命令。
-
Copilot 編輯會偵測程式碼編輯和終端機命令中的問題,並反覆運算並執行其他動作來解決這些問題。
-
繼續詢問後續問題,並反覆運算 Copilot 編輯提供的程式碼變更。
Copilot 編輯的代理人模式目前僅適用於 VS Code Insiders。
管理工作集
工作集是您想要 Copilot 編輯在編輯工作階段中處理的檔案集。Copilot 編輯不會在工作集之外進行變更,但建議建立新檔案時除外。當您使用代理人模式時,Copilot 會自主判斷要編輯哪些檔案,並將它們新增至工作集。
工作集目前限制為 10 個檔案。
Copilot 編輯會自動將作用中的編輯器新增至工作集。如果您有多個編輯器群組,則每個群組的作用中編輯器都會新增至工作集。若要新增所有開啟的編輯器,請選取 [新增檔案...],然後從 [檔案快速選取] 中選擇 [開啟的編輯器]。
您有很多選項可以將檔案新增至工作集
-
選取 [新增檔案...] 或使用 [附加] 圖示 (⌘/ (Windows、Linux Ctrl+/)),然後在 [快速選取] 中選取檔案。
提示若要從 [快速選取] 中快速選取多個項目,請使用 向上 和 向下 鍵導覽清單,使用 向右 鍵將項目新增為內容,然後針對其他項目重複此步驟。
-
讓 Copilot 透過在提示中新增
#codebase
自動尋找正確的檔案。請務必啟用 github.copilot.chat.edits.codesearch.enabled (預覽) 設定,以獲得最佳結果。
-
將編輯器索引標籤,或來自 [檔案總管] 檢視、[搜尋] 檢視或編輯器麵包屑的檔案或資料夾拖放到 Copilot 編輯檢視。
當您將資料夾拖放到 Copilot 編輯檢視時,該資料夾中的所有檔案都會新增至工作集。
-
在 [檔案總管] 檢視或 [搜尋] 檢視中,以滑鼠右鍵按一下檔案,然後選取 [將檔案新增至 Copilot 編輯]。
-
選取建議的檔案。當您將一或多個檔案新增至工作集時,Copilot 編輯會根據 Git 歷程記錄建議其他相關檔案。
如果您不想看到這些建議,可以使用 github.copilot.chat.edits.suggestRelatedFilesFromGitHistory 設定來停用它們。
當 Copilot 編輯為您的專案產生編輯時,它會以視覺方式指示工作集中哪些檔案已編輯。選取工作集中的檔案以開啟它,並在編輯器中檢視建議的編輯。
接受或捨棄編輯
Copilot 編輯為您提供程式碼檢閱流程,您可以在其中接受或捨棄每個 AI 產生的編輯。如果您捨棄編輯,修改過的檔案會還原為先前接受的狀態。
使用編輯器覆疊控制項,您可以使用 和 控制項在建議的編輯之間導覽。使用 [接受] 或 [捨棄] 按鈕來接受或拒絕指定檔案的編輯。
若要接受或捨棄檔案內的特定編輯,請將滑鼠游標停留在程式碼編輯上方,並使用該編輯的 [接受] 或 [捨棄] 控制項。
或者,您也可以從 Copilot 編輯檢視中的工作集接受或捨棄變更
-
選取工作集標題列中的 [接受] (⌘Enter (Windows、Linux Ctrl+Enter)) 或 [捨棄] (⌘Backspace (Windows、Linux Ctrl+Backspace)),以接受或捨棄工作集中的所有編輯
-
選取個別工作集檔案上的 [接受] 或 [捨棄] 圖示,以將動作套用至該特定檔案
透過 chat.editing.autoAcceptDelay 設定,您可以設定延遲時間,在此時間之後,建議的編輯會自動接受。將滑鼠游標停留在編輯器覆疊控制項上方,以取消自動接受倒數。
當您關閉 VS Code 時,系統會記住擱置中編輯的狀態。當您重新開啟 VS Code 時,擱置中的編輯會還原,而且您仍然可以接受或捨棄編輯。
還原編輯
當您傳送請求以對程式碼進行編輯時,您可能會想要還原其中一些變更,例如因為您想要使用其他實作策略。
您可以使用 Copilot 編輯檢視標題列中的 [還原上次編輯] 控制項,還原上次編輯並返回傳送上次請求之前的狀態。在您執行上次編輯的還原之後,您可以再次使用 Copilot 編輯檢視標題列中的 [重做上次編輯] 控制項來重做這些編輯。
您也可以在使用 Copilot 編輯檢視中的請求時,使用 [還原編輯 (刪除)] 控制項來還原從該請求開始的所有編輯。
有時 Copilot 在產生編輯時,會開始走錯路。一旦發生這種情況,就很難透過新增對話來說服它採用另一種方法。在這種情況下,請使用 [還原上次編輯] 還原到您同意 Copilot 回應的點。然後從該處以精簡的提示重新開始。
將聊天請求傳送至 Copilot 編輯
Copilot Chat 非常適合詢問問題和探索關於您的專案或一般技術主題的想法。您可以將聊天工作階段傳輸到 Copilot 編輯,而不是將 Copilot Chat 中的每個程式碼區塊套用至您的程式碼。Copilot 編輯已針對程式碼編輯進行最佳化,而且可以直接在您的程式碼中,跨多個檔案同時套用程式碼建議。
在 [聊天] 檢視中,選取聊天對話底部的 [使用 Copilot 編輯] 按鈕,以使用 Copilot 編輯套用建議的程式碼變更。如果您的聊天工作階段中有多個聊天請求,您可以選取您想要傳輸到 Copilot 編輯的請求。
將聊天請求移至 Copilot 編輯之後,聊天請求會從 [聊天] 檢視中的聊天對話中移除。
代理人模式工具
若要完成請求,Copilot 編輯會使用一組工具來完成個別工作。將這些工具視為 Copilot 可以用來執行特定工作的特殊公用程式。此類工作的範例包括列出目錄中的檔案、編輯工作區中的檔案、執行終端機命令、取得終端機的輸出等等。
根據工具的結果,Copilot 可能會叫用其他工具來完成整體請求。例如,如果程式碼編輯導致檔案中發生語法錯誤,Copilot 可能會探索另一種方法並建議不同的程式碼變更。
雖然代理人模式可以自主運作,但您仍可掌控產生的編輯和執行的終端機命令。
設定
下列清單包含與 Copilot 編輯相關的設定。您可以透過 [設定編輯器] (⌘, (Windows、Linux Ctrl+,)) 設定設定。
- chat.editing.confirmEditRequestRemoval - 在還原編輯之前要求確認 (預設值:
true
) - chat.editing.confirmEditRequestRetry - 在執行上次編輯的重做之前要求確認 (預設值:
true
) - chat.editing.alwaysSaveWithGeneratedChanges - 自動將 Copilot 編輯產生的變更儲存到磁碟 (預設值:
false
) - chat.agent.enabled - 在 Copilot 編輯中啟用或停用代理人模式 (預設值:
false
) - chat.editing.autoAcceptDelay - 設定延遲時間,在此時間之後,建議的編輯會自動接受,使用零停用自動接受 (預設值:0)
- github.copilot.chat.edits.codesearch.enabled (預覽) - 讓 Copilot 透過在提示中新增
#codebase
來尋找正確的檔案,類似於代理人模式的運作方式 (預設值:false
) - chat.agent.maxRequests - Copilot 編輯可以在代理人模式中提出的最大請求數 (預設值:Copilot 免費使用者為 5,其他使用者為 15)
鍵盤快速鍵
下列清單包含與 Copilot 編輯相關的預設鍵盤快速鍵。您可以使用 [鍵盤快速鍵編輯器] (⌘K ⌘S (Windows、Linux Ctrl+K Ctrl+S)) 修改任何預設鍵盤快速鍵。
- ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) - 開啟 Copilot 編輯檢視
- ⌥⌘Enter (Windows、Linux Ctrl+Alt+Enter) - 將提示從 [聊天] 檢視傳送至 Copilot 編輯
- ⌘/ (Windows、Linux Ctrl+/) - 將內容附加至您的提示
- - 將所有編輯過的檔案儲存到磁碟
- ⌘Enter (Windows、Linux Ctrl+Enter) - 接受所有編輯
- ⌘Backspace (Windows、Linux Ctrl+Backspace) - 捨棄所有編輯
- ⇧⌥F5 (Windows、Linux Shift+Alt+F5) - 導覽至檔案內的上一個編輯
- ⌥F5 (Windows、Linux Alt+F5) - 導覽至檔案內的下一個編輯
如果您想要變更特定於 Copilot 編輯檢視之動作的鍵盤快速鍵,您需要在 when
子句中包含下列條件:chatLocation == 'editing-session'
。
限制
- 尚不支援多個同時編輯工作階段。
- 編輯工作階段尚不支援使用
@workspace /new
來搭建新專案。目前,請使用 Copilot Chat 進行初始搭建。 - 雖然
#codebase
非常適合尋找查詢的相關內容,但後續產生的編輯品質差異很大。請試驗 github.copilot.chat.edits.codesearch.enabled (預覽) 設定,以獲得更佳的代理人體驗來尋找檔案,或明確將檔案新增至工作集以建立更好的結果。 - 尚無或未測試 Jupyter 筆記本、其他自訂文字格式和二進位檔案格式的支援。
- 工作集目前限制為 10 個檔案。
- Copilot 編輯限制為每 10 分鐘 7 個編輯請求。
常見問題
Copilot 編輯與 Copilot Chat 有何不同?
Copilot Chat 和 Copilot 編輯都使用交談式介面,您可以在其中使用自然語言提示來取得 AI 驅動的建議。Copilot 編輯與 Copilot Chat 之間有幾個明顯的差異。
Copilot 編輯讓您處於程式碼編輯的內容中,您可以在其中開始編輯工作階段,並使用提示來變更程式碼庫。Copilot 編輯可以直接跨程式碼庫中的多個檔案產生和套用程式碼變更。您可以立即在程式碼的內容中預覽產生的編輯。
聊天檢視提供更通用的聊天介面,可用於詢問關於您的程式碼或一般技術主題的問題。Copilot 也可以提供程式碼建議,並產生程式碼區塊作為聊天對話的一部分。您需要手動將每個程式碼區塊套用至專案中的不同檔案,以評估其有效性。
內嵌聊天透過在編輯器中提供聊天介面,讓您保持在編碼流程中,您可以在其中直接在程式碼的內容中預覽產生的程式碼建議。[內嵌聊天] 的範圍僅限於啟動它的編輯器,因此它只能為單一檔案提供程式碼建議。您也可以使用 [內嵌聊天] 來詢問通用問題。
Copilot 編輯也為您提供程式碼檢閱流程,您可以在其中輕鬆檢閱產生的編輯,並決定接受或捨棄它們。Copilot Chat 沒有此程式碼檢閱機制。此外,您可以還原過去的編輯,並將變更回溯到先前的接受狀態。
下表顯示每個體驗的功能比較。
功能 | Copilot 編輯 | 聊天檢視 | 內嵌聊天 | 快速聊天 |
---|---|---|---|---|
多檔案編輯 | ✅ | ✅* | ✅* | |
預覽程式碼編輯 | ✅ | ✅ | ||
程式碼檢閱流程 | ✅ | |||
還原變更 | ✅ | |||
附加內容 | ✅ | ✅ | ✅ | ✅ |
使用參與者和命令 | ✅ | ✅ | ||
產生 Shell 命令 | ✅ | ✅ | ||
通用聊天 | ✅ | ✅ | ✅ |
* 程式碼區塊包含在聊天對話中,需要手動套用至正確的檔案
我可以變更 Copilot 編輯檢視的位置嗎?
您可以將 Copilot 編輯視圖拖放到活動列中,使其顯示在主要側邊欄。您也可以將其移動到次要側邊欄。若要瞭解更多關於 VS Code 中的自訂版面配置,請參閱此處。
為什麼我應該使用編輯模式而不是代理人模式?
考量以下準則,以選擇編輯模式或代理人模式
- 編輯範圍:如果您的請求僅涉及程式碼編輯,且您知道變更的精確範圍和工作集,則可以考慮使用編輯模式。
- 預覽功能:代理人模式仍為預覽功能,可能不適用於所有情境。
- 持續時間:代理人模式涉及多個步驟來處理請求,因此可能需要更長的時間才能獲得回應。例如,確定相關的上下文和要編輯的檔案、確定行動計畫等等。
- 非決定性:代理人模式會評估產生的編輯結果,並可能多次迭代。因此,代理人模式可能比編輯模式更具非決定性。
- 請求配額:在代理人模式中,根據任務的複雜程度,一個提示可能會導致對後端的多次請求。
我可以在筆記本中使用 Copilot 編輯嗎?
當您使用筆記本時,Copilot 編輯支援受到限制。例如,代理人模式不適用於在 VS Code 中使用筆記本。
我們建議您改為在 VS Code 中將 Copilot Chat 或 Inline Chat 與筆記本一起使用。