【万字长文】一文精通使用Cursor
Cursor是一款基于VSCode的AI代码编辑器,通过向量嵌入和语言模型实现智能编程辅助。文章详细解析了其技术原理(包括客户端架构、沙盒环境、多模型协调等)和使用模式(代码补全、行内编辑、询问和智能体模式)。重点介绍了优化提示词的方法(明确目标、提供上下文、反向费曼学习法等)和实用技巧(全局规则设置、历史代码注释生成等)。最后探讨了AI时代开发者的角色转变:从编码者转变为问题定义者和AI训练者,
注意:本文内容较长,要点密集,可能需要长时间阅读及在读后花费比较多的精力深入理解。
一、Cursor的原理
1. 什么是 Cursor,它能做什么?
Cursor是一款以人工智能(AI)为核心的代码编辑器,其目的在于提高开发者的编码效率,可辅助进行代码的编写与修改。实际上,它是Visual Studio Code(VS Code)的一个 “分支”,在其基础上增添了强大的人工智能功能。Cursor犹如集成于集成开发环境(IDE)中的智能编程助手,能够实时理解项目并提供相应帮助。
那么,它是如何实现这一功能的呢?主要依靠对整个代码库进行深度索引,同时学习用户的编程风格。通过将完整的代码库转化为 “向量嵌入”(vector embeddings),它能够更便捷地发现错误、提出改进建议,甚至自动开展重构工作。
2. Cursor 的底层原理
从整体视角来看,Cursor 由客户端应用(基于 VS Code 的编辑器)以及一组后端 AI 服务所构成。接下来,我们将探讨客户端与服务器如何协同合作,以完成语言模型提示、代码索引以及修改应用等操作。
2.1 Cursor客户端 VS 原版 VS Code
Cursor 的桌面应用是在 VS Code 的基础上开发的 “分支版本”,这意味着它复用了 VS Code 的核心编辑器、用户界面以及插件生态系统。这样,Cursor 可以直接拥有 VS Code 提供的大部分 IDE 功能(比如文本编辑、语法高亮、语言服务支持、调试等),然后在此基础上叠加自己的 AI 功能。
Cursor 的客户端包含一些自定义的 UI 元素,比如聊天侧边栏、Composer 面板,以及用于触发 AI 操作的快捷键(如 Tab、Cmd+K)。由于是完整分支而不是普通插件,Cursor 能将 AI 深度整合进开发流程中 —— 例如补全功能直接嵌入编辑器的建议系统,聊天助手也可以直接修改文件。
2.2 自定义沙盒环境的构建
Cursor 使用语言服务器(和 VS Code 一样,支持 Python、TypeScript、Go 等语言)来获取实时代码信息,提供 “跳转定义”、“查找引用”、错误提示等功能。Cursor 对这些能力进行了更有创新的利用。特别是它实现了一个叫做 “影子工作区(shadow workspace)” 的概念:这是一个隐藏的后台工作区,AI 可以在其中安全地测试修改,并从语言服务器获取反馈。
比如,当 AI 生成了一段代码,Cursor 会在一个隐藏的编辑器窗口中应用这些更改(不影响你当前的文件),然后让语言服务器检查有没有错误或类型问题。这些诊断结果会反馈给 AI,帮助它优化建议后再展示给你。
简而言之,客户端为 AI 提供了一个带有编译器和 linter 的沙盒开发环境,提高代码修改的准确性。
除了影子工作区,客户端还负责处理一些细节功能,比如 @ 符号上下文插入(你在提示中引用 @File 或 @Code 时,客户端知道要取出对应的文件或代码片段),以及 AI 修改的 UI 操作(比如点击 “播放” 按钮立即应用建议)。当你在聊天或 Composer 中使用 “立即应用” 功能时,客户端会接收来自 AI 的差异或新代码,并将其应用到项目中,可能还会显示预览或进行安全合并。
2.3 LLM 协调(大模型调用协调)
虽然有些轻量处理(比如代码拆分)在本地完成,核心 AI 运算则由 Cursor 的云端后端完成。当你触发一个 AI 功能时,客户端会整理好上下文(你的输入、选中代码等),然后发送请求给 Cursor 后端。
后端负责构建最终的大语言模型(LLM)提示语,调用模型接口并将结果返回给编辑器。即便你配置了自己的 OpenAI API 密钥,请求仍会先经过 Cursor 的后端,这样系统才能添加系统指令、代码上下文以及专属格式,确保模型理解你的需求。
2.4 多模型协调:大模型 + 自研模型
Cursor 使用多种 AI 模型:既有像 GPT-5 或 Claude 4.5 这样的顶级大型模型,也有专为特定用途训练的定制模型。
比如在代码聊天或复杂任务时,会调用高质量的大模型(如 GPT-5);而在自动补全、常规代码编辑等场景,则使用自研的轻量模型。Cursor 团队专门训练了一种名为 “Copilot++” 的自定义模型(灵感来自 Codex/Copilot),用来更精准地预测下一个代码操作。
2.5 嵌入存储与向量数据库
Cursor 的后端还包含一个向量数据库,用于存储整个项目的代码嵌入(embeddings),还有缓存层和请求路由逻辑。所有通信都经过隐私与性能优化:启用 “隐私模式” 时,后端不会保留你的任何代码或数据;即使关闭隐私模式,Cursor 也只会记录匿名统计数据用于模型优化,而且不会长期保存原始代码。
2.6代码库扫描
Cursor 能理解整个项目的核心在于其代码索引系统。当你首次打开一个项目时,Cursor 会在后台扫描并索引整个代码库。
具体怎么做:Cursor 会将每个文件拆分成更小的片段,并为每个片段计算一个向量嵌入。这种嵌入是代码语义的数字表达。Cursor 使用 OpenAI 的嵌入模型或自研模型生成这些向量,每段嵌入都带有元信息(例如文件名、行号)。
每段通常包含几百个 token。拆分的目的是既不超过模型 token 限制,又提升搜索精度。Cursor 使用智能拆分策略,不是简单地每 N 行切一次,而是借助像 tree-sitter 这样的工具按函数、类等逻辑结构划分,使每个片段都尽量自成一体,方便 AI 理解。
二、Cursor 提供的使用模式
首先,我们需要了解 Cursor 在不同场景下为我们提供了不同的能力支持,从简单场景到复杂场景依次为:Tab、Inline chat、Ask 以及 Agent。

