參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

代理模式:向所有使用者開放,並支援 MCP

2025年4月7日,由 Isidor Nikolic 釋出

代理模式正在向所有 VS Code 使用者推出!代理(Agent)扮演著一個自主的結對程式設計師角色,可以根據您的指令執行多步驟的編碼任務,例如分析您的程式碼庫、提出檔案編輯建議以及執行終端命令。它能響應編譯和程式碼檢查錯誤,監控終端輸出,並迴圈自動修正,直到任務完成。代理還可以使用第三方貢獻的工具,使其能與外部 MCP 伺服器或 VS Code 擴充套件進行互動,以執行各種各樣的任務。

向所有使用者開放

開啟聊天檢視,登入 GitHub,在您的設定中啟用 chat.agent.enabled,然後在聊天模式下拉選單中選擇代理(Agent)。如果您看不到該設定,請確保在更新到最新版本後重新載入 VS Code。在接下來的幾周內,我們會將其作為預設選項向所有人推出——屆時將不再需要進行設定。

代理模式非常適用於以下場景

  • 您的任務包含多個步驟。代理會編輯程式碼、執行終端命令、監控錯誤,並不斷迭代以解決出現的任何問題。
  • 您不確定變更的範圍。代理會自動確定相關的檔案和上下文。
  • 您的任務需要與外部應用或資料進行互動。代理集成了 MCP 伺服器和 VS Code 擴充套件。

另一方面,當任務範圍明確、您希望快速得到結果或想更精細地控制 LLM 請求次數時,請使用編輯模式。

我們建立了一個統一的聊天體驗,將聊天檢視和編輯檢視合二為一,帶來了諸如會話歷史、將聊天移動到獨立視窗以及簡化工作集檢視等好處。所有這些功能現在也已在代理模式中可用。

Agent mode with proposed changes in the editor

我們持續收到非常棒的使用者反饋(請繼續踴躍提出!),這激勵了我們做出的許多改進。其中最值得注意的是

  • “撤銷”操作現在可以將變更恢復到上一次編輯檔案工具呼叫之前的狀態
  • 在同一工作區中支援多個代理會話(在編輯會話不修改相同檔案時效果最佳)
  • 代理現在可以建立和編輯 Notebook
  • 能夠自動批准工具呼叫(終端自動批准功能將於四月推出)
  • 一系列提升使用體驗的改進和錯誤修復

“詢問”和“編輯”體驗都在向一種新的架構演進,這種架構像代理一樣利用工具。我們進行這一改變是為了將“詢問/編輯/代理”模式統一為代理驅動(agentic)模式,目標是使整體使用者體驗更加流暢。這使得編輯模式可以使用 edit_file 工具來提高速度,而編輯和詢問模式可以使用 #codebase——一種代理驅動的程式碼庫搜尋功能。因此,不支援工具呼叫的語言模型將不再能在編輯模式下使用。

要了解更多關於代理工作原理的資訊,您可以閱讀我們之前的文章

可擴充套件性:MCP 伺服器和 VS Code 擴充套件

正如 VS Code 擴充套件能讓您自定義特定的工作流程一樣,代理的可擴充套件性也允許您根據自己的需求來定製代理。透過可擴充套件性,代理可以執行瀏覽器操作(進行 AI 網頁除錯)、連線到您的聊天和筆記應用、與您的資料庫互動、從您的設計系統中獲取上下文、從 GitHub 獲取 issue 和程式碼倉庫上下文,並與您的雲平臺整合。代理模式的強大之處在於其可用工具的多樣性,以及使用者可以靈活地新增和移除工具。我們正在以預覽版的形式向所有使用者推出可擴充套件性功能。

