隆重推出 Copilot 编辑(预览版)
2024 年 11 月 12 日,作者:Isidor Nikolic
直到最近,你可以在 VS Code 中以两种不同的方式使用 GitHub Copilot。你可以使用补全或行内聊天在编辑器内修改代码。或者你可以使用 Copilot 在聊天视图中询问有关你的代码的问题。Copilot 编辑,一个预览功能,是一种全新的在 VS Code 中使用 Copilot 的方式。它结合了聊天和行内聊天的优点:会话流程以及跨你管理的文件集进行行内更改的能力。而且它确实有效。
专为跨多个文件的迭代而设计
在 Copilot 编辑中,你指定要编辑的一组文件,然后使用自然语言询问 Copilot 你需要什么。Copilot 编辑使用专为快速迭代设计的 UI 在你的工作区中跨多个文件进行行内更改。在审查建议的更改、接受可用的内容以及使用后续提问进行迭代时,你会保持在代码的流程中。
Copilot 编辑之所以有效,是因为它让你掌控一切,从设置正确的上下文到接受更改,而不是因为它依赖于一个永不犯错的高级模型。而且体验是迭代的:当模型出错时,你可以跨多个文件审查更改,接受好的更改并迭代,直到与 Copilot 一起找到正确的解决方案。在接受更改时,你可以运行代码来验证更改,并在需要时在 Copilot 编辑中撤消以返回到先前的工作状态。
保持控制
有一个新的 UI 概念 – 工作集 - 可以让你掌控一切,并允许你定义需要在哪些文件上应用编辑。你还可以通过拖放文件或编辑器选项卡,或者按 #
显式添加文件来向工作集添加文件。Copilot 编辑会自动将你的活动编辑器跨编辑器组添加到工作集。
工作集,以及撤消和重做功能,可以让你精确控制更改,并允许你决定在何处以及如何应用它们。Copilot 编辑直接在你的代码中显示生成的编辑,并为你提供代码审查流程,你可以在其中接受或放弃每个 AI 生成的编辑。Copilot 编辑不会在工作集之外进行更改——唯一的例外是它建议创建新文件时。
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 Insiders 和 GitHub Copilot Chat扩展的预发布版本。为了帮助改进该功能,请在我们的存储库中提交问题。
最终,这不仅仅是 Copilot 编辑本身,而是它帮助你构建的内容。
祝你编码愉快!
Isidor