探索 Cursor—AI 编程的“版本答案”之一¶
文档目标
- 科普当前 AI 编程的“版本答案”之一——Cursor 的概念及使用
- 帮助了解 Cursor 的基本用法和高阶用法
- 探讨 Cursor 的适用场景和短板以及最佳实践
阅读受众
- 对 AI(或 LLM)编程感兴趣,希望了解当下相关工具来帮助理解
- 想要进一步了解 Cursor 及其使用方法与最佳实践来提升编程效率
0. Insight¶
- Cursor 与传统 IDE 相比的核心优势,是做到了足够优秀的人机交互和效果足够好的 LLM
- Cursor 的本质是基于 LLM 的交互工具。它能够在很多场景下有效解决问题,尤其是快速代码开发、执行重复性任务、解决常见编程问题等,但 LLM 带来的局限性也很明显,如结果随机性、上下文窗口限制、无法创新以及缺乏垂直领域的深度知识等。这意味着它需要用户在使用过程中主动验证和调整,不能完全依赖
- Cursor 并不是“银弹”。它更适合快速实现 MVP、重复性任务的自动化、解决跨领域问题、中小型项目的开发与优化等。对于复杂的工程项目,Cursor 的使用门槛会显著提高,尤其是当需要高度定制化或深度专业知识时,它的表现往往会显得力不从心
- 当前最好的协作模式是“人工 + 半自动化”。Cursor 可帮助用户完成大部分基础性和重复性工作,但当尝试让其完成更复杂或精确的任务时,用户需要投入大量精力进行提示工程和结果校验等。换句话说,从 80 分到 100 分的提升,成本和难度会成倍增加,尤其是在复杂场景下
- Cursor 的价值在于辅助开发者,而非替代开发者。不要期待它完全驾驭你的项目,而是需要你主动学习如何更好地驾驭它。这种“工具心态”能够帮助用户充分利用 Cursor,而不是对它产生不切实际的期待
- 对 Cursor 的使用需要一种“降低预期,多一些耐心”的心态。它并不是全能的解决方案,而是一个用好能大幅提升效率的工具。用户需要在使用过程中不断实践去试探其边界,找到适合自己的最佳使用方式
1. 引言:我眼中的 Cursor 从爆火到“祛魅”¶
从接触 Cursor 我大概经历了以下心路历程:爆火期—>体验期—>祛魅期—>理性期。
——爆火期
我第一次听到 cursor 是去年大概9月份左右开始,刷推特时就经常能看到类似如下的言论,特别是在11月份爆火:
- “我用 cursor 在 xx 小时内完成了某个项目或产品”
- “作为编程小白使用 cursor 在短时间内完成开发了一个 xx 项目或产品”
- .......(也不乏类似 “零编程经验的小学生/小朋友使用 cursor 完成上架了一款 xx 产品”)
然后就是在 youtube 上也开始看到不断涌现出现来的 cursor 教程以及 cursor 宣传视频。
本来一开始刷到的时候,我还是保持怀疑态度,比如 cursor 有这么厉害吗?为什么取代程序员的言论越来越多?
当时的我对 AI 编程的认知还是停留在代码补全、AI 聊天等, 还是不觉得能通过 AI 短时间内构建一个完整的项目。
——体验期
抱着试一试的态度,开始打开 cursor 官网,下载,进入界面(自动迁移我 vscode 插件),然后输入指令。 差不多就过了两个多小时的时间,我开发了以下内容:
- 一个类似补光灯的网页、一个简单图像压缩工具的网页、一个能格式化文本的 macos 应用
-
测试了下能基本使用,然后再加上这些项目的 readme 说明文档等 整个流程下来我没有真正意义上地写过一行代码,全程所做的动作就是
-
不断向对话框输入需求内容以及运行报错的问题(macos 应用还是需要在 xcode 上运行)
- 看着 cursor 在项目新建或修改文件,然后对它给出的代码进行 apply / accept
如果没有 cursor,对于 html、css、javascript 已经忘得差不多、以及零 swift 和零 macos 开发经验的我来说,我相信我如果要做到上面的内容,至少需要花上几天甚至几周的时间,这下大概能理解为什么会出现上面发生的事情了,这也确实给我带来了不小的震撼,因为从未想到有一个 AI 编程工具能够做到,整个项目维度的“补全”,而不只是某段代码的补全,在那一刻确实有一种被 AI 看来要取代程序员的想法了。
——祛魅期
但是事后冷静下来我还是对它“祛魅”了(在如今的1月份对早期接触 cursor 大部分人也是,特别是对于编程经验较为丰富的人),随着我持续的尝试和使用,开始意识到 cursor 还是摆脱不了目前 LLM 带来的局限,如随机性、无法创新、依赖上下文等,依然只能定位在“辅助编程”的角色,无法完全做到主导整个项目,特别是随着项目的复杂度(如功能逻辑、工程架构等)越来越高的时候,它的答案就变得不是那么智能了。
——理性期
虽然 cursor 存在着这样的短板,但是瑕不掩瑜,cursor 借助强大的 LLM 模型搭配优秀的交互,确实能够做到相较于之前的 AI 编程工具,极大地提升编程效率,以及解决绝大基础问题,这依然值得我们去了解和学习如何使用。下面我将会介绍 cursor 的基础使用以及适用场景和最佳实践等内容,来帮助大家学习如何使用 cursor 和加深其 AI 编程的理解。
2. Cursor 简介¶
官网地址:https://www.cursor.com/
2.1 核心理念¶
!!! "note"
核心理念:在传统 IDE 的基础上,**增加了足够好的交互与足够好的LLM**
Cursor 是一款由 Anysphere 团队开发的 AI 优先(AI-First)IDE。与传统的 IDE 不同,它的核心设计理念并非单纯提供更强大的调试工具或插件生态,而是将大语言模型(LLM)深度融入编程工作流,试图重新定义开发者与代码的交互方式。
基于 Visual Studio Code 的底层架构修改而来,Cursor 继承了 VSCode 的扩展性和配置兼容性(用户可直接迁移原有插件和主题),但在此基础上构建了独特的对话式编程体验。其本质是一个基于自然语言的代码生成与重构引擎,开发者可以通过自然语言指令直接操作代码库。
2.2 核心功能与技术架构¶
Cursor 的能力可归纳为三个层级:
1. 第一层:代码智能增强
动态代码生成
- 支持通过自然语言描述生成代码片段(如函数、类、测试用例)
- 甚至能根据上下文自动补全未完成的逻辑
例如输入注释 // 用 Gin 实现用户注册接口,要求参数校验和数据库写入 → 生成完整路由处理函数(含结构体绑定和错误处理)
语义级代码优化
- 基于 LLM 理解代码意图后提供重构建议
例如将 golang 语言中多个同步逻辑的代码模块优化为使用 goroutines 协程的形式进行并发处理
跨语言上下文感知
- 在混合技术栈项目中(如前端 TypeScript + 后端 Golang)可以能根据其他文件的接口定义生成类型匹配的对应端的代码
例如在 golang 项目中定义路由 /api/users 能够自动生成前端的接口类型声明,并进行对应的调用(或 protobuf 声明类似)
2. 第二层:开发流程再造
对话式问题解决
- 开发者可直接将错误信息粘贴到聊天窗口,Cursor 会分析堆栈跟踪、定位问题根源并提供修复方案
例如粘贴错误 panic: runtime error: invalid memory address ..... ,可根据信息直接定位到空指针解引用并提供修复建议
项目级知识管理
- 通过持续学习当前项目的代码风格、技术规范(如通过 .eslintrc 或 pyproject.toml),生成符合团队约定的代码
例如根据项目中的 go.mod 依赖版本,生成兼容当前库版本的 API 调用示例(如 AWS SDK v2 操作 S3)
3. 第三层:技术栈突破
多模态编程支持
- 在最新版本中,Cursor 已开始支持草图转代码功能
- 同时也支持上传类似上传文档链接等形式生成代码
- 上传一个网页线框图,可自动生成对应的 HTML/CSS 布局代码
- 传 Swagger 文档,自动生成符合 OpenAPI 规范的 Gin 路由层代码(含参数校验中间件)
私有模型混合部署
- 企业用户可连接自有微调过的领域专用模型与通用 LLM 形成互补
例如添加已兼容 OpenAl 输入格式的模型,其中可参考的 Kimi、Deepseek 等兼容了该格式的模型
2.3 底层技术栈¶
Cursor 的技术实现可概括为:
-
模型层:主要依赖 GPT-4 系列模型,同时实验性集成 Claude、CodeLlama 等开源模型
-
上下文管理:采用向量数据库(Vector DB)实时索引项目文件,确保代码生成的上下文相关性
-
安全沙箱:所有 AI 生成的代码均在隔离环境中执行验证,防止恶意代码注入
这种架构使得 Cursor 在保持响应速度的同时,能够处理超过 50 个文件的上下文关联。
- 比如远超普通聊天机器人 4-8k Token 的限制
Question
扩展思考:为什么选择基于 VSCode 改造?
- 生态继承:直接复用 VSCode 的 5 万+扩展插件,避免重复造轮子;
- 渐进增强:开发者无需改变原有操作习惯即可体验 AI 功能;
- 性能保障:VSCode 的轻量级架构(Electron + TypeScript)为实时 AI 推理提供基础支撑;
3. Cursor 的使用¶
3.1 界面介绍¶
从上面图示可看到 cursor 的界面上实际就是在 vscode 基础上增加了右侧的 AI 对话框,分别对应以下模式:
1. Chat(对话模式):开放式编程助手
- 支持自然语言对话(中英文混合输入)
- 可处理跨文件上下文(自动识别当前项目结构)
- 支持多轮追问(基于历史对话优化输出)
2. Composer(代码生成器):流程化代码构建
- 分步骤代码生成(通过
/generate
命令触发) - 提供选项式参数配置(如选择框架、语言版本)
- 支持模板保存与复用(
.cursor/templates
目录)
3. Bug Finder(智能诊断):深度代码分析
- 静态代码扫描(实时检测语法/类型错误)
- 运行时模式预判(识别潜在内存泄漏/竞态条件)
- 提供修复方案优先级排序(按严重性分级提示)
3.2 基础使用¶
这里我们以一个从0到1通过 Cursor 生成的 demo 项目来介绍其基础的使用。
并且以我对于 0 swift 编程经验的视角来通过 cursor 实现一个 macos 上的应用,该项目主要实现一个简单功能:
- 自动监听 mac 上剪贴板的内容,在复制粘贴内容时实现「中英文之间添加空格」的格式化处理
Composer¶
首先使用 xcode 来创建一个空的 DocumentApp,然后使用 cursor 打开该项目(文件均是 xcode 初始化生成)。
然后我们通过利用 Composer 开始进行对话,直接向它描述我们所想要实现的诉求:
然后你可以看到 cursor 会根据项目直接对需要实现目标功能的多个文件按步骤修改,询问是否采纳其修改内容。
当我们点击 accept all 后相当于同意其修改内容并进行保存,后续我们就可以直接在 xcode 上运行并确认是否正常。
测试没有问题之后,我们还可以让它生成该项目的 README.md 文件,至此简单的 demo 项目就通过两步完成。
Chat¶
如果我们此时想要了解该项目的目录架构含义以及最核心的文件,则可利用 Chat 进行询问:
BugFinder¶
接下来为使用该功能,故意删除一些关键代码然后启动 BugFinder 进行处理(注意使用时需按不同 git 版本 Run):
实际上当出现 Bug 的时候也可直接通过 Composer 进行解决,它会根据你提供的报错内容进行修复。
3.3 高阶使用¶
除了上面的基础应用,以下 cursor 目前使用较为频繁以及提升效果较好的高阶用法也需要我们了解:
指定 Context¶
无论是在 chat 还是 composer 中我们可以指定多种类型的上下文信息来帮助 cursor 更好地理解诉求,比如以下:
- @Chat:将当前聊天历史(对话记录)作为上下文,使 AI 能基于之前的问答逻辑继续响应
- @Code:引用选中的代码片段(如函数、类或变量),作为核心上下文供 AI 分析
- @Codebase:自动扫描整个项目代码库,根据当前问题动态筛选并排序相关文件或代码
- @Definitions:提取光标附近的代码定义(如函数声明、类接口)作为上下文
- @Docs:引用项目内或已索引的第三方文档(如 API 文档、Markdown 文件)作为上下文来源
- @Files:将整个文件内容作为上下文,支持跨文件引用(如配置文件、核心模块)
- @Folders:引用整个文件夹内的代码,适用于需要长上下文的跨文件逻辑分析
- @Git:集成 Git 仓库信息(提交记录、代码差异、PR 描述)作为上下文
- @Link:解析外部链接内容(如 GitHub 仓库、技术文章),提取文本作为上下文
- @Web:通过搜索引擎查找与问题相关的公开信息(如错误解决方案、最新技术文档)
其中具体操作需要知道的是:
- 添加方式:通过界面中的「Add Context」菜单或命令面板选择上下文类型
- 动态组合:可混合多种上下文(如 @Code + @Docs 生成符合文档的代码)
- 智能排序:系统会基于问题相关性自动调整上下文权重(如 @Codebase 优先加载高频调用的文件)
Rules For AI¶
Cursor 允许用户自定义的 AI 行为约束规则即「Rules For AI」,可以理解为 cursor 设置的提示词 Prompt。
目前 cursor 支持在全局粒度(左图)或者项目粒度(右图)中进行定义,如下所示:
通过该功能可以更好地控制 AI 输出方式和规范,确保生成的代码或建议更符合项目需求、团队风格或开发规范等。
目前网上也有许多可以参考的预设模版帮助你进行设置:
- https://cursor.directory/
- https://www.bookai.top/cursor/Cursor-Prompt/cursor-system-prompt
- https://marketplace.visualstudio.com/items?itemName=KevinKern.cursorrules-search
其他¶
除了上面提到的功能,目前 cursor settings 也有一些额外的选项和可探索的 features,比如:
- 选择其他模型以及可支持接入符合如 OpenAIAPI、AzureAPI 等不同规范的模型
- 自动分析代码库上下文,帮助提升 AI 生成代码的准确性和相关性
- 支持接入 MCP Servers 来集中管理 AI 交互的上下文、规则和资源
- 同时还能够扩展支持浏览器搜索、网页浏览以及集成内部组件等
4. Cursor 的适用场景与短板¶
4.1 适用场景¶
基于上面的了解其实也不难发现 cursor 的强大之处除了使用了目前强大的语言模型(公域知识),还有就是在“人机编程的交互”以及“仓库层面的理解(私域知识)”做到了非常好的效果。结合我实际的体验效果来看,我理解 cursor 比较适合以下场景:
- 快速原型的开发(MVP 版本)
- 重复性任务的自动化(如代码模板生成和文档生成,特别是像生成单测以及翻译不同编程语言等需求)
- 中小型项目或者说中等复杂问题的开发与优化
- 集合问答等其他功能的“沉浸式一体化” AI 编程
4.2 短板¶
cursor 的短板实际主要就是 LLM 的短板,cursor 的能力边界也是 LLM 的能力边界:
- 数据驱动的局限:无法超越训练数据的覆盖范围,缺乏特定领域知识;
- 模式学习的局限:推理基于模式匹配,缺乏逻辑演绎和因果推理能力;
- 生成机制的局限:输出基于概率分布,缺乏高精度和一致性;
- 记忆机制的局限:缺乏长期记忆和动态交互能力;
- 认知能力的局限:无法主动探索未知或进行原创性创新;
所以站在 cursor 也很难处理好对实时性要求高、高精准度、上下文长度限制、复杂领域知识等问题。
LLM 的本质能力是基于语言模式学习和生成
- 通过对自然语言的词语分布、上下文关联和语义模式的学习,完成看似“理解”和“推理”的任务 (通过大规模语言数据的统计模式学习,生成语言输出并表现出一定程度的语义理解和推理能力)
需要注意的是:
- 语言理解:LLM 并非真正理解语言,而是通过统计规律模拟出类似理解的表现
- 推理能力:LLM 能够完成简单的关联性推理和模式匹配,但在复杂的逻辑推理、长链推理和因果推理上表现较弱
除此之外,输入给 cursor 的 prompt 和大模型的质量也会直接影响 cursor 的输出效果。
5. Cursor 的最佳实践¶
5.1 谨慎采纳生成的代码¶
- 谨慎直接采用 cursor 生成的代码文件,最好是结合上下文做好 CodeReview 工作,保证结果正确且长期可维护
- 在实际使用过程中,谨慎使用“Apply”和“Accept”功能,更多先使用 Save All 进行验证后,出现问题使用 Reject
5.2 结合 LLM 的良好交互习惯¶
cursor 的使用摆脱不了对 LLM 的使用,所以一些 LLM 良好交互的共性知识是可以复用来优化输出效果的:
- 结合 Cursor Rules 的提示工程,设计清晰和具体的提示词能够得到更高质量的内容输出
- 需要注意如何描述清楚你的需求,也是非常重要的一环,这也是与 LLM 进行交互的共性问题
- 结合 cursor 更擅长解决中小型问题的特点,将需求进行拆解,聚焦更小的粒度来获得更集中的输出
5.3 做好备份¶
考虑到 cursor 或者说 LLM 的随机性,可能会无意删除或增加一些有问题的代码,特别是在项目代码量逐渐庞大之后,触发的概率可能会更高,所以我们在应用 Cursor 时,特别是关键的代码文件,提前做好备份以防止意外覆盖,比如使用 git 的版本管理,频繁去提交代码进行保存。
5.4 结合私域知识拓展¶
cursor 所带来的仓库级别的理解能力,弥补了当前模型仅有公共知识领域的局限,结合仓库私域知识我们可以做到:
- 生成质量更高的项目 README 文档,提升文档编写效率
- 总结更聚焦于该仓库代码的共性知识和核心实现等,方便更好地理解和提取仓库的知识
5.5 安全问题¶
我们需要注意到 cursor 并不是完全本地,所以理论上使用 cursor 打开项目是会有源码泄露的安全问题。
即使是目前 cursor 中有 privacy mode,也很难去保证没有类似的安全问题,特别是公司内部的场景。
参考¶
https://juejin.cn/post/7414541124666851355