本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

在Visual Studio Code中使用代理

代理自动化完整的编码任务,这些任务超越了简单的代码建议和聊天互动。在Visual Studio Code中,你可以创建代理会话,这些会话可以在本地或云端、交互式或后台运行。在不同类型的代理之间传递任务以利用它们的独特优势。统一的聊天视图为你提供了一个中心位置来管理和监控所有代理会话,无论它们在哪里运行。

本文概述了各种代理类型,如何创建和管理代理会话,代理之间委托任务以及跟踪其进度。

在 VS Code 中显示代码更改和聊天互动的智能体会话截图。

重要

确保在 VS Code 设置中启用代理 (

聊天代理启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
ORG)。您的组织可能也会禁用代理 - 请联系您的管理员以启用此功能。

什么是代理?

Agents员从头到尾完成完整的编码任务。他们理解您的项目,在多个文件中进行更改,运行命令,并根据结果进行调整。

例如,假设你有一个失败的测试。Agents员可以不提供解决方案而是:

  • 阅读错误信息并确定多个文件中的根本原因
  • 更新相关代码
  • 再次运行测试以验证修复是否有效
  • 提交更改

你给一个代理一个高级任务,它会将任务分解成步骤,使用工具执行这些步骤,并在遇到错误时自我纠正。

您可以并行运行多个代理会话,每个会话专注于不同的任务。当您创建一个新的代理会话时,之前的会话仍然有效,您可以通过代理会话列表在任务之间切换。

关键概念

以下概念描述了在 VS Code 中与代理工作的不同方面:

概念 描述 示例
代理类型 哪里如何 一个代理运行: 本地, 后台, , 或 第三方. 启动一个云代理来执行需要团队协作的任务。
内置代理 VS Code中的预配置代理:Agent计划询问。这些代理准备好使用,无需任何设置。 选择计划代理来创建一个有结构的计划来构建新功能。
定制代理 可重复使用的配置(在.代理.md文件)赋予智能体特定角色、工具和指示。自定义智能体可以与任何智能体类型一起使用。 创建一个“安全审查员”自定义代理,使用只读工具专注于识别漏洞。
子代理 一个儿童代理在会话中生成,以在自己的隔离上下文Windows中处理子任务。 一个研究某个主题的智能体会派遣一个子智能体去收集信息,然后只收到摘要。
交出 将会话从一种代理类型转移到另一种代理类型,并延续对话历史记录。 开始与本地代理合作进行规划,然后将计划交给云代理以提交拉取请求来实施。

Agents的类型

VS Code 支持四种主要类型的代理,每种代理都为不同的用例和交互级别而设计:

图表显示了环境和互动中的代理类型。

我应该使用哪个代理?

使用以下表格找到适合您任务的代理类型:

我想... 使用
头脑风暴、探索或互动式迭代一个想法 当地代理
获取关于我的代码库的答案 本地代理 (询问)
制定有条理的实施计划 本地代理 (计划)
修复一个需要编辑器上下文的问题(测试失败、代码检查错误、调试输出) 当地代理
使用特定的 VS Code 扩展工具或 MCP 服务器 当地代理
执行一个定义明确的任务,同时我继续工作。 背景代理云代理
探索多个变体或概念验证 背景代理云代理
创建一个团队审查和协作的PR 云代理
将 GitHub 问题分配给一个代理 云代理
使用特定的AI提供商(Anthropic,OpenAI) 第三方代理

当地代理

本地代理直接在您的机器上运行在 VS Code 中。您通过聊天与本地代理互动,以获得对您提示的即时结果。本地代理完全访问您的工作区、工具和模型。使用本地代理进行需要即时反馈的交互式任务,例如头脑风暴、规划或探索性工作。

本地代理会话使用三种内置代理之一:Agent用于复杂的编码任务,计划用于创建结构化的实施计划,以及询问用于回答有关您的代码库的问题。您还可以创建自定义代理用于专门的工作流程。

