在 Visual Studio Code 中使用代理
代理是實現 AI 驅動的自主編碼以及執行超出簡單程式碼建議和聊天互動的多步任務的關鍵。Visual Studio Code 允許您建立在本地或雲端、以互動方式或在後臺執行的代理會話。您可以隨時在不同型別的代理之間切換任務,以利用它們獨特的優勢。透過 VS Code 中的統一聊天檢視,您可以集中管理和監控所有代理會話,無論它們在哪裡執行。
本文件概述了各種代理型別,如何建立和管理代理會話,代理之間的任務委派,以及跟蹤它們的進度。

什麼是代理?
代理可以端到端地處理完整的編碼任務,它們所做的不僅僅是建議程式碼或回答問題,從而為您節省時間。它們可以理解您的專案,跨多個檔案進行更改,執行命令,並根據獲得的結果進行調整。
例如,假設您有一個測試失敗。代理不僅可以建議修復,還可以讀取錯誤訊息,在多個檔案中識別根本原因,更新相關程式碼,重新執行測試以驗證修復是否有效,甚至提交更改。
給代理一個高階任務,它們會將其分解為多個步驟,使用各種工具執行這些步驟,並在遇到錯誤或測試失敗時進行自我糾正。
在 VS Code 中,代理可以在不同的環境中執行以匹配您的工作流程:在 VS Code 中進行本地互動任務,在您的機器上進行後臺自主工作,或者在雲端進行遠端團隊協作。它們執行編碼任務,執行終端命令,並協同使用工具來實現您的目標。一些代理會即時響應您的提示,幫助您規劃功能或進行有針對性的編輯,而另一些代理則獨立工作以實現多步更改。
代理與自定義代理有何不同?
自定義代理允許您讓代理在執行某項任務時扮演特定的角色或個性,例如程式碼審閱者、測試人員或安全專家。自定義代理是一種配置,它定義了代理應如何行為,可以使用哪些工具,以及應使用哪個模型。
例如,“程式碼審閱者”自定義代理可能被配置為專注於根據團隊編碼標準和行業最佳實踐來識別潛在的 bug 並提出改進建議。自定義代理將只擁有對程式碼庫的只讀訪問許可權,並使用特定的儲存庫或文件作為其審閱的上下文。自定義代理的輸出將是一個基於模板的詳細程式碼審閱報告。
您可以在不同型別的代理(本地、後臺、雲端)之間重用自定義代理,以使它們在不同環境中扮演相同的角色或個性。
自定義代理還允許您在自定義代理定義中指定切換點,以實現結構化的工作流程,讓使用者透過另一個代理執行後續操作。例如,“程式碼審閱者”自定義代理可以配置為切換到內建代理,並要求它實現建議的更改。
瞭解更多關於建立自定義代理的資訊。
代理與子代理有何不同?
子代理使代理能夠分解複雜任務並在隔離的上下文中執行它們。子代理是在代理會話的一部分中啟動的自主代理,但它獨立執行並擁有自己的上下文視窗。子代理對於最佳化複雜的多步任務(如研究或分析)的上下文管理非常有用。一個代理可以建立多個子代理來處理單個使用者請求的不同部分。
例如,如果您要求代理研究一個主題並總結研究結果,它可以建立一個子代理來處理研究部分。子代理收集資訊,處理資訊,然後只將最終摘要返回給主代理,從而使主上下文專注於主要對話。
與代理本身類似,子代理也可以利用自定義代理來承擔其任務的特定角色或個性。如果子代理需要執行研究,您可以讓它使用針對資訊收集、分析和總結最佳化的“研究員”自定義代理。
目前,子代理僅在 VS Code 的本地代理會話中受支援。
代理型別
VS Code 支援四種主要的代理類別,每種代理都針對不同的用例和互動級別進行設計。