1. tab:代码补全
按 Tab 键获取智能代码补全,由 AI 驱动的代码补全功能,能够理解你的代码库并提供上下文相关的建议。
- 补全你当前的代码行
- 建议完整的函数实现
- 帮助处理常见模式和样板代码
- 随着时间推移适应你的编码风格
2. Inline chat:行内编辑
选中代码按下 Cmd+K可在编辑器中直接编辑代码或提问。弹出的输入框会根据你选中的代码和指令生成请求。

也可以在Cursor 终端中,按 Cmd+K打开底部的提示栏。 描述你想执行的操作,Inline Edit 会生成相应的命令。

3. Ask:询问模式
用于学习和探索的只读模式。Ask 会搜索你的代码库并给出答案,不会做任何更改——非常适合在修改前先理解代码。复杂任务开始之前,可以使用Ask 模式,要cursor帮忙做任务规划和拆解。
- 询问关于特定代码部分的问题
- 获取复杂函数的解释
- 查找代码模式和示例
- 发现和理解你的代码库
4. Agent:智能体模式
处理复杂编码任务的默认模式。Agent 会自主探索你的代码库,编辑多份文件、运行命令并修复错误,以完成你的请求。
- 进行代码库范围的更改和重构
- 根据需求实现新功能
- 调试跨多个文件的复杂问题
- 生成测试和文档
- 维护整个项目的一致性‘
三、怎么写好Cursor提示词
1.写好提示词语的重点
1.1 明确目标
- 好的提示词
我需要创建一个响应式的个人博客网站首页,包含导航栏、英雄区、博客文章列表和页脚。使用Tailwind CSS实现,风格要求现代简约,配色以蓝色为主。
- 不好的提示词
帮我做个网站
1.2 提供上下文和约束和结构化你的请求
- 好的提示词
我正在开发一个电商网站的产品详情页。当前需要实现商品图片轮播功能,要求:
1. 支持自动播放
2. 点击缩略图切换主图
3. 支持手势滑动
4. 与已有的Tailwind CSS样式兼容
请提供完整的HTML、CSS和JavaScript代码。
1.3 给出示例或格式要求
- 好的提示词
我需要一个函数来格式化日期,要求:
- 输入:JavaScript Date对象
- 输出:格式为"YYYY-MM-DD HH:MM:SS"的字符串
- 示例:输入new Date(2023, 10, 5, 14, 30, 0),输出"2023-11-05 14:30:00"
请提供这个函数的实现。
1.4 逐步细化需求
- 第一轮:
我需要一个表单验证功能
- 第二轮
具体要求:
1. 验证邮箱格式
2. 密码至少8位,包含大小写字母和数字
3. 实时验证,输入时显示错误信息
4. 使用原生JavaScript实现
2.Greg Brockman 推荐的提示词框架
OpenAI 联合创办人 Greg Brockman 曾在 X 上分享过一个广为流传的提示词写法,被称为 “The Anatomy of a Prompt”。
这个框架非常适合推理模型与 AI 代理,主要分为四个部分:

