在代理程式中使用工具
工具是代理程式執行您請求的方式。它們可以搜尋您的工作區、讀取檔案、編輯程式碼、執行終端機指令、擷取網頁內容,以及呼叫外部服務。在本指南中,您將從一個小任務開始,僅選擇該任務所需的工具,並決定何時使用工具集、核准或沙箱。
先決條件
在開始之前,請安裝 VS Code、啟用 AI 功能,並登入 GitHub Copilot。您還需要存取任何您想要嘗試的額外工具,例如 MCP 伺服器或提供工具的擴充功能。
從任務開始
假設您想讓代理程式解釋儲存庫中的驗證運作方式,然後建議新增一個小測試。該任務需要儲存庫內容,但在開始時可能不需要終端機存取權、網頁存取權或外部服務。
在代理程式工作階段中使用此提示詞
Explain the authentication flow in this project. Find the main files involved, then suggest one focused test I should add next.
在傳送之前,決定代理程式應該具備哪些工具。VS Code 支援三種工具
- 內建工具,例如讀取、編輯、搜尋、執行和網頁。
- 來自已安裝之模型內容協定 (Model Context Protocol) 伺服器的 MCP 工具。
- 由 VS Code 擴充功能提供的擴充功能工具。
代理程式會根據您的提示詞與內容從啟用的工具中進行選擇。您的工作是賦予它足夠完成任務的能力,而不是給它一堆不相關選項的混雜清單。
為首次執行選擇工具
-
開啟對話檢視。
-
從代理程式選擇器中選取 Agent。
-
在聊天輸入框中選取 Configure Tools。
-
保持儲存庫搜尋與檔案讀取工具為啟用狀態。
-
首次執行時,保持終端機、網頁和外部服務工具處於關閉狀態。
-
傳送提示詞。

從小規模開始有助於代理程式保持專注。它還能減少模型內容視窗中的工具定義。VS Code 可以將某些群組公開為虛擬工具,以維持可管理的工具數量,但較小的作用中設定仍能讓模型更容易對任務進行推理。
如果代理程式表示它需要執行測試或檢查產生的輸出,請為下一個請求新增終端機工具,而不是重新啟動並啟用所有工具。
需要時新增特定工具
有時候您確切知道哪個工具應該作為解答的基礎。在聊天輸入框中輸入 # 以查看可用的工具、內容來源和工具集。
例如,像這樣修改先前的提示詞
Explain the authentication flow in this project. Focus on repository context. #codebase
當任務有明確的真實來源時,使用明確的工具參考
- 當解答應來自您的儲存庫時,請使用
#codebase。 - 當您想讓代理程式修正目前的診斷問題時,請使用
#problems。 - 當解答需要目前的外部說明文件時,請使用
#web。

在個別工具與工具集之間做出選擇
個別工具適用於一次性請求。當您重複相同的設定時,工具集的效果更好。
| 使用 | 適用情境 | 範例 |
|---|---|---|
| 個別工具 | 具有一個明確內容來源的簡短任務。 | 使用 #codebase 解釋檔案,且不需要終端機存取權。 |
| 工具集 | 需要相同工具群組的重複工作流程。 | 包含搜尋、編輯、測試和 Python 語言工具的 Python 維護工作流程。 |
| 自訂代理程式工具 | 應始終在相同邊界內執行的角色。 | 具備搜尋與網頁工具、但沒有編輯或終端機工具的規劃代理程式。 |
建立用於重複作業的工具集
在此步驟中,為儲存庫清理工作建立一個可重複使用的工具集。
-
開啟命令選擇區。
-
執行 Chat: Configure Tool Sets 並選取 Create new tool sets file。
-
在開啟的
.jsonc檔案中,新增您用於清理工作流程的工具(例如搜尋、編輯和測試工具),以及description和icon。 -
儲存檔案。
-
返回 Chat 並從 Configure Tools 中選取該工具集,或在提示詞中輸入
#後接工具集名稱來參考它。
現在試試使用已儲存設定的提示詞
Find one small cleanup opportunity in this repository, make the change, and run the focused validation for it.
工具集解決了重複重建相同工具選擇的問題。它們也讓審查變得更容易,因為已儲存的檔案顯示了工作流程所需的工具。
限制自訂代理程式的工具
當您建立自訂代理程式時,您可以在代理程式 Markdown 前置對話的 tools 欄位中列出它有權存取的工具和工具集
---
description: Python testing helper
tools: ['search', 'edit', 'pylance', 'runTests']
---
您也可以直接編輯 tools 欄位,或在 Chat 檢視中使用 Configure Tools 按鈕開啟工具選擇器,讓 VS Code 為您更新代理程式的清單。
當工具邊界是角色的一部分時,請使用自訂代理程式。例如,規劃代理程式不應意外編輯檔案,因此請賦予它搜尋和網頁工具,但排除編輯和終端機工具。實作代理程式則需要更廣泛的工具集,因為它的工作是修改程式碼並驗證變更。
挑選權限層級
接下來,決定在工具執行之前您需要多少審查。權限選擇器可控制代理程式在工作階段期間擁有的自主程度。
- Default Approvals 會在敏感動作之前進行詢問。
- Bypass Approvals 會自動核准工具呼叫。
- Autopilot (預覽版) 會自動核准工具呼叫並持續運作,直到任務完成為止。
使用符合任務風險的模式
- 在探索不熟悉的程式碼時,或當代理程式可能執行您想要審查的指令時,請使用 Default Approvals。
- 在了解哪些工具將會執行之後,針對受信任工作區中的例行工作流程,請使用 Bypass Approvals。
- 針對可掌控的任務使用 Autopilot,讓代理程式持續疊代,直到達到您可以審查的結果為止。
您可以使用 chat.permissions.default 在不同的工作階段之間保留您偏好的模式。當 chat.autopilot.enabled 開啟時,Autopilot 即可使用。
較高的自主層級會減少在工具執行前您所進行的審查量。請小心使用它們,特別是當代理程式可以編輯檔案或執行終端機指令時。

為終端機工作新增沙箱環境
代理程式沙箱會為代理程式執行的終端機指令新增作業系統層級的隔離。它會限制檔案系統和網路存取,且沙箱化指令會自動獲得核准,因為它們已經在受控環境中執行。
透過 chat.agent.sandbox.enabled 此設定可由您的組織管理。請聯絡您的管理員以進行變更。 啟用它。在 macOS 和 Linux 上,您可以選擇完全隔離或具備網路存取的檔案系統隔離。
當代理程式需要終端機存取權,但不應超出工作區或核准的網域時,沙箱是一個很好的選擇。例如,在要求代理程式執行產生的指令碼、啟動本機工具或檢查包含不熟悉套件指令碼的專案之前,請使用沙箱。
換你了
透過三種方式嘗試相同的儲存庫任務
-
僅使用儲存庫搜尋與檔案讀取工具來執行它。
-
新增終端機工具,並要求代理程式執行一次聚焦的驗證。
-
將工具選擇儲存為工具集,並在新的聊天中重複使用它。
每次執行後,比較有哪些變更。注意代理程式是否保持專注、是否要求遺漏的權限,或是否使用了您未預期的工具。
為什麼這很重要
正確的工具組合能讓代理程式保持專注。工具集能讓良好的工作流程得以重複使用。自訂代理程式能使工具邊界成為角色的一部分。當代理程式能夠進行變更或存取工作區外部時,核准與沙箱可協助您保持控制。
接下來要做什麼
既然您已經知道如何使用工具,接下來的課程將展示 MCP 伺服器如何為代理程式工作階段新增外部資料與動作。