VS Code 中的自訂代理 (Custom agents)
自訂代理讓您能夠將 AI 設定為採用針對特定開發角色和任務所量身打造的各種角色。例如,您可以為安全性審查員、規劃人員、解決方案架構師或其他專業角色建立代理。每個角色都可以擁有自己的行為、可用工具和指令。
您也可以使用「接續交辦」在代理之間建立引導式工作流程。透過單次選擇,即可從一個專門的代理無縫轉換到另一個。例如,直接從規劃代理移轉至實作代理,或將相關內容交辦給程式碼審查員。
本文介紹如何在 VS Code 中建立與管理自訂代理。
代理、提示詞檔案 (Prompt files) 還是技能 (Skills)? 當您需要具有特定工具限制、模型偏好或角色間接續交辦功能的持續性角色時,請使用「自訂代理」。若為不需要工具限制的一次性任務,請使用 提示詞檔案。若為可攜式、可重複使用的指令碼與資源功能,請使用 代理技能。
使用 聊天自訂編輯器 (預覽版) 在一處探索、建立和管理所有聊天自訂。從命令選擇區執行 聊天:開啟聊天自訂。
什麼是自訂代理?
內建代理為 VS Code 中的聊天提供了通用配置。若要獲得更客製化的聊天體驗,您可以建立自己的自訂代理。
自訂代理包含一組指令與工具,當您切換至該代理時即會套用。例如,「規劃 (Plan)」代理可以包含用於產生實作計畫的指令,且僅使用唯讀工具。透過建立自訂代理,您可以快速切換至該特定配置,而不必每次都手動選取相關工具與指令。
自訂代理定義於 .agent.md Markdown 檔案中,可以儲存在您的工作區中供他人使用,或儲存在您的使用者設定檔中,以便在不同的工作區中重複使用。
您可以在 背景代理 和 雲端代理 中重複使用您的自訂代理,讓您能使用相同的專門配置來執行自動化任務。
為什麼要使用自訂代理?
不同的任務需要不同的能力。規劃代理可能只需要用於研究與分析的唯讀工具,以防止意外的程式碼變更;而實作代理則需要完整的編輯能力。自訂代理讓您可以精確指定每個任務可用的工具,確保 AI 具備適合該工作的能力。
自訂代理還讓您可以提供專門的指令,定義 AI 的運作方式。例如,規劃代理可以指示 AI 收集專案內容並產生詳細的實作計畫,而程式碼審查代理則可能專注於識別安全性漏洞並建議改進。這些專門指令可確保您每次切換到該代理時,都能獲得一致且符合任務需求的回答。
子代理 (Subagents) 可以與自訂代理一起執行。深入了解 如何執行自訂代理作為子代理(實驗性功能)。
接續交辦 (Handoffs)
接續交辦 (Handoffs) 使您能夠建立引導式順序工作流程,在代理之間進行轉換,並提供建議的後續步驟。在聊天回應完成後,會出現接續交辦按鈕,讓使用者帶著相關內容與預先填寫的提示詞轉移至下一個代理。
接續交辦對於編排多步驟工作流程非常有用,讓開發人員在進入下一步之前,能針對每一步進行審查與核准。例如:
- 規劃 → 實作:在規劃代理中產生計畫,然後交辦給實作代理以開始撰寫程式碼。
- 實作 → 審查:完成實作後,切換至程式碼審查代理以檢查品質與安全性問題。
- 撰寫失敗測試 → 撰寫通過測試:產生比大型實作更容易審查的失敗測試,然後交辦至執行實作必要的程式碼變更,使這些測試通過。
若要在您的代理檔案中定義接續交辦,請將其新增至前言 (frontmatter)。每個接續交辦都會指定目標代理、按鈕標籤以及選用的發送提示詞:
---
description: Generate an implementation plan
tools: ['search', 'web']
handoffs:
- label: Start Implementation
agent: implementation
prompt: Now implement the plan outlined above.
send: false
model: GPT-5.2 (copilot)
---
當使用者看到接續交辦按鈕並選擇它時,他們會切換至預先填寫好提示詞的目標代理。如果設定 send: true,系統會自動提交該提示詞以啟動下一個工作流程步驟。
自訂代理檔案位置
您可以為特定工作區或使用者層級定義自訂代理,定義後該代理將在您所有的工作區中皆可使用。下表列出了根據範圍劃分的自訂代理預設檔案位置。您可以使用 chat.agentFilesLocations ... 設定來配置工作區自訂代理檔案的額外位置。
| 範圍 | 預設檔案位置 |
|---|---|
| 工作區 | .github/agents 資料夾 |
| 工作區 (Claude 格式) | .claude/agents 資料夾 |
| 使用者設定檔 | ~/.copilot/agents 或您的使用者資料(針對您的 VS Code 設定檔) |
若要在使用者資料中建立自訂代理,請使用「聊天自訂編輯器 (Chat Customizations editor)」或使用 Chat: New Custom Agent 命令。
在單一儲存庫 (monorepo) 中,請啟用 chat.useCustomizationsInParentRepositories ... 以從父儲存庫根目錄探索自訂代理。深入了解 父儲存庫探索。
自訂代理檔案結構
自訂代理檔案為 Markdown 檔案,使用 .agent.md 副檔名,並具有下列結構。
VS Code 會自動偵測工作區 .github/agents 資料夾中的任何 .md 檔案並視為自訂代理。
標頭 (Header)(選用)
標頭格式為 YAML 前言,包含下列欄位:
| 欄位 | 說明 |
|---|---|
description |
自訂代理的簡短說明,會顯示為聊天輸入框中的預留位置文字。 |
name |
自訂代理的名稱。若未指定,則使用檔案名稱。 |
argument-hint |
聊天輸入框中顯示的選用提示文字,引導使用者如何與自訂代理互動。 |
tools |
此自訂代理可用的工具或工具集名稱清單。可包含內建工具、工具集、MCP 工具或由擴充功能貢獻的工具。若要包含 MCP 伺服器的所有工具,請使用 <server name>/* 格式。深入了解 聊天中的工具。 |
agents |
可在此代理中作為 子代理 使用的代理名稱清單。使用 * 允許所有代理,或使用空陣列 [] 防止使用任何子代理。若您指定了 agents,請確保 agent 工具已包含在 tools 屬性中。若要建立一個可在 agents 中列出自身的自我參考代理,請啟用 chat.subagents.allowInvocationsFromSubagents ...。深入了解 巢狀子代理。 |
model |
執行提示詞時使用的 AI 模型。指定單一模型名稱(字串)或優先順序模型清單(陣列)。當您指定陣列時,系統會依序嘗試每個模型,直到找到可用的模型為止。若未指定,則使用模型選擇器中目前選取的模型。 |
user-invocable |
選用的布林旗標,用於控制代理是否出現在聊天的代理下拉式選單中(預設為 true)。設為 false 可建立僅能以 子代理 形式存取或以程式設計方式存取的代理。 |
disable-model-invocation |
選用的布林旗標,防止代理被其他代理呼叫為子代理(預設為 false)。 |
infer |
已棄用。 請改用 user-invocable 和 disable-model-invocation。先前 infer: true(預設值)會使代理既顯示在選擇器中,又可作為子代理使用。infer: false 則會將其兩者皆隱藏。新欄位讓您能獨立控制:使用 user-invocable: false 從選擇器隱藏但在子代理呼叫時仍有效,或使用 disable-model-invocation: true 防止子代理呼叫但保留在選擇器中。 |
target |
自訂代理的目標環境或內容 (vscode 或 github-copilot)。 |
mcp-servers |
選用的 Model Context Protocol (MCP) 伺服器配置 JSON 清單,用於 GitHub Copilot 中的自訂代理 (target: github-copilot)。 |
handoffs |
選用的建議後續動作或提示詞清單,用於在自訂代理之間轉換。接續交辦按鈕會在聊天回應完成後以互動式建議形式出現。 |
handoffs.label |
接續交辦按鈕上顯示的文字。 |
handoffs.agent |
要切換到的目標代理識別碼。 |
handoffs.prompt |
要發送給目標代理的提示詞文字。 |
handoffs.send |
選用的布林旗標,用於自動提交提示詞(預設為 false)。 |
handoffs.model |
執行接續交辦時使用的選用語言模型。請使用 模型名稱 (供應商) 格式的限定模型名稱,例如 GPT-5 (copilot) 或 Claude Sonnet 4.5 (copilot)。 |
hooks (預覽) |
針對此代理的選用 Hook 命令。在此定義的 Hook 僅在此代理處於作用中時執行,無論是由使用者觸發還是作為子代理。使用格式與 Hook 配置檔案 相同。需要啟用 chat.useCustomAgentHooks ...。 |
若某工具在使用該自訂代理時無法使用,則會被忽略。
內文 (Body)
自訂代理檔案內文包含以 Markdown 格式編寫的自訂代理實作。您可以在此提供特定的提示詞、指引或任何您希望 AI 在此自訂代理運作時遵守的其他相關資訊。
您可以使用 Markdown 連結參考其他檔案,例如重複使用指令檔案。
若要在內文中參考代理工具,請使用 #tool:<tool-name> 語法。例如,若要參考 fetch 工具,請使用 #tool:web/fetch。
當您在聊天檢視中選擇該自訂代理時,自訂代理檔案內文中的指引會被置於使用者聊天提示詞之前。
範例
規劃代理範例
下方程式碼片段顯示了一個「規劃 (Plan)」自訂代理檔案範例,它會產生實作計畫且不會進行任何程式碼編輯。如需社群貢獻的範例,請參閱 Awesome Copilot 儲存庫。
---
description: Generate an implementation plan for new features or refactoring existing code.
name: Planner
tools: ['web/fetch', 'search/codebase', 'search/usages']
model: ['Claude Opus 4.5', 'GPT-5.2'] # Tries models in order
handoffs:
- label: Implement Plan
agent: agent
prompt: Implement the plan outlined above.
send: false
---
# Planning instructions
You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code.
Don't make any code edits, just generate a plan.
The plan consists of a Markdown document that describes the implementation plan, including the following sections:
* Overview: A brief description of the feature or refactoring task.
* Requirements: A list of requirements for the feature or refactoring task.
* Implementation Steps: A detailed list of steps to implement the feature or refactoring task.
* Testing: A list of tests that need to be implemented to verify the feature or refactoring task.
代理編排範例
以下範例顯示了一個「功能建構者 (Feature Builder)」代理,它為「先研究後實作」的工作流程協調專門的子代理。主代理使用 agents 屬性來限制哪些代理可以作為子代理被呼叫。
feature-builder.agent.md - 協調代理
---
name: Feature Builder
description: Build features by researching first, then implementing
tools: ['agent']
agents: ['Researcher', 'Implementer']
---
You are a feature builder. For each task:
1. Use the Researcher agent to gather context and find relevant patterns in the codebase
2. Use the Implementer agent to make the actual code changes based on research findings
researcher.agent.md - 唯讀研究代理
---
name: Researcher
description: Research codebase patterns and gather context
tools: ['search/codebase', 'web/fetch', 'search/usages']
---
Research thoroughly using read-only tools. Return a summary of findings.
implementer.agent.md - 程式碼編輯代理
---
name: Implementer
description: Implement code changes based on provided context
tools: ['edit', 'read/terminalLastCommand']
---
Implement changes following existing code patterns. Make minimal, focused edits.
帶有範圍 Hook 的代理範例(預覽)
以下範例顯示了一個在前言中定義 Hook 的自訂代理。PostToolUse Hook 會在檔案編輯後執行格式化程式,且僅在此代理處於作用中時執行。請啟用 chat.useCustomAgentHooks ... 以使用此功能。
---
name: "Strict Formatter"
description: "Agent that auto-formats code after every edit"
hooks:
PostToolUse:
- type: command
command: "./scripts/format-changed-files.sh"
---
You are a code editing agent. After making changes, files are automatically formatted.
深入了解 代理 Hook。
Claude 代理格式
.claude/agents 資料夾中的代理檔案使用純 .md 檔案,並支援 Claude 特定的前言屬性:
| 欄位 | 說明 |
|---|---|
name |
代理名稱(必要) |
description |
代理的功能說明 |
tools |
以逗號分隔的允許工具字串(例如:"Read, Grep, Glob, Bash") |
disallowedTools |
以逗號分隔的封鎖工具字串 |
VS Code 會將 Claude 特定的工具名稱對應到對應的 VS Code 工具。同時支援 VS Code .agent.md 格式(工具使用 YAML 陣列)與 Claude 格式(使用逗號分隔字串)。
VS Code 也會偵測 .claude/agents 資料夾中的 .md 檔案,並遵循 Claude 子代理格式。這使您能夠在 VS Code 和 Claude Code 之間使用相同的代理定義。
建立自訂代理
您可以在您的工作區或使用者設定檔中建立自訂代理檔案。
在聊天輸入框中輸入 /agents 以快速開啟 Configure Custom Agents 選單。
-
在聊天檢視中,選擇 Configure Chat(齒輪圖示)開啟「聊天自訂編輯器」,然後選擇 Agents 頁籤。
-
從下拉式選單選擇 New Agent (Workspace) 或 New Agent (User),取決於您要儲存代理檔案的位置。

或者,從命令面板執行 Chat: New Custom Agent 命令 (⇧⌘P)。
提示您可以使用 chat.agentFilesLocations ... 設定來配置 VS Code 搜尋自訂代理檔案的額外位置。這對於在專案間共用代理或將其保留在工作區之外的中心位置非常有用。
-
選擇位置並為自訂代理輸入檔案名稱。這是出現在代理下拉式選單中的預設名稱。
-
在新建立的
.agent.md檔案中提供自訂代理的詳細資料。- 填寫檔案頂部的 YAML 前言,以配置自訂代理的名稱、說明、工具與其他設定。
- 在檔案內文中新增自訂代理的指令。
您可以透過在「聊天自訂編輯器」中開啟現有的自訂代理來進行修改。
使用 AI 產生自訂代理
您可以根據角色描述使用 AI 產生自訂代理。在代理模式的聊天中輸入 /create-agent 並描述您想要的角色(例如:「安全性審查代理」)。代理會提出釐清問題並產生一個包含適當工具、指令與前言的 .agent.md 檔案。
您也可以從進行中的對話中提取自訂代理。例如,在多次除錯後,詢問「為這類任務建立一個代理」,即可將工作流程捕獲為可重複使用的自訂代理。
您也可以從「聊天自訂編輯器」中,透過下拉式選單選擇 Generate Agent 來產生自訂代理。
自訂代理下拉式選單
如果您有多個自訂代理,您可以自訂哪些代理顯示在下拉式選單中。若要顯示或隱藏特定的自訂代理:
-
從代理下拉式選單中選擇 Configure Custom Agents。
-
將滑鼠懸停在清單中的自訂代理上,然後選擇眼睛圖示以顯示或隱藏它。
工具清單優先順序
當您同時在自訂代理和提示詞檔案中使用 tools 時,提示詞檔案的工具優先權較高。如需完整的優先順序,請參閱提示詞檔案說明文件中的 工具清單優先順序。
跨團隊共用自訂代理
若要跨團隊共用自訂代理,您可以建立工作區層級的自訂代理 (.github/agents 資料夾)。若您希望在組織內的多個工作區共用自訂代理,則可以在 GitHub 組織層級定義它們。
VS Code 會自動偵測您帳戶有權存取的組織層級自訂代理。這些代理會與內建代理,以及您的個人與工作區自訂代理一起出現在聊天的代理下拉式選單中。
若要啟用組織層級自訂代理的探索,請將 github.copilot.chat.organizationCustomAgents.enabled ... 設為 true。
在 GitHub 說明文件中了解 如何為您的組織建立自訂代理。
常見問題
自訂代理與聊天模式 (Chat modes) 不同嗎?
自訂代理先前稱為「自訂聊天模式」。功能維持不變,但術語已更新,以更準確地反映其在針對特定任務自訂 AI 行為方面的用途。
如果您有現有的 .chatmode.md 檔案,請將其更名為 .agent.md 以轉換為新的自訂代理格式,並將其放置在正確的位置 ( chat.agentFilesLocations ...) 以繼續使用。
如何移除自訂代理?
若要將自訂代理從 VS Code 完全移除:
- 從您的工作區或使用者設定檔中刪除對應的
.agent.md檔案。 - 從代理下拉式選單選擇 Configure Custom Agents,將滑鼠懸停在清單中的自訂代理上,並選擇垃圾桶圖示。
若要移除由擴充功能貢獻的自訂代理,您需要解除安裝提供該代理的擴充功能。若您不想解除安裝擴充功能,則可以從代理下拉式選單中隱藏該代理。請依照 自訂代理下拉式選單 中的步驟執行。
如何得知自訂代理的來源?
自訂代理可能來自不同來源:內建代理、您個人設定檔中定義的代理、目前工作區中定義的代理、組織定義的代理,或是由擴充功能貢獻的代理。
若要識別自訂代理的來源:
- 從代理下拉式選單中選擇 Configure Custom Agents。
- 將滑鼠懸停在清單中的自訂代理上,來源位置將會顯示在工具提示中。
使用聊天自訂診斷檢視來查看所有載入的自訂代理、提示詞檔案、指令檔案與技能以及任何錯誤。在聊天檢視中按一下右鍵並選擇 Diagnostics。深入了解 VS Code 中的 AI 疑難排解。
安全性考量
自訂代理可以限制可用的工具,這讓您可以控制 AI 的行為。對於安全性敏感的工作流程,請建立僅使用唯讀工具的代理,以防止非預期的變更。在儲存庫中共用代理時,請審查工具清單與指令,以確保其遵循最小權限原則。