短短几年间,面向开发人员的 AI 工具领域已从新颖的自动完成插件发展为庞大且往往令人应接不暇的生态系统,其中包括智能助手、自主代理和 AI 优先环境。
本文追溯了从早期的自动完成工具(如 GitHub Copilot)到 AI 驱动的 IDE、快速原型平台和全代理系统的涌现。
为了尝试了解不断发展的格局,我不会根据表面功能对工具进行分组,而是根据 AI 在工作流程中的位置进行分组:从“一臂之力的 AI”(例如 ChatGPT)到“集成 AI”(Copilot)、“AI 优先”环境(Cursor、Replit)和针对快速原型设计等特定用例的“以任务为中心的 AI”。
GitHub Copilot 的发布时间刚好是三年前,感觉现在就像是另一个世界。
这个新兴工具提供了改进的、令人印象深刻的自动完成功能,我很幸运获得了预览权限。在我以往经验的文章中,得出过以下结论:
我的感觉是,这个工具还不能彻底改变编程,但是我坚信...它将来会产生重大的、改变游戏规则的影响。
而现在,仅仅三年之后,人工智能似乎确实改变了游戏规则。
随着氛围编码、开发人员职位的减少和人工智能驱动的软件工程师的出现,很难忽视人工智能似乎正在产生的影响。强调“似乎”,我们正处于AI炒作的顶峰。
本篇文章不会关注人工智能可能(或不可能)对我们行业产生哪些更为现实的影响。相反地,我将从实际角度来审视这些工具本身以及它们的发展情况。
我坚信这些工具可以为各种软件工程任务带来真正的价值,值得探索和采用其中的一些工具。然而,这些工具的功能、广度和数量正在迅速增加。本文章旨在为各位提供更详细探索的起点。
以下是一些值得注意的 AI 开发工具和趋势的高级时间表:
这些工具所提供的价值(可以粗略地以它们生成的代码量来衡量)一直在随着时间的推移而增加——从早期通过自动完成生成数十行代码的工具,到快速原型和代理 AI 工具,可以一次性生成数百行(甚至数千行)代码。
以下是对各种类型的工具及其功能、优势和劣势的高阶回顾。
第一个真正展示生成式 AI 在编写代码方面强大功能的工具是 GitHub Copilot,它于 2021 年底发布。
多年来,我们一直通过 IDE(例如 VS Code、IntelliJ)使用自动完成功能。基本概念很简单,编辑器使用编译器(或解释器)来完成变量、函数名称或签名,从而节省宝贵的击键和时间。使用 Copilot,界面是一样的,是一种自动完成的形式,但它不仅仅是完成几个字符,还可以生成大量的代码。
Copilot 提供的生产力提升是显著的,但也存在着风险,这个工具无法保证其生成的代码的正确性或质量。
Copilot 并不是唯一的 AI 自动完成工具。Tabnine 和 Sourcegraph (Cody) 等公司都有类似的产品,并具有额外的企业功能,例如在您自己的代码库上训练的自定义模型,以及与更广泛的 IDE 集成。亚马逊还发布了 Q,它与他们自己的 AWS 服务进行了更深入的集成。
过去几年,Copilot 及其同类产品的功能也得到了增强。它们中的大多数现在都支持某种形式的聊天功能,这允许你执行不完全遵循自动完成工作流程的任务,例如重构。它们还允许你提出问题,例如“此应用程序中的身份验证如何工作?”,这是熟悉和浏览代码库的好方法。
最后,Copilot 进一步改进了界面,最近它发布了Copilot Edits,使得跨多个文件进行工作和范围更改变得更加容易。
根据StackOverflow 2024 年开发者调查和Pragmatic Engineer 2024 年调查,GitHub Copilot 是最广泛使用的 AI 工具,而且两项调查都发现,更多开发者正在使用 ChatGPT 来编写代码。
在深入研究更复杂的 AI 开发工具之前,更值得指出的是,像 ChatGPT 这样的通用 AI 工具在编写代码以及阅读、解释和调试方面也非常强大。
截至2024年底,这仍然是开发人员中最受欢迎的 AI 工具。考虑到缺乏与开发人员工作流程的集成,这似乎相当令人惊讶——你必须将代码从 IDE 复制并粘贴到聊天中,然后再复制回来。
也许有些开发人员喜欢这种交互效果,因为它倾向于限制他们对 AI 编写代码的依赖程度,将其输入限制在更小、更集中的任务上。
使用 ChatGPT 迭代编码任务可能会感觉有点麻烦,不过随着Canvas 的发布,这种情况最近有所改善。Canvas 提供了一个界面,其中一个窗格中显示代码,另一个窗格中显示对话:
根据语言和环境,它还具有一些有限的执行代码的能力。
其他各种 AI 聊天机器人具有类似的功能,例如 Claude Artifacts。
Cursor 是 VSCode 的一个分支,发布于一年多前。
GitHub Copilot 以扩展的形式呈现,是 IDE 的一个附加组件,而 Cursor 则将 AI 功能放在了首位。它非常鼓励你在所有任务中使用 AI,包括生成提交消息、驱动终端、代码库分析、自动完成和创建整个应用程序。
现在,Cursor 的竞争对手开始变得越来越多,包括 Cline(开源)、Replit和 Windsurf。值得开发者们注意的是,Replit 拥有一个支持多种语言和框架的在线 IDE,它推出了 Replit Agent,再次将 AI 放在了首位。
Cursor 的一个有趣功能是规则,它是可用于自定义 IDE 整体行为的模型提示。你可以使用它们来鼓励 Cursor 采用特定的编码风格或适应特定类型的框架。
例如,以下是 Angular 开发的自定义规则的摘录:
[...]- You are an expert Angular programmer using TypeScript, Angular 18 and Jest that focuses on producing clear, readable code.- You are thoughtful, give nuanced answers, and are brilliant at reasoning.- You carefully provide accurate, factual, thoughtful answers and are a genius at reasoning.- Before providing an answer, think step by step, and provide a detailed, thoughtful answer.- If you need more information, ask for it.- Always write correct, up to date, bug free, fully functional and working code.- Focus on performance, readability, and maintainability.- Before providing an answer, double check your work.[...]
(来自GitHub 上的Awesome Cursor Rules项目)
是的,人们提示此工具“始终编写正确、最新、无错误、功能齐全且可用的代码”确实很奇怪。
我也对这些 AI 优先 IDE 的价值有些怀疑。虽然 AI 仍然有些不可靠,但我个人倾向于节制使用这项技术的程度。
此外,虽然 AI 擅长编写代码,但它在更细致的工程任务(即创建高质量、可靠且可维护的代码)方面仍表现不佳。然而,这并没有阻止 Cursor 获得大量追随的粉丝,随着底层大语言模型的改进,这些工具还会升级增强的。
我将其归入此类别的另一个值得注意的工具是Aider,它提供了完全基于终端的用户体验。我将其归入 IDE 类别是因为它的目标基本相同,即将代码生成、聊天、代码库映射、Git 等集成到一个工具中。
我看到的第一个使用 LLM 进行 UI 原型设计的例子是在五年前在 X 上分享的,当时 Copilot 尚未发布:
以今天的标准来看,这个看起来非常笨重的演示引起了很多人的兴趣和怀疑。今天的工具(v0、Bolt 以及最近的 Lovable)功能更加强大,可让你在一两个小时内创建中等复杂度的应用程序。
虽然我将它们描述为快速原型制作工具,但需要注意的是,它们不仅仅是视觉原型,它们完全能够实现简单的产品逻辑。在这种情况下,我相信各位也可以完全在这些工具中创建出具有生产质量的软件或游戏版本,它们都包括一个功能齐全的编辑器,让你能够直接与代码交互。
至于代码本身,我发现它结构良好且干净,但是并不完美。他们确实有重复代码的习惯;重构不是一个考虑因素。
我现在会毫不犹豫地使用这些工具来创建原型。除了对话提示外,你还可以添加详细的规格和屏幕截图,从而进一步加快流程。尽管有时他们会陷入困境,最终遇到无法解决的复杂错误或难以实现的功能。
最后,我们来看看最先进的人工智能工具——代理(Agent)。这些工具的目标是代表我们承担重要任务,例如修复错误或从积压工作中获取工单。它们的目标是取代我们(一部分人)。
Devin 可能是比较知名的 AI 代理,这要归功于大量的媒体报道以及20 亿美元的估值。Devin 是一个完全自主的代理,你可以通过聊天界面与其互动,这应该会让你感觉就像是软件开发团队的任何其他成员一样。
不幸的是,他们的初始版本显示 Devin 在 Upwork 上完成一项自由职业软件任务,这还是有点夸大了该工具的功能,随后的人员评论褒贬不一。
我在这里与 AI IDE 有着同样的担忧,引用之前的话“虽然 AI 仍然有点不可靠,但我个人的偏好是适度使用这项技术。”
但再次申明,人工智能的能力正在以惊人的速度增长。
另一个自称“代理”的工具是 GitHub Copilot Workspaces,尽管它与 Devin 的主张截然不同。工作区也可以接手大任务,但它不是单独处理,而是遵循头脑风暴、任务生成然后执行的协作工作流程。
你还可以迭代和优化每个步骤。尽管它可以承担的任务规模很大,但你还是会感觉一切尽在掌控之中。我尝试过几次,印象还不错。
最后,GitHub 宣布了Copilot Agent Mode的预览版,它可以对一项任务进行多次迭代,直至完成为止。
AI 开发工具的进化速度与底层模型开发的速度一致地快,非常快!
虽然各种类型的工具表面上看起来截然不同,但它们具有大致相似的功能(多文件支持、聊天、自动完成)。我认为更大的区别在于 AI 的定位。考虑到这一点,我大致将这些工具描述为:
理解应该采用哪些工具可能会令人困惑(都不采用还是全部采用?)但考虑到上述情况,我认为第一步是确定你想在工作流程中将 AI 定位在何处。
就我个人而言,更喜欢集成 AI 方法,我希望能够快速与 AI 互动,但最终希望能够掌控一切……
就目前而言来说,就是这样。
作者:罗伯特
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。