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

Visual Studio Code 中的后台代理

注意

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

Visual Studio Code 中的后台代理是基于 CLI 的代理,例如 Copilot CLI,它们在您的本地机器上后台运行。在您继续在编辑器中进行其他工作时,它们自主运行。后台代理使用 Git 工作树来隔离操作,避免与您当前的活跃工作发生冲突。

本文介绍了背景代理的关键功能,并介绍了如何使用 Copilot CLI 启动和管理背景会话。

在 VS Code 中作为聊天编辑器的后台代理会话截图。

什么是后台代理?

与熟悉 VS Code 编辑上下文的本地代理不同,背景代理通过命令行界面 (CLIs) 独立地在您的本地机器上运行。您可以在 VS Code 的统一聊天视图中查看和管理所有背景代理会话。此视图还允许您直接从 VS Code 创建新的背景代理会话或将本地代理对话转交给背景代理。

因为背景代理在用户不参与的情况下在后台运行,它们非常适合那些具有明确范围和所有必要上下文的任务。例如,从计划中实现一个功能,创建多个概念验证的变体,或实现明确定义的修复或功能。

您可以通过选择背景会话类型直接在聊天中开始一个新的背景代理会话。或者,您可以将本地会话移交给背景代理以在后台继续。

为了防止干扰你在编辑器中的活跃工作,背景代理使用Git工作树在隔离环境中运行,这样它们可以进行更改而不影响你的主要工作区。当你开始一个背景代理会话时,VS Code会自动为该会话创建一个单独的文件夹。

后台代理的限制

  • 背景代理无法直接访问 VS Code 内置工具和运行时上下文(如失败的测试或文本选择),除非你显式地将该上下文添加到提示中。
  • 无法使用扩展提供的工具,只能使用通过 CLI 工具提供的模型。
  • 目前只能访问不需要认证的本地MCP服务器。

Copilot CLI

Copilot CLI是 VS Code 的主要后台代理。您可以从 Chat 视图启动和管理会话,或者直接从 VS Code 终端使用 Copilot CLI。

VS Code 会自动为您安装和配置 Copilot CLI。当您在 CLI 中直接开始一个会话时,该会话也会出现在会话列表中,您可以在此跟踪其进度并进一步与其互动。

了解更多关于从终端使用 Copilot CLI或查看Copilot CLI的 GitHub 文档。

查看和管理后台代理会话

你可以在 VS Code 的 Chat 视图中查看和管理所有你的后台代理会话。通过选择 背景代理 来筛选仅显示背景代理会话。

VS Code 聊天视图中背景代理过滤器的截图。

从列表中选择一个背景代理会话以在聊天视图中打开会话详细信息。如果您更喜欢在编辑器标签页(聊天编辑器)中查看会话,请右键单击会话并选择以编辑器打开。您还可以从终端使用 Copilot CLI与会话进行交互。

启动后台代理会话

根据您的工作流程,您可以通过多种方式启动背景代理会话。您可以使用 CLI 直接创建一个会话并提供任务详细信息,或者从 VS Code 的 聊天视图 中启动一个新会话。

另一种方法,特别适用于复杂的任务,是首先在 VS Code 中与本地代理进行聊天互动,一旦范围和细节明确,再将任务交给后台代理会话。例如,您可以使用 计划代理 来概述多步骤功能的实现,然后将实际编码委托给后台代理。

创建Copilot CLI 背景代理会话

您可以通过多种方式在 VS Code 中创建新的 Copilot CLI 背景代理会话:

  • 从聊天视图:

    1. 打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))

    2. 选择 代表会议 下拉菜单 > 背景

  • 当你在本地聊天会话中时:

    • 输入提示,选择委托会议下拉菜单 > 背景
  • 运行 Chat: New Background Agent 命令从命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P))

一个新的背景作业会话打开,您可以在其中提供额外的任务细节并跟踪 Copilot CLI 会话的进度。

您可以在聊天输入中附加图像,以为后台会话提供视觉上下文。

将代理会话交给后台代理

对于复杂的任务,首先在 VS Code 聊天中与本地代理互动以澄清要求,然后将任务交给后台代理以自主执行可能会很有帮助。当您将本地代理对话传递给后台代理会话时,完整的对话历史记录和上下文会传递给后台代理。

要继续本地代理会话的后台代理会话:

  1. 打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))

  2. 与本地代理互动,直到你准备好将任务交给后台代理。

  3. 要将控制权交给后台代理,您有以下选项:

    • 打开委托会议下拉菜单,然后选择背景

      截图显示 VS Code 聊天界面中的“委托会话”下拉菜单。

    • 如果您正在使用 计划代理,选择 开始实施 下拉菜单,然后选择 继续在后台 以在后台代理会话中运行实施

      截图显示 VS Code 聊天界面中的“开始实施”按钮。

