介绍Copilot编辑(预览版)
2024年11月12日,由Isidor Nikolic发布
直到最近,你可以在VS Code中以两种不同的方式使用GitHub Copilot。你可以使用补全或内联聊天在编辑器中修改代码。或者你可以使用Copilot在聊天视图中询问关于你的代码的问题。Copilot Edits,一个预览功能,是在VS Code中使用Copilot的全新方式。它结合了聊天和内联聊天的最佳部分:对话流程和在你管理的一组文件中进行内联更改的能力。而且它只是工作。
设计用于跨多个文件的迭代
在Copilot编辑中,您指定一组要编辑的文件,然后使用自然语言向Copilot询问您需要的内容。Copilot编辑使用专为快速迭代设计的UI,在您的工作区中对多个文件进行内联更改。在审查建议的更改时,您可以保持代码的流畅性,接受有效的更改,并通过后续请求进行迭代。
Copilot Edits之所以有效,是因为它让你掌控一切,从设置正确的上下文到接受更改,而不是因为它依赖于一个永远不会犯错误的高级模型。而且这种体验是迭代的:当模型出错时,你可以审查多个文件中的更改,接受好的更改并迭代,直到与Copilot一起找到正确的解决方案。在接受更改时,你可以运行代码以验证更改,并在需要时在Copilot Edits中撤销,以回到之前的工作状态。
保持控制
有一个新的UI概念——工作集(Working Set),它让你能够控制并定义需要应用编辑的文件。你也可以通过拖放文件或编辑器标签,或者按#
来显式添加文件到工作集中。Copilot Edits会自动将你在编辑器组中的活动编辑器添加到工作集中。
工作集(Working Sets)与撤销(Undo)和重做(Redo)功能一起,为您提供了对更改的精确控制,并允许您决定在何处以及如何应用这些更改。Copilot Edits 在您的代码中直接显示生成的编辑,并为您提供代码审查流程,您可以接受或丢弃每个由 AI 生成的编辑。Copilot Edits 不会在工作集之外进行更改——唯一的例外是当它建议创建新文件时。
Copilot Edits 位于侧边栏的次要部分(默认在右侧),这样您可以在查看建议的更改时与主侧边栏中的视图(如资源管理器、调试或源代码控制视图)进行交互。例如,您可以在左侧的测试视图中运行单元测试,同时在右侧使用 Copilot Edits 视图,以便在每次迭代中验证 Copilot Edits 提出的更改是否通过了单元测试。
使用您的语音是在使用Copilot Edits时的自然体验。只需与Copilot交谈,就能使交流变得流畅和对话式。这几乎感觉就像与一个领域专家同事互动,使用与现实生活中结对编程相同的迭代流程。
Copilot Edits 使得不同技能水平的用户都能使用 AI 进行代码编辑。作为微软的产品经理,我可以利用 Copilot Edits 快速迭代早期想法,而无需太多编码。对于我的 VS Code 工程同事来说,Copilot Edits 帮助他们轻松地在 vscode repo 中跨多个文件创建复杂的重构。例如,一位没有任何 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编辑的详细概述,请阅读官方文档。
接下来,团队计划提高apply changes speculative decoding端点的性能,通过保留上下文支持从Copilot Chat过渡到Copilot Edits,向工作集建议文件,并允许撤销建议的代码块。 如果你想成为第一批体验这些改进的人,请确保使用VS Code Insiders和GitHub Copilot Chat扩展的预发布版本。为了帮助改进功能,请在我们的仓库中提交问题。
最终,这不仅关乎Copilot Edits本身,还关乎它帮助你构建的内容。
编程愉快!
伊西多尔