🚀 在 VS Code 中

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 編輯檢視可在次要側邊欄中使用。

Screenshot showing the Copilot Edits view and welcome message.

若要存取 Copilot 編輯檢視

  • 使用 ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) 鍵盤快速鍵

  • 開啟 VS Code 標題列中的 Copilot 功能表,然後選取 [開啟 Copilot 編輯]

    Screenshot showing the Copilot menu in VS Code title bar, highlighting the Open Edit Session item.

  • 在命令選取區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中使用 [檢視:切換 Copilot 編輯] 或 [Copilot 編輯:焦點放在 Copilot 編輯檢視] 命令

由於進行程式碼變更可能是反覆運算的過程,因此 Copilot 編輯中的編輯工作階段可以包含一連串的請求 (或回合)。您可以傳送所需的請求次數,以使程式碼達到您想要的狀態。

使用編輯模式

在編輯模式中,您可以選取要編輯的檔案,並提供相關內容和提示。Copilot 將根據您的提示建議程式碼編輯。

  1. 開啟 Copilot 編輯檢視 (⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I))

  2. 從模式下拉式清單中選取 [編輯]

    Screenshot showing the Copilot Edits view, highlighting edit mode selected.

  3. 使用 [新增檔案] 將檔案新增至工作集

    工作集表示工作區中哪些檔案可以由 Copilot 編輯編輯。

  4. 輸入提示以請求程式碼編輯。請針對您想要的變更具體且精確,並將較大的工作分解為較小的工作。

    Copilot 編輯會在編輯器中串流編輯。在工作集中,由 Copilot 編輯的檔案會以粗體標示。

    提示

    讓 Copilot 透過在提示中新增 #codebase 自動尋找正確的檔案。請務必啟用 github.copilot.chat.edits.codesearch.enabled (預覽) 設定,以獲得最佳結果。

  5. 檢閱建議的編輯,並接受或捨棄建議的編輯

  6. 反覆運算程式碼變更

    如果您對編輯不太滿意,您可以詢問後續問題,例如「不要包含電話號碼」或「使用 jest 而不是 vitest」。或者您可以進一步以累加方式編輯程式碼。例如,在建置 Web 應用程式時,請使用一系列提示,例如「新增導覽列」、「新增佈景主題切換器」、「以 JSON 格式在 MongoDB 中儲存訂單項目」。

使用代理人模式 (預覽)

在代理人模式中,Copilot 編輯以更自主且動態的方式運作,以達成預期的結果。若要處理請求,Copilot 會迴圈執行下列步驟,並在需要時反覆運算多次

  • 自主判斷要編輯的相關內容和檔案。
  • 提供程式碼變更和終端機命令,以完成工作。例如,Copilot 可能會編譯程式碼、安裝套件、執行測試等等。
  • 監視程式碼編輯和終端機命令輸出的正確性,並反覆運算以修正問題。

Copilot 編輯代理人模式使用一組 工具 來完成這些工作。這些工具可以平行執行,以完成要求的任務。

若要在 Copilot 編輯中使用代理人模式

  1. 透過將 chat.agent.enabled 設定設定為 true,啟用代理人模式。

  2. 開啟 Copilot 編輯檢視 (⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I))

  3. 從模式下拉式清單中選取 [代理人]

    Screenshot showing the Copilot Edits view, highlighting agent mode selected.

  4. 輸入提示以請求程式碼編輯。

    您不必指定工作集。在代理人模式中,Copilot 編輯會自主判斷要編輯的相關內容和檔案。

    Screenshot showing the Copilot Edits view, highlighting that Copilot searched the codebase for relevant files.

    Copilot 編輯會在編輯器中串流編輯,並更新工作集。此外,Copilot 可以建議要執行的終端機命令。

  5. 檢閱建議的程式碼編輯,並確認 Copilot 是否可以執行建議的終端機命令

    身為使用者,您可以掌控對專案所做的變更,並且可以 檢閱產生的編輯,而且需要確認要執行的終端機命令。

    Screenshot showing the Copilot Edits view, highlighting the terminal command that Copilot wants to run.

  6. Copilot 編輯會偵測程式碼編輯和終端機命令中的問題,並反覆運算並執行其他動作來解決這些問題。

    Screenshot showing the Copilot Edits view, highlighting that Copilot verified the code edits for errors.

    注意

    chat.agent.maxRequests 設定控制 Copilot 編輯可以在代理人模式中提出的最大請求數。

  7. 繼續詢問後續問題,並反覆運算 Copilot 編輯提供的程式碼變更。

注意

Copilot 編輯的代理人模式目前僅適用於 VS Code Insiders

管理工作集

工作集是您想要 Copilot 編輯在編輯工作階段中處理的檔案集。Copilot 編輯不會在工作集之外進行變更,但建議建立新檔案時除外。當您使用代理人模式時,Copilot 會自主判斷要編輯哪些檔案,並將它們新增至工作集。

Screenshot of Copilot Edits, showing the working set contains 3 files, including the currently opened file.

重要

工作集目前限制為 10 個檔案。

Copilot 編輯會自動將作用中的編輯器新增至工作集。如果您有多個編輯器群組,則每個群組的作用中編輯器都會新增至工作集。若要新增所有開啟的編輯器,請選取 [新增檔案...],然後從 [檔案快速選取] 中選擇 [開啟的編輯器]。

