推荐阅读
2025 年 7 个压箱底 VS Code 插件,都是神器!
Cursor 2.0正式发布:携自研模型Composer强势登场,不再只做「壳」,速度遥遥领先!
VS Code 的这款数据库 AI 神器,再也不用来回切换 Navicat 了
VS Code2025 这几个 AI 智能编程天花板技巧,比 Cursor 还强!
📦 什么是 Agent 工具?
工具 (Tools) 是 VS Code 中扩展 Agent 能力的 specialized functionality(专业功能模块)。简单来说,工具就是让 AI 能够执行具体任务的能力包。
想象一下:
- 没有工具的 Copilot:像个只会纸上谈兵的军师 📜
- 有工具的 Copilot:像能上阵杀敌的将军 ⚔️
VS Code 支持三种类型的工具:
| 工具类型 | 说明 | 需要配置吗? |
|---|---|---|
| 🔧 Built-in Tools (内置工具) | VS Code 自带的工具,覆盖常见开发任务 | ❌ 无需安装,开箱即用 |
| 🔌 MCP Tools (模型上下文协议工具) | 通过 MCP 服务器提供的外部工具和服务 | ✅ 需要安装配置 MCP 服务器 |
| 📦 Extension Tools (扩展工具) | VS Code 扩展贡献的工具,深度集成编辑器 | ✅ 安装对应扩展后自动可用 |
🔍 三种工具类型详解
1️⃣ 内置工具 (Built-in Tools)
这是 VS Code 亲儿子,无需任何安装或配置,开始使用 Chat 就自动可用!
典型能力:
-
搜索代码库
-
读取工作区文件
-
运行终端命令
-
浏览器交互测试
-
获取问题列表等
2️⃣ MCP 工具
MCP 是一个开放标准,让 AI 模型能通过统一接口使用外部工具和服务。
特点:
- MCP 服务器可以运行在本地或远程托管
- 可以提供额外能力(如数据库查询、API 调用等)
- 支持通过 MCP Apps 返回交互式 UI 组件
⚠️ 重要提示:你的组织可能会禁用 MCP 服务器或限制可用的服务器列表。如有疑问,请联系管理员。
3️⃣ 扩展工具 (Extension Tools)
VS Code 扩展可以通过 Language Model Tools API 贡献工具。
特点:
- 深度集成编辑器功能
- 安装扩展后自动可用,无需额外配置
- 开发者可以创建自定义工具
👨💻 想自己开发工具?查看 Language Model Tools API guide
⚙️ 如何启用工具?
在使用工具之前,需要在 Chat 视图 中启用它们。你可以按请求启用/禁用特定工具。
操作步骤
- 打开 Chat 视图,从 Agent 选择器中选择 Agent
- 点击聊天输入框中的 Configure Tools (配置工具) 按钮 🔧
- 勾选或取消勾选工具,控制哪些工具可用于当前请求
- 使用搜索框可以快速过滤工具列表
(图示:在 Chat 视图中通过工具选择器启用/禁用工具)
💡 小贴士:只选择与你的提示词相关的工具,可以提高结果质量!
💬 在提示词中使用工具
自动模式(推荐)
使用 Agent 时,它会根据你的提示词和请求上下文,自动决定使用哪些已启用的工具。你只需要描述任务,Agent 会自主选择并调用相关工具。
提示词示例:
"帮我找出项目中所有使用 axios 的地方,并检查是否有错误处理"
Agent 会自动:
- 搜索代码库
- 定位 axios 调用
- 分析错误处理逻辑
- 生成报告
显式引用模式
你也可以明确指定使用哪个工具,方法是在提示词中输入 # 加工具名称。
输入 # 后,会显示可用工具列表,包括:
- 内置工具
- 已安装 MCP 服务器的工具
- 扩展工具
- 工具集
显式引用示例:
| 示例 | 说明 |
|---|---|
"Summarize the content from #fetch https://code.visualstudio.com/updates" | 获取并总结网页内容 |
"How does routing work in Next.js? #githubRepo vercel/next.js" | 查询 GitHub 仓库 |
"Fix the issues in #problems" | 修复问题列表中的错误 |
"Explain the authentication flow #codebase" | 基于代码库解释认证流程 |
💡 某些工具需要参数,如
#fetch需要 URL,#githubRepo需要仓库名称。
🔐 工具审批机制(安全很重要!)
某些工具在运行前需要你的审批。这是安全措施,因为工具可能:
- 修改文件
- 更改环境配置
- 通过恶意工具输出进行提示注入攻击
审批选项
当工具需要审批时,会显示确认对话框,你可以选择:
| 审批范围 | 说明 |
|---|---|
| 🔸 单次使用 | 仅本次运行需要审批 |
| 🔸 当前会话 | 本次聊天会话中无需再审批 |
| 🔸 当前工作区 | 该工作区中无需再审批 |
| 🔸 所有未来调用 | 永久信任该工具 |
配置 URL 自动审批
使用 chat.tools.urls.autoApprove 设置存储自动审批的 URL 模式:
{
"chat.tools.urls.autoApprove": {
"https://www.example.com": false,
"https://*.contoso.com/*": true,
"https://example.com/api/*": {
"approveRequest": true,
"approveResponse": false
}
}
}
支持的模式:
- 精确 URL
- Glob 模式(通配符)
- 布尔值(启用/禁用所有)
重置工具确认
想清除所有已保存的工具审批?使用命令面板:
Ctrl+Shift+P → 搜索 "Chat: Reset Tool Confirmations"
✏️ 编辑工具参数
在工具运行前,你可以审查并编辑输入参数:
- 当工具确认对话框出现时,点击工具名称旁边的 chevron (∨) 展开详情
- 根据需要编辑任何工具输入参数
- 点击 Allow 使用修改后的参数运行工具
💻 终端命令功能
Agent 可能会使用终端命令作为工作流的一部分来完成任务。
查看命令输出
- 在聊天对话中,Agent 会显示它运行的命令
- 点击命令旁边的 Show Output (>) 可在聊天中内联查看输出
- 点击 Show Terminal 可在集成终端中查看完整输出
后台运行长时间命令
当 Agent 运行长时间命令(如启动开发服务器、watch 模式构建)时,可以点击 Continue in Background 按钮将命令推送到后台。
好处:
- Agent 可以继续执行其他任务,无需等待命令完成
- 稍后可以检查输出或使用终端执行其他任务
自动审批终端命令
使用 chat.tools.terminal.autoApprove 配置哪些终端命令自动审批:
{
// 允许 mkdir 命令
"mkdir": true,
// 允许 git status 和以 git show 开头的命令
"/^git (status|show\\b.*)$/": true,
// 阻止 del 命令
"del": false,
// 阻止任何包含 "dangerous" 的命令
"/dangerous/": false
}
规则说明:
true= 自动审批false= 始终需要审批- 用
/包裹 = 正则表达式匹配
⚠️ 警告:自动审批终端命令提供的是"尽力而为"的保护。在高风险环境中,考虑启用终端沙盒或在容器中运行 VS Code。
📁 工具集 (Tool Sets)
工具集 是工具的集合,可以在提示词中作为单个实体引用。帮助你组织相关工具,使其在聊天提示词、提示文件和自定义 Agent 中更易使用。
创建工具集
- 运行命令:Chat: Configure Tool Sets
- 选择 Create new tool sets file
- 在打开的
.jsonc文件中定义工具集
工具集结构示例:
{
"reader": {
"tools": ["changes", "codebase", "problems", "usages"],
"description": "Tools for reading and gathering context",
"icon": "book"
}
}
属性说明:
| 属性 | 说明 |
|---|---|
tools | 工具名称数组(内置/MCP/扩展工具) |
description | 在工具选择器中显示的简短描述 |
icon | 工具集图标(参考 Product Icon Reference) |
使用工具集
在提示词中输入 # 加工具集名称:
"分析代码库的bug #reader"
"常量MASS使用到的地方? #search"
在工具选择器中,工具集显示为可折叠的相关工具组,可以一次性启用/禁用多个相关工具。
❓ 常见问题 (FAQ)
Q1: 如何知道有哪些工具可用?
A: 在聊天输入框中输入 #,会显示所有可用工具列表。也可以使用 Chat 视图中的工具选择器查看和管理活动工具。
Q2: 收到错误 "Cannot have more than 128 tools per request" 怎么办?
A: 每个聊天请求最多启用 128 个工具。解决方法:
- 打开工具选择器,取消勾选一些工具或整个 MCP 服务器
- 启用
github.copilot.chat.virtualTools.threshold设置自动管理大型工具集
Q3: 为什么 Agent 不使用 Command Prompt 作为终端 Shell?
A: Agent 使用你配置的默认终端 Shell(cmd 除外)。因为 Shell Integration 不支持 Command Prompt,导致 Agent 对终端内发生的事情可见性非常有限。
如果必须使用 cmd,可以配置:
{
"chat.tools.terminal.terminalProfile.windows": {
"path": "C:\\WINDOWS\\System32\\cmd.exe"
}
}
但体验会比 PowerShell 差。
Q4: 可以自动审批所有工具和终端命令吗?
A: 可以,但强烈不推荐!⚠️
启用 chat.tools.global.autoApprove 会禁用所有手动审批,包括潜在的破坏性操作。这会移除关键安全保护,使攻击者更容易入侵机器。
如果一定要用:
- 从 Chat 中使用
/yolo或/autoApprove斜杠命令启用 - 使用
/disableYolo或/disableAutoApprove禁用 - 首次启用时会显示警告对话框确认