找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

聊一聊AI编辑器 Cursor 真是太牛逼了,比 Copilot 更强大

2024-12-31 08:22| 发布者: admin| 查看: 200| 评论: 0

摘要: 深度使用 Cursor 后,我想写一篇文章来科普下这个 IDE,相比 Copilot,因其基于 VS Code 开发,所以在工程代码上下文理解上大大增强。在使用过程中,会收获到大量的惊喜和感叹,情绪价值拉满,这也是我为什么想写这 ...
 深度使用 Cursor 后,我想写一篇文章来科普下这个 IDE,相比 Copilot,因其基于 VS Code 开发,所以在工程代码上下文理解上大大增强。在使用过程中,会收获到大量的惊喜和感叹,情绪价值拉满,这也是我为什么想写这篇文章的原因。



・  ⌘  ・

 01 AI 能替代程序员写代码吗? 


网络上或者各大新闻头条,总是噱头炒作居多。一谈到 AI 写代码,就会被解读为代替程序员:以后开发软件或者 APP,只要给 AI 描述一下需求,AI 就可以给你写出完整的源代码,程序员又要失业啦。

用过 ChatGPT 或者 Copilet 的我,曾经是非常不屑的,到现在也并不认同这个观点。

但是我深刻体会到,会用 AI 编辑器的人和不会用的人以后差距会越来越大

公司领导推广 Cursor 时,以团队成员举例,称所有用过的人当中,最低的开发效率提升了 20%,最高的提升了 10 倍。我嗤之以鼻,提升10倍,你1个人顶10个人吗?我当时认为这是营销。

但是用了 2-3 个月之后,我领会到领导说的“提升多少倍取决于你的水平”这句话的含义。别人能提升 2 倍或者 10 倍,你为什么只能提升 20% ? 

Cursor 就像一个比你低一届的学生,如果你是大学生,那么它就是高中生。你是高级程序员,它就是初级程序员。所以,提升的不够多,可能是自己的水平不够。



・  ⌘  ・

 02 Cursor 为什么好用? 


所有的一切都要从 Cursor 开源(早期版本)和基于 VS Code 二次开发说起,相比 Copilot 以插件形式提供,Cursor 通过深度定制,把工作区上下文理解做到了极致,从智能代码提示迈向了 AI 编辑器关键的一步。



・  ⌘  ・

 03 工作区上下文理解能力 


我用过 Copilot  几个月,后续帐号过期,再加上试用通义灵码等工具后,没再使用了。当时的印象和感觉是,加强版的智能提示。具备一定的上下文理解能力,在单个文件内,代码补全会结合代码块所在位置,来进行提示。在 VS Code 和 IDEA 等主流 IDE 上都有插件支持,使用方便。彼时,就已经有了 Tab 工程师的雏形。


而 Cursor 为了实现更好的体验和更强大的功能,选择在 VS Code 上二次开发(早期源码),带来了强大的工作区上下文理解能力。


写这篇文章时,我准备重新捡起 CoffeeChat 这个开源项目,以把 api.md 转换成 openapi.json 为例,其部分内容为:

## 注册```httpPOST http://106.14.172.35:18080/user/register HTTP/1.1Content-Type:application/json;charset=utf-8```PS:1小时用户注册上限100个。```json{  "userName": "CoffeeChat",  "userNickName":"测试账号",  "userPwd": "E10ADC3949BA59ABBE56E057F20F883E"}``````json{  "error_code": 0,  "error_msg": "success"}```
当我浏览 api.md 的文件后,我新建了 openapi.json,于是 cursor 好像已经知道我要干啥了,我也熟悉了 cursor 的风格,于是我就只需要按 tab + 回车:

几秒钟内,我就生成了可以工作的 openapi 文档,从原来的 Ctrl+C/V 变成了按 Tab。

通过上面的几张图片,我想你可能掌握了 cursor 的生成逻辑:一小段一小段生成,即上图中的灰色字体部分。这符合大多数人的编码风格,先写框架,再填充细节。如果你仔细观察,你会发现其实请求参数和 api.md 中的不太一致。所以,你还需要对该部分进行细节填充:


图片


回顾整个过程,这里让人惊讶的是:

  • cursor 理解了我的意图,知道我需要翻译这个 api.md

  • cursor 生成的代码内容,来自于 api.md,按照 AI 的专业名词,应该称之为 embedding,我对其的理解是实时的,本地代码仓库的小规模训练数据集,使生成的代码能够按照本地仓库中的特征来生成


