Cursor 是什么
Cursor 是名为 Anysphere 的初创公司开发的基于 AI 驱动的代码编辑器,按官方的原话是:Cursor is an IDE designed to pair-program with AI. Anysphere 是在 2022 年由 Michael Truell、Sualeh Asif、Arvid Lunnemark 和 Aman Sanger 在麻省理工学院就读期间共同创立。该公司的愿景是致力于构建极其高效的人类人工智能系统。首先要打造的是未来工程师:一位人类人工智能程序员,其效率比任何一位工程师都要高一个数量级。
2023 年 9 月该公司筹集了由 OpenAI Startup Fund 领投的 1100 万美元种子轮融资,前 GitHub 首席执行官 Nat Friedman、Dropbox 联合创始人 Arash Ferdowsi 和其他天使投资者参与了投资。其中,OpenAI 投资 800 万美元,占该轮融资的 72.7%。
据消息称 2024 年 8 月该公司又获得了重要的 6000 万美元的 A 轮融资,估值达到 4 亿美元主要投资者包括 Andreessen Horowitz、Thrive Capital 和 Stripe 的 CEO Patrick Collison。
作为 GitHub Copilot 的新兴竞争对手,Cursor 在去年推出后受到大量开发者的追捧与喜爱,最近一段时间 Cursor 在国内外开发圈子里又再度大火,X 上不少人表示已经把 GitHub Copilot 付费停了,转投 Cursor。出于好奇,我也体验了一下,这里记录一下 Cursor 的使用的心得和体验。
功能概览
一键导入 VSCode 上的所有已安装的扩展、主题和快捷键设置
不得不说 Cursor 的这个功能确实是个不错的用户增长手段,大大降低了用户切换编辑器的成本。很多用户不愿意迁移到新的平台除了安土重迁不愿意接受新事物外,还有一个重要的原因是用户在现有的平台已经积累了很多自己的数据,比如插件/快捷键配置/主题等等,迁移成本很高,而 Cursor 很好的解决了这个问题,用户只需要一键即可从 VScode 轻松迁移过来。如果没记错的话,网易云音乐在增长过程中,一键导入其他音乐平台的歌单的这一看起来简单的功能却起到了至关重要的作用,为云音乐带来了大量从其他平台迁移过来的用户。
支持给模型自定义 Rules
比如,你可以指定模型输出的语言,官方提供了一个例子:“总是使用函数式 React,永远不要在 Rust 中使用 unwrap,始终使用葡萄牙语回答。”
另外,也可以通过新增一个名为 .cursorrules
的文件来指定 Rules for AI,比如:
// .cursorrules
总是使用函数式 React,永远不要在 Rust 中使用 unwrap,始终使用葡萄牙语回答。
支持隐私模式
- 如果开启,你的代码不会被 Cursor 或任何第三方存储。
- 如果关闭,Cursor 可能会保存你的输入,并收集使用数据,以便改进 Cursor。
- Cursor 默认开启隐私模式
对于这一点我持怀疑态度,因为 Cursor 毕竟调用了其他家的 API,是否存储数据以及被存储的数据是否被训练是由模型提供商决定的,也不排除 Cursor 和模型供应商针对对该条款做了特殊的合作。或者模型供应商的 API 接口条款里本身就有不存储不训练的条款。
支持多模型的选择,且可使用私有 API Key
- 默认的可选的模型有
- OpenAI 系列模型(gpt-4/gpt-4o/gpt-4o-mini/gpt-3.5-turbo,以及最新的推理和代码能力超强的 o1-mini/o1-preview)
- Anthropic 系列模型(claude-3.5-sonnet/claude-3-opus)
- Curor的小模型 cursor-small
- 默认的模型为 claude-3.5-sonnet
- OpenAI 的接口支持中转服务,允许用户自定义 API 代理地址和 API key
- 允许新增模型,看下面的配置应该只支持新增OpenAI、Anthropic、Gemini、Azure OpenAI 上的模型。由于 OpenAI 的 API 配置允许用户自定义 API 代理地址和 API key,所以理论上可以新增任意兼容 OpenAI 格式的接口,比如groq、deepseek等
Cursor Tab
- 一个功能强大的 Copilot 替代方案,能够建议跨多行的代码更改。此前它被称为 Copilot++。
- 默认开启。
- 按 Tab 键即可接受建议。
- 按 Esc 键即可拒绝建议。
COMPOSER
在该模式下支持多文件,你只需要和 AI 对话,AI 会自动生成代码,你只需要按 Accept ALL 或 REJECT ALL 即可将代码自动更新到多个对应的文件中,有点类似于前段时间 Google 创始人施密特访谈 中提到的编程搭档。
Codebase indexing
- 代码库索引 Codebase indexing 会有助于提升基于代码库问答时提供答案的准确率。另外,索引是本地存储的。
- 默认索引新文件夹。也就是说 Cursor 会默认索引任何新打开的文件夹。如果关闭此功能,你仍然可以通过点击"生成索引"按钮手动索引文件夹。包含超过 10,000 个文件的文件夹将不会自动索引。
- 如果想要忽略某些文件不参与索引。可以通过新增一个名为
.cursorignore
的文件来配置。
AI Chat
- 可以选择对话使用的模型,常用的且效果好的是 claude-3.5-sonnet。o1-mini/o1-preview 理论上效果应该是最好。
- 支持图像输入。
- 通过 @X 指定要对话依赖的上下文,默认是打开的当前文件。@Files/@Folders/@Code/@Web/@Docs/@git/@codebase。顾名思义 ,
- @Files 就是选择指定作为上下文的文件
- @Folders 就是选择指定作为上下文的文件夹
- @Code 就是选择指定作为上下文的代码块
- @Web 开启联网
- @Docs 可以指定某个在线的文档作为知识的补充(需要一段时间进行离线的索引),比如某个项目的开发文档更新了,而模型训练数据时还是旧版本的问题,通过该选项可以指定最新的文档作为知识的补充。
- @git 可以指定git的提交记录等上下文。这里有一个非常有用的技巧是帮我们自动生成本次代码修改的 commit 信息。
- @codebase 就是指定整个代码库为上下文
Docs
这个功能就是在 AI Chat 窗口中 @Docs 时指定的文档,需要一定的时间进行索引。
Terminal
这个功能的意思是你在 Cursor 中 shell 敲命令时也集成 AI Chat 了。比如:
- 可以用快捷键调出 AI Chat,让 AI 帮你自动生成本次代码提交的 commit 信息
- 如果shell中一堆报错内容,可以直接点击右侧的 Debug With AI 或者 Add to Chat 按钮,让 AI 帮你 debug 问题。
一些处于 Beta 测试的功能
- 前两个是 NOTEPADS 和 WINDOW CONTROL PANEL 应该是类似窗口管理的功能,可以方便的切换窗口或关联对话的功能。
- 长上下文(LONG CONTEXT CHAT)。利用 Claude 的上下文窗口大小为 200k 的能力,扩展对话时的上下文。使用 @Folder时提及一个文件夹时,如果文件大小合适,会将整个文件夹添加到聊天中。
- AI REVIEW。使用 GPT-4 扫描当前的 git 差异或 PR 以查找bug。
写在最后
虽然 Cursor 编辑器还不够完美,且越好的体验越依赖强大的第三方模型如claude-3.5-sonnet、o1-mini/o1-preview,但因其交互的重大创新,为开发者带来了非常大的效率提升。对于想要体验 AI 辅助编程的开发者来说,Cursor(an IDE designed to pair-program with AI)无疑是一个值得尝试的选择,也无疑最终会成为大家的理想的编程搭档。