通过


GitHub Copilot代理模式入门

使用 Visual Studio 中的 GitHub Copilot 代理模式,可以使用自然语言来指定高级任务。 AI 会创建一个计划,进行代码编辑,运行终端命令,调用工具,并在代码库中应用更改。 它监视结果,例如生成结果、单元测试失败或工具输出,并根据需要迭代。

与 询问模式不同,代理模式不会在单个响应后停止。 它将继续运行和优化步骤,直到达到提示中的目标或需要更多的输入。

Prerequisites

需要 Visual Studio 2022 版本 17.14 或更高版本。

使用代理模式

在代理模式下,Copilot自主运行,并确定与你的提示相关的上下文。

请按照以下步骤开始操作:

  1. 打开“Copilot聊天”窗口,选择Ask展开模式下拉列表,然后选择Agent

Copilot代理模式选择器的屏幕截图。

显示Copilot代理模式选择器的截屏。

  1. 输入提示,然后选择“ 发送 ”或选择 Enter 键以提交它。 可以指定高级别要求,无需指定要处理的文件。

  2. 代理模式可能会调用多个工具来完成不同的任务。 (可选)选择 “工具” 图标以配置代理可用于响应请求的其他工具。

显示代理模式使用的其他工具的屏幕截图。

显示代理模式使用的其他工具的屏幕截图。

  1. Copilot在运行终端命令或使用未内置工具之前请求确认。

显示代理审批命令的屏幕截图。

显示代理命令审批的屏幕截图。

  1. Copilot自动检测代码编辑或终端命令中的问题,然后采取措施。 该过程将重复,直到问题得到解决。

  2. Copilot处理请求时,它会将建议的代码修改实时传送到编辑器中。 查看建议的编辑,然后选择以下任意一个操作:

    • 可在聊天窗口中的 总更改 中整体保留或放弃建议的编辑。

显示建议编辑列表的屏幕截图。

显示建议编辑列表的屏幕截图。

  • 查看单个文件差异,并选择性地应用这些更改。
  1. 如果要查看代理所做的单个代码更改,可以在每个步骤中查看特定的更改。

截图,显示使用 Copilot agent 访问单个编辑差异。

  1. 如果要查看代理所做的单个代码更改,可以:

    • 查看每个步骤中的特定更改。

截图,显示使用 Copilot agent 访问单个编辑差异。

  • 查看自上次保留或撤消更改以来的累积更改。

    屏幕截图显示如何使用 Copilot agent 访问累积编辑差异。

  1. 继续迭代代码更改以优化修改或实现更多功能。

了解代理模式工具

代理模式可以使用以下工具来响应请求:

  • 内置工具
  • 模型上下文协议 (MCP) 工具

小窍门

Visual Studio还包括与特定 IDE 功能集成的内置代理,例如 @debug、@profiler、@test 和 @vs。 还可以为团队工作流创建自定义代理。 有关详细信息,请参阅 在 GitHub Copilot 中使用自定义代理。

若要查看和管理代理模式下可用的工具,请在聊天窗口中选择 “工具” 图标。

截图,显示 Copilot agent 的工具选择器。

截图,展示 Copilot agent 的工具选择器。

根据工具的结果,Copilot可能会调用其他工具来完成总体请求。 例如,如果代码编辑导致文件中的语法错误,Copilot可能会探索另一种方法并建议不同的代码更改。

不会自动启用通过运行 MCP 服务器添加的其他工具。 默认情况下会清除其复选框,必须选中它们才能激活工具。

管理工具审批

Copilot调用工具时,它会请求确认以运行该工具。 原因是工具可能在计算机上本地运行,并执行修改文件或数据的作。

显示工具确认请求的屏幕截图。

显示工具确认请求的屏幕截图。

在聊天窗口中,在工具调用后,使用 “允许 ”下拉列表选项自动确认当前会话或解决方案的特定工具,或将来的所有调用。

可以在 “工具选项 ”窗格中重置工具确认选择。 展开 All Settings>GitHub>Copilot>Tools 节。

截图,显示了 Visual Studio 中的 GitHub Copilot 工具调用设置。

可以在 “工具选项 ”对话框中重置工具确认选择。 展开 GitHub>Copilot>Tools 节。

 GitHub Copilot 工具调用设置的截图.

接受或拒绝更改

Copilot在聊天窗口中列出汇总更改列表中编辑的文件。

显示已编辑文件列表的屏幕截图。

显示已编辑文件列表的屏幕截图。

选择每个文件以单独查看更改。 可以保留或撤消对每个代码块所做的编辑。

或者,在 “更改总数 ”列表中,为自上次选择 “保留 ”或“ 撤消 ”以来所做的所有编辑选择“ 保留 ”或“ 撤消”。

还原编辑

请求代码编辑时,可能需要还原一些更改。 若要还原,请在包含不需要更改的提示符之前的检查点旁边选择“还原”。

显示还原编辑的屏幕截图。

显示还原编辑的屏幕截图。

目前,Visual Studio Copilot代理不支持分步撤消或重做。

中断代理模式请求

若要中断正在进行的请求,可以取消它。 取消请求会停止所有正在运行的工具和终端命令。

若要停止生成,请选择顶部工具栏上的 “生成 ”,然后选择“ 取消”。 或使用 Ctrl+Break 键盘快捷方式。

在代理模式下规划 (预览版)

注释

计划功能可在 Visual Studio 2022 版本 17.14 中以公共预览版使用。 此功能处于积极开发阶段,可能会根据用户反馈而发展。

