现已发布!阅读有关一月份的新功能和修复。

介绍 Copilot Edits(预览版)

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

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

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

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

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 的产品经理,我可以利用 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 本身,而是它能帮助您构建什么。

编程愉快!

Isidor

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