GitHub Copilot新增Agent模式:自主解决Bug与修改功能

科技时尚 2025-02-16 荣骊达人 4840

GitHub Copilot 现在也支持 Agent 模式了,也就是你交代给它一项任务,包括改 Bug 或者开发新模块,不需要去特别说明相关的代码,它会自动去代码去找到合适的代码,并解决问题,就像你雇了一个工程师

需要先下载 VS Code Insiders,然后在 GitHub Copilot Chat 的设置中启用 Agent 模式。

另外他们首次展示了自主 SWE 智能体,也就是一个完全自主干活的 AI 软件工程师,你只要下指令,不需要手把手的教它,它就能独立去完成任务,演示视频中(见正文倒数第二段),可以直接后台修复 GitHub 上的 Issue,并且会实时更新进展,最后的 PR,人类可以反馈,还可以进行修改。

更多详情可以看下面他们的博文:

GitHub Copilot:智能体觉醒

在 VS Code 中为 GitHub Copilot 引入 agent 模式,宣布 Copilot Edits 正式上线,并首次展示我们的 SWE 智能体。

GitHub Copilot agent 模式

当我们在 2021 年推出 GitHub Copilot 时,我们的目标非常明确:让开发者的生活更轻松,提供一个帮助他们编写更好代码的 AI 对手程序员(AI pair programmer)。“Copilot”这个名字体现了我们的信念:人工智能(AI)并不是要取代开发者,而是始终站在他们这一边。就像称职的副驾一样,Copilot 也可以独立飞行:比如在提供 Pull Request 反馈、自动修复安全漏洞或为如何实现某个 Issue 进行头脑风暴时。

今天,我们通过更多智能体化(agentic)AI 的力量升级了 GitHub Copilot[3],在 VS Code 中推出了全新的 agent 模式,并宣布 Copilot Edits 正式上线。我们还为所有 Copilot 用户在模型选择器(model picker)中加入了 Gemini 2.0 Flash。更令人期待的是,我们首次展示了 Copilot 的全新自主智能体(autonomous agent),内部代号为 Project Padawan。从代码补全、聊天与多文件编辑,到工作区和智能体——Copilot 始终将人类置于软件开发这一创造性工作的中心。AI 会帮助你完成那些不想做的琐事,腾出更多时间去做你真正想做的事情。

Agent 模式预览版现已上线

GitHub Copilot 全新的 Agent 模式可以自行迭代其生成的代码,识别错误并自动修复。它还可以建议需要在终端执行的命令,并提示你执行这些命令。它还能分析运行时错误并具备自我修复能力。

在 agent 模式下,Copilot 不仅会迭代它自己的输出,还会迭代该输出带来的结果,并一直迭代下去,直到完成你所要求的一切子任务。也就是说,它不再只是执行你指定的单个任务,而是拥有推断其它必要任务的能力——即使你并没有在指令里显式要求,但这些附加任务对最终结果而言是必不可少的。更棒的是,它还能自行发现并修复错误,而不再需要你手动将终端中的信息复制/粘贴回聊天窗口。

下面这个示例演示了 GitHub Copilot 如何构建一个用于跟踪马拉松训练的 Web 应用:

要开始使用,你需要先下载 VS Code Insiders,然后在 GitHub Copilot Chat 的设置中启用 agent 模式:

VS Code 的设置界面,搜索框内输入“Copilot Agent”,并显示了“Chat Agent: Enabled”选项

接着,在 Copilot Edits 面板中,将模式从 Edit 切换到 Agent(就在模型选择器旁边):

Agent 模式将彻底改变开发者在编辑器中的工作方式;同样,我们也会将它带到 Copilot 支持的所有 IDE 中。我们也清楚,目前的 Insiders 版本并不完美,欢迎你随时提供反馈,帮助我们在接下来的几个月中持续改进 VS Code 以及底层的智能体技术。

Copilot Edits 在 VS Code 中正式上线

去年 10 月,在 GitHub Universe 上我们宣布了 Copilot Edits。它结合了 Chat 和 Inline Chat 的优势,采用会话式的交互流程,并且能够在你管理的一组文件中进行内联修改。

过去你们提供的反馈[4] 和 建议[5] 对我们帮助极大,使得这项功能今天得以在 VS Code 正式上线。感谢你们!

在 Copilot Edits 中,你可以先指定要被编辑的一组文件,然后用自然语言向 GitHub Copilot 发出需求。Copilot Edits 会在你的工作区内对多个文件进行内联修改,并提供专门的界面以便快速迭代。你可以在编写代码的状态下随时审阅建议的更改、选择可行的部分,然后再通过后续对话来持续改进。

在 Visual Studio Code 中的 Copilot Edits 面板里添加了多个文件

在幕后,Copilot Edits 借助了一种双模型架构来提高编辑的效率和准确性。首先,基础语言模型(foundation language model)会结合 Edits 会话的完整上下文,生成初始的修改建议。你可以在 OpenAI 的 GPT-4o、o1、o3-mini,Anthropic 的 Claude 3.5 Sonnet,以及如今新增的 Google Gemini 2.0 Flash 之间进行选择。为了带来更优体验,我们开发了一个推测式解码(speculative decoding)端点,对代码改动的应用进行优化。在编辑器中,基础模型的修改建议会被发送到这个推测式解码端点,然后在内联方式显示给你。

