Visual Studio 內建 GitHub Copilot 代理程式,用於除錯、分析與測試等開發任務。 本文說明如何存取並使用你版本 Visual Studio 中可用的代理程式。
先決條件
在 Copilot Chat 中存取代理
要開啟 Copilot Chat,請在 Visual Studio 右上角選擇 GitHub Copilot 徽章,然後選擇「Open Chat」。
以兩種方式存取代理程式:
- 代理人選擇器:在 Copilot Chat 視窗中,選擇代理人選擇器下拉選單以查看可用的代理人。
-
@ 語法:在聊天輸入中輸入
@後接代理名稱(例如@debugger)。
使用內建代理
每個內建代理都專注於特定的開發者工作流程。 這些代理程式能以一般助理無法的方式與 Visual Studio 原生工具整合。
| 代理人 | 說明 |
|---|---|
| @debugger | 這不只是讀取錯誤訊息。 利用呼叫堆疊、變數狀態和診斷工具,系統性地在解決方案中逐步進行錯誤診斷。 |
| @git | 檢視你當地未承諾的變更,並在編輯器和 Git 變更體驗中以內嵌評論形式呈現回饋。 |
| @profiler | 連接 Visual Studio 的效能分析基礎設施,找出瓶頸並根據你的程式碼庫提出針對性的優化建議,而非一般建議。 |
| @test | 它會產生符合你專案框架和模組的單元測試,而不會只是讓 CI 拒絕的通用測試。 |
| @modernize | (僅適用於 .NET 和 C++)在考慮實際專案圖的情況下管理框架和相依性升級。 標記破壞性變更、產生遷移程式碼,並遵循你現有的模式。 |
| 計畫代理人 | 在程式碼變更開始前,先用唯讀工具探索程式碼庫,建立並精煉實施計畫,然後將計畫交給代理模式的 Implement Plan。 |
使用代理程式 @debugger
代理 @debugger 程式透過分析除錯上下文,系統性地診斷錯誤。 它也支援端對端的代理式工作流程,重現錯誤、為應用程式提供追蹤點與條件斷點,並利用即時執行時資料驗證修復。 欲了解更多資訊,請參閱 使用除錯代理的代理性錯誤解決。
範例提示:
@debugger Why is this exception being thrown?@debugger Analyze the current call stack and explain what went wrong@debugger What's causing the null reference in this method?
使用代理程式 @git
使用 @git 代理程式,無須離開 Copilot Chat 即可檢查本機尚未提交的變更。
範例提示:
@git Review my changes@git Explain this review comment and suggest a fix
完整的本地審查工作流程,請參見「用 Copilot Chat 檢視本地變更」。
審查選擇需要 Visual Studio 18.8 或更新版本。 若要只檢視所選程式碼,請在編輯器中選擇該程式碼,右鍵點擊選取,然後選擇 Copilot ActionsReview>Selection。 Copilot 會新增內嵌註解,並能套用或產生建議。 此指令使用與 Git Changes 工作流程相同的 GitHub Copilot 程式碼審查體驗。 欲了解更多資訊,請參閱 檢視所選代碼。
使用代理程式 @profiler
@profiler代理連接 Visual Studio 的效能分析工具,協助識別並修正效能問題。
範例提示:
@profiler Find the performance bottlenecks in my application@profiler Why is this method taking so long to execute?@profiler Suggest optimizations for the hot path
使用代理程式 @test
代理程式 @test 會產生符合你專案測試框架和慣例的單元測試。
範例提示:
@test Generate unit tests for the selected method@test Create tests that cover edge cases for this class@test Write integration tests for this API endpoint
想要獲得更完整的 .NET 測試支援,請參看 GitHub Copilot 的 .NET 測試。
使用代理程式 @modernize
@modernize代理協助 .NET 和 C++ 專案的框架遷移與相依升級。
對於 .NET 現代化工作流程,代理程式支援三階段流程:
- 評估:檢視套件版本、目標框架選項、專案清單及 API 相容性風險。
- 計畫:產生符合當前評估與更新優先順序的遷移計畫。
- 任務執行:隨著工作進展,透過可編輯的動態任務檔案,逐步處理現代化任務。
範例提示:
@modernize Upgrade this project to .NET 8@modernize What breaking changes should I expect when migrating?@modernize Update deprecated API calls in this file@modernize Assess this solution, generate a migration plan, and create execution tasks
關於 GitHub Copilot 應用程式 現代.NET化的端對端指引,請參見 GitHub Copilot 應用程式現代化概覽。
使用雲端代理
在 Visual Studio 18.1 或更新版本中,從 Copilot Chat 的代理選擇器啟動 GitHub Cloud Agent 會話。 要連接儲存庫,請從 GitHub 儲存庫開啟本地解決方案,並在 Visual Studio 登入 GitHub。 GitHub Copilot 程式代理程式驅動這些遠端會話。 它可以在該存放庫中建立議題和提取要求。
雲端代理程式只能與 GitHub Copilot 程式代理能存取的儲存庫合作。 如果程式碼代理還沒有該儲存庫,請在 GitHub 授權它存取。 Visual Studio 可能會在你第一次啟動雲端工作階段時,或在該工作階段需要更多權限時,提示你授與儲存庫權限。 在核准前,請先檢視申請的權限。
建立並使用自訂代理
自訂代理程式需要 Visual Studio 18.4 或更新版本。
內建的代理涵蓋常見工作流程,但你的團隊最了解工作流程。 客製化代理為針對團隊工作流程量身打造的代理建立基礎:工作空間感知、程式碼理解、偏好的 AI 模型,以及你自己的工具。
自訂代理在與 MCP(模型上下文協定)結合時特別強大。 將代理連結到外部知識來源,例如內部文件、設計系統、API 和資料庫,讓代理不被限制在你倉庫裡的內容。
定義任何代理都能自動發現並使用的可重複使用的 特務技能 。 雖然客服人員會定義角色與工具組,技能則提供針對特定任務的指示。
在代理選擇器中,呼叫 1 會標示 + 建立代理的按鈕,呼叫 2 則會標示一個名為 my-agent 的自訂代理。
內建的 .NET 與 Azure 技能需要 Visual Studio 18.8 或更新版本。 Visual Studio 在安裝相應工作負載時會提供這些技能。 與內建代理或你所撰寫的代理技能不同,這些工作負載專屬技能會出現在技能標籤的內建類別中,且預設是關閉的。 只檢視並啟用與你任務相關的技能。 欲了解更多資訊,請參閱使用內建的 .NET 與 Azure 技能。
建立自訂代理
儲存庫層級的自訂代理程式只適用於你儲存它們的儲存庫。 若要手動建立:
- 如果儲存庫根目錄中還沒有
.github/agents/資料夾,請建立一個。 - 在該資料夾中,建立一個名稱以
.agent.md結尾的檔案,例如code-reviewer.agent.md。 - 使用 Agent 檔案格式中所述的格式,加入 YAML 前置資料和 Markdown 指令。
- 儲存檔案。
最終的資料夾結構如下:
your-repo/
└── .github/
└── agents/
└── code-reviewer.agent.md
在 Visual Studio 18.5 或更新版本中,選擇+代理選擇器的按鈕,並依照提示建立自訂代理。
要建立一個適用於所有專案的使用者層代理程式,預設就將其檔案存 .agent.md 入 %USERPROFILE%\.github\agents 。 在 工具 > 選項 > GitHub > Copilot 中變更此位置。
選擇並驗證客製化代理人
建立自訂代理人後:
- 開啟 Copilot Chat。
- 打開 代理人選擇器 ,確認代理人是否以定義中的姓名和描述出現。
- 選取該代理程式,或在 聊天輸入框 中輸入
@,後接代理程式名稱來叫用它。 - 輸入提示,以測試代理程式其中一項指示。
- 確認回應是否符合代理人的角色與指示。 若定義中有指定工具,請打開 工具 面板並確認所需工具是否可用。
使用組織層級的自訂代理
組織層級的自訂代理程式需要 Visual Studio 18.9 或更新版本,並且必須有一個屬於 GitHub 組織的倉庫。
GitHub 組織與企業擁有者可以發布自訂代理程式,供成員跨機構使用。 當你在組織中開啟儲存庫時,Visual Studio 會自動偵測這些代理並將它們加入代理選擇器。
在使用組織層級的自訂代理之前,請先檢視它:
- 打開 Copilot Chat,選擇代理人選擇器。
- 將滑鼠移到代理上即可查看其描述及來源組織。
- 選擇 定義按鈕 以開啟代理定義檔案。
組織與企業擁有者會在 GitHub 中配置這些代理。 關於設定指引,請參閱 「準備在您的組織中使用客製化代理人 」或 「準備在您的企業中使用客製化代理人」。
組織層級的自訂指令需要 Visual Studio 18.8 或更新版本。 他們和海關代理是分開的。 組織擁有者會使用自訂指令來定義偏好設定,當你在組織倉庫工作時,Visual Studio 會自動套用這些偏好。 已套用的指令會出現在 參考資料中。 在 Visual Studio 設定中停用它們。 欲了解更多資訊,請參閱 使用組織層級的自訂指令。
代理檔格式
每個代理檔案使用 YAML 前言,後接 Markdown 指令:
---
name: Code Reviewer
description: Reviews PRs against our team's coding standards
tools: ["code_search", "readfile", "find_references"]
---
You are a code reviewer for our team. When reviewing changes, check for:
- Naming conventions: PascalCase for public methods, camelCase for private
- Error handling: all async calls must have try/catch with structured logging
- Test coverage: every public method needs at least one unit test
Flag violations clearly and suggest fixes inline.
可用型號依 Visual Studio 版本及您 Copilot 方案所提供的型號而異。 這個 model 屬性是可選的,所以用模型選擇器中選擇的模型時可以省略它。 如果你包含該屬性,請選擇你版本 Visual Studio 中可用的模型。
前置內容屬性
| 房產 | 為必填項目 | 說明 |
|---|---|---|
name |
否 | 在代理選擇器中顯示代理人的名稱。 如果你沒有指定這個屬性,代理人名稱會來自檔名(例如, code-reviewer.agent.md 變成 code-reviewer)。 |
description |
Yes | 滑鼠移至代理人上方時顯示的簡短描述 |
model |
否 | AI 模型來使用。 如果你沒有指定這個屬性,則會使用模型選擇器中選擇的模型。 |
tools |
否 | 代理人可以使用的各種工具名稱陣列。 如果你沒有指定這個屬性,所有可用的工具都會被啟用。 |
備註
對於某些自訂代理,選擇代理後,即使你沒有指定屬性, tools 工具群組也會被停用。 在某些工作階段中,同一聊天串裡的工具選擇會在每則後續訊息之後重設。 若發生此狀況,請手動在 工具 面板中重新啟用所需工具。 如需步驟與回報指南,請參閱 自訂代理程式工具群組預設為停用,或會在回合之間重設。
指定工具
工具擴展了你的客製代理人能做的事。 指定代理在陣列中應該使用 tools 哪些工具。
這很重要
工具名稱在不同 GitHub Copilot 平台間有所不同。 特別檢查 Visual Studio 裡可用的工具,確保你的代理程式正常運作。 在聊天視窗中選擇 工具 圖示,查看可用的工具名稱。
C++ 專用語言工具
代理模式通常包含 C++ 程式碼編輯工具。 如果你安裝了 C++ 工作負載,你的自訂代理程式可以在其tools陣列中使用這些 Visual Studio 專屬的工具名稱:
-
get_symbol_call_hierarchy用於通話階層導航 -
get_symbol_class_hierarchy用於類別與類型階層導覽
這些工具為代理提供語言感知的 C++ 導航,並有助於提升分析與編輯 C++ 程式碼的精確度。
使用 MCP 連接外部來源
透過使用 MCP 伺服器,您的自訂代理可以存取外部知識來源,例如:
- 內部文件與維基
- 設計系統與元件函式庫
- API 與資料庫
- 風格指南與 ADR 資料庫
例如,代碼審查代理可以透過 MCP 連結你的風格指南,將 PR 與你的實際慣例進行比對。
自訂代理範例
程式碼審查代理
---
name: Code Reviewer
description: Reviews code against our team's coding standards
tools: ["code_search", "readfile"]
---
You are a code reviewer for our team. Review changes for:
1. **Naming conventions**: PascalCase for public methods, camelCase for private fields
2. **Error handling**: All async calls must have try/catch with structured logging
3. **Test coverage**: Every public method needs at least one unit test
4. **Documentation**: Public APIs must have XML documentation comments
Flag violations clearly and suggest fixes inline.
功能規劃代理範例
當你想要團隊專屬的規劃工作流程或內建規劃代理之外的額外工具時,可以使用自訂的功能規劃代理。
---
name: Feature Planner
description: Helps plan features before writing code
tools: ["code_search", "readfile", "find_references"]
---
You are a feature planning assistant. When asked about a feature:
1. Gather requirements by asking clarifying questions
2. Identify affected files and components in the codebase
3. Break down the work into discrete tasks
4. Flag potential risks or dependencies
5. Create a structured plan that can be handed off for implementation
Focus on understanding scope before suggesting solutions.
設計系統代理
---
name: Design System
description: Enforces UI design patterns and component usage
tools: ["code_search", "readfile"]
---
You are a design system expert. When reviewing UI code:
1. Check that standard components are used instead of custom implementations
2. Verify spacing and layout follow the design token system
3. Ensure accessibility requirements are met (ARIA labels, keyboard navigation)
4. Flag any UI drift from established patterns
Reference the component library documentation when suggesting fixes.
全端開發代理程式搭配 Visual Studio 工具
以下範例使用了 Visual Studio 專屬的工具名稱:
---
name: Full Stack Dev
description: Full-stack development assistant with search, file editing, and terminal access
tools: ["code_search", "readfile", "editfiles", "find_references", "runcommandinterminal", "getwebpages"]
---
You are a full-stack development assistant. Help with:
1. Searching the codebase to understand existing patterns
2. Reading and editing files to implement changes
3. Running build and test commands to verify your work
4. Looking up documentation when needed
Always check existing code conventions before making changes.
小提示
在Copilot Chat視窗中選擇Tools圖示,即可查看你版本Visual Studio中所有可用的工具名稱。
.NET 開發代理
.NET團隊在 awesome-copilot 倉庫中維護 C# 與 Windows Forms 開發的精選自訂代理程式。 開始之前:
- 下載 CSharpExpert.agent.md 和 WinFormsExpert.agent.md。
- 把
.github/agents/檔案加入你的儲存庫資料夾。 - 以客服員模式開啟 Copilot Chat,從客服選擇器中選擇客服人員。
小提示
選擇 Tools>Options>GitHub>Copilot,然後啟用 啟用專案專屬.NET指示,如適用Windows Forms開發自動為你的程式碼庫新增合適的自訂代理程式.
C# 專家
C# Expert 代理將現代 C# 慣例應用於 Copilot 的程式碼產生:
- 語法與效能:遵循現有最佳實務,同時符合你儲存庫現有的慣例。
- 最小化變更:只產生所需的程式碼,使用 async/wait 並正確執行取消與例外處理。 避免未使用的介面、方法或參數。
- 測試:支援行為驅動的單元測試、整合測試及 TDD 工作流程。
WinForms 專家
WinForms Expert 代理程式針對 .NET 8 至 .NET 10 的 Windows Forms 開發:
-
Designer Code Protection:防止
.Designer.cs損壞,使 Windows Forms Designer 在Copilot編輯後仍能正常運作。 - UI 設計模式:MVVM 與 MVP 模式,包括 Community Toolkit 資料綁定。
-
Modern .NET:修正
InvokeAsync過載、暗黑模式、高 DPI 意識及可空除參考類型。 -
版面設計:
TableLayoutPanel與FlowLayoutPanel用於響應式、DPI 感知版面的設計。 -
CodeDOM 序列化:
[DefaultValue]屬性與ShouldSerialize*()正確設計者屬性處理的方法。 - 例外處理:非同步事件處理模式與應用層級例外處理。
社群配置
awesome-copilot 存放庫提供由社群貢獻的代理程式設定,作為起點。 使用這個儲存庫的設定時,請先確認工具名稱在 Visual Studio 中是否正常運作,再部署給你的團隊。
限制與備註
- 如果你沒有指定模型,代理人會使用模型選擇器中選擇的模型。
- 工具名稱在不同 GitHub Copilot 平台間有所不同。 在部署給團隊前,請確認工具名稱在 Visual Studio 中是否正常運作。
分享意見反應
請在 awesome-copilot 倉庫分享你的自訂代理設定,或透過 Visual Studio 開發人員社群 提交回饋。 你的工作流程有助於塑造未來的功能。
相關內容
- 開始使用 GitHub Copilot Agent 模式
- 使用特工技能
- 使用 MCP 伺服器
- GitHub Copilot的.NET測試
- Visual Studio 七月更新:認識由 GitHub Copilot SDK 驅動的新代理
在 Visual Studio 2022 中使用內建代理程式
你需要 Visual Studio 2022 版本 17.14 或更新版本。
要開啟 Copilot Chat,請在 Visual Studio 右上角選擇 GitHub Copilot 徽章,然後選擇開啟聊天視窗。
存取內建代理有兩種方式:
- 代理人選擇器:在 Copilot Chat 視窗中,選擇代理人選擇器下拉選單,即可查看可用的內建代理人。
-
@ 語法:在聊天輸入框中輸入
@,後接代理程式名稱(例如@profiler)。
代理人選擇器可包含以下內建代理人。 可用性會依你的 Visual Studio 2022 版本和已安裝的工作負載而有所不同。
| 代理人 | 說明 |
|---|---|
| 上下文 | 情境分析代理 |
| GitHub | 與 GitHub 聊天 |
| 性能分析器 | 優化你的程式碼 |
| VS | 詢問有關 Visual Studio 的問題 |
| Workspace | 詢問你的工作空間 |
使用代理程式 @context
@context客服會分析你請求的上下文,幫助你理解你正在使用的程式碼。
範例提示:
@context Explain the code in the current file@context What code is relevant to this method?@context Summarize the context for the selected code
使用代理程式 @profiler
@profiler代理連接 Visual Studio 的效能分析工具,協助識別並修正效能問題。
範例提示:
@profiler Find the performance bottlenecks in my application@profiler Why is this method taking so long to execute?@profiler Suggest optimizations for the hot path