在 Visual Studio 中使用 Copilot 代理模式(预览版)

借助 Visual Studio 中的 GitHub Copilot 代理模式,可以使用自然语言来指定高级任务。 然后,AI 将通过请求进行自主推理,规划所需的工作,并将更改应用到代码库。 代理模式结合了代码编辑和工具调用来完成指定的任务。 处理请求时,它会监控编辑和工具的结果,并不断调整以解决任何出现的问题。

与 Copilot Chat 的主要区别在于代理模式可以:

  • 运行命令和生成来解释环境或执行任务(例如数据库迁移、dotnet 还原等)。
  • 对错误、构建失败或单元测试结果进行迭代处理,直到需要额外输入或认为任务已完成为止。

先决条件

代理模式入门

若要在 Visual Studio 中开始使用 Copilot 代理模式,可在聊天窗格中启用 工具>选项>GitHub>Copilot Copilot>聊天>启用代理模式中的功能。

使用代理模式

在代理模式下,Copilot 可自主运作,来确定提示的相关上下文。

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

  1. 通过在工具>>>>的聊天窗格中选择启用代理模式,确保代理模式已启用。

    显示“选项”中的启用代理模式设置的屏幕截图。

  2. 打开 Copilot 聊天窗口,选择“ 询问 ”以展开模式下拉列表,然后选择 “代理”。

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

  3. 在聊天输入字段中输入编辑提示,然后选择“ 发送 ”或按 Enter 进行提交。 可以指定高级别要求,无需指定要处理的文件。 在代理模式下,Copilot 确定要自主编辑的相关上下文和文件。

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

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

  5. 确认工具调用和终端命令。 在运行终端命令或非内置工具之前,Copilot 请求确认以继续。 这是因为工具可能在计算机上本地运行,并执行修改文件或数据的作。

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

  6. Copilot 在代码修改和终端命令中检测问题和故障,然后进行迭代并采取额外措施来解决它们。 例如,代理模式可能会因代码编辑而运行单元测试。 如果测试失败,它将使用测试结果来解决问题。 Copilot 代理模式多次迭代以解决问题。

  7. 当 Copilot 处理你的请求时,请注意 Copilot 直接在编辑器内实时显示建议的代码修改。 查看“Total Changes”中的建议编辑,并在聊天窗口中选择全部保留或放弃;或者通过单击文件并在编辑器中查看代码差异,单独处理每个建议。

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

  8. 如果想要查看代理所做的单个代码更改,可以查看每个步骤中所做的特定更改,或查看上次保留或撤消更改的累积更改。

    显示使用 Copilot 代理访问单个编辑差异的屏幕截图。

    一张显示使用 Copilot 代理访问累积编辑更改的截图。

  9. 继续迭代修改代码以完善编辑或实现其他功能。

代理模式工具

代理模式可以使用以下工具:

可以查看和管理可用于响应请求的工具。 在聊天窗口中选择 “工具” 图标以查看和管理代理模式下可用的工具。

显示 Copilot 代理工具选择器的屏幕截图。

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

运行 MCP 服务器添加的其他工具不会自动启用,默认情况下未选中它们,必须进行检查才能激活。

管理工具审批

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

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

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

可以在 工具>选项>GitHub>Copilot>工具中重置工具确认选择。

显示工具确认选项的屏幕截图。

接受或拒绝更改

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

显示“更改总数”列表的屏幕截图。

单击每个文件可单独查看更改,可在其中 保留撤消 对每个代码块所做的编辑。

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

还原编辑

当你在发送请求对代码进行编辑时,你可能会想撤回其中的一些更改。例如,你想要尝试其他实现策略时,或者当 Copilot 在生成编辑时继而出现偏差时。 为此,请在提示之前选择检查点旁边的 “还原 ”,其中包含你不需要的更改。

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

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

中断代理模式请求

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

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

常见问题

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

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

  • 请确保使用的是 Visual Studio 17.14 或更高版本:在“关于 Visual Studio 的>”中检查版本。 如果您没有使用版本 17.14 或更高版本,请打开 Visual Studio 安装程序并更新您的构建。
  • 请确保已在工具>>> 中的聊天窗格设置中选择了“启用代理模式”。
  • 请尝试重启 Visual Studio。

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

  • 如果希望 100% 确信没有进行代码编辑,除非显式选择 “应用 ”或“复制”并自行粘贴代码,否则“询问”模式非常出色。
  • 代理模式可以处理相同的概念性问题,生成代码示例而不应用它们,以及其编辑代码的代理功能。
  • 如果要使用 MCP 功能,则必须选择代理模式。

Visual Studio 中的 Copilot 编辑功能怎么了?

  • 我们认为代理模式是编辑操作的一种演变,具有更好地循环处理错误、使用工具以及自动应用代码更改的能力。
  • 对于 Visual Studio 2022 版本 17.14 的初始版本,如果在工具>>>> 的聊天窗格中取消选中“启用代理模式”设置,则“编辑”模式仍然可用。

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

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

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