在 Visual Studio Code 中使用代理
代理是实现 AI 驱动的自主编码以及执行超越简单代码建议和聊天交互的多步骤任务的关键。Visual Studio Code 允许您创建在本地或云端运行的代理会话,无论是交互式还是在后台运行。您可以随时在不同类型的代理之间切换任务,以利用它们独特的优势。借助 VS Code 中的统一聊天视图,您可以集中管理和监控所有代理会话,无论它们在何处运行。
本文档概述了各种代理类型、如何创建和管理代理会话、在代理之间委托任务以及跟踪它们的进度。

什么是代理?
代理可以端到端地处理完整的编码任务,通过不仅仅是建议代码或回答问题来为您节省时间。它们可以理解您的项目,跨多个文件进行更改,运行命令,并根据它们获得的结果进行调整。
例如,假设您有一个测试失败。代理不仅可以建议修复,还可以读取错误消息,识别跨多个文件的根本原因,更新相关代码,再次运行测试以验证修复是否有效,甚至提交更改。
给代理一项高级任务,它们会将其分解为多个步骤,使用各种工具执行这些步骤,并在遇到错误或测试失败时进行自我纠正。
在 VS Code 中,代理可以在不同的环境中运行以匹配您的工作流程:在本地 VS Code 中进行交互式任务,在您的计算机后台进行自主工作,或者在云端远程进行团队协作。它们执行编码任务,运行终端命令,并协同使用工具来实现您的目标。一些代理会实时响应您的提示,帮助您规划功能或进行有针对性的编辑,而另一些代理则独立工作以实现多步骤的更改。
代理与自定义代理有何不同?
自定义代理允许您让代理承担特定角色的任务,例如代码审查员、测试员或安全专家。自定义代理是一种配置,它定义了代理应如何表现,可以使用哪些工具以及应使用哪个模型。
例如,“代码审查员”自定义代理可能会被配置为专注于识别潜在的错误,并根据团队的编码标准和行业最佳实践提出改进建议。自定义代理只能对代码库进行只读访问,并将使用特定的存储库或文档作为其审查的上下文。自定义代理的输出将是基于模板的详细代码审查报告。
您可以在不同类型的代理(本地、后台、云端)之间重用自定义代理,以便它们在不同环境中扮演相同的角色。
自定义代理还允许您在自定义代理定义中指定切换,以实现结构化的工作流程,让用户使用另一个代理执行后续操作。例如,“代码审查员”自定义代理可以配置为切换到内置代理,并要求其实现建议的更改。
了解有关创建自定义代理的更多信息。
代理与子代理有何不同?
子代理使代理能够分解复杂任务并在隔离的上下文中执行它们。子代理是一个自主代理,它在代理会话的一部分启动,但独立运行并拥有自己的上下文窗口。子代理对于优化复杂的多步骤任务(如研究或分析)的上下文管理非常有用。一个代理可以创建多个子代理来处理单个用户请求的不同部分。
例如,如果您要求代理研究某个主题并总结其发现,它可以创建一个子代理来处理研究部分。子代理收集信息,处理信息,然后仅将最终摘要返回给主代理,从而使主上下文专注于主要对话。
与代理本身类似,子代理也可以利用自定义代理来承担其任务的特定角色。如果子代理需要执行研究,您可以让它使用针对信息收集、分析和摘要进行了优化的“研究员”自定义代理。
目前,子代理仅在 VS Code 的本地代理会话中受支持。
代理类型
VS Code 支持四种主要的代理类别,每种类别都针对不同的用例和交互级别进行了设计

