---
title: "Agent 工具"
description: "說明 VS Code agent 的 built-in tools、MCP tools、extension tools、工具選擇、批准和信任邊界。"
verifiedAt: "2026-05-06"
---

工具是 Agent Mode 從“會說話”變成“會行動”的關鍵。VS Code 官方 Tools 文件說得很直接：沒有工具，language model（語言模型）只能生成文本；有了工具，agent 能讀檔案、寫程式碼、執行終端命令、搜尋程式碼庫並連線外部服務。

所以工具不是裝飾項，而是許可權邊界。你給 agent 什麼工具，它就可能圍繞這些工具規劃下一步。

> [!TIP]
> **閱讀目標**：讀完本章，你應該能判斷哪些工具該開、哪些工具要關、什麼時候必須人工批准。

## 1. 三類工具

VS Code 官方文件列出三類工具：

- **Built-in tools**：VS Code 自帶的開發任務工具，例如讀寫檔案、執行終端命令、搜尋程式碼庫、導航編輯器。
- **MCP tools**：由 Model Context Protocol server 提供，可以連線資料庫、API 和外部服務。
- **Extension tools**：由 VS Code extension 透過 Language Model Tools API 提供，和編輯器深度整合。

```mermaid
flowchart TD
    Agent["Agent loop"] --> Select["模型選擇工具"]
    Select --> BuiltIn["Built-in tools"]
    Select --> MCP["MCP tools"]
    Select --> Extension["Extension tools"]
    BuiltIn --> Output["工具輸出進入下一輪上下文"]
    MCP --> Output
    Extension --> Output
    Output --> Next["下一步決策"]
    Next --> Approval{"有副作用?"}
    Approval -->|是| Human["人工批准"]
    Approval -->|否| Continue["繼續執行"]

    style MCP fill:#fef3c7,stroke:#d97706,stroke-width:2px
    style Human fill:#fee2e2,stroke:#dc2626,stroke-width:2px
    style Output fill:#dbeafe,stroke:#2563eb,stroke-width:2px
```

## 2. Agent 如何使用工具

官方文件說明，agent 處理任務時會檢視可用工具，並自主決定呼叫哪些工具。每個工具呼叫的輸出會進入下一輪上下文，影響後續決策。

這帶來兩個現實後果：

- 工具越多，agent 可做的事越多，也越容易呼叫無關工具。
- 工具輸出會消耗 context window，過多無關呼叫會降低後續回答質量。

你也可以在 prompt 裡用 `#` 加工具名顯式引用某個工具，確保它被使用。

## 3. 控制工具可用性

VS Code 官方頁面說明，可以透過 chat input 裡的 Configure Tools 按鈕為當前請求啟用或停用工具。

限制工具有三個價值：

- **保留上下文**：少呼叫無關工具，減少上下文浪費。
- **提高相關性**：工具少時，agent 更集中。
- **提升速度**：減少模型在工具之間選擇的空間。

還可以透過 prompt files 和 custom agents 固定某類任務可用的工具集。

## 4. 批准與信任

工具可能修改檔案、訪問環境或連線外部服務。VS Code 官方文件列出幾類安全控制：

- **Approval prompts**：有副作用的工具執行前會出現確認。
- **URL approval**：訪問 URL 時有請求和響應內容的雙重確認流程。
- **Permission levels**：控制 agent 自主程度，從人工批准到完全自動。

團隊預設策略建議：

- 讀檔案、搜尋程式碼庫可以低門檻開放。
- 寫檔案要看目錄和任務範圍。
- 終端命令必須能解釋目的。
- MCP 連線資料庫、工單、雲服務時預設需要人工確認。
- 不給生產憑據和 destructive command 自動許可權。

## 5. 工具使用 prompt

```text
使用 agent 修复测试。

工具边界：
可以读取 src 和 tests。
可以修改 tests/auth。
运行命令前先说明原因。
不要访问外部服务。
```

關鍵不是讓 prompt 變複雜，而是讓 agent 的行動範圍可審查。

<details>
<summary>深讀：為什麼工具越多不一定越好</summary>

Agent 會根據可用工具規劃下一步。工具太多時，它可能花上下文去探索不相關資訊，也可能把外部系統接入一個原本只需要本地 diff 的任務。

商業專案要按任務授權，而不是按最大能力授權。工具許可權應該像生產許可權一樣最小化。
</details>

## 本章自檢

完成本章後，用這 4 個問題檢查：

1. 當前任務真正需要哪些工具？
2. 哪些工具有檔案、終端、網路或外部服務副作用？
3. 是否透過 Configure Tools、prompt file 或 custom agent 限定工具集？
4. 是否禁止了生產資源、金鑰和 destructive command 的自動呼叫？

透過標準：agent 的工具範圍能被 reviewer 看懂，並且和任務風險匹配。

## 官方來源

- [Tools](https://code.visualstudio.com/docs/copilot/concepts/tools) —— VS Code 官方工具機制文件，覆蓋工具型別、選擇、控制和批准。
- [Using agents in Visual Studio Code](https://code.visualstudio.com/docs/copilot/agents/overview) —— VS Code 官方 agents 總覽，覆蓋 permission levels。
- [About Model Context Protocol](https://docs.github.com/en/copilot/concepts/context/model-context-protocol) —— GitHub 官方 MCP 概念頁，用於理解外部工具接入邊界。

## 接下來去哪

<Cards>
  <Card title="審查程式碼修改" description="工具改完檔案後，繼續學習如何審 pending edits。" href="/zh-Hant/docs/github-copilot/official/03-vscode-agent-mode/review-code-edits" />
  <Card title="MCP 與外部工具" description="需要外部系統時，繼續學習 MCP 配置和企業准入。" href="/zh-Hant/docs/github-copilot/official/07-mcp" />
</Cards>
