作者:Isidor Nikolic
排版:Alan Wang
如今,你可以在 VS Code 中通过两种方式使用 GitHub Copilot。你可以使用补全功能或(内联聊天(Inline Chat)在编辑器内修改代码,或者在聊天视图中向 Copilot 询问关于代码的问题。Copilot Edits 是一个全新的预览功能,它提供了一种全新的 Copilot 使用方式。它结合了聊天和内联聊天的优点:既保留了对话式的交互流程,又能在你管理的一组文件中进行内联更改。而且,它开箱即用。
Copilot Edits video
专为跨多个文件的迭代而设计
在 Copilot Edits 中,你可以指定一组需要编辑的文件,并使用自然语言向 Copilot 提出你的需求。Copilot Edits 会采用专为快速迭代设计的 UI,在你的工作区内对多个文件进行内联修改。你可以在保持编码流畅的同时,查看更改建议,接受可行的修改,并通过后续请求进行迭代。
Copilot Edits 的有效性在于它让你掌控整个流程——从设置合适的上下文到接受更改,而不是依赖一个永远不会出错的高级模型。整个体验是迭代式的:当模型出错时,你可以查看多个文件的更改,接受正确的部分,并不断优化,直到与你的 Copilot 共同找到最佳解决方案。接受更改后,你可以运行代码来验证修改的效果,必要时还可以使用 Copilot Edits 的撤销功能,恢复到之前的可用状态。
保持掌控
Copilot Edits 引入了一个全新的 UI 概念——“工作集”(Working Set),让你能够掌控编辑范围,并指定需要修改的文件。你可以通过拖放文件或编辑器标签,或者按 #
来明确添加文件到工作集中。此外,Copilot Edits 还会自动将你在各个编辑器组中的活跃编辑器添加到工作集中。
工作集与撤销和重做功能相结合,让你能够精确控制更改,并决定修改的具体位置和方式。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 Edits 的详细信息,请查阅官方文档。
接下来,团队计划:
优化“应用更改”推测解码端点的性能
支持从 Copilot Chat 无缝过渡到 Copilot Edits,同时保留上下文
推荐相关文件到“工作集”
允许撤销已建议的代码块
如果你希望第一时间体验这些改进,请使用 VS Code Insiders 以及 GitHub Copilot Chat 预发布扩展。同时,欢迎在我们的代码仓库提交问题反馈,帮助我们不断优化功能。
最后,Copilot Edits 的意义不仅在于它本身,更在于它帮助你打造的作品。
祝编码愉快!