代理模式:向所有用户开放,并支持 MCP
2025年4月7日,由 Isidor Nikolic 发布
代理模式正在向所有 VS Code 用户推出!该代理充当一个自主的结对程序员,根据您的指令执行多步骤的编码任务,例如分析您的代码库、提出文件编辑建议以及运行终端命令。它会响应编译和 lint 错误,监控终端输出,并循环自动纠正,直到任务完成。该代理还可以使用贡献的工具,使其能够与外部 MCP 服务器或 VS Code 扩展进行交互,以执行各种各样的任务。
向所有用户开放
打开聊天视图,登录 GitHub,在您的设置中设置 chat.agent.enabled,并在聊天模式下拉菜单中选择 Agent。如果您没有看到该设置,请确保在更新到最新版本后重新加载 VS Code。在接下来的几周内,我们将默认向所有人推出此功能——不再需要进行设置。
代理模式非常适用于以下场景:
- 您的任务涉及多个步骤。代理会编辑代码、运行终端命令、监控错误,并迭代解决出现的任何问题。
- 您不确定更改的范围。代理会自动确定相关文件和上下文。
- 您的任务需要与外部应用程序或数据进行交互。代理可与 MCP 服务器和 VS Code 扩展集成。
另一方面,当任务范围明确、您希望快速得到结果或希望对 LLM 请求数量有更精细的控制时,请使用编辑模式。
我们创建了一个统一的聊天体验,将聊天和编辑视图结合起来,带来了诸如会话历史记录、将聊天移动到单独窗口以及简化工作集视图等好处。所有这些现在也都在代理模式中可用。
我们持续收到非常棒的用户反馈(请继续提供!),这启发了我们所做的许多改进。最值得注意的是:
- 撤销操作现在可以恢复到上一次编辑文件工具调用之前的更改
- 支持在同一工作区中进行多个代理会话(当编辑会话不修改相同文件时效果最佳)
- 代理现在可以创建和编辑 notebook
- 能够自动批准工具调用(终端自动批准功能将于四月推出)
- 一系列生活质量的改进和错误修复
提问和编辑体验都在向一个像代理一样利用工具的架构演进。我们正在进行这一改变,以统一提问/编辑/代理模式,使其都具有代理特性,目标是平滑整体用户体验。这使得编辑模式可以使用 edit_file
工具来提高速度,而编辑和提问模式可以使用 #codebase
,一个代理式的代码库搜索。因此,不支持工具调用的语言模型将不再在编辑模式中可用。
要了解更多关于代理如何工作的信息,您可以阅读我们之前的博文。
可扩展性:MCP 服务器和 VS Code 扩展
正如 VS Code 扩展使您能够自定义特定的工作流程一样,代理的可扩展性也允许您根据自己的需求定制代理。通过可扩展性,代理可以执行浏览器操作(执行 AI Web 调试)、连接到您的聊天和笔记应用、与您的数据库交互、从您的设计系统中获取上下文、从 GitHub 获取问题和仓库上下文,以及与您的云平台集成。代理模式的强大之处在于可用工具的多样性以及用户可以灵活添加和移除工具。我们正在以预览版的形式向所有用户推出可扩展性功能。
代理模式可以使用以下工具:
- 由 VS Code 贡献的内置工具(图中蓝色部分),允许代理搜索工作区、应用代码更改、运行终端命令、从编辑器捕获编译或 linting 错误、获取网站内容(手动触发使用
#fetch
)等。 - 由 MCP 服务器贡献的工具(图中绿色部分)。
- 由 VS Code 扩展贡献的工具(图中绿色部分)。
当 VS Code 团队在 2016 年发明语言服务器协议(LSP)时,我们的目标是标准化语言服务器与开发工具的通信方式。我们为 LSP 已成为一个被广泛采用的标准并实现了我们的愿景而感到自豪。最近,LSP 背后的理念启发了一个新协议:模型上下文协议(MCP),它标准化了应用程序如何向 LLM 提供上下文。随着 VS Code 中的代理模式使用由 MCP 服务器贡献的工具,我们现在又回到了 VS Code 的原点。
关键在于开发者的控制
并非每个任务都需要您可能已添加到代理模式中的所有工具,并且与任何 AI 工作流程一样,具体化可以带来更好的结果。我们建议使用工具 UI 来管理和启用每个场景所需的工具,或在您的提示中通过输入 #
来显式引用工具。
为了给您完全的控制,每次工具调用都会在 UI 中透明显示,并需要您的批准(只读的内置工具除外)。您可以允许特定工具用于当前会话、工作区或所有未来的调用。如果您希望通过始终允许代理使用所有工具来最大限度地减少中断,同时仍保持安全性,可以考虑使用 Dev Containers 扩展。这将所有代理驱动的更改隔离在容器环境内到一定程度(例如,如果您允许,代理仍然可以将更改推送到远程仓库)。
开始使用
要为您的工作流程自定义代理,请选择聊天输入框中的工具图标,并按照添加更多工具…的流程操作。或者,阅读我们的 MCP 服务器文档,其中解释了配置格式、如何添加 MCP 服务器,或如何从像 Claude Desktop 这样的现有 MCP 客户端应用中导入 MCP 服务器。VS Code 支持本地标准输入/输出(stdio
)和服务器发送事件(sse
)作为 MCP 服务器传输方式。
MCP 的官方服务器仓库是官方和社区贡献服务器的一个很好的起点,展示了 MCP 的多功能性。要安装贡献工具的扩展,请打开扩展视图并使用标签 @tag:language-model-tools
进行搜索。
作为一名开发者,您可以通过创建 MCP 服务器来扩展代理;或者,如果您是扩展作者,您可以向您的 VS Code 扩展贡献工具。请参阅这些文档以获取编写工具的指导和最佳实践。
下一步计划
代理模式每天都在改进,要成为首批受益者,请考虑安装 VS Code Insiders。使用 VS Code Insiders 并在我们的仓库中提供反馈是帮助我们改进产品的最佳方式。接下来,我们计划致力于:
- 支持带有自定义工具集和指令的自定义模式
- 更快的代码应用体验
- 将 MCP 支持从工具扩展到提示、资源和最新的规范更新
- 流式传输仅限于已更改代码块的编辑,以提高速度
- 检查点功能,可轻松返回到代理模式会话中的特定步骤
- 整体性能和服务质量的改进
请确保您使用的是最新的 VS Code 稳定版,在您的设置中设置 chat.agent.enabled,并从模式下拉菜单中选择 Agent。立即试用并告诉我们您的想法!您可以在此处找到文档。
祝您 vibe 编程愉快(现在有了 MCP 和扩展)!
Isidor 和 VS Code 团队