Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比

一点一木
• 阅读 114

AI 驱动的编码工具正在迅速发展,每次新版本的发布都承诺将改变我们的开发流程。这些工具旨在通过智能代码建议、重复任务的自动化,甚至从自然语言提示生成整个代码片段来提升生产力。10月4日,StackBlitz 推出了 Bolt.new,进一步丰富了AI 编码助手的生态系统,并迅速吸引了全球开发者的关注。几天之内,互联网上充斥着文章和视频,宣称 Bolt.new 是“ Cursorv0 的杀手”。

Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比

本文将基于我对这些工具的实际使用经验进行实事求是的比较。将分析每个工具的优缺点,告诉在何种情况下以及为什么选择其中一个而不是其他工具。

目标是提供一个清晰、平衡的概述,说明如何有效地将 Cursorv0Bolt.new 集成到现代开发工作流程中。

Cursor : AI 增强型代码编辑器

Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比

Cursor AIVisual Studio Code 的一个分支,它集成了先进的 AI 功能。根据我的经验,它提供了目前最好的 AI 辅助编码体验,在速度、准确性和用户体验方面超越了 GitHub Copilot 等竞争对手。

使 Cursor 脱颖而出的主要特性包括:

  • 智能且快速的代码补全Cursor 的自动补全功能超越了传统工具。它不仅能建议多行编辑,还能根据最近的修改预测你接下来的更改,极大地加快了编码速度。很多时候,Cursor 的建议比我手动导航到代码的下一个修改点还要快。
  • 全面的代码建议:与传统的自动补全工具不同,Cursor 能够在代码的开头、中间和结尾提供智能建议。
  • 多文件编辑Cursor 可以同时创建和修改多个文件,从而简化复杂的重构任务。
  • 集成文档:它为流行的库建立索引,使你能够在提示中包含这些上下文信息。
  • 上下文感知聊天:通过使用 @Codebase 或快捷键(Mac: ⌘ Enter,Windows: Ctrl + Enter),你可以就整个代码库提出问题。Cursor 会搜索你的项目,提供相关答案,这对于理解大型代码库非常有帮助。由于它索引了流行库的文档,答案比普通LLM(可能仅通过旧版文档训练)更准确。
  • 差异视图Cursor 在应用 AI 建议的更改之前显示差异视图,让你可以逐块或一次性接受修改。
  • 终端命令的普通语言输入:在终端中,你可以使用 ⌘ K(Mac)或 Ctrl + K(Windows) 用普通语言编写命令,Cursor 会将其转换为相应的终端命令。

这些功能创造了一个无缝的、AI 增强的编码环境,大大提升了你的工作效率,同时保持了你对代码库的完全掌控。

v0AI 驱动的原型设计

Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比

v0VercelAI 驱动工具,专为快速 UI 原型设计而打造。以下是它的几个亮点:

  • 增强的原型设计工作流程v0 使你能够快速生成并可视化组件的初始外观和感觉。它支持并排的代码生成和预览功能,类似于 Claude artifactsChatGPT Canvas 等工具,但更进一步的是,v0 集成了 NPM 包。这一集成有助于使用 UI 框架和库(如 Material-UIMUI),以更少的代码更快地构建原型。
  • 组件化开发方法:虽然 v0 版本的组件化开发不处理数据获取或后端逻辑,但它在创建独立、可复用的组件方面表现出色。这种专注于组件的开发方法与现代 React 开发实践相一致,非常适合 UI 概念验证和初始组件结构的构建。
  • UI 框架的集成v0 能够集成 NPM 包,这意味着你可以在原型设计中使用流行的 UI 框架和库。
  • 代码可移植性v0 生成的代码支持复制粘贴,方便你轻松集成到现有项目中。一旦对 v0 中的原型设计满意,你可以将代码移至完整的编辑器进行整合和优化。v0 与主代码库之间的无缝过渡简化了开发流程。

在项目开发中,我们使用 v0 进行新组件的原型设计。通常的工作流程是先通过 v0 快速生成并可视化组件的初步设计。一旦对原型满意,我会将代码转移到 Cursor 进行进一步的整合和优化。

这种方法大大加快了开发过程中的原型设计阶段,使得 UI 组件的迭代和实验更加迅速。

Bolt.new:浏览器中的全栈原型设计

Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比

