🚥 Koji 按: 昨天 Yusen 充了 500 美元的 Devin (团队版本),我也搭车一起体验。感受非常震撼,我第一次感受到:「AI 真的变成了一个会思考、会汇报、甚至会向上管理的 Agent」。
就在我准备自己写一篇文章记录、分享、对比我最近使用 Devin vs Cursor 的体验时,我发现了 Yan Wang 已经写好一篇,把我想表达的几乎都写了,而且写得更细致、生动,因此转载到「十字路口」和大家分享。
ps,我用 Recraft 生成了一系列「对决」的图片,配合到本文。(Recraft 才是最近最让我上头的 AI 产品)
🚥 本文作者 Yan Wang: 奥运火炬手,私人飞行员,咖啡烘焙师,常春藤博士。个人网站:Computing Life[1]
最近我充了 500 美元一个月的 AI 编程工具 Devin。他号称是一个全能的实习生,可以做很多传统的 AI 工具,比如 Cursor 和 Windsurf 之类做不了的事情。在使用了一段时间之后,我确实感到了他和 Cursor 在设计理念和使用体验上有着巨大的不同,在这篇文章里面总结一下。
要注意的是我这里说的 Cursor 不是传统的类似自动补全的 Copilot,或者类似 Copilot Chat 那种通过自然语言来编程的工具,这里的 Agent Cursor 指的是 Cursor 最近刚发布的 Agent 模式。在 Cursor Composer 里面,现在可以把模式从 Normal 切成 Agent,然后在里面提出需求,接着 Cursor 就会调用各种工具来为你迭代的完成任务。整个体验和 Windsurf 极其类似,因此,这里所说的 Agent Cursor 已经是一种相当先进的,以 Agent 的方式通过调用电脑上的各种工具多轮完成任务的一种产品形式。
总的来说,我最明显的感受就是Devin 的设计理念和目标与 Agent Cursor 非常不一样。
跟 Cursor 的交互更像是一个与工具的交互。而 Devin 更像一个人。下面的三个方面都是围绕这个区别的。
局部执行 vs 全局规划:从指令完成到流程主导
在使用 Cursor 的过程中,我有一个明显的感觉是,它像是一个严格执行具体任务的技术员。只要给它一个明确的指令,它就可以快速执行,输出结果。
但 Davin 则更像是一个更有章法的复杂系统或者说实习生。它会有着更完整的工作流程思维,会先制定一个高层计划,然后再细分步骤执行,验证成果。
虽然 Devin 和 Cursor 都会有多轮迭代这个特性,但 Cursor 的迭代只是为了进行测试,来验证自己有没有完成目标。而 Devin 则更像是一个职场老油条,它会先列一个高层的计划,然后一个个打勾,在这个过程中还会不断地调整策略,让你始终知道它做到哪一步了,而且让你相信整个项目的进度也在它的掌握中。这是一个非常有意思的区别,而且也确实让 Devin 可以去完成更加复杂多变的任务,提供更加系统的解决方案。
比如我们尝试了让两个 AI 都去克隆一个网站,Devin 在更高层的抽象思考和计划制定方面明显更强,他会知道先调用各种工具,把这个网站下载到本地,然后去观察每一个网页和模块的作用与样式,然后再着手规划网页结构,最后再着手执行。但 Cursor 给人的感觉就是明显不是为了这种难度的工程设计的,它的第一次迭代没有想到要先把网站下载到本地,而是直接 hallucinate 了一个网页出来。然后,在明确被提醒先把网站内容爬下来之后,他又漏了很多重要的细节,做出来的网页只是一个非常简化的版本。
所以总的来说,二者的设计目的感觉是非常不一样的。Devin 的设计的时候更像是把它当做一个有章法有计划的软件工程师来设计,而 Cursor 则更多的是一个帮助我们快速自动的解决一些明确的相对小的问题的工具。
工具使用的灵活性
他们的第二个差别在于工具使用的灵活性上。Cursor 能调用的 agent 主要是文件系统、生成代码和执行命令。但是Devin 可以调用更多的工具,比如说它可以启动浏览器,用视觉能力来理解前端的内容,甚至可以做一些跟前端交互的自动化测试。
它还可以调用自己的 LLM(对应实习生的大脑?),可以用自己的脑力来完成一些相对独立的更灵活的任务。 举个例子,我的 blog 有一些链接需要修复。这些链接错误的模式没有明显的规律,因此 Cursor 在面对这种问题的时候就显得力不从心。它没有办法从这些错误的链接中间总结出一些规律,然后写一个程序来批量处理。换言之,这个问题本身就不适合用编程来解决,而需要更高层次的智能。而 Devin 很好地解决了这个问题。它在整个过程中间没有使用任何编程,而就是打开一个个的文件,用它的 LLM 去理解,找到其中的问题所在,并且把它修复(PR 在这里[2])。这个不同一方面佐证了在上一点中我们提到的章法的差异。另一方面也说明 Devin 拥有的这些更多样的能力,可以让它经过组合来完成更加复杂的任务。
但是这种工具使用的灵活性也是一把双刃剑。比如,在另一个例子里,我让 Devin 和 Cursor 都去 CVPR 的网站上,把今年的 2000 篇文章的作者标题和 PDF 链接下载下来。Cursor 对于这种明确的需要编程的任务表现的一如既往的好。它很快写了一个爬虫,解析了 CVPR 网站的内容,并且生成了最终的结果文件。但 Devin 则选择了另一条意外的手工路线。它首先打开浏览器,在用图像能力阅读了浏览器、阅读了第一页之后,给了我一个只有三篇论文的结果文件。
在被质问"这只有三篇,其他的呢?"以后,它竟然再次选择用浏览器打开网页,一页一页三篇三篇的输出。这个流程真是让人哭笑不得。从某种程度上来说,也确实像在带一个勤奋但是没有经验的实习生。只是从工具和完成任务的角度来说,Cursor 的稳定性和完成任务的能力在这里是更重要的。
Prompt 与知识的动态成长
另一个相关的差别是,他们对于知识的管理和迭代。在 Devin 的使用中他非常强调知识和经验的总结和积累,比如在上面的 CVPR 抓取的例子里,我给了他一个反馈是:"你需要先看一下有多少个文章,如果文章数量多的话,你需要选择用程序来批处理。"在我给了他这个 feedback 以后,他就自动生成一条知识,说下次如果在做网络抓取的时候,需要根据数据的规模来分情况处理。接着当我又让他做一遍 CVPR 这个任务之后,他就没有再掉到同样的坑里了。
这种动态迭代与进化的设计,让整个过程特别像带一个实习生。包括我让 Devin onboard 一个新的 Github repo 的时候,也是我带着他一起去初始化这个 repo、安装各种依赖,以及教他怎么样跑各种测试,在什么情况下说明什么组件没有问题。带了一遍以后,他也把这些信息都转变成知识,再后来他也就可以非常熟练地处理我的 blog repo 了。
这种动态进化的设计在 Cursor 上暂时还没有看到,但是我比较乐观,这个是 Cursor 很容易实现的。现在 Cursor 已经可以使用.cursorrule这样的文件来自定义每个工程特定的知识,所以它的 mechanism 是已经在那里的,只要接入一个整理知识的 prompt 应该就可以了。
多一句嘴,在 prompt 方面,Devin 有一个文档[3],我感觉特别有帮助,他会教你什么样的 prompt 在与 Devin 沟通的时候是最有效的。比如你需要明确定义成功的标准,比如要跑通某个测试,或者访问某个链接能对得上等等。这个和我们在builder's mindset 课程[4]里面的观点不谋而合,而且当你把同样的原则应用到使用 Cursor 的过程中间的时候,也会发现 Cursor 一下子也变得聪明了很多,可以自主验证有没有完成任务并且进行迭代。
可控与场景
正因为这三个设计和产品方面的区别,给我一个很明显的感受:DeVIN 设计出来就是为了像一个人一样,有章法、会成长,虽然不可控性更高。比如有时候他会对着我一个 MD 文件发呆十分钟,我甚至怀疑他在后台偷偷玩手机。
但是也更擅长做更复杂的项目。相比之下,Cursor 是一个更直观的编程工具,你会知道他可能会掉什么坑里去,并且事先加以预防,但这个对 Devin 来说就更加困难一点,有时候甚至他掉坑里了,事后复盘都不太懂他为什么会犯这个错。
对于实际的使用来看,我目前会更倾向 Cursor,因为这两个工具所针对的场景其实相差很大。
Devin 更强调对于软件工程进行复杂开发。比如他一个月要 500 美元,而且跑起来也很慢,一个小项目跑个半小时几个小时很正常。
但如果这个项目可以用 Cursor 来完成的话,他可能五分钟就跑完了。所以 Cursor 更适合做一些更贴近生活、更轻量级的小任务。而且我相信 Devin 的很多设计和经验,包括 Prompt Engineering 的技巧和迭代的思路,都可以被 Cursor 轻松实现。
所以也许 Cursor 的竞争对手其实不是 Devin,而是 ChatGPT。
换言之,如果你想要的其实不是一个代码,而是一个 artifact,比如一个图标,一个文档,甚至一个 photoshop 的图像,都可以用 Cursor 来做。只有当最终想要的 deliverable 是一个复杂的软件工程的时候,Devin 才是一个更适合的工具。
下面我也会继续探索 Devin 有没有什么更好玩的用法,来让我们每天的工作和生活更加便利。
原文发布于 Computing Life[5]
参考资料
Computing Life: https://yage.ai/
这里: https://github.com/grapeot/blog/pull/31
一个文档: https://docs.devin.ai/learn-about-devin/prompting
builder's mindset 课程: https://maven.com/kedaibiao/genai
原文发布于 Computing Life: https://yage.ai/devin-vs-agent-cursor.html