本地代理
本地代理直接在您的计算机上的 VS Code 中运行。您可以通过聊天与本地代理进行交互,以获得对提示的即时响应。本地代理在您的工作区上运行,并可以访问 VS Code 中所有可用的工具和模型。您可以让代理通过创建自定义代理来承担特定任务的角色,例如代码审查员、测试员或文档编写者。
本地代理在 VS Code 的聊天界面中运行。当您关闭聊天会话时,本地代理将保持活动状态,并且可以在会话视图中进行跟踪。
最适合:
- 需要即时反馈的交互式对话,例如头脑风暴、规划或尚未完全定义的任务
- 不需要其他团队成员协作的任务
- 需要访问您的开发环境上下文的任务,例如 linting 错误、堆栈跟踪、单元测试结果
- 需要访问 VS Code 扩展或 MCP 服务器中的特定工具,或者需要使用 BYOK 模型等特定模型的任务
关键特征:
- 在本地计算机上的 VS Code 中运行,并在当前工作区上工作
- 用于实时反馈和迭代的交互式聊天界面
- 完全访问您的工作区、文件和上下文
- 可以访问 VS Code 中配置的所有代理工具,例如内置工具、MCP 工具和扩展提供的工具
- 可以使用您在 VS Code 中可用的所有模型,包括 BYOK 模型和其他提供商的模型
了解有关在 VS Code 中使用聊天的更多信息。
后台代理
后台代理(如 Copilot CLI)是基于 CLI 的代理,它们在您的本地计算机后台非交互式地运行。后台代理可以使用 Git worktrees 以隔离模式工作,以防止代码更改干扰您当前的工作区。您可以选择在当前工作区中运行后台代理,但这可能会导致冲突(如果您正在积极处理相同的文件)。后台代理无法使用 MCP 或扩展提供的工具,并且仅限于 CLI 提供的模型。要自定义后台代理的行为,您可以重用工作区的自定义代理来让它承担特定角色。
最适合:
- 具有明确范围且拥有所有必要上下文的非交互式任务,例如实现一个计划
- 不需要与其他团队成员协作的任务
- 不需要访问 VS Code 内置工具、MCP 工具或运行时上下文的任务,例如失败的测试或文本选择
关键特征:
- 在本地计算机后台非交互式且自主地运行
- 可以使用 Git worktrees 与主工作区分离工作
- 无法直接访问 VS Code 内置工具和运行时上下文,除非明确添加
- 无法访问 MCP 服务器
- 仅限于通过 CLI 工具提供的模型
了解有关在 VS Code 中使用后台代理的更多信息。
云代理
云代理在远程基础设施上运行以执行 AI 驱动的编码任务。像 Copilot coding agent 这样的云代理与 GitHub 存储库和拉取请求集成,以实现团队协作和代码审查。云代理通过分支和拉取请求与您的本地工作区分离,以防止干扰。云代理无法访问 VS Code 内置工具和运行时上下文,但可以访问远程环境中配置的 MCP 服务器。您可以重用工作区的自定义代理,让云代理承担特定任务的角色。
最适合:
- 具有明确范围且拥有所有必要上下文的非交互式任务,例如实现一个计划
- 需要与其他团队成员协作的任务
- 不需要访问 VS Code 内置工具、MCP 工具或运行时上下文的任务,例如失败的测试或文本选择
关键特征:
- 在远程基础设施上非交互式运行
- 通过分支和拉取请求与主工作区分离工作
- 可以通过拉取请求支持团队协作
- 无法访问 VS Code 内置工具和运行时上下文
- 可以访问远程环境中配置的 MCP 服务器
- 仅限于云代理服务中可用的模型
了解有关在 VS Code 中使用云代理的更多信息。
第三方代理
第三方代理是由其他提供商(例如 OpenAI Codex)开发的后台代理,它们已集成到 VS Code 代理体验中。您可以像管理本地、后台和云代理一样管理这些提供商的代理会话。
最适合:当您已经在使用第三方 AI 代理并希望将其集成到您的 VS Code 工作流程中时
管理代理会话
VS Code 中的聊天视图提供了一个统一的界面来管理您的代理会话,无论它们在哪里运行。您可以查看所有代理会话的列表、它们的状态以及文件更改等关键详细信息,以及它们的类型(本地、后台、云端或 Codex)。状态指示器可帮助您快速识别活动、已完成、失败的会话,或需要您输入的会话。
会话列表以您的工作区为范围。如果您没有打开工作区,列表将显示您所有工作区的会话。
聊天视图有两种模式:紧凑模式和并排模式。您可以通过聊天视图右上角的切换控件手动在紧凑模式和并排模式之间切换。
-
紧凑:
在紧凑视图中,当您打开新的聊天会话时,您会在紧凑列表中看到最近的三个会话。您可以选择“显示所有会话”以打开代理会话的完整历史记录。查看所有会话时,请使用搜索和筛选选项查找特定会话。

当您从列表中选择一个会话时,聊天视图会切换到该会话。一个链接使您可以返回到之前的视图。
-
并排
在并排视图中,聊天视图直接在聊天视图旁边显示代理会话的完整列表。使用搜索和筛选选项查找特定会话。

