在一段随机的无聊导致某件事发生的事件中,由同样随机的 YouTube 短片触发,该短片讲述了热门的新型基于 AI 的 IDE(光标),我决定是时候从我的 VS Code + Copilot 设置升级并尝试一下了围绕这些新时代 VS Code 分支的炒作,承诺通过无缝 AI 集成提供更好的开发人员体验。
Afsheen不久前曾简要介绍过如何使用Cursor ,但我对此一无所知,因此我联系了她,以获取有关 IDE 的第一手体验报告。这次讨论让我对 YouTube 视频进行了附带探索(因为谁不喜欢看别人使用工具?),并弹出了另一个工具( Windsurf ),一些随机的陌生人声称它比 Cursor 更好。困惑随之而来:我应该尝试 Cursor 还是 Windsurf? (不剧透警告:我决定两者都尝试一下)。
我想象(并希望)这是我对 Windsurf 和 Cursor 的比较体验的一个持续的系列。
对于我的第一个技巧,我必须向现有的看起来很旧的代码库添加一些前端功能,该代码库包含我最近见过的一些最复杂的 React 代码。
我最近才调到这个团队工作,对代码库还很陌生,总共接触了大约一周的时间。
所有的序言都说,如果你问我在哪里进行更改,我需要花几分钟才能找到确切的文件,然后花一些时间来破译编写代码的开发人员的内部独白和逻辑。
计划是只使用 Windsurf 来完成工作,但那是一个星期五晚上,暴雨打乱了任何外出计划,所以我决定使用 Cursor 重复这一壮举并进行比较。这是我到目前为止发现的。
风帆冲浪/感觉更快
由于 Claude 3.5 Sonnet 是这两门课程的主要LLM ,Windsurf 在产生响应和完成工作方面都感觉更快。 Windsurf 中对全局聊天(Cmd + L,Windsurf 称之为_Cascade_ )的响应速度非常快,但 Cursor 中存在明显的滞后。
并不是说需要速度(正确性更好),但如果最终的答案和建议更加严格和正确,那么缓慢是可以忍受的,但正如在这个特定的越轨行为中所证明的那样,Cursor 的建议与 Windsurf 的建议相当,从来没有更好,有时更糟。
Windsurf 的“写入”模式胜过光标 + 在较小的框架中验证代码建议很难!
Cursor 很礼貌 - 当任务是执行明确的指令(在主聊天窗口中)(可以视为“在这里,修改我的文件”)时,Cursor 仍然只在其聊天侧边栏中提供建议(当然,您可以为了方便而扩展)然后,您可以通过单击每个代码块顶部的微小“应用”选项来验证并提交。
另一方面,Windsurf 则很大胆:在聊天中使用“写入”模式,它将继续为您做出决定,无论是在操作发生位置附近的目录中创建新文件,还是修改现有文件。
(注:我听说 Cursor 的 Pro 计划有类似的行为,但我尚未验证。)
这种大胆使得将更改引入代码库的体验更快。
而且更好的是,因为在一个小侧边栏中验证大段代码充其量是痛苦的,而在最坏的情况下几乎是不可能的。通过将更改写入文件,Windsurf 允许您在主窗口中验证/检查代码建议,从而获得更好的体验。
在 Cursor 中添加文件上下文更容易
在 Cursor 中添加文件上下文相对容易。想要指示它使用整个代码库吗? @codebase
就可以了。想要合并编辑器中打开的两个文件吗?只需@files
就会向您显示最近的文件(同时还允许您包含其他未打开的文件)。这个简单的动作在 Windsurf 中很难执行(或者我还没有找到方法)。
[文档]表明 Windsurf 的上下文默认包含打开的文件,并且无论如何它都具有整个代码库的上下文,这可能解释了为什么 Windsurf 能够比 Cursor 更好地找到正确的文件。
但是 Cursor 在聊天窗口中添加的显式上下文让人工智能在想出解决方案之前对所要求看到的内容更有信心。
风帆冲浪往往是正确的
我实现该功能的最早步骤之一是知道在哪里进行编辑。我要求 Windsurf 和 Cursor 告诉我在哪里进行更改。
Windsurf 第一次尝试就找到了该文件;光标需要额外的刺激和关键字才能落在正确的文件上。
在后续步骤中,我要求 IDE 为我编写一个包含日期时间选择器的表单。 Windsurf 即使是第一次尝试,也使用了项目使用的现有自定义日期时间选择器组件。光标,即使经过多次尝试,也不能。起初,它使用本机组件。
当我要求它在代码库中查找自定义日期选择器并使用它时,Cursor 决定我必须从npm
安装日期选择器组件并使用它。最后,经过几次尝试,我决定将文件指向它,只有这样 Cursor 才能找出我正在寻找的正确代码。
Windsurf“主动出击”,走了整整九码
我负责添加的功能(外包给 AI)是一个简单的小菜单项,然后调用 GraphQL 突变。现在,我对 IDE 的指示根本没有让我谈论突变。
相反,我只是说了一些类似“嘿,我需要添加执行此操作的菜单项”的内容。然后继续要求 IDE 增量迭代。
光标确实设法在模型中添加菜单项、模态和表单(这就是日期选择器恶作剧发生的地方),但它无法为这一集提供合适的结局,因为它无法弄清楚如何将具有 GraphQL 调用(即使是错误的)的菜单项。
另一方面,Windsurf 似乎记住了该功能的主要目标,并通过 GraphQL 调用提出了一个几乎正确的实现。自从我开始使用 Windsurf 以来,当我用完它时,它几乎感觉功能已经完成了。
是代币大小不同的问题还是其他原因?我还不知道。
—
目前,Windsurf 似乎占据了领先地位。 UX 肯定比 Cursor 好。我觉得这样做更有成效。
在未来的日子里,我希望这两个 IDE 能够涵盖更多的开发需求,以便更好地了解每个 IDE 的工作原理以及谁在哪些方面做得更好。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai/post/20241218/Windsurf-%E4%B8%8E-Cursor-%E5%88%9D%E6%AD%A5%E6%83%B3%E6%B3%95-DEV-%E7%A4%BE%E5%8C%BA---Windsurf-vs-Cursor-Initial-Thoughts-DEV-Community/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com