而这就是和 Copilet 最大的区别,也是为什么 Cursor 的母公司,Anysphere 成立短短两年,今年能在A轮融资超过6000万美元的秘诀!提升程序员的开发效率,谁会选择不付费呢?

至此,也解答了文章开头所说的问题,AI 编辑器不会代替程序员,而是会成为我们的好帮手,提升我们的工作效率,10倍程序员或许真不是随便说说,让我们接着往下看。



・  ⌘  ・

 04 一片一片生成代码 


当 copilot 还在给你一行一行生成的时候,cursor 已经可以一片一片生成了,而你要做的是:按 Tab 和 Review 生成的代码


那么,写一个 DB 函数 和 对应的 Unit Test 要多久呢?只需要几分钟。


注意,我们不是写 Demo,而是应用到实际的工作中,需要生成的代码精准,符合本地项目的代码风格。所以,这也是为什么 Cursor 会选择基于 VS Code 进行二次开发,为了获取了更高的自由度!


它会根据你工作区其他 Unit Test 的风格,和相关文件来生成,而不是莫名其妙的风格,这就是所谓 Codebase 能力:你本地代码是一个小规模的训练集(代码不会上传,但训练后的元数据会存储到云端)。

图片
以下是一个在开源项目中实操的案例演示(3倍加速):
图片
上面的视频录制时长总计 50 秒,意味者,我们在1分钟内写完了这个 DB 函数的实现,同时,写完并且跑通了 UT。


虽然这个例子比较简单,但是比较直观的给我们展示了使用 Cursor 是如何提高开发效率的。在实际项目开发过程中,我们会有一些重复的工作,比如写 UT、或者修改代码替换变量名,增加日志等等,而这些恰恰是最无趣,又恰好是 Cursor 擅长的。


以 Go Warnf 为例,当你还在对手动 %s、%d 等打印参数的类型时,在 Cursor 中只需要按一下 Tab 就能给你自动替换:


u.logger.Warnf("QueryRow userName: %s, error: %s", userName, err.Error())



・  ⌘  ・

 05 Chat 功能 


点击右上角的按钮或者按下 Ctrl+L 快捷键,我们就可以打开 Chat 面板,输入框的左下角部分可以切换大模型,建议使用 gpt-4o 和 claude-3.5-sonnet 效果较好,相当于无需翻墙的 ChatGPT。


另外,如下图所示,我们可以点击输入框左上角的 + 号,或者在左侧点击文件,添加到文件到 Chat 面板中(user.go),当你需要 AI 分析文件的源码时,或者 Code Review 和代码续写时,会十分有用。

图片


・  ⌘  ・

 06 重构、续写或修复 Bug 


当我们选择一段代码后,会显示一个浮动框,我们点击 Edit,此时我们可以让 AI 来帮我们重构代码,续写代码或者进行 Bug 修复:

图片

我们可以点击 Accept 或者 Reject 接受或者取消生成的代码。

图片



・  ⌘  ・

 07 终端错误诊断 


在程序运行过程中,如果遇到一些错误,我们也可以点击 "Add to Chat" 来咨询 AI,寻求问题的解决方案:
图片

图片

・  ⌘  ・

 08 总结 


Cursor 大火,截止到今日,15天的免费使用到期后,官方已经紧急出了修复补丁,通过绑定机器硬件 ID 来限制无限试用,但是道高一尺魔高一丈,仍然可以白嫖,不管是你想免费使用 ChatGPT,还是想体验一下传说中的 AI 写代码,Cursor 都不失为一个好的选择。


除了 Cursor 之外,国内抖音面向学生群体的豆包 marscode 和 codeium 新出的 windowsurf AI编辑器都值得一试。


前者是国内公司,目前提供了 vs code 插件和云开发环境,而 codeium 则是对个人版用户免费,企业版的价格是 Cursor 的一半,虽然初步体验下来,有所欠缺,但是当某一天我们离不开 Cursor 又面临付费时,多一个选择总是好的。


当然,Cursor 的功能远不止于此,留待读者朋友自行发掘,这里有一个视频,我个人认为介绍的比较全面,可以搜索关键字:Cursor AI Tutorial for Beginners (How I Code 159% Faster) 找到原视频查看学习。


路过

雷人

握手

鲜花

鸡蛋
返回顶部