Visual Studio Code 中的后台代理

注释

在 VS Code 界面中,“后台代理”一词也可能以“Copilot CLI”或“worktree”的形式出现,尤其是在实验运行时。

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

本文介绍了后台代理的主要功能,以及如何从Copilot CLI启动和管理后台会话。

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

提示

第三方服务商如OpenAI Codex也提供后台代理功能。了解更多关于第三方代理人的信息。

什么是背景特工?

与在VS Code编辑器上下文中运行并了解本地代理不同,后台代理通过命令行接口(CLI)在本地机器上独立运行。你可以在VS Code的统一聊天视图中查看和管理所有后台代理会话。这个视图还允许你直接从 VS Code 创建新的后台代理会话,或者将本地代理对话交给后台代理。

由于后台代理在后台运行,无需用户交互,因此非常适合具有明确范围和所有必要上下文的任务。例如,从计划中实现功能、创建多个概念验证变体,或实现明确定义的修复或功能。

你可以直接在聊天中选择后台会话类型,开始新的后台客服会话。或者,您也可以将本地会话交给后台代理,让其在后台继续运行。

为了防止干扰你在编辑器中的活跃工作,后台代理使用 Git 工作树在一个隔离环境中运行,在那里他们做修改而不影响你的主工作区。当你启动后台代理会话时,VS Code 会自动为该会话创建一个独立文件夹。

背景代理人的局限性

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

Copilot CLI

Copilot CLI 是 VS Code 中的主要后台代理。你可以直接在终端使用 Copilot CLI,或者用 VS Code 启动和管理会话。

VS Code 会自动为您安装和配置 Copilot CLI。当你直接在 CLI 中启动会话时,该会话也会出现在会话列表中,你可以跟踪它的进度并进一步交互。

在GitHub文档中了解更多关于Copilot CLI的信息。

查看和管理后台代理会话

你可以在VS Code的聊天视图中查看和管理所有后台代理会话。通过筛选选项选择后台代理,筛选会话列表以显示仅显示后台代理会话。

VS Code 聊天视图中后台代理过滤器的截图。

从列表中选择一个后台代理会话,在聊天视图中打开会话详情。如果你更喜欢在编辑器标签页(聊天编辑器)中查看会话,右键点击会话并选择“作为编辑器打开”。

如果你更愿意在终端中查看后台会话,而不是在 VS Code 中查看聊天对话,请在聊天视图中右键点击会话,然后在终端中选择“恢复代理会话”。你可以直接在 VS Code 中与 Copilot CLI 交互。

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

启动一个后台代理会话

根据你的工作流程,你可以用多种方式启动后台代理会话。你可以创建新会话,直接通过 CLI 提供任务详情,或者在 VS Code 的聊天视图中启动新会话。

另一种方法——尤其是复杂任务时——是先在VS Code的聊天中与本地代理互动,一旦范围和细节明确,再将任务交给后台代理会话。例如,你可以用Plan代理来概述多步骤的功能实现,然后将实际编码委托给后台代理。

创建一个 Copilot CLI 后台代理会话

你可以通过多种方式在VS Code中创建新的Copilot CLI后台代理会话:

  • 从聊天视角看:

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

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

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

    • 输入提示词,选择“代表会议”下拉菜单>背景
  • 从命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P)中运行聊天:新后台代理命令)

会打开一个新的后台代理会话,您可以在这里提供额外的任务细节并跟踪 Copilot CLI 会话的进度。

你可以在聊天输入中附加图片,为背景会话提供视觉上下文。

提示

当你在终端使用 GitHub Copilot CLI 启动会话时,VS Code 中的聊天视图会自动检测并显示这个后台会话。你可以在 VS Code 内部进一步参与这个背景会话。

把一个特工会话交给一个背景特工

对于复杂任务,先在VS Code聊天中与本地代理交互以明确需求,然后将任务交给后台代理自主执行会很有帮助。当你把本地座席的对话交给后台座席会话时,完整的对话历史和上下文会传递给后台座席。

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

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

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

  3. 要交接给背景代理,你有以下选项:

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

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

    • 如果你使用计划代理,选择“开始实现”下拉菜单,选择“在后台继续”,在后台代理会话中运行实现

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

后台代理会话会自动启动,完整传输对话历史和上下文。你可以在聊天视图中监控后台代理的进度。

创建后台代理会话

后台代理会话会自动使用 Git 工作树将更改与主工作区隔离开来。当你启动后台代理会话时,VS Code 会为该会话创建一个独立文件夹。后台代理会在这个独立文件夹中运行,以防止与你当前工作的冲突。

要启动与 Git 工作树的后台代理会话:

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

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

    后台代理所做的所有更改都会应用到工作树文件夹中,将它们与主工作区隔离开来。

    后台代理在每回合结束时提交到工作树,以确保会话历史与提交历史保持一致。

    提示

    您可以通过在会话列表中右键点击后台代理会话并选择“在新窗口打开工作树”来打开后台代理会话的工作树。你也可以在源代码控制视图的仓库浏览器中查看工作树(scm.repositories.explorer).

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

  3. 在聊天视图中监控后台代理的进度。代理会话列表显示与工作树中变化相符的差异统计数据。

  4. 后台代理完成任务后,审查并将工作树的更改应用到主工作区。

    会话底部的工作集显示了在后台代理会话中被更改的文件,并提供了应用查看所有更改作。

    截图显示了带有应用和查看变更作的工作集。

  5. 当你应用更改时,VS Code 会处理与工作树或分阶段文件之间的冲突。如果发生冲突,合并解决体验可以帮助你解决。

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

多仓库工作区

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

会话开始后,该会话的存储库选择器将被禁用。工作树出现在所选存储库下,位于源代码控制仓库视图的工作节点下。

提示

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

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

使用带有背景代理的自定义代理(实验性)

自定义代理允许你在 VS Code 中为代理定义自定义角色和角色。例如,你可以创建一个自定义代理来执行代码审查。定制代理可以定义具体的指令和行为。

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

启用带有背景代理的自定义代理:

  1. 通过

    github.copilot.chat.cli.customAgents.enabled
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    背景设定

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

    注释

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

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

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

  4. 输入提示,发现定制代理是用来处理任务的