2.1 Goal(目标)
- 明确告诉 AI,你想让它完成什么任务。
2.2 Return Format(回覆格式)
- 说明你希望输出的结构,比如「请用 Markdown 列表」或「输出 JSON」。
2.3 Warnings(注意事项)
- 给出一些必须遵守的限制条件,比如「请确认引用的路径存在」或「答案必须控制在 500 字以内」。
2.4 Context(上下文)
- 提供背景信息,例如团队已有的约定、你之前尝试过的方案、项目相关情况等。
这四个元素组合起来,可以大大提升 AI 输出的准确率和实用性。
3.向Cursor提问的另一种方式,反向费曼学习法
让 AI 逼迫你思考:反向费曼学习法:于 AI 来说,当你提出了一个问题,想想:他真的懂了吗?让 AI 反述一遍,你听听如何?但是光这个就够了吗,不够,你还需要让 AI 具有质疑精神,让他对你的问题提出质疑,而不是全盘接受!反向逼迫你去思考什么是“真需求”让 AI 变成你思维的“延展”。这种模式称之为:反向费曼学习法。 其实就是让他先分析 看看跟自己的意思是否对得上,然后再开始解决问题。
4.分而治之+小步验证
我们可以先使用 Cursor 的 Ask 模式先让 AI 给出不同的解决方案以及优劣,“阿步思考法”告诉我们方案都是“各种资源”的权衡,这个选择的工作,需要我们去做,而不是 AI,AI 的优势是他懂得多懂的广,但是他很难了解全部上下文,换句话说:人去权衡其实就是变相的在补充上下文。
接下来就是方案的拆分,还是让 AI 去拆分,拆分成 AI 可以执行步骤,这里有一个小技巧就是要把拆分的结果记录到 Notepad 中(Cursor 提供的轻量化记录工具)记下来的目的一个是给自己看,帮自己理清思路(对于生成级别代码,你必须知道方案的思路)也方便后续在此基础上做调整,另一个是作为上下文给到 Agent 模式,Notepad 在两种模式之间起到了很好的桥梁作用。
在 Agent 模式执行的时候,我们需要按照直接的拆分任务并且逐步执行、逐步验证,切记不要一次生成几千行代码,再验证,不然可能会越改越乱。

