在智能体中使用工具

工具是智能体响应你请求的方式。它们可以搜索你的工作区、读取文件、编辑代码、运行终端命令、获取网页内容以及调用外部服务。在本指南中,你将从一个小任务开始,仅选择任务所需的工具,并决定何时使用工具集、审批或沙盒。

前提条件

在开始之前,请安装 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 扩展提供的扩展工具。

智能体根据你的提示词和上下文从已启用的工具中进行选择。你的任务是为其提供足够完成任务的功能,同时又不要给它一堆繁杂且不相关的选项列表。

为首次运行选择工具

  1. 打开聊天视图。

  2. 从智能体选择器中选择 Agent

  3. 在聊天输入框中选择 Configure Tools

  4. 保持仓库搜索和文件读取工具处于启用状态。

  5. 在首次运行中,关闭终端、网页和外部服务工具。

  6. 发送提示词。

Screenshot showing the Chat view with the Configure Tools button in the chat input.

从小处着手有助于智能体保持专注。它还可以减少模型上下文窗口中的工具定义。VS Code 可以将某些组公开为虚拟工具以使工具数量可控,但较小的活动集仍然可以让模型更容易推理任务。

提示

如果智能体表示需要运行测试或检查生成的输出,请为下一次请求添加终端工具,而不是在启用所有工具的情况下重新开始。

需要时添加特定工具

有时你确切知道哪个工具应该作为答案的基础。在聊天输入框中键入 # 以查看可用的工具、上下文来源和工具集。

例如,像这样修改先前的提示词

Explain the authentication flow in this project. Focus on repository context. #codebase

当任务有明确的真实数据源时,使用显式工具引用

  • 当答案应来自你的仓库时,使用 #codebase
  • 当你希望智能体修复当前的诊断信息时,使用 #problems
  • 当答案需要当前的外部文档时,使用 #web

Screenshot showing the tool picker drop-down with built-in tools, MCP servers, and user-defined tool sets.

在单个工具和工具集之间做出选择

单个工具非常适合一次性请求。当你重复相同的设置时,工具集效果更好。

用途 适用场景 示例
单个工具 具有一个明确上下文来源的简短任务。 使用 #codebase 且无终端访问权限来解释文件。
工具集 需要相同工具组的重复工作流。 包含搜索、编辑、测试和 Python 语言工具的 Python 维护工作流。
自定义智能体工具 应始终在相同边界内运行的角色。 带有搜索和网页工具但没有编辑或终端工具的规划智能体。

为重复性工作创建工具集

在这一步中,为仓库清理工作创建一个可重用的工具集。

  1. 打开命令面板。

  2. 运行 Chat: Configure Tool Sets 并选择 Create new tool sets file

  3. 在打开的 .jsonc 文件中,添加用于清理工作流的工具(例如搜索、编辑和测试工具),以及 descriptionicon

  4. 保存文件。

  5. 返回聊天并在 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 在 VS Code 中打开 在 VS Code Insiders 中打开 在各个会话中保持你首选的模式。当 chat.autopilot.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 启用时,Autopilot 可用。

注意

更高的自主权级别会减少工具运行前所需的审查量。请谨慎使用它们,特别是当智能体可以编辑文件或运行终端命令时。

Screenshot of approval options.

为终端工作添加沙盒隔离

智能体沙盒为智能体运行的终端命令添加了操作系统级别的隔离。它限制了文件系统和网络访问,并且沙盒命令会自动批准,因为它们已经在受控环境中运行。

通过 chat.agent.sandbox.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置可由你的组织管理。请联系你的管理员进行更改。 启用它。在 macOS 和 Linux 上,你可以选择完全隔离或带有网络访问的文件系统隔离。

当智能体需要终端访问权限,但不应超出工作区或批准的域时,沙盒是一个很好的选择。例如,在要求智能体运行生成的脚本、启动本地工具或检查带有不熟悉包脚本的项目之前,请使用沙盒。

轮到你了

用三种方式尝试相同的仓库任务

  1. 仅使用仓库搜索和文件读取工具运行它。

  2. 添加终端工具并要求智能体运行一次集中的验证。

  3. 将工具选择保存为工具集并在新的聊天中重用它。

每次运行后,比较所做的更改。注意智能体是否保持专注、是否请求了缺失的权限,或者是否使用了你未预料到的工具。

为什么这很重要

合适的工具组合可使智能体保持专注。工具集使良好的工作流可重复。自定义智能体使工具边界成为角色的一部分。当智能体可以进行更改或访问工作区外部时,审批和沙盒有助于你保持控制。

接下来是什么

既然你已经知道了如何使用工具,下一节课程将展示 MCP 服务器如何向智能体会话添加外部数据和操作。

了解更多

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.