本地代理
本地代理直接在您的機器上的 VS Code 中執行。您可以透過聊天與本地代理進行互動,以即時獲得對您提示的響應。本地代理在您的工作區上執行,並可以訪問 VS Code 中提供的所有工具和模型。您可以透過建立自定義代理,讓代理在執行某項任務時扮演特定的角色或個性,例如程式碼審閱者、測試人員或文件編寫者。
本地代理在 VS Code 的聊天介面中執行。當您關閉聊天會話時,本地代理將保持活動狀態,並可以在會話檢視中進行跟蹤。
最適合:
- 需要即時反饋的互動式對話,例如頭腦風暴、規劃或尚未完全定義任務
- 不需要其他團隊成員協作的任務
- 需要從您的開發環境獲取上下文的任務,例如 lint 錯誤、堆疊跟蹤、單元測試結果
- 需要訪問 VS Code 擴充套件或 MCP 伺服器中的特定工具,或者需要使用 BYOK 模型之類的特定模型
主要特點:
- 在您的本地機器上的 VS Code 中執行,並在您當前的工作區上工作
- 基於聊天的互動式介面,用於即時反饋和迭代
- 完全訪問您的工作區、檔案和上下文
- 可以訪問 VS Code 中配置的所有代理工具,例如內建工具、MCP 工具和擴充套件提供的工具
- 可以使用您在 VS Code 中提供的所有模型,包括 BYOK 模型和其他提供商的模型
瞭解更多關於在 VS Code 中使用聊天的資訊。
後臺代理
類似 Copilot CLI 的後臺代理是基於 CLI 的代理,它們在您的本地機器上以非互動方式執行。後臺代理可以使用 Git 工作樹以隔離模式工作,以防止程式碼更改干擾您當前的工作區。您可以選擇在當前工作區中執行後臺代理,但這可能會導致衝突(如果您正在積極處理相同的檔案)。後臺代理不能使用 MCP 或擴充套件提供的工具,並且僅限於 CLI 提供的模型。要自定義後臺代理的行為,您可以重用工作區自定義代理,使其扮演特定的角色或個性。
最適合:
- 具有明確範圍和所有必要上下文的非互動式任務,例如實施計劃
- 不需要與其他團隊成員協作的任務
- 不需要訪問 VS Code 內建工具、MCP 工具或執行時上下文的任務,例如失敗的測試或文字選擇
主要特點:
- 在您的本地機器上以非互動和自主的方式在後臺執行
- 可以使用 Git 工作樹與您的主工作區隔離工作
- 除非明確新增,否則無法直接訪問 VS Code 內建工具和執行時上下文
- 無法訪問 MCP 伺服器
- 僅限於透過 CLI 工具提供的模型
瞭解更多關於在 VS Code 中使用後臺代理的資訊。
雲端代理
雲端代理在遠端基礎設施上執行,以執行 AI 驅動的編碼任務。類似 Copilot 編碼代理的雲端代理與 GitHub 儲存庫和拉取請求整合,以實現團隊協作和程式碼審閱。雲端代理透過分支和拉取請求與您的本地工作區隔離執行,以防止干擾。雲端代理無法訪問 VS Code 內建工具和執行時上下文,但可以訪問在遠端環境中配置的 MCP 伺服器。您可以重用您的工作區自定義代理,使雲端代理在執行任務時扮演特定的角色或個性。
最適合:
- 具有明確範圍和所有必要上下文的非互動式任務,例如實施計劃
- 需要與其他團隊成員協作的任務
- 不需要訪問 VS Code 內建工具、MCP 工具或執行時上下文的任務,例如失敗的測試或文字選擇
主要特點:
- 在遠端基礎設施上以非互動方式執行
- 透過分支和拉取請求與您的主工作區隔離工作
- 可以透過拉取請求支援團隊協作
- 無法訪問 VS Code 內建工具和執行時上下文
- 可以訪問在遠端環境中配置的 MCP 伺服器
- 僅限於雲端代理服務中提供的模型
瞭解更多關於在 VS Code 中使用雲端代理的資訊。
第三方代理
第三方代理是由其他提供商(例如 OpenAI Codex)開發的後臺代理,它們已整合到 VS Code 代理體驗中。您可以像管理本地、後臺和雲端代理一樣管理這些提供商的代理會話。
最適合:當您已在使用第三方 AI 代理並希望將其整合到 VS Code 工作流程中時
管理代理會話
VS Code 中的聊天檢視提供了一個統一的介面,用於管理您的代理會話,無論它們在哪裡執行。您可以檢視所有代理會話的列表、它們的狀態以及關鍵詳細資訊(如檔案更改)以及它們的型別(本地、後臺、雲端或 Codex)。狀態指示器可幫助您快速識別活動、已完成、失敗的會話或需要您輸入的會話。
會話列表已限定到您的工作區。如果您沒有開啟工作區,列表將顯示所有工作區中的所有會話。
聊天檢視有兩種模式
-
緊湊模式:
在緊湊模式下,當您開啟一個新的聊天會話時,您會在一個緊湊的列表中看到最近的三個會話。您可以選擇**顯示所有會話**以開啟代理會話的完整歷史記錄。在檢視所有會話時,請使用搜索和篩選選項來查詢特定會話。

當您從列表中選擇一個會話時,聊天檢視將切換到該會話。一個連結使您能夠返回到之前的檢視。
-
並排模式
在並排模式下,聊天檢視直接與聊天檢視並排顯示代理會話的完整列表。使用搜索和篩選選項來查詢特定會話。要切換緊湊模式和並排模式,請使用聊天檢視右上角的切換控制元件。