四、使用技巧
1.技巧一:设置全局规则
大型语言模型在多次补全之间不保留记忆。规则在提示层面提供持久且可复用的上下文。启用后,规则内容会被置于模型上下文的开头,为 AI 在生成代码、解释编辑或协助工作流时提供一致的指导,Cursor 支持四种类型的规则:
1.1 Project Rules
存放于 .cursor/rules,受版本控制,作用范围限定在你的代码库。
- 目录结构
project/
├── .cursor/rules # Cursor 专用目录
│ ├── global.mdc # 全局规则
│ ├── design.mdc # 设计文档(如需求说明、架构设计)
│ ├── checklist.mdc # 开发清单(如功能点、验收标准)
│ └── api-specs.mdc # 接口文档(如 API 路径、参数说明)
├── server # 后端专用规则
│ ├── .cursor/rules
- 上面结构中global.mdc的规则范例:
---
alwaysApply: true
---
# 全局规则
## 一、 顶尖软件工程师(角色设定)
- 你现在化身为比尔·盖茨式的极致专注且才华横溢的软件工程师。
- 你编写的系统始终优雅而简洁,具备高度可维护性和稳定性, 完全遵循行业最佳实践。
- 你做决策的方式受到你丰富经验的影响,就像盖茨那样追求完美且思维缜密。
## 二、专业软件开发标准(编码风格)
1. **你编写的代码必须遵循以下所有原则:**
- 最佳实践: 优化性能、可维护性、可读性和模块化。
- 函数模块化: 所有函数需独立完成一个明确任务,避免职责交叉或过度拆分。
- 文件模块化: 合理拆分多个文件,降低复杂性。
- 注释与文档: 每个文件开头写明其作用和用途。每个函数必须写清楚功能、输入和输出。对于不明显的实现细节添加注释。
- 可读性: 使用清晰命名,保持结构有序、逻辑清晰。变量都命名需要根据业务属性正确命名。
- 函数圈复杂度不超过10。
- 函数长度不超过80行,超过需要拆分。
- 函数入参数量不能超过5个,如果超过需要优化参数。
- 复杂逻辑(如算法、条件分支)需加单行注释,说明“为什么这么做”(而非“做了什么”)。
## 三、核心质量标准
1. **功能完整性**:代码必须完全实现需求,覆盖所有场景(包括正常流程、边界情况、异常处理)。
- 边界情况:空值/undefined、极限值(如数组长度0、数值溢出)、类型错误输入。
- 异常处理:异步操作(如API请求、文件读写)必须捕获错误并给出友好提示或降级方案。
2. **性能与效率**:
- 避免不必要的计算(如重复遍历、冗余变量),优先使用时间复杂度更优的算法。
- 资源管理:及时释放占用的资源(如关闭文件流、取消未完成的请求)。
- 缓存:频繁使用的计算结果需缓存(如用memoization)。
3. **安全性与健壮性**:
- 输入校验:所有外部输入(如用户输入、API参数)必须验证类型、范围、格式(防止XSS、注入攻击等)。
- 防崩溃:避免直接操作可能为null/undefined的变量,使用可选链(?.)、默认值(||)等安全写法。
1.2 User Rules
适用于你的 Cursor 环境的全局规则。在设置中定义并始终生效。
- 打开自定义指令设置,点击 Cursor 界面右上角的「设置图标(⚙️)」→ 选择「Settings」。

- 规则的生效场景,你的规则是 “当要求生成前端代码时” 需遵循的约束,因此在请求生成前端相关代码时,规则会自动生效。
1.3 Team Rules
在控制台统一管理的团队级规则。适用于 Team 和 Enterprise 方案。团队规则可与其他规则类型配合使用,并享有更高优先级,以确保各项目遵循组织标准。
- 团队管理员可直接在 Cursor 控制台中创建和管理规则:

- 创建团队规则后,将自动对所有团队成员生效,并在控制台中可见:

1.4 AGENTS.md
以 Markdown 格式编写的 Agent 指令,是 .cursor/rules 的简化替代方案。AGENTS.md 是一个用于定义代理指令的简单 Markdown 文件。将其放在项目根目录,作为 .cursor/rules 的替代,适用于简单场景。
# 项目说明
## 代码风格
- 所有新文件使用 TypeScript
- React 中优先使用函数组件
- 数据库列使用 snake_case 命名
## 架构
- 遵循仓储模式
- 将业务逻辑保持在服务层中
2.技巧二:历史代码生成注释
使用 command+k,为历史代码快速生成注释。(ps:相比 Ask 模式速度极快)。

3.技巧三:一键生成 commit message 信息
再也不用去想:我的代码改了什么?现在一键帮你生成提交信息。

4.技巧四:接手项目,快速可视化了解项目架构
使用 Ask 模式给你整理出项目的架构图,输出 Mermaid 语法的文本。粘贴到看图文本工具:https://mermaid.live/ ,快速了解项目。
5.技巧五:巧用 Notepad 记录关键思路
使用 notepad 记录重要上下文,使用@即可。


6. 技巧六:@Git 找出代码漏洞
遇到代码 MR 的时候可以先对比一下与主干代码的差异,检查是否有问题,或者当你 MR 后代码发生了问题,都可以使用 @Git。

7.技巧七:如果cursor写错了,怎么解决?
- 如果代码错了,直接自己写。Cursor 从你的编辑中学习,比解释更快。
- 利用聊天历史,在旧提示词上迭代,无需从头再来。

