现已发布!阅读关于 11 月新增功能和修复的内容。

隆重推出 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 概念——“工作集”(Working Set),它让您掌控一切,并允许您定义需要应用编辑的文件。您还可以通过拖放文件或编辑器标签页,或者按 # 显式添加文件来将文件添加到工作集中。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 进行代码编辑。作为 Microsoft 的产品经理,我可以快速迭代早期想法,而无需太多编码。对于我的 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 InsidersGitHub Copilot Chat 扩展的预发布版本。为了帮助改进该功能,请在 我们的仓库 中提交问题。

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

编程愉快!

Isidor

© . This site is unofficial and not affiliated with Microsoft.