在Visual Studio Code中使用代理

客服自动化完成的编码任务,超越了简单的代码建议和聊天互动。在Visual Studio Code中,你可以创建本地或云端运行的代理会话,无论是交互式还是后台。在不同类型的特工之间分配任务,发挥各自的优势。统一的聊天视图为你提供了一个集中管理和监控所有代理会话的地方,无论它们运行在哪里。

本文概述了各种代理类型,如何创建和管理代理会话,如何在代理之间委派任务,并跟踪其进展。

VS Code 中一次代理会话的截图,显示代码变更和聊天互动。

重要

确保你的VS Code设置中启用了代理(

chat.agent.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
ORG)。你的组织也可能禁用代理——请联系你的管理员来启用此功能。

什么是特工?

代理端到端完成完整的编码任务。他们理解你的项目,跨多个文件进行修改,执行命令,并根据结果进行调整。

举个例子,想象你有一次考试不及格。代理人可以不建议解决方案,而是:

  • 阅读错误信息,找出多个文件中的根本原因
  • 更新相关代码
  • 再跑一次测试确认修复是否有效
  • 提交更改

你给代理一个高级任务,它会把任务拆解成多个步骤,用工具执行这些步骤,遇到错误时会自动修正。

你可以同时运行多个代理会话,每个会话专注于不同的任务。当你创建新的代理会话时,上一个会话依然活跃,你可以通过代理会话列表在任务间切换。

关键概念

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

概念 描述 示例
代理类型 代理运行地点方式本地后台云端还是第三方 启动一个云代理处理需要团队协作的任务。
内置代理 VS Code 中的预配置代理:Agent计划请求。这些代理无需任何设置即可使用。 选择计划代理以创建结构化计划以构建新功能。
定制代理 可重复使用配置(定义于.agent.md文件)赋予代理人特定的角色、工具和指示。定制代理可以处理任何类型的代理。 创建一个带有只读工具的“安全审查者”定制代理,专注于识别漏洞。
副代理人 一个子代理会在会话中生成,在其独立的上下文窗口中处理子任务。 研究主题的代理会生成一个子代理来收集信息,然后只收到摘要。
放开手 将会话从一种代理类型转移到另一种,并保留对话历史。 先和本地代理一起规划,然后交给云代理以拉取请求的形式实现计划。

代理的类型

VS Code 支持四大类代理,每种类型针对不同的用例和交互层次设计:

示意图,展示了按环境和交互方式划分的智能体类型。

我应该用哪种代理?

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

我想...... 用途
互动式头脑风暴、探索或迭代一个想法 本地代理
获取关于我代码库的答案 本地代理(Ask)
制定结构化实施计划 本地代理(计划)
修复需要编辑器上下文的问题(测试失败、线条错误、调试输出) 本地代理
使用特定的VS Code扩展工具或MCP服务器 本地代理
在我继续工作时,我会实施一个明确的任务 后台代理云代理
探索多种变体或概念验证 后台代理云代理
创建一个公共关系以便团队审核和协作 云代理
将GitHub问题分配给代理 云代理
使用特定的人工智能提供商(Anthropic、OpenAI) 第三方代理

本地代理

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

本地代理会话使用三种内置代理之一:Agent用于复杂编码任务,Plan用于创建结构化实现计划,Ask用于回答关于代码库的问题。你也可以为专门的工作流程创建定制代理

了解更多VS Code中的本地代理信息。

背景特工

注释

在 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中的第三方代理的信息。

代理会话列表

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

会话列表是针对你的工作区的。如果你没有打开工作区,列表会显示你工作区中所有会话。这些会议按时间段分组,如今天上周