您有很多選項可以將檔案新增至工作集

  • 選取 [新增檔案...] 或使用 [附加] 圖示 (⌘/ (Windows、Linux Ctrl+/)),然後在 [快速選取] 中選取檔案。

    提示

    若要從 [快速選取] 中快速選取多個項目,請使用 向上向下 鍵導覽清單,使用 向右 鍵將項目新增為內容,然後針對其他項目重複此步驟。

    Screenshot showing the Copilot Edits view and the file search Quick Pick, highlighting the buttons to add context.

  • 讓 Copilot 透過在提示中新增 #codebase 自動尋找正確的檔案。

    請務必啟用 github.copilot.chat.edits.codesearch.enabled (預覽) 設定,以獲得最佳結果。

  • 將編輯器索引標籤,或來自 [檔案總管] 檢視、[搜尋] 檢視或編輯器麵包屑的檔案或資料夾拖放到 Copilot 編輯檢視。

    當您將資料夾拖放到 Copilot 編輯檢視時,該資料夾中的所有檔案都會新增至工作集。

  • 在 [檔案總管] 檢視或 [搜尋] 檢視中,以滑鼠右鍵按一下檔案,然後選取 [將檔案新增至 Copilot 編輯]。

  • 選取建議的檔案。當您將一或多個檔案新增至工作集時,Copilot 編輯會根據 Git 歷程記錄建議其他相關檔案。

    如果您不想看到這些建議,可以使用 github.copilot.chat.edits.suggestRelatedFilesFromGitHistory 設定來停用它們。

當 Copilot 編輯為您的專案產生編輯時,它會以視覺方式指示工作集中哪些檔案已編輯。選取工作集中的檔案以開啟它,並在編輯器中檢視建議的編輯。

Screenshot showing the Copilot Edits response for "Add a feedback field in the contact page" and showing the diff in the editor.

接受或捨棄編輯

Copilot 編輯為您提供程式碼檢閱流程,您可以在其中接受或捨棄每個 AI 產生的編輯。如果您捨棄編輯,修改過的檔案會還原為先前接受的狀態。

使用編輯器覆疊控制項,您可以使用 控制項在建議的編輯之間導覽。使用 [接受] 或 [捨棄] 按鈕來接受或拒絕指定檔案的編輯。

Screenshot showing the Editor with proposed changes, highlighting the review controls in the editor table bar.

若要接受或捨棄檔案內的特定編輯,請將滑鼠游標停留在程式碼編輯上方,並使用該編輯的 [接受] 或 [捨棄] 控制項。

或者,您也可以從 Copilot 編輯檢視中的工作集接受或捨棄變更

  • 選取工作集標題列中的 [接受] (⌘Enter (Windows、Linux Ctrl+Enter)) 或 [捨棄] (⌘Backspace (Windows、Linux Ctrl+Backspace)),以接受或捨棄工作集中的所有編輯

  • 選取個別工作集檔案上的 [接受] 或 [捨棄] 圖示,以將動作套用至該特定檔案

Screenshot showing the Copilot Edits view, highlighting the Accept All and Discard All buttons.

透過 chat.editing.autoAcceptDelay 設定,您可以設定延遲時間,在此時間之後,建議的編輯會自動接受。將滑鼠游標停留在編輯器覆疊控制項上方,以取消自動接受倒數。

當您關閉 VS Code 時,系統會記住擱置中編輯的狀態。當您重新開啟 VS Code 時,擱置中的編輯會還原,而且您仍然可以接受或捨棄編輯。

注意

在代理人模式中,編輯會自動儲存到磁碟,無論是否已啟用 [自動儲存] (files.autoSave)。您仍然可以檢閱編輯,並選擇在需要時捨棄它們。

還原編輯

當您傳送請求以對程式碼進行編輯時,您可能會想要還原其中一些變更,例如因為您想要使用其他實作策略。

您可以使用 Copilot 編輯檢視標題列中的 [還原上次編輯] 控制項,還原上次編輯並返回傳送上次請求之前的狀態。在您執行上次編輯的還原之後,您可以再次使用 Copilot 編輯檢視標題列中的 [重做上次編輯] 控制項來重做這些編輯。

Screenshot showing the Copilot Edits view, highlighting the Undo and Redo actions in the view title bar.

您也可以在使用 Copilot 編輯檢視中的請求時,使用 [還原編輯 (刪除)] 控制項來還原從該請求開始的所有編輯。

Screenshot showing the Copilot Edits view, highlighting the Undo Edits control for a specific request.

提示

有時 Copilot 在產生編輯時,會開始走錯路。一旦發生這種情況,就很難透過新增對話來說服它採用另一種方法。在這種情況下,請使用 [還原上次編輯] 還原到您同意 Copilot 回應的點。然後從該處以精簡的提示重新開始。

將聊天請求傳送至 Copilot 編輯

Copilot Chat 非常適合詢問問題和探索關於您的專案或一般技術主題的想法。您可以將聊天工作階段傳輸到 Copilot 編輯,而不是將 Copilot Chat 中的每個程式碼區塊套用至您的程式碼。Copilot 編輯已針對程式碼編輯進行最佳化,而且可以直接在您的程式碼中,跨多個檔案同時套用程式碼建議。

在 [聊天] 檢視中,選取聊天對話底部的 [使用 Copilot 編輯] 按鈕,以使用 Copilot 編輯套用建議的程式碼變更。如果您的聊天工作階段中有多個聊天請求,您可以選取您想要傳輸到 Copilot 編輯的請求。

Screenshot highlighting the Edit with Copilot button in the Chat view to move a chat conversation to Copilot Edits.

將聊天請求移至 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 ChatInline Chat 與筆記本一起使用。