在 Visual Studio 中使用 GitHub Copilot 代理模式,可以使用自然语言来指定高级任务。 AI 会创建一个计划,进行代码编辑,运行终端命令,调用工具,并在代码库中应用更改。 它监视结果,例如生成结果、单元测试失败或工具输出,并根据需要迭代。
与 询问模式不同,代理模式不会在单个响应后停止。 它将继续运行和优化步骤,直到达到提示中的目标或需要更多的输入。
Prerequisites
需要 Visual Studio 2022 版本 17.14 或更高版本。
使用代理模式
在代理模式下,Copilot 可自主运作,来确定提示的相关上下文。
请按照以下步骤开始操作:
打开 Copilot 聊天窗口,选择“ 询问 ”以展开模式下拉列表,然后选择 “代理”。
输入提示,然后选择“ 发送 ”或选择 Enter 键以提交它。 可以指定高级别要求,无需指定要处理的文件。
代理模式可能会调用多个工具来完成不同的任务。 (可选)选择 “工具” 图标以配置代理可用于响应请求的其他工具。
Copilot 在运行终端命令或使用未内置工具之前请求确认。
Copilot 会自动检测代码编辑或终端命令中的问题,然后采取措施。 该过程将重复,直到问题得到解决。
当 Copilot 处理请求时,它会直接在编辑器中流式传输建议的代码编辑。 查看建议的编辑,然后选择以下任意一个操作:
如果要查看代理所做的单个代码更改,可以:
继续迭代代码更改以优化修改或实现更多功能。
了解代理模式工具
代理模式可以使用以下工具来响应请求:
- 内置工具
- 模型上下文协议 (MCP) 工具
若要查看和管理代理模式下可用的工具,请在聊天窗口中选择 “工具” 图标。
根据工具的结果,Copilot 可能会调用其他工具来完成总体请求。 例如,如果代码编辑导致文件中的语法错误,Copilot 可能会探索另一种方法并建议不同的代码更改。
不会自动启用通过运行 MCP 服务器添加的其他工具。 默认情况下会清除其复选框,必须选中它们才能激活工具。
管理工具审批
当 Copilot 调用工具时,它会请求确认以运行该工具。 原因是工具可能在计算机上本地运行,并执行修改文件或数据的作。
在聊天窗口中,在工具调用后,使用 “允许 ”下拉列表选项自动确认当前会话或解决方案的特定工具,或将来的所有调用。
可以在 工具>选项>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 计划在编辑器中明显更新。
- JSON 方案在幕后演变,因为 Copilot 优化、重新排序或调整步骤。
存储
这两个文件都存储在 C:\Users\username\AppData\Local\Temp\VisualStudio\copilot-vs.
规划中使用的工具
启用规划时,一组专用的内部工具将变为活动状态。 这些工具协调 Copilot 在执行期间如何创建、更新和完成计划。
| Tool | Description |
|---|---|
| plan | 从用户请求生成初始结构化计划。 |
| 调整计划 | 根据新的上下文或反馈优化或调整计划。 |
| 更新计划进度 | 更新步骤完成状态并同步计划状态。 |
| record_observation | 捕获能够影响后续行动的运行时结果或见解。 |
| finish_plan | 完成所有步骤后,完成计划。 |
这些工具允许 Copilot 以增量方式管理多步骤工作流,维护执行状态,并保持与用户意图保持一致。
启用和管理规划工具
若要在 Visual Studio 2022 17.14 或更高版本中启用 规划 ,请执行以下作:
- 转到 工具>选项>GitHub>Copilot。
- 选择“ 启用规划”。
- 启用后, 规划 工具将显示在聊天窗口中 的工具 列表中。
可以选择性地禁用直接在聊天窗口中的“工具”列表中设置的规划工具。 如果需要禁用规划工具,建议禁用所有工具,而不仅仅是一个。 更改会立即应用到当前聊天会话。
小窍门
通过禁用各个工具,可以在开发过程中尝试不同的规划行为或调试特定步骤。
局限性
- 除非手动保存,否则计划会暂时存储,并在会话结束时删除。
- 由于结构化状态跟踪,存在轻微的延迟开销。
- 某些专用代理可能尚不支持规划。
提供反馈
我们正在积极改进代理模式下的规划。 在此处共享反馈、报告问题或建议改进: 在 Copilot 聊天中规划 - Visual Studio 开发人员社区
常见问题
代理模式对我的文件有什么可见性?
代理模式只能作:
- 属于解决方案的本地文件。
- 打开的解决方案目录中或其子目录中的本地文件。
代理模式无法访问通过文件排除功能排除的文件和目录。
对于终端命令,代理模式具有与正在运行的 Visual Studio 进程相同的权限,并且不限于上述限制。 在运行建议的终端命令之前,请仔细查看。
我在 Copilot 聊天窗口中看不到询问模式和代理模式
按指定顺序执行以下故障排除步骤:
请确保使用的是 Visual Studio 17.14 或更高版本。 在帮助>有关 Visual Studio中检查版本。 如果未使用版本 17.14 或更高版本,请打开 Visual Studio 安装程序并更新构建。
请确保在工具>>> 中的聊天窗格设置中选择了“启用代理”模式。
请尝试重启 Visual Studio。
何时应使用 ask 模式与代理模式?
- 如果希望 100% 确信没有进行代码编辑,除非显式选择 “应用 ”或“复制”并自行粘贴代码,否则“询问”模式非常出色。
- 代理模式可以处理相同的概念问题并生成代码示例,而无需应用它们,以及其编辑代码的代理功能。
- 如果要使用 MCP 功能,则必须选择代理模式。
Visual Studio 中的 Copilot 编辑功能怎么了?
代理模式是 Copilot Edits 的演变,具有更强的能力来逐步改进错误、使用工具和自动实施代码更改。
对于 Visual Studio 2022 版本 17.14 的初始发布,如果在
作为管理员,如何控制 Visual Studio 用户的代理模式的使用?
Visual Studio 中的代理模式受管理员 GitHub Copilot 仪表板上的 编辑器预览功能 标志的约束。 如果管理员关闭此设置,则订阅下的用户无法在 Visual Studio 中使用代理模式。
有关详细信息,请参阅 在企业中管理 GitHub Copilot 的策略和功能。