8.技巧八:可以直接跟浏览器一起调试,@Browser的能力
Agent 可控制网页浏览器,以测试应用、评估无障碍性、将设计转为代码等。借助对控制台日志与网络流量的完整访问,Agent 能调试问题并自动化全面测试流程。
@browser https://example.com/api/docs
请基于这个API文档,创建一个JavaScript函数来获取用户数据,并处理可能的错误情况。
9.技巧九:直接运行服务,分析网页
在Agent 输入:
- 运行开发服务器:yarn serve
- 从控制台获取日志
- 提出性能优化建议

10.技巧十:使用MCP工具
MCP 将 Cursor 连接到外部系统和数据。无需一遍遍说明项目结构,直接与现有工具集成。如直接跟设计工具Figma链接,直接将设计稿生成代码等。
如果需要安装,直接在下面等链接点击Add to Cursor直接安装即可。
https://cursor.com/cn/docs/context/mcp/directory
五、Cursor使用的思考
1. Cursor带来怎么样的开发方式变革?
- 程序员的角色定位
|
角色 |
定位 |
核心价值 |
|
Human(程序员) |
决策与创造核心 |
定义目标、评估成果、创造新思维 |
|
Agent(智能体) |
执行中枢 |
执行任务、反馈结果、持续优化 |
|
LLM(大模型) |
认知基础设施 |
提供理解、推理与生成能力 |
|
Tools(工具) |
专业能力延伸 |
数据库、编译器、部署工具、API等 |
程序员不再直接写代码,而是与Agent协作一起完成开发任务。我们后面会成为:
-
-
- 架构师 :设计任务流与依赖关系
- 规则制定者 :设定Prompt边界与执行约束
- 提示工程师 :精确编写Prompt语言
- 审查者 :评估Agent产出与稳定性
- 开发者从“造代码的人”转为“训练智能体的人”
-
- 程序员从传统开发到提示词驱动开发(PDD)的转变

在PDD模式中,Prompt 不只是“问题描述”,而是一种可执行的设计语言。开发者的职责,不再是写逻辑代码,而是写 Prompt,让Agent能在既定规则下自动产出可用结果。
2. Cursor的使用怎么确保代码质量?
- 代码失控:不同的同学在不同的时间,让AI帮优化一个表单模版(有十几个表单组件)的校验规则,在不告诉AI遵守什么规范的前端下,AI写出的代码。



带来的很难维护的代码,超长函数(153行)、代码没注释、函数圈复杂度很高
- 解决方案:在Cursor的全局规则里告诉AI需要遵守什么样的规则:
- 把刚刚的超长函数拆分成小函数,函数圈复杂度不能超过10
- 关键节点添加注释,
- 变量的命名需要符合公司的规范
生成的代码更适合以后的维护:

