第四次工业革命|Cursor 体验报告

最开始听说 Cursor 这个工具的时候,是在知乎的某个回答里。当时以为这又是一个借着 AI 的热度,套了个 VSCode 的壳的圈钱软件,但当某一天在一次 OpenAI 的发布会上看到展示的员工也用 Cursor 的时后,我才改变了这个鲁莽的想法,决定亲自试一试。毕竟能让世界顶级大厂的人都愿意使用,那肯定是有他的过人之处。

没想到,这一试,彻底颠覆了我的认知……

Cursor 是什么

简单来说,Cursor 是一个 VSCode 的 fork 版本,但是往里面加入了非常多 AI 相关的功能,包括更智能的代码补全,集成内部的 AI 对话框,以及本篇文章的重点内容 ——Composer 等等。

你可能会问,这和 VSCode 自己的 Copilot 有什么区别呢?区别大着呢。

简单概括 Cursor 和 Copilot 的区别:Cursor 的代码补全,不仅是能够补全后面的代码,更重要的是能对已有的代码进行修改。并且 Cursor 的上下文不仅局限于当前文件,而是整个工作区(文件夹)内的所有文件,甚至是电脑的剪切板,甚至是之前删掉的某些内容!Cursor 就好像有记忆力一般,用的越久,就越能够明白整个项目的结构。

拿一个具体的例子来举例。

我想在博客的 i18n 文件里插入一些新写好的内容。在 Cursor 里,只需要粘贴下来,然后输入第一个 " 号,接下来就只需要…… 不停按 <Tab> 就好了:

1

或者还可以调用 Cursor 的代码修改功能来实现。这个功能更适合想实现的目标比较复杂,代码补全没法直接通过上下文进行推测的情况。如果生成的有错误,还能通过代码补全自动发现并改正:

2

这些都还只是小场面。

前段时间在打 OceanBase 比赛的时候,写 C++ 的大项目。C++ 的函数定义和函数实现是分别在 .cpp.h 文件里的。如果想要增加一个函数的参数,就必须要在两个地方都进行修改。而且由于 C++ 继承的特性,经常会导致改了一个类的方法,就需要把他派生出来的所有类的方法都进行修改。

使用 Cursor,只需要在 .h 文件中增加新的参数,切换到 .cpp 的实现时,会自动补全,并且还会把所有这个函数的调用都增加新的参数!这让我能够剩下大量的时间,专注于处理思路问题和解决 bug,而不是处理这些苦力活。

但仅仅是这些功能的话,只是让我觉得这比 Copilot 聪明一些而已,但还不够为了他单独写一篇文章。真正让我觉得颠覆的功能是 ——Composer。

革命性的突破 ——Composer

昨天晚上,我在 Bing 站点管理器里查看我的博客数据的时候,突然有个想法 —— 在 GitHub workflow 弄一个脚本,每天凌晨的时候通过 Bing Url API 自动提交博客的最新 10 篇文章,这样就不会浪费每天的提交额度了。

说干就干,我立刻翻开了 Bing 提交 API 的说明文档,但是…… 看不懂啊!对于一个完全没有写过后端,前端也只是在折腾博客的时候照猫画虎了解了一些的人来说,不花个几个小时系统学习一下这些知识,真的完全没法做到。

正当想放弃的时候,我突然想到了 Composer。在这之前,除了新手教学以外,我还没用真正用过这个功能呢,那要不就试试吧!

Composer 是一个增强版的代码修改功能,他能够读取并修改你的整个工作区的所有文件,甚至还能根据要求新建文件,可以说这才是完全体的 Copilot。

稍微计划了一下,想要实现上述的功能,大概需要分成以下几个步骤:

  1. /src/content/ 下的所有 md,mdx 格式的文件找出来;
  2. 按照其 frontmatter 里的 date 属性进行排序;
  3. 处理成合适的 url 链接;
  4. 通过 Bing 提交 API 进行提交。

开始行动!直接开门见山,告诉他帮我找出最新的 10 篇文章:

3

写得很快,但是报错了…… 尴尬,难道要出师未捷身先死了吗?

把错误复制给他:

4

没想到,他通过项目的配置文件知道了我使用的是 ejs,一下子就解决了!有点惊叹。

那么接下来是把路径处理成 url 的格式。写了个 baseUrl 代表域名,让他把路径修改成网址:

5

Cursor 竟然连 baseUrl 都自动补全了,真的震惊!

但这还不够,文章的 url 是只有年份,没有后面的月和日的,再让他继续处理:

6

哎呀,又出错了,加上了年份但是没有正确去掉月和日。把错误反馈给他:

7

就这么反馈给他一下他就把错误处理好了…… 这效率太快了。

那么现在网址处理完成了,接下来就是通过 API 给 Bing 提交。直接把刚刚 Bing 的 API 格式复制给他,让他帮我提交:

8

就这么两下,实现了…… 我刚刚倒上的水还没喝几口呢……

但是看返回的信息好像没有成功提交?原来是今天的提交额度不够了,尴尬…… 那要不然改成一个一个提交,遇到限额满了就停止提交吧:

9

于是就这么完成了…… 最后只需要生成一个 GitHub workflow 脚本,让 GitHub 每天定时自动执行就好了。当然,这也只需要一句话的事情,这里就不展示了。

就这么不到 10 分钟,Cursor 就完成了原本可能需要好几个小时甚至一两天才能实现的功能。而我甚至都不需要学会前端的各种知识,就能轻松实现。

从此,我再也不需要因为一点小小的需求,而去学习大量无关紧要的知识了。唯一要做的就是把任务进行拆分,然后依次告诉 Cursor 让他帮我实现,遇到错误了就再反馈给他就好了。我甚至不需要复制粘贴……

现状与未来

我敢说,Cursor 是我到目前为止,唯二觉得能算得上是生产力的 AI 工具了,另一个是 ChatGPT。Cursor 利用现在大模型庞大的知识储备,让我能够迅速补上知识层面的漏洞。从此之后我写代码,就好像战场上的指挥官,我只需要指挥,苦力基本上可以依靠 AI 来实现。

现在 Cursor 支持的最高的模型还仅仅是 claude-3.5,不敢想象如果以后能接入 o1 等更高级的模型,Cursor 的能力会发展成什么样。

其实相较于图片,视频,音乐等领域,我觉得代码生成才是大模型最能崭露头角的地方,同时也是最容易替代人工的地方。

虽然 DALL-E、Sora 等模型能生成出来很多高质量的作品,但还是被我们吐槽一眼 AI。究其原因,我觉得还是 AI 生成的过程依旧只是照猫画虎,它并不能理解图片中的各种物理规律,更别说是视频了。

而且在这种较为「艺术」的领域,我们欣赏一部作品,欣赏的是作者创作这个作品时候的想法,又或者是欣赏某个作者的特殊的风格。我会因为一部电影是诺兰导演的而特意去电影院观看,映后会和朋友讨论片中的各种细节与伏笔,感受诺兰想通过镜头转达给我们的思考。但我若是看到一部 AI 生成的电影,我只会说「哇,这个 AI 好厉害」。

但是在代码这个领域,目标只要一个 —— 写出符合要求的代码,而这正是现在的 AI 最擅长的。

人和机器最大的不同,是人有人性。通俗一点来讲,就是人会有喜怒哀乐,会有爱恨情仇,会有希望梦想,会有诗和远方…… 这些,这是机器不具备的。但很可惜,或许是因为社会的压力,又或者是因为其他原因,有些人已经失去了这部分能力,变成了一个活着的机器了。

December 12, 2024| #工具
 0
    
🏠