聊天视图有两种模式:紧凑型和并排型。你可以通过聊天视图右上角的切换控制手动切换紧凑模式和并排模式。

  • 紧凑型

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

    聊天视图的截图,显示了紧凑模式下最近的座席会话。

  • 并排

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

    聊天视图的截图,显示了完整的座席会话历史。

    提示

    当你把聊天视野调得更宽时,它会自动切换到并排模式。右键点击会话列表,选择会话方向以更改此行为(

    chat.viewSessions.orientation
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    ).你也可以用切换按钮。

右键点击列表中的会话,可以看到更多作,比如打开会话详情、归档会话,或是针对云代理会话的拉取请求等特定作。

要在聊天视图中隐藏会话列表,请在空聊天中右键点击并取消选择“显示会话” (

chat.viewSessions.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
).

注释

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

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

座席状态指示器可以直接从标题栏的指挥中心快速访问你的座席会话。该指示器显示未读消息和正在进行的会话的视觉徽章,让您无需切换视图即可随时了解您的AI代理活动。

截图显示指挥中心的代理状态指示器,显示未阅读和进行中徽章。

指示器显示:

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

您可以通过以下方式配置指示器的行为

聊天。代理控制。点击行为
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置为切换聊天可见性,切换聊天状态(显示、最大化、隐藏),或者聚焦聊天输入。

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

注释

代理状态指示器是一个实验性功能。通过以下方式启用

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

创建代理会话

你可以并行创建多个代理会话,每个会话专注于不同的任务。当你创建新的代理会话时,上一个会话依然活跃,你可以通过代理会话列表在任务间切换。

当你创建新的代理会话时,它会从一个空的上下文窗口开始。每个代理会话都是独立的,因此一个会话的上下文不会传递到另一个会话。

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

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

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

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

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

  3. 输入提示,将任务分配给代理。特工开始着手完成任务。

    Generate a diagram that gives a high-level overview of the architecture of this project.
    
提示

你可以在经纪人还在工作时发送后续提示。选择排队、引导当前请求,或立即停止发送

把一次会谈交给另一位特工

你可以将现有任务从一位代理人交接给另一位代理人,利用他们的独特优势。例如,先与本地代理创建计划,交给后台代理进行概念验证,然后继续用云代理提交团队审核的拉取请求。

要切换本地座席会话,请在聊天输入框的会话类型下拉菜单中选择不同的代理类型。VS Code 创建一个新会话,携带完整的对话历史和上下文。原始会话在交接后归档。

截图显示了切换到另一位客服的会话类型下拉菜单。

在后台代理会话中,通过输入/代表在聊天输入框里输入命令。你可以在/代表指挥部。

将编码任务分配给代理

如果你安装了GitHub的拉取请求扩展,可以分配一个代理来实现TODO代码中的注释。

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

在 GitHub.com 上,或者通过GitHub的Pull Request扩展,你可以将GitHub问题分配给Copilot的编码代理,方法是将问题分配给副驾驶或者通过问题评论或拉取请求来请求代码审查。

审查并应用文件更改

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

文件截图,修改了代理会话中的 diff 编辑器。

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

归档代理会话

为了保持会话列表的有序,请归档已完成或非活跃的会话。归档会话不会删除它,而是将其从活跃会话列表中移除。你随时可以取消归档会话,将其恢复到活跃会话列表。

要归档会话,请将鼠标悬停在会话列表中的会话上,选择归档。归档会话后,它会从列表中消失。反过来,你也可以用同样的方式取消归档会话。

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

要查看已归档的会话,请使用会话列表中的筛选选项并选择“已归档”筛选。

删除代理会话

要永久删除代理会话,请在会话列表中右键点击该会话并选择删除。删除会话会永久移除,无法撤销。对于后台代理会话,删除该会话也会移除该会话创建的所有关联工作树。

重要

删除会话是不可逆的。如果你只是想隐藏会话,可以考虑归档它。

  • 代理教程:针对不同代理类型作的实践教程。

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

  • Hooks:在生命周期事件执行自定义命令,实现自动化和策略执行

  • 自定义代理:创建您自己的AI代理和扩展。