代码神器Cursor,有多冷艳?

08-29 826阅读 1评论

之前开坑说要介绍一下各种 agent 结构,coding agent 的各种完结,一向没抽出时刻来写。却是最近“游手好闲”看了一圈 AI 辅佐编程的产品,想简略来聊聊程序员的 AI 东西这个轻松的论题。


主动补全类产品


作业的原因是上一年我就订阅了 Github Copilot(后边简称 Copilot),一向也用得挺好。不过跟着大模型的不断降价,忽然关于 Copilot 这个雷打不动的订阅费有些主意了。所以也快速调研了一圈市面上的其他代替,看看有没有性价比更高的。


找 Perplexity 等协助引荐了一圈,在 2024 年 8 月这个时刻点,看起来最有潜力作为 Github Copilot 平替的产品是 Codeium[1]。在 PyCharm 里装上插件快速体会了一下,功用上来说跟 Copilot 根本共同。从最中心的代码补全才干来说,速度挺快,可是智能程度上比较 Copilot 仍是差了一些。不过 Codeium 关于个人用户运用来说是免费的,所以假如不是很介意那一点点的质量不同的话,也是个很好的挑选。


Codeium 与其他产品的比较[2]


在体会进程中也发现,包含 Copilot 在内的这类 IDE 插件产品,在 VSCode 下的功用要显着比 JetBrains 系列下的相同插件要强壮,不知道是不是 JetBrains 的插件体系约束了一些功用的完结。所以假如不是重度依靠 JetBrains IDE 的一些功用的话,主张在 VSCode 下运用,能取得最佳体会。像 TypeScript,Python,Rust,Go 这些言语的项目,运用 VSCode 现已是一个很不错的挑选了。


原本还想体会一下 JetBrains 自家的 AI Assistant,原厂开发应该体会能做得更好。成果发现插件商场里一片差评。仍是再等等看吧。


AI 查找类产品


在 之前的文章[3] 中介绍过一些 AI 查找和通用 chat 类产品,像 ChatGPT,Claude,Perplexity,Kimi 等咱们应该都现已很熟悉了。在编程范畴还有两个十分值得一试的产品,分别是国内的 devv[4] 和国外的 phind[5]


这两个都能够了解成为笔直范畴的 Perplexity,在上面问编程开发相关问题答复的质量会显着高于通用的查找问答产品。在这类产品呈现前,程序员处理问题的典型流程是:


  • 在 Google 上查找问题的关键词。


  • 人工查看查找成果,点击看起来最接近的链接,查看其间的详细内容,假如与自己的状况不符合,回来持续看下一个。


  • 将网页中找到的处理方案 copy 过来,再依据自己的状况进行修正,看是否能处理。


  • 假如无法处理,再回到 Google 查看下一个查找成果,或许修正查找关键词,重复这个进程。


devv 中的查找作用


而有了 AI 查找的辅佐,这个信息整合、结合自身状况生成特定代码的进程就会变得十分高效,给出处理方案的精确率也比之前高了不少。我现在差不多有 50%的状况会更优先挑选这类产品来处理技能问题,而 Google 的作用则更像是在清晰知道自己的拜访方针时的一个跳转东西。


值得一提的是,devv 还供给了 Github Repo 查找问答的功用,我在之前写 DSPy 介绍文章[6] 时就测验过利用它来协助了解项目库中的一些概念和详细完结。


冷艳的 Cursor


在调研主动补全类产品时也想到了之前看过的 Cursor[7]。在前期时它的功用还比较简略,官方 demo 是通过 chat 的办法主动写了一段 PyTorch 模型界说的代码,所以也没给我留下什么深刻印象。但最近测验了一下,发现这真是一个划时代的产品,每个功用都表现出对程序员作业流程的深化了解,交互规划上也十分天然流通,当然关于大言语模型及相关技能的运用细节上也是十分到位的,关于做 LLM 运用的同学来说也有许多值得学习的当地。所以今日介绍的主角便是它了。


主动补全和查找的问题


假如你现已深化体会运用过 Copilot 和 ChatGPT 一段时刻了,应该会发现在程序员日常作业中运用它们存在着不少改善空间。比方:


  • 主动补全只能在光标方位触发,这就导致许多时分,你需求先删去一些代码,再让 Copilot 去补全回来。典型的场景如给一个函数增加参数,你需求在许多调用它的当地把最终部分的括号删掉,再让 Copilot 补全。


  • 主动补全支撑多行生成,但常常会发现其间有一些内容是自己不想要的,有些当地需求修正。这时分就会重复触发上面这种状况,先补全,再删一点,再补全,再删一点……


  • 主动补全会恪守编程言语的规则,优点是生成的代码一般是能跑的,带来的问题是假如你写的前序代码不对,那么后边也生成不出来。所以曲线救国的办法是先写注释,或许唤出 chat 来协助生成。


  • 怎么让主动补全时模型拿到更好的 context?这时就需求了解一些 Copilot 背面怎么拼装 context 的原理,才干更好有利地势用它。


  • 除了写代码外,阅览他人写的代码、调试代码也十分花时刻。这儿就表现 chat 的优势了,但这个作业流仍是比较分裂,比方你需求把过错信息仿制下来,翻开浏览器,拜访 Claude,张贴进去,等候成果,再选中相关成果仿制回来,在代码的特定当地进行修正。


  • 除了 workflow 杂乱,才干上也各有约束。比方 Copilot 的 chat 里一般不支撑联网查找,而在线的 devv 等又不知道你的整个 codebase 信息,怎么结合两者的优势呢?


