在聊天中使用工具
工具透過專門的功能來擴充 Visual Studio Code 中的代理人,以完成特定任務,例如搜尋程式碼、執行命令、擷取網路內容或呼叫 API。VS Code 支援三種類型的工具:內建工具、模型上下文協定 (MCP) 工具和擴充功能工具。
如需工具類型的背景知識以及工具如何在代理人迴圈中運作,請參閱工具概念。
本文說明如何在對話提示詞中使用工具以及如何管理工具呼叫。若要控制代理人如何要求工具呼叫的核准以及其自主性,請參閱管理核准與權限。
啟用對話工具
在對話中使用工具之前,您需要在「對話」檢視中啟用它們。您可以使用工具挑選器以每個請求為單位來啟用或停用工具。您可以透過安裝 MCP 伺服器或提供工具的擴充功能來新增更多工具。
僅選取與您的提示詞相關的工具,以改善結果。
若要存取工具挑選器
-
開啟「對話」檢視,然後從代理人挑選器中選取代理人。
-
選取對話輸入欄位中的設定工具按鈕。

-
選取或取消選取工具,以控制目前請求可使用哪些工具。
使用搜尋方塊來篩選工具清單。
當您使用提示詞檔案或自訂代理人自訂對話時,您可以指定特定提示詞或模式可用的工具。深入了解工具清單優先順序。
在提示詞中使用工具
使用代理人時,代理人會根據您的提示詞和請求的上下文,自動從啟用的工具中決定要使用哪些工具。代理人會根據需要自主選擇並呼叫相關工具來完成任務。
您也可以在提示詞中輸入 # 後接工具名稱來明確參照工具。當您想要確保使用特定工具時,這非常有用。在對話輸入欄位中輸入 #,即可查看可用工具清單,包括內建工具、來自已安裝伺服器的 MCP 工具、擴充功能工具以及工具集。
明確工具參照的範例
"Node.js 的最新版本是什麼 #web""Next.js 中的路由是如何運作的? #web""修正 #problems 中的問題""說明驗證流程 #codebase"
預設情況下,工具呼叫詳細資料在對話中是折疊的。您可以透過選取對話中的工具摘要列來展開它們,或者使用 chat.agent.thinking.collapsedTools (實驗性):使用 off 來將工具呼叫保持分開,使用 withThinking 在可用時與思考過程分組,或使用 always 來總是分組。當 chat.agent.thinkingStyle 為 collapsed 時,推理和分組的工具呼叫可能會顯示在不同的可折疊區段中。
編輯工具參數
您可以在工具執行之前檢閱並編輯輸入參數
-
當工具確認對話方塊出現時,選取工具名稱旁邊的向下箭頭以展開其詳細資料。
-
依需求編輯任何工具輸入參數。
-
選取允許以使用修改後的參數執行工具。
使用工具集將工具分組
工具集是一組工具,您可以在提示詞中將其作為單一實體來參照。工具集可協助您組織相關工具,並讓它們在對話提示詞、提示詞檔案和自訂對話代理人中更易於使用。部分內建工具是預先定義工具集的一部分,例如 #edit 和 #search。
建立工具集
若要建立工具集
-
從命令選擇區執行 Chat: Configure Tool Sets 命令,然後選取 Create new tool sets file。
或者,選取「對話」檢視中的省略符號 (...) 選單,選取 Tool Sets,然後選取 Create new tool sets file。
-
在開啟的
.jsonc檔案中定義您的工具集。工具集具有以下結構
{ "reader": { "tools": ["search/changes", "search/codebase", "read/problems", "search/usages"], "description": "Tools for reading and gathering context", "icon": "book" } }工具集屬性
tools:工具名稱陣列 (內建工具、MCP 工具或擴充功能工具)description:顯示在工具挑選器中的簡短描述icon:工具集的圖示 (請參閱產品圖示參考)
使用工具集
在提示詞中輸入 # 後接工具集名稱來參照工具集
"分析程式碼基底是否有安全性問題 #reader""DB 連線字串是在哪裡定義的? #search"
在工具挑選器中,工具集會以相關工具的可折疊群組形式提供。您可以選取或取消選取整個工具集,以快速一次啟用或停用多個相關工具。
執行終端機命令
在所有內建工具中,終端機工具是最常使用的工具之一。代理人使用它來執行命令作為其工作流程的一部分,例如安裝相依性、執行建置或執行測試。由於終端機命令可能會變更您的環境,因此 VS Code 提供了用於檢閱、執行和監視它們的額外控制項,並建立在先前所述的核准行為之上。
當代理人決定執行命令時,它會使用內建的終端機工具在 VS Code 內的整合式終端機中執行該命令。
在對話交談中,代理人會顯示它執行的命令。您可以透過選取命令旁邊的 Show Output (>) 在對話中內嵌檢視命令的輸出。您也可以透過選取 Show Terminal 在整合式終端機中檢視完整的輸出。

