隆重推出 Copilot Edits(预览版)
2024 年 11 月 12 日,作者:Isidor Nikolic
直到最近,您还可以在 VS Code 中通过两种独立的方式使用 GitHub Copilot。您可以使用补全或内联聊天在编辑器内修改代码,或者您可以使用 Copilot 在聊天视图中询问有关您的代码的问题。Copilot Edits 是一项预览功能,它是一种在 VS Code 中使用 Copilot 的全新方式。它结合了聊天和内联聊天的优点:会话流程以及在您管理的一组文件中进行内联更改的能力。而且它就是能用。
专为跨多个文件的迭代而设计
在 Copilot Edits 中,您指定一组要编辑的文件,然后使用自然语言向 Copilot 提出您的需求。Copilot Edits 使用专为快速迭代而设计的 UI,在您的工作区中跨多个文件进行内联更改。您在查看建议的更改时,可以保持在代码流中,接受可行的部分,并通过后续请求进行迭代。

Copilot Edits 之所以能工作,是因为它让您掌握控制权,从设置正确的上下文到接受更改,而不是因为它依赖于一个从不出错的高级模型。而且体验是迭代的:当模型出错时,您可以查看跨多个文件的更改,接受好的更改并迭代,直到您和 Copilot 一起找到正确的解决方案。接受更改后,您可以运行代码来验证更改,并在需要时在 Copilot Edits 中撤消以返回到以前的工作状态。
保持控制
有一个新的 UI 概念——工作集——它让您掌握控制权,并允许您定义需要在哪些文件上应用编辑。您还可以通过拖放文件或编辑器选项卡,或按 # 显式添加文件来将文件添加到工作集。Copilot Edits 会自动将您的活动编辑器(跨编辑器组)添加到工作集中。

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

Copilot Edits 位于辅助侧边栏(默认为右侧),因此您可以在审查建议的更改时与主侧边栏中的视图(例如资源管理器、调试或源代码管理视图)进行交互。例如,您可以让单元测试在左侧的测试视图中运行,同时在右侧使用 Copilot Edits 视图,这样在每次迭代中,您都可以验证 Copilot Edits 建议的更改是否通过了单元测试。
在使用 Copilot Edits 时,使用语音是一种自然的体验。只需与 Copilot 对话,即可使来回交流变得顺畅和对话化。这几乎就像与一位领域专家同事互动一样,使用您在实际结对编程中会使用的相同迭代流程。
Copilot Edits 使具有不同技能的用户都能使用 AI 进行代码编辑。作为 Microsoft 的产品经理,我可以使用 Copilot Edits 快速迭代早期想法,而无需进行太多编码。对于我的 VS Code 工程同事来说,Copilot Edits 帮助他们轻松地在 vscode 存储库中跨多个文件创建复杂的重构。例如,一位对 Swift 经验为零的团队成员,使用 Copilot Edits 从头开始创建了一个自定义 macOS 应用程序——每次迭代后,他们都会运行应用程序,找出哪些不起作用,然后给 Copilot Edits 适当的后续指令。
幕后
Copilot Edits 采用双模型架构来提高编辑效率和准确性。首先,一个基础语言模型会考虑 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 Insiders 和 GitHub Copilot Chat 扩展的预发布版本。为了帮助改进该功能,请在我们的存储库中提交问题。
最终,这不仅仅是关于 Copilot Edits 本身,而是它帮助您构建了什么。
编程愉快!
Isidor