Copilot Edits 之所以能奏效,是因为它将掌控权交给你,包括设置正确的上下文并决定是否接受更改。整个过程充满迭代:当模型给出的方案有误时,你可以在多个文件中查看更改,接受正确的部分,然后继续与 Copilot 进行讨论,直到你们一起到达满意的解决方案。接受更改后,你可以运行代码验证是否生效;如果有需要,还可以在 Copilot Edits 中撤销更改,回到之前的可用状态。

Copilot Edits 位于侧边栏(默认在右侧),因此你可以一边在左侧的资源管理器、调试或源代码管理视图中进行操作,一边在右侧查看和审阅所提议的修改。举例而言,你可以在左侧打开测试视图[6]执行单元测试,同时在右侧的 Copilot Edits 中查看建议的改动;这样在每次迭代后,你都能立刻验证修改是否通过单元测试。

在使用 Copilot Edits 时,语音输入[7] 也是一种非常自然的方式。只需“对着” Copilot 说出你的想法,就能实现顺畅且具有对话感的交互。这种感觉就像与一位具有专业领域知识的同事在真实场景下进行结对编程一样,进行不断的迭代。

我们未来的开发规划包括进一步提升应用修改时的推测式解码性能、支持从 Copilot Chat 切换到 Copilot Edits 时保持上下文、自动推荐合适的文件加入编辑范围、以及允许你对单个代码块的修改进行撤销。如果你想第一时间体验这些改进,请务必使用 VS Code Insiders[8] 以及预发行版本的 GitHub Copilot Chat[9] 扩展。想要帮助改进这项功能,请前往我们的仓库提交问题[10]。

在 VS Code 正式上线的同时,Copilot Edits 也已经在 Visual Studio 2022 中进入预览阶段。

Project Padawan:GitHub 上的 SWE 智能体

SWE 智能体最早在 这篇论文[11] 中被提出。这类智能体是 AI 驱动或自动化的系统,可协助(或代表)软件工程师完成各种开发任务,比如生成与审阅代码、重构或优化代码库、自动化测试或流水线,并为架构、错误排查和最佳实践等提供指导。它们旨在分担一些例行或专业化的工作,让软件工程师能够专注于更高价值的任务。SWE 智能体的性能通常通过 SWE-bench[12] 进行评估,SWE-bench 包含了来自 GitHub 上 12 个热门 Python 仓库的 2,294 个 Issue-Pull Request 对。

我们很高兴能够为大家首次展示我们的自主 SWE 智能体,以及它如何融入 GitHub 的使用体验。当今年晚些时候我们推出“Project Padawan”(暂定名称)时,你将可以直接在任何 GitHub 客户端中把 Issue 分配给 GitHub Copilot,让它自动生成完全测试过的 Pull Request。一旦任务完成,Copilot 会分配人类评审来审查 PR,并根据他们的反馈继续完善。可以想象,这几乎就像把 Copilot 本身当作一个贡献者加入到 GitHub 上的每一个仓库中。

在幕后,Copilot 会为它被分配的每个任务自动创建一个安全的云端沙箱。随后会异步克隆仓库、配置环境、分析代码库,编辑相关文件并进行构建、测试和 Lint 检查。此外,Copilot 还会结合 Issue 或 PR 中的讨论内容,以及仓库内的自定义指令,从而充分理解任务的全部意图以及项目的指导原则和规范。

与我们在 Copilot Extensions 以及 Copilot 模型选择器上的做法相同,未来也会提供更多机会让大家在这种“AI 原生”的工作流里进行集成,并与合作伙伴和用户保持紧密的反馈循环。我们相信,当 Project Padawan 完整上线时,它会彻底改变团队在处理那些关键但重复乏味的任务(比如修复 bug 或创建并维护自动化测试)时的方式。归根结底,我们的宗旨是通过让 Copilot 分担这些工作,让开发者能够专注于真正重要的事情。放心好了,我们会保持耐心,不会让这个智能体堕入“黑暗面”。

引用链接

[1] Posts by Thomas Dohmke:https://github.blog/author/ashtom/

[2]@ashtom:https://github.com/ashtom

[3]升级了 GitHub Copilot:https://github.com/features/copilot/whats-new?utm_source=agent-awakens-announcement&utm_medium=blogtop&utm_campaign=agentic-ai

[4]过去你们提供的反馈:https://github.com/microsoft/vscode-copilot-release/issues/95

[5]建议:https://github.com/microsoft/vscode-copilot-release/issues/1098

[6]测试视图:https://code.visualstudio.com/docs/editor/testing

[7]语音输入:https://code.visualstudio.com/docs/editor/voice

[8]VS Code Insiders:https://code.visualstudio.com/insiders/

[9]GitHub Copilot Chat:https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat

[10]请前往我们的仓库提交问题:https://github.com/microsoft/vscode-copilot-release?utm_source=agent-awakens-announcement&utm_medium=blog&utm_campaign=agentic-ai

[11]这篇论文:https://arxiv.org/abs/2405.15793

[12]SWE-bench:https://www.swebench.com/