3. 怎么确保Cursor的准确性?
3.1 给 Cursor 提供真实的上下文,而不是抽象描述
- 不好的做法:
「帮我写一个 user 登录模块」
- 好的做法
我正在开发一个React应用,使用React 18和TypeScript。我有以下代码:
```tsx
function UserProfile({ user }: { user: User }) {
// 代码实现
}
User 接口定义为:
interface User {
id: number;
name: string;
email: string;
avatar?: string;
}
我需要在这个组件中显示用户头像,如果用户没有头像,显示默认头像。请提供完整的实现代码。
Cursor 只有看到真实代码,才能生成 一致风格、可编译、可运行 的东西。
3.2 限制Cursor修改的范围
你只能最小范围修改,不允许重写整个文件。
这样能避免 Cursor:
- 把整份代码重构掉
- 改到你没让它改的模块
- 插入无关逻辑
3.3 让 Cursor 解释“为什么这么写”,让 AI 自己审查自己
请解释你的实现思路和关键逻辑。
列出你认为可能出错的地方。
3.4 让 Cursor 多次迭代,而不是一步生成
Cursor 的最大优势,是能基于上下文连续优化。Cursor 最擅长:反复改进。不擅长:一次性完美。
你完全可以反复对话:
“这个 API 不对,重新改”
“这个 hook 有副作用风险,优化”
“这个算法复杂度太高,使用更优写法”
3.5 所有关键代码要人工 Code Review【重要】
建议对重要逻辑进行人工审核,并自行熟悉一遍逻辑内容,以便在后续迭代过程中或遇到系统故障时,能够做到胸有成竹。
4. 怎么让Cursor成为自己的编程助手,而不是成为替代我们的竞争对手
个人认为AI相较于人类,最大的不足在于其无法承担责任,而人类则具备承担责任的能力,这会使公司更为安心。因此,我们应将人工智能视为编程助手,并对其加以掌控,这正是我们所具有的最大价值。
4.1 让 Cursor 写代码,而我们写规范
AI 会写代码,但不会:
- 定业务逻辑
- 定非功能需求
- 定安全策略
- 定服务边界
- 定异常流程
- 定输入输出
只要我们负责 定义问题,AI 就无法替代我们。
4.2 我们负责架构,Cursor 负责实现
一个工程师的核心价值已经从:
能写代码 → 能组织代码
AI 无法:
- 决定组件如何解耦
- 选择什么技术栈
- 决定服务如何拆分
- 处理分布式事务
- 设计架构的可扩展性
- 决定版本规范
- 定义发布流程
这些都是我们做的。
4.3 从“自己写代码”转为“自己改 AI 生成的代码”
我们要做的不是手写代码,而是:
- 让 AI 给出方案
- 我们审查
- 我们挑刺
- 我们让它修
- 我们让它重构
- 我们让它优化
这会让我们比没有 AI 的工程师更强,而不是更弱。
4.4 我们永远比 Cursor 更了解业务
Cursor无法理解:
- 公司流程
- 团队架构
- 业务规则
- 客户需求
- 历史债务
- 代码规范
- 底层限制
这些信息只有我们知道
4.5 掌控 Cursor 的上下文,让它依赖你
Cursor 的本质是:
你给它多少上下文,它就掌握多少能力。
我们掌控:
- 项目上下文
- API 文档
- 架构图
- 需求列表
- 历史 Bug
只要这些由我们维护,AI 永远在我们手下工作。
4.6 让 AI 提升我们的速度,而不是取代我们的思考
AI 时代最可怕的人不是 AI
而是:
会利用 AI 的人
我们要做到:
- AI 写 80%,我们写 20%
- AI 做细节,我们控制方向
- AI 提供想法,我们做筛选
- AI 重复劳动,我们做判断与设计
这样我们会比别人更快,更准,更强。
总结:我们要成为“定义问题的人”,而不是“执行问题的人。
5. 怎么使用cursor提升我们的架构设计能力
5.1 用 Cursor 做项目分析
Cursor可以一次性帮你看完整个仓库,帮我们理解当前的系统。可以对Cursor说:
请基于整个代码仓库生成:
1. 系统架构图(模块依赖结构)
2. 数据流图
3. 主要业务流程图
4. 主要的服务边界划分
5.2 用Cursor生成方案初稿
可以对Cursor说:
我要为XXX功能做一个架构方案,包含:
- 技术选型
- 模块拆分
- 数据表设计
- 时序图
- 依赖项说明
- 扩展性分析
- 风险点分析
会得到方案的初稿,在此基础上基于自己的项目进行决策、修改、优化。
5.3 用Cursor做方案对比
做技术方案最重要的不是写代码,而是做取舍和做选择,可以对Cursor说:
请对比以下三种首页性能方案:
1. ***
2. ***
3. ***
从性能、成本、一致性进行对比,并给出推荐方案。
5.4 用 Cursor 做标准化文档和工具
完成项目后,文档和工具很重要,可以对Cursor说:
请基于项目特点生成一套项目级工程规范(目录、命名、API 风格、测试规范)
六、结语
Cursor作为AI驱动的编程助手,重塑了人机协作的开发范式。其核心价值在于将开发者从重复编码中解放,专注于架构设计、规范制定和业务理解。通过智能补全、行内编辑、Agent模式等多层次能力,Cursor大幅提升了开发效率。关键在于我们定义问题,AI负责实现;我们掌控方向,AI执行细节。这种协作模式让开发者成为"训练智能体的人",而非被替代的编码者,真正实现了人机优势互补的编程新时代。
AI时代来临了,大家需要努力适应这个时代,AI淘汰的不是人,而是不会使用AI的人。这就像有了导航软件,司机反而更重要了。
更多推荐


所有评论(0)