當您從列表中選擇一個會話時,聊天檢視將顯示該會話的詳細資訊,而會話列表將保持可見。
提示使聊天檢視更寬以自動切換到並排模式。右鍵單擊會話列表並選擇**會話方向**以更改預設行為(chat.viewSessions.orientation)。
右鍵單擊列表中的會話可檢視其他操作,例如開啟會話詳細資訊的不同選項、存檔會話,或特定於代理型別的操作,例如檢出拉取請求(針對雲端代理會話)。
要隱藏聊天檢視中的會話列表,請在空白聊天中右鍵單擊並取消選擇**顯示會話**。
如果您更喜歡專用的代理檢視(預覽版),請將chat.agentSessionsViewLocation 設定為 `view` 或 `single-view`。
擴充套件開發人員可以瞭解如何使用提議的 API chatSessionsProvider 與代理檢視整合。該 API 目前處於提議狀態,可能會發生變化。
篩選代理會話
當所有會話都顯示在會話列表中時,您可以使用搜索和篩選來查詢特定的代理會話。預設情況下,會顯示所有會話,但已存檔的會話除外。您可以按代理型別、狀態、讀取狀態和存檔狀態篩選會話。

選擇**重置**可將篩選器重置為預設值。
存檔代理會話
為了保持會話列表的整潔,您可以存檔已完成或不活動的會話。存檔的會話預設情況下會隱藏,但您仍然可以透過應用**存檔**篩選器來訪問它們。
要存檔會話,請將滑鼠懸停在會話列表中的會話上,然後選擇**存檔**。存檔會話後,它將從列表中消失。反之,您也可以用同樣的方式取消存檔會話。

建立代理會話
在 VS Code 中建立新的代理會話有多種方式
-
建立一種特定型別的新的、空的代理會話
-
透過委派將現有會話切換到另一種代理型別
-
直接將任務分配給代理,例如 TODO 註釋或 GitHub 問題
建立新的代理會話
您可以從聊天檢視建立新的代理會話,或使用命令面板中的相應命令。
-
開啟聊天檢視
-
選擇**新會話**下拉列表,然後選擇要建立的代理會話型別

- 新聊天:在聊天檢視中啟動新的本地代理會話
- 新聊天編輯器:在編輯器選項卡中啟動新的本地代理會話
- 新聊天視窗:在單獨的 VS Code 視窗中啟動新的本地代理會話
- 新後臺/雲端/Codex 代理:在聊天檢視中啟動新的後臺、雲端或 Codex 代理會話
您可以隨時透過溢位選單 (...) 中的操作,將代理會話從聊天檢視移動到聊天編輯器或新視窗。
或者,使用命令面板中的以下命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))
- 聊天:新聊天編輯器/視窗:在聊天編輯器中啟動新的本地代理會話
- 聊天:新後臺代理:在聊天編輯器中使用 Copilot CLI 啟動新的後臺代理會話
- 聊天:新雲端代理:在聊天編輯器中啟動新的 Copilot 編碼代理會話
- Codex:新 Codex 代理:在聊天編輯器中啟動新的 OpenAI Codex 代理會話
將會話切換到另一個代理
每種代理型別都有其獨特的優勢和功能。本地代理允許您即時與 AI 進行互動,而後臺代理非常適合自主處理定義明確的任務,而云端代理則非常適合透過拉取請求進行團隊協作。
VS Code 使您能夠根據任務的具體情況,將現有任務從一個代理切換(或委派)到另一個代理。例如,您可以先使用本地代理建立計劃,然後切換到後臺代理來建立不同的概念驗證變體,最後繼續使用雲端代理在拉取請求中實現最終版本以供團隊審閱。
當您委派會話時,VS Code 會建立一個所選型別的新代理會話,並保留完整的對話歷史記錄和上下文。然後,您可以繼續與新代理進行互動以完成任務。原始會話將在切換後存檔。
您可以透過使用“在…中繼續”控制元件,或在提示中鍵入 ` @cli `、` @cloud ` 或 ` @codex ` 來將本地代理會話從 VS Code 中的聊天切換到其他代理型別,從而將任務傳遞給其他代理型別。

在後臺代理會話中,您可以透過在聊天輸入框中輸入 `/delegate` 命令來委派給雲端代理。可選地,您可以在 `/delegate` 命令後提供給雲端代理的附加指令。
將編碼任務分配給代理
如果您已安裝GitHub Pull Requests 擴充套件,則可以將代理分配給實現程式碼中的 `TODO` 註釋。

在 GitHub.com 上,或透過使用 GitHub Pull Requests 擴充套件,您可以將 GitHub 問題分配給 Copilot 編碼代理(透過將問題分配給 `copilot`),或者在問題評論或拉取請求中提及它以請求程式碼審閱。
審查和應用檔案更改
當代理會話完成並對您的專案進行了程式碼更改時,會話列表會顯示該會話的檔案更改統計資訊。要審查代理所做的更改,請從列表中選擇該會話以開啟會話詳細資訊。
會話詳細資訊檢視顯示與代理的完整對話歷史記錄,以及會話期間所做的任何檔案更改。右鍵單擊已更改的檔案可檢視該檔案的 diff 編輯器,或選擇“**檢視所有更改**”操作以檢視包含會話期間所有更改的多檔案 diff 編輯器。

根據代理型別,您還可以選擇將代理所做的更改應用到您的本地工作區,或者檢出代理會話中的分支(針對雲端代理)。