在处理这些问题上,Devin 的演示给了一个十分面向未来的幻想画面:coding agent 能够自己修正代码,调试运转,上网查找处理方案等,几乎是模拟了实在程序员的作业流。但现阶段的模型才干,或许还很难支撑这类产品快速产出安稳和可用的成果来。


Cursor Tab


让咱们来看看 Cursor 是怎么应对这些问题的。在主动补全方面,他们推出的功用叫做 Cursor Tab。它的一个实质的定位是不再局限于“补全”,而是更广义的“修正”。比方咱们前面说到的给函数加了个参数,那么在 Cursor Tab 里,它会主动识别出哪些当地调用了这个函数,然后帮你一次性把这些当地的调用都加上这个新参数,也便是按下 tab 不再是在光标后补全,而是在整个文件的多个当地 apply 修正改动。


生成多行修正,而不是补全


看描绘或许不太好了解,不过只需略微体会一下,很快就能 get 到这个功用的强壮。官网上给了一些相关比方[8],详细才干包含:


  • 多行修正,不再需求重复触发补全。


  • 猜测用户下一个改动的当地,主动跳转。比方我给一个函数加了类型注解,模型很快能 get 到我要给这个文件里的各种函数都加上类型注解,按 tab 就能跳到下一个改动主动 apply。


  • 主动将伪代码转换为可履行代码,假如记不住详细的 API,再也不必唤出 chat 了,直接写伪代码,Cursor 会帮你改成实在代码。


  • AI 支撑下的重构。传统 IDE 只能做 rename,move 等根本操作,有了 Cursor Tab,上面说到的这种加参数、修正类型的操作,也能主动协助生成修正改动了。


这个功用实在是讨人喜欢,看起来也是 Cursor 付费版的中心功用。


Inline Chat


一开始我还认为这也是个特别功用,后来发现其实 VSCode 版别的 Copilot 等插件根本也有了。简略来说假如你想让 Cursor 在做生成时有一些更清晰的指令输入,能够直接在修正进程顶用CMD + K来唤出 chat 进行交互。典型的运用场景如解说代码、生成文档、生成测验、修正特定问题等。


Inline Chat


由于 VSCode 内嵌了 terminal,所以你也能够在 terminal 里唤出 chat,让它帮你写命令行,这样就不需求切换到 Warp 里操作了,十分便利。


不过在产品体会上,Cursor 仍是比 Copilot 强了不少,比方:


  • 模型 chat 的回来一般需求一点时刻,所以在 Cursor 里能够支撑并发 chat,也便是说我能够在一个文件的多个当地引发 chat,而不必等候前一个 session 生成完毕才干操作下一个。


  • 在 chat 中能够用@操作符灵敏指定 context,这个功用或许最先是 aider 提出的?咱们后边会再详细翻开介绍。


  • 生成的 diff 作用也显着优于 Copilot,一望而知。


Chat


这也是 Cursor 与其他产品摆开体会距离的一个当地,当然它应该也学习了许多其他优异的东西产品,例如 aider[9] 等。Chat 自身的方式咱们应该很好了解,不过在 Cursor 里,把各种流程和体会细节做得十分完善,用起来极端舒畅。


以前面运用 devv 等 AI 查找东西的流程为例,现在我能够在 Cursor 中翻开 Chat,宣布相关需求,Cursor 在完结呼应后,会直接生成一个“pull request”,咱们能够直接在修正器中看到各个改动。然后就跟 code review 相同,能够提各种修正和后续要求,也能够部分承受改动后,再对剩余的进行进一步交流等。这比咱们从网站上再把代码仿制回来修正来说,体会要好上不少。这个交互方式也与 Cursor Tab 里生成修正内容的理念十分共同。


通过 Chat 生成 PR


Cursor Chat 中的功用也是反常强壮:


  • 支撑传图片,还记得 OpenAI 发布会上从概念图到代码生成的比方吗?


  • 相似 aider,支撑用@来指定文件、办法等 context,背面有 codebase 索引支撑。不过 Cursor 包含的规模更广,从文档里看,还能引进 git 提交信息,文档,整个文件夹等等。真是把程序员常用 context 信息都考虑到了。


  • 支撑整个 codebase 问答,背面应该也是典型的 RAG 技能,这就弥补了前面说的 devv 等产品不了解你的 repo 的问题。


  • 支撑 web 查找,能够在 chat 顶用@Web触发。这又结合上了 devv 的联网才干,几乎完美。


  • 支撑引进文档,主动索引新知识。用@Docs触发,或许直接在@后边把网页链接贴上去。比方我现在在用 FastAPI 开发,就能够直接把 FastAPI 文档地址、git 地址扔给 Cursor 检索,进一步精确 context 信息,而不是上网漫无目的地查找。


  • 修正器 lint 等查看出来的过错,能够一键发送到 chat 中(Cursor 会协助弥补 prompt),生成处理方案。相同,terminal 里履行的过错也能够一键发送,十分丝滑。