Bolt.newv0 的概念提升到了一个新层次,提供了一个完整的全栈开发环境,直接在浏览器中运行。不再局限于单个文件和预览,Bolt.new 允许你创建和修改完整的项目,包括依赖项和配置。你可以直接在 StackBlitz 平台上部署这些项目,从开发到生产的过程更加顺畅。

  • 完整的开发环境:与 v0 不同,Bolt.new 提供了完整的全栈设置,包括 npm 包安装、Node.js 服务器以及与第三方 API 的交互能力。这让我能够原型设计整个应用程序,而不仅仅是 UI 组件。
  • WebContainer 技术:基于 StackBlitzWebContainersBolt.new 在浏览器中运行完整的 Node.js 环境。这消除了本地设置的需求,极大地节省了时间。
  • AI 环境控制Bolt.newAI 可以控制整个开发环境,包括文件系统和终端。我发现这在解决问题和进行环境设置任务时特别有用。Bolt.new 最令人印象深刻的功能之一是其一键修复错误功能。当遇到错误时,你可以让 AI 自动尝试修复,省去了手动复制粘贴解决方案的麻烦。
  • 部署功能Bolt.new 支持直接从聊天界面进行部署,简化了从开发到生产的流程。同时,你还可以通过 URL 分享正在进行的工作,方便协作与展示。

乍一看,Bolt.new 似乎提供了远超 v0 的功能,因而被一些人称为“v0 杀手”。的确,它的功能十分强大,不难想象 Vercel 作为主机服务商,未来可能会开发类似的功能。

局限性与注意事项

尽管 Bolt.new 拥有许多令人印象深刻的功能,但它也存在一些局限性:

  1. 代码重新生成:每次迭代时,Bolt.new 都会从头重新生成整个文件,即使只是小改动。这可能导致意外的修改,甚至偶尔会遗漏代码,类似于在 ChatGPTClaude 中遇到的问题。
  2. 缺乏版本控制:许多用户可能会在调试过程中遇到这一问题,耗费时间精心调整的代码可能会被 AI 生成的代码覆盖,且没有恢复功能。这使得在反复迭代过程中,代码丢失的风险增加,导致工作时间的浪费。
  3. 没有差异视图:与 Cursor 不同,Bolt.new 在应用更改之前不提供差异视图,这减少了对代码修改的控制,使得用户在接受 AI 生成的更改时无法清晰了解具体的改动内容。

尽管功能强大,这些局限性表明 Bolt.new 是对工具如 Cursor 的补充,而不是替代。它们在开发工作流中承担了不同的角色和功能,协同作用更为明显。

在快速原型设计全栈功能时,许多开发者发现 Bolt.new 尤其出色,特别是在无需设置本地环境的情况下测试涉及前后端组件的想法。其提供的完整开发环境、AI 辅助以及协作工具,使其成为开发者简化工作流程的有力工具,极大提升了开发效率。

定价

Bolt.newv0Cursor AI 都提供免费层以帮助用户入门,但在扩展时它们的定价重点有所不同。Bolt.newCursor AI 都提供了针对个人的实惠计划以及面向团队或企业的高价选项,而 v0 采用了基于积分的系统,允许用户灵活调整资源消耗。这三款工具都旨在满足个人开发者和团队的需求,但在使用限制和定制化的方式上各有不同。

Cursor
  • Hobby:免费,有限的补全次数
  • Pro ($20/月):无限补全,高级请求
  • Business ($40/成员/月):隐私模式,团队管理工具
v0
  • Free:基础访问,200 积分
  • Premium ($20/月):提升使用限额,定制功能,5000 积分
Bolt.new
  • Free:有限访问,Sonnet 3.5200K 上下文
  • Pro ($9/月):10M tokensAPI 访问

结论

在快速发展的 AI 辅助编码工具领域,Cursorv0Bolt.new 各自展现了独特的优势:

  • Cursor AI 仍然是日常编码任务的首选工具,在熟悉的代码编辑器环境中提供了无与伦比的 AI 辅助体验。
  • v0 在快速 UI 原型设计方面表现出色,尤其是在使用流行框架和库时。
  • Bolt.new 在全栈原型设计和快速项目搭建中表现突出,尽管目前由于其局限性,功能主要集中在这一领域。

虽然 Bolt.new 提供了令人印象深刻的功能,可能会在原型设计领域成为 v0 的强大竞争者,但称其为“Cursor 杀手”并不准确。这些工具在开发过程中的用途和阶段不同。对于严肃的生产级开发工作,Cursor 仍然是首选工具。

AI 驱动的开发工具领域正在快速发展,每个工具都在现代开发工作流中找到了自己的定位。对于开发者来说,关键在于理解每个工具的优势和局限,并在工作流中恰当地加以利用,以最大化生产力。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Stella981 Stella981
3年前
GraphLab与Pregel对比
一、GraphLab示例1:GraphLab完成对V0邻接顶点的求和计算!(http://static.oschina.net/uploads/img/201511/01234613_w53B.png)示例中,需要完成对V0邻接顶点的求和计算,串行实现中,V0对其所有的邻接点进行遍历,累加求和。而GraphLab中,将顶
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_