代理模式可以使用以下工具

  • 由 VS Code 貢獻的內建工具(圖中藍色部分),允許代理搜尋工作區、應用程式碼更改、執行終端命令、從編輯器捕獲編譯或程式碼檢查錯誤、獲取網站內容(手動觸發使用 #fetch)等。
  • 由 MCP 伺服器貢獻的工具(圖中綠色部分)。
  • 由 VS Code 擴充套件貢獻的工具(圖中綠色部分)。

Diagram showing the inner works of agent mode and how it interacts with context, LLM and tools - including tools contributed by MCP servers and VS Code extensions

當 VS Code 團隊在 2016 年發明語言伺服器協議(LSP)時,我們的目標是標準化語言伺服器與開發工具的通訊方式。我們很自豪 LSP 已成為一個被廣泛採用的標準,並實現了我們的願景。最近,LSP 背後的理念啟發了一個新協議:模型上下文協議(MCP),它標準化了應用程式如何向 LLM 提供上下文。隨著 VS Code 中的代理模式使用由 MCP 伺服器貢獻的工具,我們現在又回到了 VS Code 的原點,形成了一個完整的閉環。

一切盡在開發者掌控之中

並非每個任務都需要您可能已新增到代理模式中的所有工具,而且與任何 AI 工作流一樣,具體明確的指令會帶來更好的結果。我們建議您使用工具介面來管理和啟用每個場景所需的工具,或者在您的提示中透過輸入 # 來明確引用工具。

Edit UI showing how to enable and disable tools

為了讓您完全掌控,每次工具呼叫都會在介面中透明顯示,並需要您的批准(只讀的內建工具除外)。您可以允許某個特定工具在當前會話、工作區或所有未來的呼叫中使用。如果您希望透過始終允許代理使用所有工具來最大限度地減少中斷,同時又能保持安全性,可以考慮使用 Dev Containers 擴充套件。這將所有由代理驅動的更改隔離在容器環境中,直至某個特定點(例如,如果您允許,代理仍然可以將更改推送到遠端倉庫)。

Chat UI showing a tool call

開始使用

要為您的工作流程自定義代理,請選擇聊天輸入框中的工具(Tools)圖示,並按照新增更多工具…(Add More Tools…)的流程操作。或者,閱讀我們的 MCP 伺服器文件,其中解釋了配置格式、如何新增 MCP 伺服器,或如何從現有的 MCP 客戶端應用(如 Claude Desktop)匯入 MCP 伺服器。VS Code 支援本地標準輸入/輸出(stdio)和伺服器傳送事件(sse)作為 MCP 伺服器的傳輸方式。

MCP 的官方伺服器倉庫是一個很好的起點,其中包含了官方和社群貢獻的伺服器,展示了 MCP 的多樣性。要安裝貢獻工具的擴充套件,請開啟擴充套件檢視並使用標籤 @tag:language-model-tools 進行搜尋。

extension search showing extensions that contribute tools

作為一名開發者,您可以透過建立 MCP 伺服器來擴充套件代理;如果您是擴充套件的作者,您可以為您的 VS Code 擴充套件貢獻工具。請參閱這些文件,以獲取編寫工具的指導和最佳實踐。

下一步計劃

代理模式每天都在進步,要想成為第一批受益者,請考慮安裝 VS Code Insiders。使用 VS Code Insiders 並在我們的倉庫中提供反饋是幫助我們改進產品的最佳方式。接下來,我們計劃致力於

  • 支援帶有自定義工具集和指令的自定義模式
  • 更快的程式碼應用體驗
  • 將 MCP 支援從工具擴充套件到提示、資源以及最新的規範更新
  • 以流式傳輸的方式僅傳遞已更改的程式碼塊,以提高速度
  • 設定檢查點,以便輕鬆返回到代理模式會話中的特定步驟
  • 整體效能和服務質量的改進

請確保您使用的是最新的 VS Code 穩定版,在您的設定中啟用 chat.agent.enabled,並從模式下拉選單中選擇代理(Agent)。立即試用,並告訴我們您的想法!您可以在這裡找到相關文件。

祝您程式設計愉快(現在有了 MCP 和擴充套件的加持)!

Isidor 和 VS Code 團隊