AI Fix in Chat


这个 AI fix 生成的内容也是一个 pull request,一次性改动多行代码,这功率可不比主动补全强一个数量级?


通过测验,即便不是付费用户,也能够自己供给模型的 API key 来运用 chat 里的大多数功用。不过 Cursor Tab,主动 apply 修正的功用缺失了,能够说刀法有点精准……


Beta 功用


此外 Cursor 还有一些试验性功用,我还没有深化测验:


  • AI review,能够让 AI 帮你 review 最近改动的代码,生成一些修正主张。


  • Interpreter mode,相似 OpenAI 的 code interpreter,能够让 Cursor 在 chat 进程中一起履行代码,查看成果,并不断迭代。


  • Composer,在前面生成单文件多行修正 PR 的基础上,进一步支撑多文件修正 PR 的生成!比方简略的代码重构、拆分出新的文件,到杂乱的端到端 feature 开发/bugfix,就都能够一步完结了,感觉离 Devin 的想象是不是近了许多?当然现在模型才干来说,这个功用的产出作用上还不安稳。


  • Shadow workspace,把上面修正代码,修正 lint 问题,履行代码,修正过错等才干结合起来,是不是就有 coding agent 的雏形了!Cursor 这儿规划了个很奇特的功用,让 AI 在一个躲藏的后台作业,做各种测验,而不会打断用户的正常操作。现在看起来是个内测功用,还没放出,所以只能估测说这个后台 agent 能够产出通过实践运转验证的更精确的代码改动。官方 blog 上也写了一些 十分风趣的技能应战[10]。


多文件 compose 暗示


能够看出 Cursor 团队确实是十分有主意,LLM 辅佐 coding 范畴能够做的风趣的探究也十分多。


展望


从上面的介绍来看,Cursor 的功用确实十分丰富强壮,每一个功用点背面都包含着关于 workflow 的深化了解和 UX 的精心规划。我在自己的一些实在项目中进行了测验,这些功用的完结度也十分不错,彻底不是那种只能从头生成一个简略脚本的 demo 产品,也难怪 Cursor 受到了许多开发者的欢迎。


结合 VSCode 里的各种功用和程序员日常作业的内容,咱们还能够展望一下未来 Cursor 的各种或许性:


  • VSCode 内置了 debugger,所以是否还能进一步凭借 agent 才干协助程序员 debug?从 stack trace 信息测验修正过错?


  • 凭借 Shadow workspace,咱们是不是能够推动 TDD 的极致,由程序员来写测验/功用 spec,AI 主动在后台生成代码,提交修正 PR?


  • 在 codebase 问答基础上,是否能依据代码来主动生成多层级的文档?能够协助程序员和其他协作者更好地了解整个项目,又不简单呈现文档与代码不共同的问题,大大提高交流功率。


假如你关于 Cursor 背面的技能感兴趣,他们的博客也很值得一读。比方这篇文章就介绍了 他们怎么构建强壮高效的代码 edit 模型[11]。其间包含了评价、模型运作形式挑选、练习数据生成、模型微调、投机采样优化等论题,尽管没有上 PPO 这些黑魔法,但全体做得仍是十分 solid 的。


数据结构 pipeline


好了,今日的介绍就到这儿啦。看完上面的介绍,是不是感觉 20 美元的月费花在 Cursor 上仍是很值的?


参考资料

[1]Codeium: https://codeium.com/

[2]Codeium 与其他产品的比较: https://codeium.com/blog/code-assistant-comparison-copilot-tabnine-ghostwriter-codeium

[3]之前的文章: https://zhuanlan.zhihu.com/p/663752574

[4]devv: https://devv.ai/zh

[5]phind: https://www.phind.com/

[6]DSPy 介绍文章: https://zhuanlan.zhihu.com/p/702228666

[7]Cursor: https://www.cursor.com/

[8]官网上给了一些相关比方: https://www.cursor.com/cpp

[9]aider: https://github.com/paul-gauthier/aider

[10]十分风趣的技能应战: https://www.cursor.com/blog/shadow-workspace

[11]他们怎么构建强壮高效的代码 edit 模型: https://www.cursor.com/blog/instant-apply


本文来自微信大众号:RandomGenerator,作者:zijie0

文章版权声明:除非注明,否则均为ZBLOG原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (有 1 条评论,826人围观)
网友昵称:战地实习记者
战地实习记者 V 游客 沙发
,详细才干包含:多行修正,不再需求重复触发补全。猜测用户下一个改动的当地,主动跳转。比方我给一个函数加了类型注解,模型很快能 get 到我要给这个文件里的各种函数都加上类型注解,按 tab 就能跳到下一个改动主动 apply。主动将伪代码转换为可履行代码,假如记不住详细的 API
08-30 回复