一些关于 Cursor 的使用技巧

引言

最近论坛和 Twitter 上多了很多关于 Cursor 的讨论,其实我在 Cursor 刚出时就已经测试过,但当时的 Cursor 跟 Copilot 比并没有什么太大区别,所以很快就不再关注。

最近一次 Cursor 重新出现在我的视线中,是在 AI Engineer World’s Fair 2024,OpenAI的工程师在展示时暴露了他的常用工具:

  • Arc 浏览器
  • Warp 终端
  • Cursor 编辑器

OpenAI 工程师都宁可用 Cursor 而不是 Copilot,必然有其过人之处,于是我又重新下回来体验了一下,体验确实是完胜 Copilot。

上手

首先说明,Cursor 是基于 VScode 的二次开发,因此你可以将 VScode 中的配置和插件一键迁移过来,完全 0 迁移成本和学习成本。

Cursor 为什么是神

首先,是犯下傲慢之罪的 GPT4-o,它是 Copilot 唯一指定的模型,但是它的代码能力显著落后于 Sonnet-3.5,而 Cursor 能调用 Sonnet-3.5,这已经算得上一大压倒性优势。
另外,当你觉得 Sonnet-3.5 不行时,Cursor 也能切换 GPT4-o 或两个老款的超大杯模型,这一点上 Cursor 完胜。

其次,是犯下懒惰之罪的 Copilot,即使我们使用 @workspace 功能,Copilot 依然很难找到正确的文件,这是因为 Copilot 在检索文件时,是基于字符串的 Jaccard 相似度进行比较(该信息来源于下面链接中关于Copilot的逆向分析)。

而 Cursor 在使用 @Codebase 功能时,会先对当前代码仓库计算 Embedding,检索时计算的是 Embedding 向量的相似度,因此 Cursor 检索文件的相关性会明显更高。


在该例子中,Copilot 完全错误,而 Cursor 非常精准地找到了正确答案。

Cursor 的一些隐藏技巧

像 Copilot++ 之类的功能,一上手就能体验到差异,因此不再赘述,此处仅介绍一些隐藏的技巧。

1. 附加文档

在让 LLM 写代码时,一个常见的问题就是,LLM 给出的代码有时会是过时的写法,一个是因为老代码在训练数据中的占比更大,另一个是大模型的知识库有截止日期,例如GPT-4o的知识库截止日期是2023年10月,如果一个库在2024年出现了 API 上的变动,那它是不可能知道的。

Copilot 对此束手无策,但 Cursor 不同,你可以在聊天时 @文档名,这样它也会对文档的Embedding进行检索(如果没有你的文档,可以在设置里添加自定义文档的网址)。

例如在下面的例子中,我们@Pytoch,那么它就精准地将 nn.RNN 的文档页面添加到了检索文件中,回答的效果也非常好,有效避免了幻觉。

2. 生成 Git Commit Message

在 Copilot 中,在提交 git commit 时会有一个按钮,一键就能生成 commit message,虽然效果很差,但也比没有强。

Cursor 没有一个这样的显式按钮,很多人就觉得无法缺少该功能,其实不然。
这里其实有一个小技巧,那就是 @Commit,然后 Cursor 就能自动将 diff 添加到聊天中,此时你再添加自定义 prompt 即可,这里我用的是 Aider 的 prompt,效果很不错。

You are an expert software engineer.
Review the provided context and diffs which are about to be committed to a git repo.
Review the diffs carefully.
Generate a commit message for those changes.
The commit message MUST use the imperative tense.
The commit message should be structured as follows: <type>: <description>
Use these for <type>: fix, feat, build, chore, ci, docs, style, refactor, perf, test
Reply with JUST the commit message, without quotes, comments, questions, etc!

3. 购买

虽然 Cursor 有诸多好处,但最让人望而却步的是它的价格,每月 $20 实在不便宜,但淘宝上可以让人代充(70左右/月),或者拼车(3人30左右/月)。

但是拼车存在一些问题:

  1. 有人会将账号再分享给其他人,而 Cursor 对多人使用查得比较严,有时用着用着就用不了了
  2. 有人会疯狂使用 chat 次数,可能是商家或用户在逆向成 API 转手卖钱,这样虽然一个月有5000次chat,但自己可能也用不了多少次
  3. 以上的情况一旦发生,商家良心好给你换个账号,良心不好就没下文了

这也是我写这篇帖子的原因,也是希望佬友们看到 Cursor 的好处,论坛内部拼车还是更值得信赖,大家发挥聪明才智,把它的价格打下来(走正规途径,非不良导向 :xhs_036:

266 个赞

和我的软件套件居然一模一样…虽然我还是用不惯 Cursor,充了两次 pro 都没怎么用。

4 个赞

copilot 也用了embedding 的

3 个赞

感谢分享

1 个赞

昨天已经尝试使用了,对白嫖用户来说,claude 3.5 sonnet的额度似乎比官方的要多些。

1 个赞

这是怎么分析出来的?我用过 Cursor 和 Devv 都是用 embedding 检索的,而 Copilot 比起来效果明显差很多,不像是用了 embedding

3 个赞

主要还是价格吧

3 个赞

copilot也有调用embedding的接口

2 个赞

太贵了用不起 关键copilot可以无限试用

3 个赞

不买会员,一直使用自己的api,可以一直免费使用软件吗?(我知道有些功能是pro才能使用)

3 个赞

感谢分享!

1 个赞

我电脑上看到的:
~/Library/Application Support/Code:

1 个赞

可以的,只是没法用代码补全

博客里提到,向量数据库是 Copilot Enterprise customers 的专属功能。

另外,你这两个文件是 /vscode 中关于vscode的命令和设置文档的embedding,并不是代码库的embedding,见 ENOENT: no such file or directory - commandEmbeddings.json · Issue #30 · microsoft/vscode-copilot-release · GitHub

1 个赞

@neo 什么时候有 CuCusor? :smile:

13 个赞

今天试了一下,确实好用,就是无法接入deepseek模型,只能接入官转的openai模型,有大佬能适配一下deepseek模型吗?
经过oneapi转换的deepseek模型提示如下错误:

{"error":{"message":"Authentication Fails (no such user)","type":"authentication_error","param":null,"code":"invalid_request_error"}}
3 个赞


用始皇的override功能,发现vscode中在@workspace时会先调用embedding

2 个赞

你直接添加 deepseek-coder,它会识别去找 api.deepseek.com 而忽略你填的 one-api 地址。

解决办法是,你添加自定义名称,比如 my-deepseek-coder,然后在你的 one-api,改变映射 {“my-deepseek-coder”:“deepseek-coder”} 这样 one-api 如果接收到 my-deepseek-coder 就会转为 deepseek-coder 来请求了

4 个赞

可以了,谢谢佬

1 个赞

一开始我也是同样的报错,然后我做了以下几件事:

  1. 把环境变量中的 OPENAI_API_KEY 注释掉,重启 Cursor
  2. 把其他模型全部关闭,只保留 deepseek-coder

然后就成功了

4 个赞