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 代理查看单个编辑的差异。

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

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

截图,显示如何使用 Copilot 代理查看单个编辑的差异。

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

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

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

了解代理模式工具

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

小窍门

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

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

截图,显示用于Copilot 智能体的工具选择器。

截图,显示用于Copilot 智能体的工具选择器。

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

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

find_symbol工具

find_symbol工具将语言感知符号导航直接引入代理模式。 启用后,Copilot会自动使用 find_symbol

  • 查找对项目中符号的所有引用
  • 访问类型信息、声明和范围等元数据

显示在 Copilot 聊天窗格中选择的 find_symbol 工具的截图。

启用该工具后,Copilot回答问题或建议代码更改时自动使用它。

显示 Copilot 使用 find_symbol 工具分析和修改多个文件代码的截图。

支持的语言包括 C++、C#、Razor 和 TypeScript,以及安装了支持的语言服务器协议 (LSP) 扩展的任何其他语言。

为获得最佳结果,请编写明确的提示并使用支持工具调用的 AI 模型。 有关模型功能的详细信息,请参阅 AI 模型比较(GitHub Docs)

管理工具审批

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 计划 (plan-{sessionId}.json),该计划充当 LLM 可读的暂存器,用于步骤跟踪、推理和协调。

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

工作原理

请求分析

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

计划创建

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

执行和迭代

Copilot在执行计划中的每个步骤时,会更新两个文件。

  • Markdown 计划会在编辑器中以可见的方式进行更新。
  • 当 Copilot 对步骤进行优化、重新排序或调整时,JSON 计划会在后台同步发生改变。

存储

这两个文件都存储在 C:\Users\username\AppData\Local\Temp\VisualStudio\copilot-vs.

规划中使用的工具

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

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

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

启用和管理规划工具

启用 规划

  1. 打开 Tools>Options 窗格, 然后展开 All Settings>GitHub>Copilot>Copilot 对话助手 节。

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

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

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

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

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

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

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

小窍门

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

局限性

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

提供反馈

我们正在积极改进代理模式下的规划。 请在此处分享您的反馈、报告问题或提出改进建议:Copilot 对话助手 计划 - 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 对话助手 节, 并验证是否已选择该选项。

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

  3. 请尝试重启Visual Studio。

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

  • 如果您希望 100% 确信不会进行代码编辑,除非您明确选择 “应用” 或复制代码并自行粘贴,“询问”模式是一个极好的选择。
  • 代理模式可以处理相同的概念问题并生成代码示例,而无需应用它们,以及其编辑代码的代理功能。
  • 如果要使用 MCP 功能,则必须选择代理模式。

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

代理人模式是“Copilot Edits”的一种演变,具备更强的能力来反复改进错误、使用工具,并自动应用代码更改。

对于 Visual Studio 2022 版本 17.14 的初始版本,如果未选择聊天窗格中的 启用 Agent 模式 选项,Copilot 编辑仍然可用。 请查看 Tools>Options 对话框中的选项设置,位于 GitHub>Copilot>Copilot 对话助手 部分下。

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

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

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