了解更多关于VS Code 的本地代理

后台代理

注意

在运行实验时,“background agent”这个词可能会在 VS Code 界面中显示为 “Copilot CLI” 或 “worktree”。

背景代理,如 Copilot CLI,是基于 CLI 的代理,在您的本地机器上后台非交互式运行。它们使用 Git 工作树来隔离工作,避免与您当前的工作产生冲突。使用背景代理来执行定义明确的任务,并且该任务拥有所有必要的上下文,例如执行一个计划。

了解更多关于VS Code 中的后台代理

云代理

云代理,例如 Copilot 编码代理,运行在远程基础设施上,并与 GitHub 仓库和拉取请求集成,用于团队协作和代码审查。对于有明确定义的任务,如果您希望通过拉取请求与团队成员协作,或者对于可以无需即时反馈的任务,使用云代理。

了解更多关于 VS Code 中的云代理

第三方代理

VS Code 支持来自第三方 AI 提供商(如 Anthropic 和 OpenAI)的代理。通过使用第三方代理,您可以在现有的 GitHub Copilot 订阅中利用这些提供商的独特功能,同时享受 VS Code 的统一会话管理和丰富的编辑器体验。根据提供商的不同,第三方代理可以本地运行或在云端运行。

了解更多关于 VS Code 中的第三方代理

代理会话列表

聊天视图提供了一个统一的视图来管理所有你的代理会话,无论它们在哪里运行。默认情况下,它显示你最近的会话,并提供有关其状态、类型和文件更改的信息。展开列表以查看和筛选所有你的代理会话。

会话列表仅限于您的工作区。如果您没有打开工作区,列表将显示所有工作区中的会话。会话按时间分组,例如 今天上周

聊天视图有两种模式:紧凑模式和并排模式。您可以通过点击聊天视图右上角的切换控件手动在紧凑模式和并排模式之间切换。

  • 紧凑:

    在紧凑视图中,会话列表嵌入在聊天视图中。当您从列表中选择一个会话时,聊天视图会切换到该会话。使用后退按钮返回到会话列表。

    聊天视图在紧凑模式下的截图,显示最近的代理会话。

  • 并排

    在并排视图中,会话列表与聊天视图并排显示。从列表中选择一个会话,以在聊天视图中查看其详细信息。

    聊天视图扩展模式的截图,显示完整的代理会话历史记录。

    小贴士

    当您使聊天视图变宽时,它会自动切换到并排模式。右键单击会话列表并选择会话方向以更改此行为(

    聊天.查看会话.方向
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    )。你也可以使用切换按钮。

右键单击列表中的会话以查看附加操作,例如打开会话详细信息、归档会话或执行特定于代理的选项(如检出拉取请求,针对云代理会话)。

要隐藏聊天视图中的会话列表,请在聊天框的空白处右键单击并取消选择显示会话 (

chat.viewSessions.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
)。

注意

扩展开发人员可以使用提议的API学习如何与代理视图集成聊天会话提供者该 API 目前处于提议状态,可能会有所变更。

代理状态指示器(实验性)

代理状态指示器可在标题栏中的命令中心直接快速访问您的代理会话。指示器显示未读消息和正在进行的会话的视觉徽章,因此您可以在不切换视图的情况下了解您的 AI 代理活动。

截图显示在命令中心中显示的代理状态指示器,带有未读和进行中的徽章。

指标显示:

  • 未读会话徽章:显示带有新消息的聊天会话数量。选择徽章以筛选会话列表,仅显示未读会话。
  • 进行中的会话徽章:显示正在运行的代理的会话数量。选择徽章以筛选会话列表,仅显示进行中的会话。
  • 闪亮图标:提供快速访问聊天和会话管理选项。

您可以使用该指示器的配置选项来调整其行为。