在代理模式下,计划允许 Copilot在执行前将复杂或多步骤请求分解为结构化、可跟踪的任务。

当计划激活时,Copilot:

  • 创建一个 面向用户的 Markdown 计划 ,该计划概述了目标和进度。
  • 维护一个内部 JSON 计划 (),该计划充当 LLM 可读的暂存板,用于步骤跟踪、推理和协调。

此结构有助于Copilot保持一致,动态更新其计划,并让开发人员了解其正在执行的作。

工作原理

请求分析

当任务需要多个步骤时,Copilot进入规划模式。

计划创建

  • Markdown 计划:以可读格式描述任务、步骤和进度。
  • JSON 计划:采用结构化的 LLM 可读格式,以计算机可分析形式捕获相同的计划。 此 JSON 文件允许 Copilot 在多个轮次中始终如一地更新和解释计划。

执行和迭代

Copilot执行计划中的每个步骤,并在执行过程中更新两个文件。

  • Markdown 计划在编辑器中明显更新。
  • JSON 计划在后台演变,随着 Copilot 优化、重新排序或调整步骤。

存储

这两个文件都存储在 .

规划中使用的工具

启用规划时,一组专用的内部工具将变为活动状态。 这些工具协调执行期间Copilot创建、更新和完成计划的方式。

Tool Description
计划 从用户请求生成初始结构化计划。
调整计划 根据新的上下文或反馈优化或调整计划。
更新计划进度 更新步骤完成状态并同步计划状态。
record_observation 捕获能够影响后续行动的运行时结果或见解。
finish_plan 完成所有步骤后,完成计划。

这些工具允许Copilot以增量方式管理多步骤工作流,维护执行状态,并保持与用户意图保持一致。

启用和管理规划工具

启用 规划:

  1. 打开 Tools>Options 窗格, 然后展开 All Settings>GitHub>Copilot>Copilot Chat 节。

  2. 选中“ 启用规划 ”复选框。

若要在 Visual Studio 2022 版本 17.14 或更高版本中启用 Planning

  1. 打开 Tools>Options 对话框,然后展开 GitHub>Copilot 节。

  2. 选中“ 启用规划 ”复选框,然后选择“ 确定”。

启用规划后, 规划 工具将显示在聊天窗口中 的工具 列表中:

屏幕截图显示了在代理模式下启用所有子工具的规划工具组。

可以选择性地禁用直接在聊天窗口中的“工具”列表中设置的规划工具。 如果需要禁用规划工具,建议禁用所有工具,而不仅仅是一个。 更改会立即应用到当前聊天会话。

小窍门

通过禁用各个工具,可以在开发过程中尝试不同的规划行为或调试特定步骤。

局限性

  • 除非手动保存,否则计划会暂时存储,并在会话结束时删除。
  • 由于结构化状态跟踪,存在轻微的延迟开销。
  • 某些专用代理可能尚不支持规划。

提供反馈

我们正在积极改进代理模式下的规划。 在此处共享反馈、报告问题或建议改进:“Copilot Chat”中的计划功能 - Visual Studio 开发者社区

常见问题

代理模式对我的文件有什么可见性?

代理模式只能作:

  • 属于解决方案的本地文件。
  • 打开的解决方案目录中或其子目录中的本地文件。

代理模式无法访问通过文件排除功能排除的文件和目录。

对于终端命令,代理模式的权限与正在运行的Visual Studio进程相同,并且不限于上述限制。 在运行建议的终端命令之前,请仔细查看。

在“Copilot聊天”窗口中看不到“询问模式”和“代理”模式

按指定顺序执行以下故障排除步骤:

  1. 请确保使用 Visual Studio 17.14 或更高版本。

    • 检查 Help>About Visual Studio 的版本。

    • 如果未使用版本 17.14 或更高版本,请打开 Visual Studio 安装程序并更新版本。

  2. 确认已选中 聊天窗格中的“启用代理模式”选项。

    Tools>Options 窗格中, 展开 All Settings>GitHub>Copilot>Copilot Chat 节, 并验证是否已选择该选项。

    Tools>Options 对话框中, 展开 GitHub>Copilot 节,并验证是否已在 Copilot Chat 下选中该选项。

  3. 请尝试重启Visual Studio。

何时应使用 ask 模式与代理模式?

  • 当您希望在未明确选择"应用"或自行复制粘贴代码的情况下,确保100%没有进行代码编辑时,“询问模式”非常出色。
  • 代理模式可以处理相同的概念问题并生成代码示例,而无需应用它们,以及其编辑代码的代理功能。
  • 如果要使用 MCP 功能,则必须选择代理模式。

在 Visual Studio 中,Copilot Edits 发生了什么变化?

代理模式是对Copilot编辑功能的进化,具备更强的能力,能够迭代处理错误、使用工具,并自动应用代码更改。

对于 Visual Studio 2022 版本 17.14 的首发版本,如果未选择聊天窗格中的 Enable 代理模式选项,Copilot 编辑仍然可用。 检查 Tools>Options 对话框中的选项设置,位于 GitHub>Copilot>Copilot Chat 节下。

作为管理员,如何控制Visual Studio用户的代理模式的使用?

Visual Studio中的代理模式受管理员GitHub Copilot仪表板上的 Editor 预览功能标志的约束。 如果管理员关闭此设置,则订阅下的用户无法在Visual Studio中使用代理模式。

有关详细信息,请参阅 管理企业中GitHub Copilot的策略和功能