使用實驗性的 chat.tools.terminal.outputLocation 設定來設定終端機命令輸出的顯示位置:內嵌在對話中,或直接顯示在整合式終端機中。
在背景中繼續執行終端機命令
當代理人執行執行時間較長的終端機命令(例如啟動開發伺服器或在監看模式下執行建置)時,您可以將命令推送到背景。這可讓代理人在不必等待命令完成的情況下繼續處理其他任務。
當命令正在執行時,對話交談中的終端機命令旁會出現 Continue in Background 按鈕。選取此按鈕可將命令移至背景。命令會繼續執行,代理人可以稍後檢查其輸出或將終端機用於其他任務。
代理人在執行終端機命令時也可以指定逾時時間。當達到逾時時間時,代理人會停止等待命令並傳回目前收集到的輸出。使用 chat.tools.terminal.enforceTimeoutFromModel 設定來控制是否強制執行代理人指定的逾時值。
代理人也可以選擇直接在背景執行命令,而不需要使用者互動。當背景終端機的命令完成時,您未顯示的背景終端機將會自動清除,這可防止在長時間的工作階段中累積過時的終端機。若要顯示背景終端機並在命令完成後保持開啟狀態,請選取對話工具呼叫標頭中的 Show 連結。即使終端機已被清除,終端機輸出在對話交談中仍會保持可見。
若要自動核准終端機命令或限制代理人命令的檔案系統和網路存取權,請參閱管理核准與權限。
常見問題
如何得知有哪些工具可用?
在對話輸入欄位中輸入 # 即可查看所有可用工具的清單。您也可以使用對話中的工具挑選器來檢視和管理啟用中的工具清單。
我收到顯示「每個請求不能擁有超過 128 個工具。」的錯誤訊息。
一個對話請求一次最多可以啟用 128 個工具。如果您看到有關超過每個請求 128 個工具的錯誤
-
在「對話」檢視中開啟工具挑選器,然後取消選取某些工具或整個 MCP 伺服器以減少數量。
-
或者,使用 github.copilot.chat.virtualTools.threshold 設定啟用虛擬工具,以自動管理大型工具集。
為什麼代理人沒有使用我設定的終端機 Shell?
代理人會使用您設定為終端機預設值的 Shell,但 Windows 上的 cmd (命令提示字元) 以及 macOS/Linux 上的 sh 除外。這是因為這些 Shell 不支援Shell 整合,這表示代理人對終端機內部發生的事情只有非常有限的能見度。代理人無法直接取得命令何時正在執行或已執行完成的訊號,而是需要依賴逾時並監視終端機是否閒置才能繼續。這會導致緩慢且不穩定的體驗。
您仍然可以使用終端機設定檔設定將代理人設定為使用這些 Shell,然而與在 Windows 上使用 PowerShell 或在 macOS/Linux 上使用 bash/zsh 相比,這會導致較差的體驗。
- chat.tools.terminal.terminalProfile.windows - 覆寫 Windows 上的 Shell
- chat.tools.terminal.terminalProfile.osx - 覆寫 macOS 上的 Shell
- chat.tools.terminal.terminalProfile.linux - 覆寫 Linux 上的 Shell
相關資源
- 對話工具參考
- 代理人掛鉤 (Hooks) - 在工具生命週期事件中執行自訂命令
- 在 VS Code 中使用 AI 的安全性考量