🚀 在 VS Code 中

Copilot 编辑(预览版)简介

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

直到最近,您可以在 VS Code 中通过两种不同的方式使用 GitHub Copilot。您可以使用补全或内联聊天在编辑器内修改代码。或者您可以使用 Copilot 在聊天视图中询问有关代码的问题。Copilot 编辑是一项预览功能,是在 VS Code 中使用 Copilot 的全新方式。它结合了聊天和内联聊天的优点:对话流程和跨您管理的多个文件进行内联更改的能力。而且它确实有效。

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

在 Copilot 编辑中,您可以指定要编辑的文件集,然后使用自然语言询问 Copilot 您需要什么。Copilot 编辑在您的工作区中跨多个文件进行内联更改,并使用专为快速迭代而设计的 UI。在审查建议的更改、接受有效更改并使用后续询问进行迭代时,您可以保持在代码流程中。

Screenshot of the Copilot edits, and the proposed inline changes

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

保持掌控

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

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

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

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

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

在使用 Copilot 编辑时,使用您的语音是一种自然的体验。只需与 Copilot 交谈,即可使来回沟通顺畅而对话化。这几乎感觉就像与一位领域专家同事互动,使用与您在现实生活中的结对编程中使用的迭代流程相同的流程。

Copilot 编辑使具有不同技能的用户都可以轻松进行 AI 代码编辑。作为 Microsoft 的产品经理,我可以使用 Copilot 编辑快速迭代早期想法,而无需进行太多编码。对于我的 VS Code 工程同事来说,Copilot 编辑帮助他们轻松地在 vscode 仓库中的多个文件中创建复杂的重构。例如,一位没有 Swift 经验的团队成员使用 Copilot 编辑从头开始创建了一个自定义 macOS 应用程序——在每次迭代之后,他们都运行该应用程序,确定哪些地方不起作用,并向 Copilot 编辑提供适当的后续说明。

幕后原理

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

今日可用

Copilot 编辑目前处于预览版,今天即可供所有 GitHub Copilot 用户使用!您过去提供的反馈 #1#2 对于发布此功能至关重要,非常感谢您!

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

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

最终,重要的不仅仅是 Copilot 编辑本身,而是它帮助您构建的内容。

祝您编码愉快!

Isidor