2025年,一个新的AI流行语盛行:AI代理。Cursor、Windsurf 和 Cline 等工具已经提供了一段时间所谓的代理模式,允许开发者自动化编程任务,比如自动完成编程任务。更令人惊讶的是,广受开发者欢迎的GitHub Copilot一直没有提供这种功能,直到现在。现在,Copilot在Visual Studio Code中推出了预览版的Agent模式,Copilot在实现自主编程辅助方面迈出了重要一步。
在过去几天里,我对这个新功能进行了详细的测试。在这篇文章里,我将概述GitHub Copilot的Agent模式下能做什么及不能做什么,并且指出GitHub(或Microsoft)还有哪些需要改进的地方。
GitHub Copilot的代理模式是什么?一个AI代理程序是一个自主系统,设计用来执行任务、做决策并根据数据和用户反馈进行调整。它自主运行,以便在各个领域,包括软件开发,自动化流程处理。
Copilot 的代理模式(Agent 模式)遵循这样的原则:它自主读取文件内容、做出决策并执行代码更改,无需对每个变更进行手动确认。与传统的 Copilot 模式不同的是,用户不需要批准每一个修改。相反,代理完成任务后,用户可以审查并批准或拒绝所建议的更改内容。
GitHub Copilot的新Agent模式可以做到以下几点:
- 自动编写代码
- 给出代码建议
-
提升代码补全体验
-
自动迭代并检查其代码,识别并修复错误。
给出一些终端命令的建议,并提示用户去执行这些命令。
- 分析运行时出现的错误并执行自动修复操作。
或
安装根据上下文选择其中一种翻译。如果需要更互动的标题,选择第一种;如果需要更正式的翻译,选择第二种。
使用代理模式,你需要:
- 启用相应的功能选项。
- 配置代理所需的设置。
- 确保代理能够正常运行。
要使用代理模式,请确保你:
- 启用相应的功能选项。
- 配置代理所需的设置。
- 确保代理能够正常运行。
使用代理模式需要:
- 启用相应的功能选项。
- 配置代理所需的设置。
- 确保代理能够正常运行。
考虑到上下文可能是指导性质的,最终简化为:
使用代理模式需要:
- 启用相应的功能选项。
- 配置代理所需的设置。
- 确保代理能够正常运行。
-
下载并安装这个 Insider版(点击链接) 的 Visual Studio Code。
-
安装GitHub Copilot插件(预览版)。
-
将您的GitHub账户链接起来以启用功能。
- 打开 Copilot 编辑面板,然后从底部菜单中选择 智能模式。
完成这些步骤后,你就可以开始尝试Copilot的新自主性功能了。
Copilot Agent 的应用场景标准的 Copilot 编辑模式非常适合实现小功能和逐步改进。但 Agent 模式专为处理更大、更复杂的任务而设计。因为我主要在 Angular 生态系统中工作,我用 Angular 项目测试了 Agent 模式,但这种工作流程在不同的框架和技术中是一致的。
测试 1:使用 Angular 搭建 TodoMVC对于我的第一次测试,我要求代理根据一张简单的截图创建一个使用Angular创建的TodoMVC应用。最初,我计划使用Sonnet-3.5,但是因为Copilot目前还不支持图像输入,我不得不改用GPT-4o来完成这个任务。
不幸的是,这个看起来很简单的要求却难倒了代理商。
-
它正确地使用 Angular CLI 启动初始化了一个全新的 Angular 项目,并开始创建组件和样式。
然而,由于 GPT-4o 是在 Angular 15 上训练的,它在新项目中无法使用最新的 Angular 功能,比如新的控制流或信号特性功能。
-
更糟糕的是,代理未能引用它之前生成的文件,这使得项目上下文难以维持。
另外,它无法自行解决编译错误,陷入了一个无限循环,反而专注于一些无关紧要的文件。
与上一次不同的是,在我的第二次测试中,我要求Agent为现有的Next.js应用程序添加一个客户评价板块,并确保它能够自适应。这次,我使用了Sonnet-3.5而不是GPT-4o。
-
代理程序正确地读取了项目中的 package.json 文件,以识别相关的依赖,如 Next.js、Tailwind 和 Radix UI。
-
它然后生成了需要的组件并将它们集成到程序中。
-
将 Next.js 配置文件 进行了调整,以便可以显示占位图。
-
最初的实现看起来还不错。后来当我让代理在用户看到该部分时自动滚动,它也做得很好。
- 与第一次测试不同,代理成功自主解决了编译时的错误。
这一测试清楚地表明,与从零开始创建项目相比,Copilot 的代理模式在可以访问现有代码库时表现得更好。这与我测试其他 AI 编码代理的经验一致。
Next.js 项目中的代码审查和单元测试对于第三次测试,我要求代理审查来自前一个任务的代码,并利用Jest来添加单元测试。我想要评估的是:
- 程序代理过度修改了其之前生成的代码,这是常见的AI代码审查问题,(这是常见的AI代码审查问题中的一个现象)。
(注:句尾括号内补充说明部分为增强中文表达的自然流畅,此处根据语境进行了适当调整。)
因为项目之前没有现成的测试环境,所以它可以独立搭建Jest。
-
首先,代理程序扫描了所有代码确认Jest还未被安装。
-
它进行了代码检查,但没有提出任何修改建议——这其实是个好迹象。
然后它尝试安装并配置 Jest 并编写单元测试。
-
有趣的是,该代理希望达到100%的测试覆盖率,但却遇到了一个重大问题:它陷入了一个无限循环,无法妥善处理与JSX相关的问题。
-
没有直接修复 JSX 错误,却直接添加了一些不必要的依赖,导致 Jest 的设置被搞坏了。
- 经过多次尝试后,它终于搞定这个问题。
GitHub Copilot的代理模式(Agent 模式)是长期以来期待已久的发展,也是AI驱动的编码辅助的一大进步。它使开发人员能够通过简单的指令即可应对更大的任务,从而减少手动干预。
不过,在目前写作的时候,Agent Mode 在一些重要方面仍然不敌 Cline 和 Cursor 这样的对手:
-
有限的LLM支持:与竞争对手不同,目前Copilot只有较少的模型选择。
-
上下文限制:它暂时还不支持扩展的上下文输入,例如本地文档或网页链接等。
- 缺乏健壮性:程序在处理编译时错误和复杂项目结构时仍然存在健壮性问题,经常会陷入死循环。
说起来,GitHub 已经确认 智能代理模式最终将在所有支持 Copilot 的集成开发环境中可用,并且他们正在积极寻求反馈来优化用户体验。
我将继续关注GitHub Copilot的Agent模式,并会随时分享更新。并在新功能推出时分享更新。敬请期待我们未来的测试和比较!
共同學習,寫下你的評論
評論加載中...
作者其他優質文章