尝试以扩展 VS Code 中的代理模式!

推出 Copilot Edits(预览版)

2024 年 11 月 12 日,作者:Isidor Nikolic

直到最近,您还可以在 VS Code 中以两种独立的方式使用 GitHub Copilot。您可以使用补全或内联聊天在编辑器中修改代码。或者您可以使用 Copilot 在聊天视图中询问有关代码的问题。Copilot Edits 是一项预览功能,是一种在 VS Code 中使用 Copilot 的全新方式。它结合了聊天和内联聊天的优点:对话流程以及在您管理的系列文件中进行内联更改的能力。而且它就是好用。

专为跨多个文件迭代而设计

在 Copilot Edits 中,您指定要编辑的文件集,然后使用自然语言告诉 Copilot 您的需求。Copilot Edits 在您的工作区中跨多个文件进行内联更改,其用户界面专为快速迭代而设计。在审查建议的更改、接受有效的更改以及通过后续请求进行迭代时,您将始终处于代码流程中。

Screenshot of the Copilot edits, and the proposed inline changes

Copilot Edits 之所以有效,是因为它让您掌握控制权,从设置正确的上下文到接受更改,而不是因为它依赖于一个从不出错的高级模型。并且体验是迭代的:当模型出错时,您可以审查跨多个文件的更改,接受好的更改并迭代,直到您与 Copilot 一起找到正确的解决方案。在接受更改时,您可以运行代码以验证更改,并在需要时在 Copilot Edits 中撤消以返回到以前的工作状态。

保持掌控

有一个新的 UI 概念——工作集——它让您掌握控制权,并允许您定义需要将编辑应用到哪些文件。您还可以通过拖放文件或编辑器选项卡,或按 # 显式添加文件到工作集。Copilot Edits 会自动将您在编辑器组中的活动编辑器添加到工作集。

Screenshot of the Working Set, showing the user adding index.js

工作集与撤消和重做功能一起,让您对更改进行精确控制,并允许您准确决定在何处以及如何应用它们。Copilot Edits 会在您的代码中直接显示生成的编辑,并为您提供一个代码审查流程,您可以在其中接受或放弃每个 AI 生成的编辑。Copilot Edits 不会在工作集之外进行更改——唯一的例外是当它提议创建一个新文件时。

Screenshot of the inline changes, showing the Accept / Discard widget

Copilot Edits 位于辅助侧边栏(默认在右侧),这样您可以在审查建议的更改时与主侧边栏中的视图(例如资源管理器、调试或源代码管理视图)进行交互。例如,您可以将单元测试在左侧的测试视图中运行,同时在右侧使用 Copilot Edits 视图,这样在每次迭代中,您都可以验证 Copilot Edits 建议的更改是否通过了单元测试。

在使用 Copilot Edits 时,使用您的语音是一种自然的体验。只需与 Copilot 对话,即可使来回交流变得流畅和对话式。这几乎就像与一位领域专家同事互动,使用与您在现实生活中的结对编程中使用的那种迭代流程。

Copilot Edits 让不同技能水平的用户都能轻松使用 AI 进行代码编辑。作为微软的产品经理,我可以使用 Copilot Edits 快速迭代早期想法,而无需大量编码。对于我的 VS Code 工程同事来说,Copilot Edits 帮助他们轻松地在vscode 仓库中跨多个文件创建复杂的重构。例如,一位对 Swift 一无所知的团队成员,使用 Copilot Edits 从头开始创建了一个自定义 macOS 应用程序——每次迭代后,他们都会运行应用程序,找出未奏效的地方,并向 Copilot Edits 提供适当的后续指令。

幕后

Copilot Edits 利用双模型架构来提高编辑效率和准确性。首先,基础语言模型会考虑编辑会话的完整上下文以生成初始编辑建议。您可以在 GPT-4o、o1-preview、o1-mini 和 Claude 3.5 Sonnet 之间选择您喜欢的基础语言模型。为了提供高性能体验,团队开发了一个推测性解码端点,该端点经过优化,可快速应用文件中的更改。基础模型建议的编辑会发送到推测性解码端点,然后该端点将在编辑器中内联建议这些更改。推测性解码端点比常规模型更快,但团队知道它可以更快,并且正在努力改进这一点,敬请期待。

今日可用

Copilot Edits 处于预览阶段,所有GitHub Copilot 用户今天都可以使用!您过去在#1#2 中提供的反馈对于发布此功能至关重要,因此非常感谢!

有关 Copilot Edits 的详细概述,请阅读官方文档

接下来,团队计划改进应用更改推测性解码端点的性能,通过保留上下文来支持从 Copilot Chat 到 Copilot Edits 的转换,向工作集建议文件,并允许撤消建议的块。如果您想成为第一批体验这些改进的用户,请务必使用 VS Code InsidersGitHub Copilot Chat 扩展的预发布版本。为了帮助改进该功能,请在我们的仓库中提交问题。

最终,这不仅仅是关于 Copilot Edits 本身,而是它帮助您构建什么。

编程愉快!

伊西多尔