---
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="/docs/github-copilot/official/03-vscode-agent-mode/review-code-edits" />
  <Card title="MCP 与外部工具" description="需要外部系统时，继续学习 MCP 配置和企业准入。" href="/docs/github-copilot/official/07-mcp" />
</Cards>