当您从列表中选择一个会话时,聊天视图将显示该会话的详细信息,而会话列表将保持可见。
提示使聊天视图变宽以自动切换到并排模式。右键单击会话列表并选择“会话方向”以更改默认行为(chat.viewSessions.orientation)或使用切换按钮。
右键单击列表中的会话以查看其他操作,例如打开会话详细信息的不同选项、存档会话,或特定于代理类型的操作,例如签出拉取请求(用于云代理会话)。
要从聊天视图中隐藏会话列表,请右键单击空白聊天区域并取消选择“显示会话”。
如果您更喜欢专用的代理视图(预览版),请将 chat.agentSessionsViewLocation 设置为 view 或 single-view。
扩展开发者可以了解如何使用提议的 API chatSessionsProvider 与代理视图集成。该 API 目前处于提议状态,可能会发生更改。
过滤代理会话
当所有会话都显示在会话列表中时,您可以使用搜索和过滤来查找特定的代理会话。默认情况下,显示所有会话,但不包括已存档的会话。您可以按代理类型、状态、读取状态和存档状态过滤会话。

选择“重置”以将过滤器重置为默认值。
存档代理会话
为了保持会话列表的整洁,您可以存档已完成或不活动的会话。已存档的会话默认隐藏,但您可以通过应用“已存档”过滤器来访问它们。
要存档会话,请将鼠标悬停在会话列表中的会话上,然后选择“存档”。存档会话后,它将从列表中消失。反之,您也可以用相同的方式取消存档会话。

创建代理会话
在 VS Code 中创建新的代理会话有几种方法
-
创建特定类型的新的、空的代理会话
-
通过委托将现有会话切换到另一种代理类型
-
将任务直接分配给代理,例如 TODO 注释或 GitHub 问题
创建新的代理会话
您可以从聊天视图创建新的代理会话,或使用命令面板中的相应命令。
-
打开聊天视图
-
选择“新建会话”下拉菜单,然后选择要创建的代理会话类型

- 新聊天:在聊天视图中开始一个新的本地代理会话
- 新聊天编辑器:将一个新的本地代理会话开始作为一个编辑器选项卡
- 新聊天窗口:在一个单独的 VS Code 窗口中开始一个新的本地代理会话
- 新后台/云端/Codex 代理:在聊天视图中开始一个新的后台、云端或 Codex 代理会话
您可以随时通过溢出菜单(...)中的操作,将代理会话从聊天视图移动到聊天编辑器或新窗口。
或者,从命令面板使用以下命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))
- 聊天:新聊天编辑器/窗口:在一个聊天编辑器中开始一个新的本地代理会话
- 聊天:新后台代理:在一个聊天编辑器中使用 Copilot CLI 开始一个新的后台代理会话
- 聊天:新云端代理:在一个聊天编辑器中开始一个新的 Copilot coding agent 会话
- Codex:新 Codex 代理:在一个聊天编辑器中开始一个新的 OpenAI Codex 代理会话
将会话切换到另一个代理
每种代理类型都有独特的优势和功能。本地代理允许您实时与 AI 进行交互,而后台代理非常适合自主处理定义明确的任务,云代理则非常适合通过拉取请求进行团队协作。
VS Code 使您能够将现有任务从一个代理切换(或委托)到另一个代理,具体取决于任务的细节。例如,您首先使用本地代理创建计划,然后切换到后台代理以创建不同的概念验证版本,最后继续使用云代理在拉取请求中实现最终版本以供团队审查。
当您委托一个会话时,VS Code 会创建一个所选类型的新代理会话,并继承完整的对话历史记录和上下文。然后,您可以继续与新代理交互以完成任务。原始会话将在切换后存档。
您可以通过使用“在...中继续”控件,或在提示中键入 @cli、@cloud 或 @codex 来将本地代理会话从 VS Code 中的聊天切换到其他代理类型。

在后台代理会话中,您可以通过在聊天输入框中输入 /delegate 命令来委托给云代理。可选地,您可以在 /delegate 命令后提供其他指令给云代理。
将编码任务分配给代理
如果您安装了GitHub Pull Requests 扩展,您可以将代理分配给来实现代码中的 TODO 注释。

在 GitHub.com 上,或通过使用 GitHub Pull Requests 扩展,您可以将 GitHub 问题分配给 Copilot coding agent,方法是将问题分配给 copilot,或在问题评论或拉取请求中提及它以请求代码审查。
审查和应用文件更改
当代理会话完成并对您的项目进行了代码更改时,会话列表将显示该会话的文件更改统计信息。要审查代理所做的更改,请从列表中选择该会话以打开会话详细信息。
会话详细信息视图显示与代理的完整对话历史记录,以及会话期间所做的任何文件更改。右键单击更改的文件以查看该文件的 diff 编辑器,或选择“查看所有更改”操作以查看包含会话期间所有更改的多文件 diff 编辑器。

根据代理类型,您还可以选择将代理所做的更改应用到您的本地工作区,或签出代理会话的分支(用于云代理)。