在智能体中使用工具
工具是智能体响应你请求的方式。它们可以搜索你的工作区、读取文件、编辑代码、运行终端命令、获取网页内容以及调用外部服务。在本指南中,你将从一个小任务开始,仅选择任务所需的工具,并决定何时使用工具集、审批或沙盒。
前提条件
在开始之前,请安装 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。 -
保存文件。
-
返回聊天并在 Configure Tools 中选择该工具集,或者通过在提示词中键入
#后跟工具集名称来引用它。
现在尝试使用已保存设置的提示词
Find one small cleanup opportunity in this repository, make the change, and run the focused validation for it.
工具集解决了重复重建相同工具选择的问题。它们还使审查变得更容易,因为保存的文件显示了工作流所需的工具。
为自定义智能体限制工具
当你构建自定义智能体时,你可以在智能体的 Markdown Frontmatter 的 tools 字段中列出它有权访问的工具和工具集
---
description: Python testing helper
tools: ['search', 'edit', 'pylance', 'runTests']
---
你还可以直接编辑 tools 字段,或者使用聊天视图中的 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 服务器如何向智能体会话添加外部数据和操作。