背景代理会话会自动启动,携带完整的对话历史记录和上下文。您可以在聊天视图中监控背景代理的进度。

在终端中使用 Copilot CLI

除了从聊天视图启动背景代理会话外,您还可以直接从 VS Code 终端使用 Copilot CLI。

打开 Copilot CLI 终端

VS Code 注册了一个GitHub Copilot CLI 终端配置文件,您可以使用它来打开一个专用的 Copilot CLI 终端。您可以通过多种方式打开 Copilot CLI 终端:

  • 在终端面板中选择 + 按钮旁边的下拉菜单,并选择 GitHub Copilot CLI

  • 运行 Chat: New CLI Session 命令从命令面板打开面板中的 Copilot CLI 终端,或者运行 Chat: New CLI Session to the Side 在您当前的编辑器旁边打开编辑器标签中打开

  • 运行 终端:创建新终端(带配置文件) 命令,从命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中选择 GitHub Copilot CLI

  • 类型Copilot在 VS Code 的任何集成终端中直接启动 Copilot CLI

CoPilot CLI 终端支持以下 shell:

  • bashzsh 在 macOS 和 Linux 上
  • PowerShell命令提示符 在 Windows 上

从终端开始和恢复会话

当您从 Copilot CLI 终端启动一个新的会话时,VS Code 会自动检测该会话并在 Chat 视图的会话列表中显示。然后,您可以从终端或 Chat 视图跟踪进度、发送后续提示或查看更改。

在终端中恢复现有的背景代理会话,请在聊天视图中右键单击该会话并选择在终端中恢复代理会话

截图显示 Copilot CLI 会话在 VS Code 中。

VS Code 会自动处理 Copilot CLI 终端的认证,因此您无需单独登录。

创建背景代理会话

背景代理会话会自动使用Git工作树来隔离对主工作区的更改。当您开始一个背景代理会话时,VS Code 会为该会话创建一个单独的文件夹。背景代理在该隔离的文件夹中运行,以防止与您的当前工作发生冲突。

要启动一个带有Git工作树的后台代理会话:

  1. 在聊天视图中,选择委托会议下拉菜单,然后从会议类型下拉菜单中选择背景

  2. 输入提示以开始代理会话。VS Code 会自动创建一个新的 Git 工作树。

    所有由后台代理所做的更改都会应用到工作树文件夹,将其与您的主要工作区隔离。

    背景代理在每回合结束时将更改提交到工作树,以使会话历史记录与提交历史记录保持一致。

    小贴士

    您可以通过在会话列表中右键单击它并选择 在新Windows中打开工作树来为后台代理会话打开工作树。您还可以在源代码控制视图的仓库资源管理器中查看工作树 (scm.repositories.explorer)。

    截图显示 VS Code 源代码控制视图中的 Git 工作树。

  3. 在聊天视图中监控背景代理的进度。代理会话列表显示与工作树更改匹配的差异统计数据。

  4. 在背景代理完成任务后,审查并应用工作树中对主工作区的更改。

    在会话底部显示的活动集显示了在后台代理会话期间更改的文件,并提供应用查看所有更改操作。

    截图显示了带有“应用”和“查看更改”操作的工作集。

  5. 当你应用更改时,VS Code 会处理与你的工作树或暂存文件的任何冲突。如果发生冲突,合并解决体验将帮助你解决它们。

了解更多关于在 VS Code 源代码管理中使用 Git 工作树的信息。

多代码库工作区

当你的工作区包含多个Git仓库时,VS Code会在你启动一个后台代理会话时在聊天输入框中显示一个仓库选择器。使用这个选择器来选择工作树应该在哪个仓库中创建。

会话开始后,该会话的存储库选择器将被禁用。工作树会显示在源控制存储库视图中所选存储库下的工作树节点下。

小贴士

要查看工作区中的所有仓库,请启用

scm.repositories.explorer
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置并打开源代码控制视图。

使用自定义代理和后台代理(实验性)

自定义代理 让你能够在 VS Code 中定义代理的自定义角色和身份。例如,你可能会创建一个用于代码审查的自定义代理。自定义代理可以定义具体的指令和行为。

当您创建一个后台代理会话时,您可以选择一个自定义代理来处理任务。后台代理根据自定义代理定义的行为进行操作。

要启用具有后台代理的自定义代理:

  1. 启用用于后台代理的自定义代理

    github.copilot.chat.cli.customAgents.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置

  2. 在你的工作区中创建一个自定义代理,使用命令面板中的聊天:新建自定义代理命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P))

    注意

    目前,仅在工作区中定义的自定义代理可用于后台代理会话。了解更多关于创建自定义代理的信息。

  3. 创建一个新的背景代理会话,并从代理下拉菜单中选择自定义代理

    截图显示在 VS Code 聊天界面中选择自定义代理。

  4. 输入提示并注意到自定义代理用于处理任务