在 Visual Studio Code 中使用智能代理 (Agents)
智能代理 (Agent) 是一种能够自主完成编码任务的 AI 助手。你只需为其设定一个高阶目标,它就会将目标分解为多个步骤,编辑项目中的文件,运行命令,并在出错时进行自我修正。例如,智能代理不会仅仅建议如何修复失败的测试,而是会找出跨文件的根本原因、更新代码、重新运行测试并提交更改。
VS Code 允许你以适合自身工作流的方式运行智能代理。你可以在编辑器中与它们进行交互,也可以让它们通过 CLI 在后台自主运行。智能代理可以在你的本地机器、远程云环境或通过第三方提供商(如 Anthropic 或 OpenAI)运行。你可以决定给予它们多大的自主权,从审批每一个工具调用到让它们完全独立工作;你还可以创建自定义代理,以根据项目需求定制它们的行为。
无论智能代理在何处运行,你都可以通过聊天 (Chat) 视图中的统一 会话列表 来监控和管理所有会话。

在 VS Code 设置中启用智能代理 ( chat.agent.enabled 此设置由组织级别管理。请联系管理员进行更改。)。你的组织也可能会禁用智能代理——请联系管理员以启用此功能。
智能代理的类型
根据你对结果的需求时间和所需监管程度,智能代理可以在不同的环境中运行。两个关键维度是:代理运行的位置(本地机器或云端)以及你与代理的交互方式(交互式或后台自主运行)。
- 本地 (Local):使用 VS Code 代理循环,在编辑器中以交互方式运行代理,并完全访问你的工作区、工具和模型。
- Copilot CLI:使用 Copilot CLI 在你的机器后台运行,可选择使用 Git 工作树 (worktrees) 进行隔离。
- 云端 (Cloud):使用 GitHub Copilot 在远程运行,并与 GitHub 拉取请求 (PR) 集成以进行团队协作。
- 第三方 (Third-party):使用 Anthropic 和 OpenAI 提供的第三方代理框架和 SDK,在本地机器或云端运行。
从聊天视图的代理目标下拉菜单中选择代理类型。

我应该使用哪种类型的代理?
使用下表为你当前的任务找到合适的代理类型
| 如果我想... | 使用 |
|---|---|
| 以交互方式进行头脑风暴、探索或迭代想法 | 本地代理 |
| 获取关于代码库的答案 | 本地代理 (Ask) |
| 创建一个结构化的实施计划 | 本地代理 (Plan) |
| 修复需要编辑器上下文的问题(测试失败、Lint 错误、调试输出) | 本地代理 |
| 使用集成浏览器构建和测试 Web 应用 (实验性) | 本地代理。请参阅浏览器代理测试指南。 |
| 使用特定的 VS Code 扩展工具或 MCP 服务器 | 本地代理 |
| 在我继续工作的同时实现定义明确的任务 | Copilot CLI 或 云端代理 |
| 探索多种变体或进行概念验证 (PoC) | Copilot CLI 或 云端代理 |
| 创建 PR 以供团队评审和协作 | 云端代理 |
| 将 GitHub Issue 分配给代理 | 云端代理 |
| 使用特定的 AI 提供商(Anthropic、OpenAI) | 第三方代理 |
选择智能代理
如果说代理类型是指代理运行的位置,那么代理的角色或人设则决定了它如何执行任务。例如,具有“代码审查员”人设的代理专注于评审代码更改的质量和风格并提供反馈,而不是直接修改代码。代理的定义决定了它可以使用哪些工具、执行任务的方式,以及它与其他代理的交接点。
从聊天视图的代理下拉菜单中选择一个代理。你可以在会话期间随时切换代理。

VS Code 具有三个内置代理
- Agent:自主规划并在多个文件中实施更改、运行终端命令并调用工具。
- Plan:在编写任何代码之前创建一个结构化的、分步骤的实施计划。当计划合理时,将其交给实施代理。
- Ask:回答关于编码概念、你的代码库或 VS Code 本身的问题,而不进行文件更改。
对于更专业的工作流,你可以创建自己的自定义代理,定义特定的角色、可用工具和语言模型。
选择权限级别
智能代理可以自主执行任务,但你可以控制它们调用工具和终端命令的自主程度。给予智能代理更多的自主权可以提高效率,但可能会降低监管程度。聊天视图中的权限选择器允许你为每个会话设置权限级别,从审批每一个工具调用到允许代理完全自主工作。
| 权限级别 | 描述 |
|---|---|
| 默认批准 | 使用 VS Code 设置中指定的审批规则。默认情况下,只有只读和安全工具不需要显式审批。 |
| 绕过批准 | 自动审批所有工具调用,无需确认对话框。代理在工作时可能会询问澄清性问题。 |
| 自动驾驶 (Autopilot)(预览版) | 自动审批所有工具调用,自动回复问题,并且代理会持续自主工作直到任务完成。 |
了解更多关于权限级别和 Autopilot 的信息。
将任务切换给其他智能代理
你可以将现有任务从一个代理切换(交接)给另一个代理,以发挥它们各自独特的优势。例如,先用本地代理制定计划,切换到 Copilot CLI 进行概念验证,然后继续使用云端代理提交 PR 以进行团队评审。
若要交接本地代理会话,请从聊天输入框的会话类型下拉菜单中选择不同的代理类型。VS Code 将创建一个新会话,并延续完整的对话历史和上下文。原会话在交接后将被归档。

在 Copilot CLI 会话中,通过在聊天输入框中输入 /delegate 命令来委派给云端代理。你可以在 /delegate 命令后提供额外指令。
将编码任务分配给代理
如果你安装了 GitHub Pull Requests 扩展,你可以分配代理来实施代码中的 TODO 注释。

在 GitHub.com 上,或通过 GitHub Pull Requests 扩展,你可以通过将 Issue 分配给 copilot,或在 Issue 评论/拉取请求中提及它,来将 GitHub Issue 分配给 Copilot 编码代理以请求代码审查。
相关资源
-
管理聊天会话:创建、切换和组织你的代理会话。
-
智能代理教程:关于使用不同类型代理的实操教程。
-
工具:通过内置工具、MCP 和扩展工具扩展代理能力。
-
钩子 (Hooks):在生命周期事件中执行自定义命令,以实现自动化和策略强制执行。
-
自定义代理:创建你自己的 AI 代理和扩展。