VS Code Agent Host 架構
VS Code 會在稱為 Agent Host 的專用行程中執行 AI 程式碼 agent,並透過 Agent Host Protocol (AHP) 與其通訊。主機擁有 agent 工作階段,且獨立於顯示和控制它們的用戶端。
Agent Host 與 AHP 目前正積極開發中,並將逐步開放給使用者使用。
從擴充功能主機到 Agent Host
傳統上,Copilot Chat 擴充功能提供了許多 VS Code 的 AI 體驗,其 agent 邏輯是在擴充功能主機中執行。擴充功能主機對擴充性而言依然重要,但它是圍繞著擴充功能的生命週期與 API 所設計。長時間執行的自主性工作則有不同的需求。
VS Code 正在將 agent 工作階段編排轉移至 Agent Host 中,其提供:
- 共享工作階段:多個用戶端可以觀察並控制同一工作階段,並保持同步。
- 遠端執行:主機可以在另一部機器的工作區旁邊執行,同時用戶端從其他地方連線。
- 獨立執行:即使沒有連線中的編輯器或其他用戶端,agent 工作階段也能繼續進行。
- 多種 agent 實作:不同的 agent 執行階段可外掛至單一面向主機的介面,並向用戶端呈現共用的工作階段概念。
- 專用行程:agent 會在其自己的行程中執行,不會被忙碌的擴充功能封鎖。
VS Code 擴充功能仍然可以提供對話自訂功能,例如工具、MCP 伺服器和自訂 agent,但 agent 執行階段本身是在 Agent Host 行程中執行。根據預設,來自擴充功能的工具僅在執行該擴充功能的編輯器視窗中的對話才可用。
行程架構
Agent Host 可以作為本機公用程式行程執行,或作為遠端機器上的獨立伺服器執行。VS Code 針對本機 IPC 使用訊息連接埠,並針對遠端連線使用透過 WebSocket 的 AHP JSON-RPC。
第一方 agent 配接器會在 Agent Host 行程內執行。配接器負責在其 agent 執行階段與共用的 AHP 工作階段模型之間進行轉譯。
Agent Host 位於工作區旁邊。當主機以遠端方式執行時,檔案編輯與命令會在遠端機器上執行。
Agent Host Protocol
Agent Host Protocol 是一項介於主機與其用戶端之間、開放且與 agent 無關的通訊協定。它使用 JSON-RPC 進行通訊,並使用具備純粹 reducer 的不可變狀態來同步工作階段資料。
主機會作為確切來源。每個用戶端都會訂閱針對資源 (例如工作階段、對話、終端機和變更集) 的 URI 定址頻道。用戶端會接收初始狀態快照,接著接收排序的動作。如果連線中斷,用戶端會重新連線並接收遺漏的動作或全新的快照。
獨立運作,具備選用的用戶端工具
Agent Host 的核心原則是 agent 可以在沒有用戶端的情況下執行。用戶端只是一個可以隨時來去的檢視器與控制器。因此,主機包含了管理工作階段及處理工作區所需的基準功能。
Agent 工作階段不會繫結至其工作區視窗的生命週期。您可以關閉視窗,稍後再從另一個視窗重新開啟工作階段。只要 Agent Host 持續執行,即使沒有連線中的用戶端,處於活動狀態的回合也能繼續進行。
已連線的用戶端也可以提供工具。例如,VS Code 可以宣告由用戶端 (例如瀏覽器工具) 或已安裝之擴充功能所提供的工具。Agent Host 會將這些定義新增至作用中的工作階段,並將工具呼叫路由回提供該工具的用戶端。
本機與遠端主機
對於遠端工作階段,Agent Host 會作為獨立行程執行,並透過 WebSocket 公開 AHP。Agents 視窗會透過 SSH 或開發通道與其連線。
如同 VS Code 遠端開發,使用者介面會保留在用戶端上,而工作區作業則在靠近原始程式碼與開發工具的地方執行。
若要執行您自己的獨立 Agent Host,請使用 code agent host。根據預設,此命令會在 localhost 上啟動伺服器,並透過連線權杖加以保護。請使用 --tunnel 選項透過開發通道將其公開。