chat.agentsControl.clickBehavior
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置以切换聊天可见性,循环通过聊天状态(显示,最大化,隐藏),或聚焦聊天输入。

当过滤器激活时,会话列表会自动展开以显示所有匹配的会话。再次选择徽章以清除过滤器并返回默认视图。

注意

代理状态指示器是一个实验性功能。通过使用来启用它

chat.agentsControl.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
未读和进行中的指示需要
chat.viewSessions.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
启用。

创建代理会话

您可以同时创建多个代理会话,每个会话专注于不同的任务。当您创建一个新的代理会话时,之前的会话保持活动状态,您可以通过代理会话列表在任务之间切换。

当您创建一个新的智能体会话时,它从一个空的上下文Windows开始。每个智能体会话都是独立的,因此一个会话的上下文不会传递到另一个会话。

您可以在聊天视图中创建新的代理会话,或在命令面板中使用相应的命令。

  1. 打开聊天视图并选择新会话下拉菜单(输入:+)。

    从聊天视图创建新代理会话的截图。

  2. 从下拉菜单中选择代理类型。可选地,从模型选择器中选择一个语言模型。

    截图显示在新聊天会话中代理类型下拉菜单。

  3. 输入一个提示来分配一个任务给智能体。智能体开始处理这个任务。

    生成一个概述该项目架构的高级图表。
    
小贴士

您可以在代理仍在工作时发送后续提示。选择将消息排队、引导当前请求、或立即停止并发送

将会话移交给另一个代理

您可以将现有的任务从一个代理转移到另一个代理,以利用他们的独特优势。例如,与本地代理一起制定计划,将任务交给后台代理进行概念验证,然后继续与云代理合作提交拉取请求供团队审查。

要移交本地代理会话,请从聊天输入框的会话类型下拉菜单中选择另一种代理类型。VS Code 会创建一个新会话,保留完整的对话历史记录和上下文。原会话在移交后会被归档。

截图显示了将转交给另一位代理的会话类型下拉菜单。

在后台代理会话中,通过输入将委托交给云代理/委托在聊天输入框中输入命令。您可以在之后提供额外的说明。/委托命令。

给特工分配一个编码任务

如果您安装 GitHub 拉取请求 扩展,您可以分配一个代理来执行 待办事项在你的代码中添加注释。

将 TODO 注释分配给 Copilot 编码代理的截图。

在 GitHub.com 上,或通过使用 GitHub 拉取请求扩展,您可以通过将问题分配给 Copilot 编码代理来分配 GitHub 问题。Copilot或者在问题评论或拉取请求中提到它以请求代码审查。

审查和应用文件更改

当代理会话完成并对项目进行代码更改时,会话列表会显示该会话的文件更改统计数据。要查看代理所做的更改,请从列表中选择会话以打开会话详细信息。

在代理会话中文件更改差异编辑器的截图。

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

存档代理会话

为了保持会话列表的组织性,请存档已完成或不活动的会话。存档会话不会将其删除,而是将其从活动会话列表中移出。您可以随时取消存档以将会话恢复到活动会话列表中。

要存档一个会话,请在会话列表中悬停在该会话上并选择存档。存档会话后,它将从列表中消失。相反,您也可以以相同的方式取消存档。

在会话视图中存档代理会话的截图。

要查看您的存档会话,请使用会话列表中的过滤选项并选择存档过滤器。

删除代理会话

要永久删除代理会话,请在会话列表中右键单击该会话并选择删除。删除会话会永久删除它且无法撤销。对于后台代理会话,删除会话也会移除为此会话创建的任何工作树。

重要

删除会话是不可逆的。如果您只是想隐藏一个会话,请考虑存档它。

  • 代理教程:处理不同代理类型的实践教程。

  • 工具:通过内置工具、MCP和扩展工具来扩展代理。

  • 钩子:在生命周期事件中执行自定义命令以实现自动化和策略执行

  • 定制代理:创建你自己的AI代理和扩展。