深入解读 AI 编程工具 — Cursor
在 AI 工具爆发的时代,各类辅助编程产品层出不穷。而其中 Cursor 因其独特的设计与对开发者真实问题的深度关注,正在成为开发者群体热议的焦点。
本文将带你清晰了解:什么是 Cursor?它如何工作?真正解决了哪些痛点?为何能成为行业快速增长的工具?
一、Cursor 的起源与快速成长
Cursor 背后的初创公司 Anysphere 成立于 2022 年,而 Cursor 的首个版本在 2023 年 3 月推出。仅仅两年时间,Anysphere 就完成了 9 亿美元的 C 轮融资,公司估值高达 99 亿美元!更令人惊讶的是,Cursor 的年收入已经突破 5 亿美元,这在开发工具领域几乎前所未有——据我所知,没有其他公司能在推出第一款产品后的两年内达到这样的规模。
Cursor 的快速普及也得益于企业级市场的认可:财富 500 强中超过一半的最大科技公司都在使用它。这不仅显示了 Cursor 的市场认可度,也侧面反映了其使用率和增长速度极快,在短时间内就能与 GitHub Copilot 等成熟工具形成竞争。
二、什么是 Cursor?
Cursor 是一个 AI 驱动的智能开发环境(AI‑powered IDE),由 Anysphere 公司研发,定位不是简单的代码补全插件,而是一个真正“理解你的代码库”的开发工具。它基于大型语言模型,对整个项目语义进行深度理解,并可以用自然语言进行交互与编程。
从某种意义来说,Cursor 更像是一个 开发者的智能“协作者” 而不仅仅是一个编辑器。它被越来越多的工程师用于解决真实的开发难题,尤其是在面对跨文件重构、复杂代码搜索与快速迭代时。
三、Cursor 的核心内容
Cursor 的核心内容主要由以下几个部分组成:
1. 语义索引与安全索引部分
Cursor 会在项目打开时对整个代码库进行索引,生成“语义图”。实现方法如下:
- 代码拆分与嵌入:Cursor 会将每个文件拆分成小块,每块生成向量嵌入(embedding),便于向量搜索。
- 安全处理:文件名和代码被加密和混淆,避免在服务器端泄露敏感信息。
- 向量数据库存储:嵌入存储在专门的向量数据库中,用于快速匹配查询。
- Merkle Tree 保持索引同步:客户端和服务器端分别保存 Merkle 树,通过比较哈希值,只重新索引被修改的文件,从而节省计算资源和带宽。
这种架构保证了 Cursor 能在不上传完整源码的情况下,实现全局语义搜索和自然语言问答功能,同时保持安全性。
1.1. 使用代码块进行语义索引
为了支持像上文提到的向量搜索,Cursor 需要先将代码拆分成更小的块,创建嵌入(embeddings),并将这些嵌入存储在服务器上。具体流程如下:

- 创建代码块:Cursor 会将每个文件的内容切分成小块,每一块将作为后续的嵌入单元。
- 生成嵌入而不存储原始文件名或代码:Cursor 不希望在服务器上存储文件名或源码,因为这些信息可能被视为机密。它会将文件名混淆,并将代码块加密后发送到服务器。服务器解密后,使用 OpenAI 的嵌入模型或自研模型生成嵌入,并存储在向量数据库(Turbopuffer)中。
生成嵌入需要大量计算资源,因此在 Cursor 的后端利用云端 GPU 来完成。对于中型代码库,索引通常在一分钟以内完成,而大型代码库可能需要数分钟甚至更长时间。用户可以在 Cursor 的设置中查看索引状态(Cursor Settings → Indexing)。

1.2 使用 Merkle 树保持索引最新
在编辑代码库时,无论是使用 Cursor 还是其他 IDE,服务器端的索引都会逐渐过时。一个简单但低效的解决方案是每隔几分钟重新索引所有文件,但由于索引计算量大,并且传输加密代码块会消耗带宽,这并不理想。Cursor 的做法是使用 Merkle 树 和高延迟同步引擎(每 3 分钟运行一次)来保持服务器索引的更新。
Merkle 树是一种树结构,每个叶子节点是对应文件的加密哈希值(例如 main.js 文件的哈希),每个非叶子节点是其子节点哈希的组合。Cursor 对每个文件夹和项目建立类似结构的 Merkle 树(使用混淆后的文件名),客户端和服务器分别维护自己的树。

每 3 分钟,Cursor 会进行一次索引同步。通过对比客户端和服务器的 Merkle 树,Cursor 可以确定哪些文件需要重新索引。例如,如果客户端的 index.html 文件发生变化,通过树遍历可以快速定位需要同步的文件。Merkle 树不仅让树遍历高效,还能确保只同步发生变化的文件,最大限度减少计算和带宽消耗。

这种 Merkle 树结构非常适合实际使用场景:比如一天结束关闭电脑,第二天拉取 Git 更新,或者团队协作时大量文件变化,Cursor 只会重新索引必要的文件,节省时间和计算资源。
1.3. 安全索引
虽然 Cursor 不在服务器上存储源码,但一些敏感信息仍不适合上传,即使加密也可能存在风险,包括 密钥、API Key、密码 等。
- 使用
.gitignore和.cursorignore可以确保索引安全。敏感信息通常以本地变量或.env文件形式存储,这些文件被加入.gitignore。Cursor 会遵循这些规则,不索引或上传被忽略的文件。 - 上传代码块前,Cursor 还会扫描可能的敏感信息,避免上传。
1.4. 大规模代码库的索引
对于包含数千万行代码的大型单仓库(monorepo),索引整个代码库非常耗时且消耗大量计算资源,而且通常没有必要。此时使用 .cursorignore 文件忽略不需要索引的文件是最合理的做法,官方文档提供了详细指南。
2. 我观察到的 Cursor 实际工具调用顺序
阶段 1:理解项目结构(建立上下文)
当 Cursor 还不知道项目长什么样时
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ① | list_dir | 查看目录结构 | 先了解项目布局,入口文件、模块划分 |
| ② | file_search | 文件名模糊搜索 | 快速定位可能相关的文件 |
| ③ | glob_file_search | 模式查找文件 | 批量定位某类文件(如 *.tsx、**/api/**) |
阶段 2:定位相关代码(从粗到细)
Cursor 开始“找代码”
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ④ | codebase_search | 语义代码搜索 | 用自然语言理解需求,找到可能相关的实现 |
| ⑤ | grep | 精确文本 / 正则搜索 | 对关键函数名、变量名做精确定位 |
| ⑥ | read_file | 读取文件内容 | 查看实现细节,理解上下文 |
👉 真实情况:
codebase_search用来“猜方向”grep用来“钉位置”
阶段 3:深入理解与补充上下文
代码不够?继续挖
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ⑦ | read_file(局部) | 精读关键逻辑 | 常用 offset / limit 读取重点代码 |
| ⑧ | glob_file_search | 发现相关文件 | 如找测试、接口、调用方 |
| ⑨ | grep(扩展) | 查调用链 | 搜索函数被谁调用、在哪里使用 |
阶段 4:修改 / 生成代码
Cursor 开始“动手改代码”
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ⑩ | edit_file | 修改现有文件 | 插入、删除、调整逻辑 |
| ⑪ | write_file | 创建新文件 | 新模块、新组件、新测试 |
| ⑫ | apply_diff | 批量应用修改 | 多文件、大范围重构时使用 |
阶段 5:验证与执行
确认改动是否正确
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ⑬ | terminal | 执行命令 | 构建、测试、lint、安装依赖 |
| ⑭ | read_file | 复查改动 | 检查最终代码是否符合预期 |
阶段 6:补充信息(必要时)
本地信息不够时
| 顺序 | 工具 | 用途 | 说明 |
|---|---|---|---|
| ⑮ | web_search | 网络搜索 | 查最新文档、API、解决方案 |
阶段 7:版本控制与结构性改动(可选)
依赖环境 & 权限
| 顺序 | 功能 | 说明 |
|---|---|---|
| ⑯ | Git 操作 | 查看 diff、提交、更建分支 |
| ⑰ | 代码重构工具 | 重命名符号、提取函数/变量 |
一句话总结调用规律
Cursor 的真实工作方式是:
先看结构 → 再语义搜索 → 精确搜索 → 读文件 → 改代码 → 跑命令 → 再检查
以“添加用户认证功能”为例:

2. 编辑器核心层
编辑器核心提供代码可视化、文件管理、终端集成等基础 IDE 功能,同时支持插件扩展和自定义界面。它是 Cursor 的运行基础,使 AI 功能能在熟悉的开发环境中无缝操作。
3. AI models
Cursor 支持来自所有主要模型提供商的所有前沿编程模型。

4. 自然语言交互与多代理系统
Cursor 提供自然语言交互,开发者可以直接用普通语言指令修改代码、重构模块或生成新功能。同时,Cursor 支持多代理模式,多任务 AI 可以并行运行,协调完成复杂的开发任务,例如重构整个模块或自动生成测试代码。
5. Commands
Cursor 的命令功能允许你创建可复用、可共享的工作流命令,这些命令以简单的 / 前缀触发,可在聊天输入框中快速调用,从而提高团队协作效率和常见任务处理的速度。

🛠️ 命令是如何工作的?
- 命令以 纯 Markdown 文件 (
*.md) 的形式定义; - 文件放在特定目录中后,系统会在聊天框输入
/时自动检测并展示可用命令。
例如,run-tests-and-fix-failure.md 可以定义成下面这样的。
# Run All Tests and Fix Failures ## Overview Execute the full test suite and systematically fix any failures, ensuring code quality and functionality. ## Steps 1. **Run test suite** - Execute all tests in the project - Capture output and identify failures - Check both unit and integration tests 2. **Analyze failures** - Categorize by type: flaky, broken, new failures - Prioritize fixes based on impact - Check if failures are related to recent changes 3. **Fix issues systematically** - Start with the most critical failures - Fix one issue at a time - Re-run tests after each fix可存放的位置包括:
- 项目命令:存放在项目根目录下的
.cursor/commands文件夹; - 全局命令:存放在用户主目录的
~/.cursor/commands文件夹。
.cursor/ └── commands/ ├── address-github-pr-comments.md ├── code-review-checklist.md ├── create-pr.md ├── light-review-existing-diffs.md ├── onboard-new-developer.md ├── run-all-tests-and-fix.md ├── security-audit.md └── setup-new-feature.mdCursor Commands
6. Context
在代码生成过程中提供给 AI 模型的信息,包括文件、symbols以及对话历史。

7. CLI
Cursor CLI 是 Cursor 提供的命令行级 AI 编程接口,用于在终端环境中直接调用 AI Agent 完成代码编写、重构、审查与问题分析等任务。相比只存在于编辑器中的 AI 助手,Cursor CLI 更适合融入现有的工程化流程,例如脚本自动化、CI/CD 流水线以及本地工具链。
该工具支持 交互式模式 与 非交互式模式:在交互模式下,开发者可以与 AI 进行持续对话,逐步明确需求、审阅修改方案并确认执行;在非交互模式下,则可通过一次性指令输出结果,适用于性能检查、安全审计等自动化场景。同时,Cursor CLI 提供会话管理能力,允许恢复历史对话,从而在多次调用中保持上下文一致性,减少重复沟通成本。
整体来看,Cursor CLI 更像是一个可脚本化的 AI 编程代理入口,将 AI 能力下沉到终端层,使其成为开发流程中的基础工具,而不仅是编辑器里的辅助功能。

细节请查阅下面官网链接。https://cursor.com/docs/cli/overview
Cursor headless CLI
8. hooks
Hooks 允许你通过自定义脚本来观察、控制并扩展代理(agent)循环。Hooks 是独立启动的进程,使用 JSON 通过标准输入/输出(stdio)进行双向通信。它们会在代理循环的指定阶段之前或之后运行,并且可以对行为进行观察、阻止或修改。
{ "version": 1, "hooks": { "beforeShellExecution": [{ "command": "./script.sh" }], "afterShellExecution": [{ "command": "./script.sh" }], "afterMCPExecution": [{ "command": "./script.sh" }], "afterFileEdit": [{ "command": "./format.sh" }], "beforeTabFileRead": [{ "command": "./redact-secrets-tab.sh" }], "afterTabFileEdit": [{ "command": "./format-tab.sh" }] } }四、Cursor 的新功能
1. 自动测试web 页面以及修复。
只需要表述你要测试什么内容,然后cursor就帮你启动项目并且自动测试里面内容。
比如你的测试内容如下:
把llm playground 页面里面文生文,文生图的功能给我测试一下,在测试的过程中,如果发现有什么问题,给我修复一下。后端python 环境是conda 里面虚拟环境llm_Ft。
下图是测试结果。

完整视频
Cursor Browser - 页面自动测试
2. Debug Mode
编码 Agent 在很多事情上都很擅长,但有些 bug 总能难倒它们。为此我们推出了 Debug Mode——一种完全围绕运行时信息和人工验证构建的全新 Agent 工作循环。
在构建它时,我们研究了团队中最擅长调试的工程师的实践,并将他们的工作流整合为一种 Agent 模式,为其配备了可对代码进行插桩以采集运行时日志的工具、用于生成多种“到底出了什么问题”假设的提示,以及主动请你协助复现问题和验证修复的能力。
最终形成的是一个交互式流程,可以可靠地修复那些此前即便是最智能的模型单独工作也力所不及,或需要开发者投入大量时间才能处理的 bug。
1. 描述该 bug
首先,从下拉菜单中选择 Debug Mode,并尽可能详细地描述这个 bug。
debug-mode-intro1
代理不会立即尝试生成修复方案,而是先通读你的代码库,并针对可能出错的地方提出多个假设。其中有些可能是你自己也会想到的思路,但另一些则很可能是你原本不会考虑的方法。
接下来,代理会在你的代码中插入用于验证这些假设的日志记录语句,从而为在 bug 发生时获取实际运行数据做好准备。
2. 复现该 bug
接下来,回到你的应用,在代理采集运行时日志的同时复现这个 bug。
debug-mode-repro2
当 bug 发生时,代理可以准确了解你的代码中发生了什么:变量状态、执行路径以及时序信息。基于这些数据,它可以精准定位根本原因并生成有针对性的修复方案。通常这只需要对两三行代码做精确修改,而不是像普通代理交互那样给你上百行试探性代码。
3. 验证修复
此时,Debug Mode 会要求你在应用了建议修复的情况下,再复现一次这个 bug。若 bug 已经消失,你就可以将其标记为已修复,agent 会移除所有埋点(instrumentation),只留下一个干净、最小化的变更,方便你直接发布。
debug-mode-fixed3
3. 浏览器布局和样式编辑器
借助全新的浏览器侧边栏和组件树,同时进行设计与编码。
移动元素、更新颜色、测试布局并实时调整 CSS,然后使用 agent 将更改即时应用到你的代码库中。你也可以选中多个元素,通过文字描述你想要的修改,让 agent 自动完成视觉调整。
cursor-browser-css-inspector
4. 代码审核-bugbot

4. 多智能体评判-Multi-agent judging
当并行运行多个智能体时,Cursor 现在会自动评估所有运行结果,并推荐一个最佳解决方案。
被选中的智能体会附带一条评论,解释为何选择它。只有在所有并行智能体都完成运行之后,才会进行最佳解决方案的评判。

六、为什么我更推荐Cursor?
它不只是一个插件,而是一个增强版VS Code
最开始我也用过Copilot、Codeium、CodeGeeX等插件,说实话,功能都差不多。但Cursor给我最大的感受是:它把AI功能完全整合进了编辑器,体验完全不一样。
具体体现在:
- 更强的全局代码库理解(Context Awareness)- Semantic Search
- 针对大型任务(重构/多文件更改)更友好 -- large-scale refactor,
- 多agent 一起运行 --Parallel Agents
- 与linear ,figma , browser 集成。
- 响应更快,不会有插件经常性的卡顿
- 理解整个代码库,而不只当前文件
- 会主动搜索和读取代码,不用手动喂上下文
- 更擅长多文件修改和重构
- 可以直接用自然语言下达“项目级指令”
- 更适合接手和理解陌生 / 老项目
- 对调用链、影响范围的判断更强
- 修改代码时更像在“结对编程”而不是补全
- 对复杂改动(重构、统一风格、抽逻辑)成功率更高
- 隐私安全:支持本地控制和隐私模式,保护企业代码。
Copilot的其他优势
当然,Copilot也有它独有的优势。
它几乎支持所有主流IDE 。你可以在VS Code里用它,换到IDEA或WebStorm也能用,甚至连Neovim党都能愉快地使用Copilot。
简而言之,Copilot 更像是“增强型助手”,依附于已有 IDE,而 Cursor 更像一个“AI 伙伴 IDE”,在项目全局上提供智能决策和自动化支持。
七、价格
个人
所有个人计划均包含:
- 无限标签补全
- 所有模型的更高 Agent 使用上限
- 访问 Bugbot
- 访问 Cloud Agents
每个计划都包含按模型推理的 API 价格计费的用量:
- Pro 包含 $20 的 API Agent 用量 + 额外奖励用量
- Pro Plus 包含 $70 的 API Agent 用量 + 额外奖励用量
- Ultra 包含 $400 的 API Agent 用量 + 额外奖励用量

模型定价

八. 技术栈
关于 Cursor 这个不到 3 年历史的代码库的一些数据:
- 25,000 个文件
- 700 万行代码
编辑器是基于 Visual Studio Code 的分支开发的,这意味着它使用了和 VS Code 相同的技术栈:
- TypeScript:大部分业务逻辑都是用这种语言编写
- Electron:Cursor 使用的框架
在公司刚成立时,他们必须决定是像 Zed 那样从零构建编辑器,还是从现有编辑器分支开始。Sualeh 解释了这个决定:
“我们需要拥有自己的编辑器,而不能‘只是’一个扩展,因为我们想改变人们编程的方式。这意味着我们要么构建一个全新的 IDE,要么从现有编辑器分支。
我们选择了分支,因为从零开始构建稳定的编辑器需要巨大的工作量。我们的价值主张不是构建稳定的编辑器,而是以渐进方式改变开发者的编程方式。例如,要构建神奇的‘标签模型’,如果不分支几乎不可能,而通过分支就很简单。分支让我们能够专注于用户体验,而不是编辑器本身。”
后端
- TypeScript:大部分业务逻辑使用该语言
- Rust:所有性能关键组件使用 Rust,例如下面提到的 Orchestrator
- Node API 调用 Rust:大部分业务逻辑在 TypeScript 中,性能密集部分在 Rust 中,因此通过 Node.js 桥接从 TypeScript 调用 Rust 代码。例如调用用 Rust 编写的索引逻辑就大量使用了这种桥接
- 单体架构:后端服务大部分是单体架构,并作为整体部署。这提醒我们,单体架构对早期创业公司来说非常有效,能帮助团队快速迭代
数据库
- Turbopuffer:多租户数据库,用于存储加密文件和工作区的 Merkle 树(下面会详细介绍)。团队喜欢它的可扩展性,也避免了以前处理数据库分片的复杂性。关于挑战见下文“工程挑战”
- Pinecone:向量数据库,用于存储部分文档的 embedding
数据流
- Warpstream:兼容 Apache Kafka 的数据流服务
工具链
- Datadog:日志和监控。Sualeh 表示他们是重度用户,觉得 Datadog 的开发者体验远优于其他选择
- PagerDuty:值班管理,与 Slack 集成
- Slack:内部沟通和聊天
- Sentry:错误监控
- Amplitude:分析工具
- Stripe:支付和计费,用于购买 Cursor 的计划
- WorkOS:Cursor 登录认证,例如 GitHub 或 Google Workspace 登录
- Vercel:Cursor.com 网站的托管平台
- Linear:工作管理
- Cursor:当然,团队用 Cursor 自己开发 Cursor。最终,每个工程师都对自己提交的代码负责,无论是手写还是由 Cursor 生成
模型训练
Cursor 使用多个提供商来训练自己的模型或微调现有模型:
- Voltage Park
- Databricks MosaicML
- Foundry
物理基础设施
所有基础设施都运行在云端。Sualeh 说:
“非常依赖云。主要使用 AWS,其次 Azure 处理推理。我们还使用其他一些新型 GPU 云服务。”
- 大部分 CPU 基础设施在 AWS 上运行
- 运营数万块 NVIDIA H100 GPU,其中一部分在 Azure 上
在 Microsoft Azure 数据中心的 20 块 NVIDIA H100 GPU。Cursor 的计算需求相当于成千上万这样的机架。来源:NVIDIA
- 推理(Inference)是 Cursor 使用 GPU 的最大场景,用于生成下一个 token,无论是自动补全还是完整代码块。实际上,Azure GPU 只用于推理,不用于 LLM 相关的微调和模型训练
- Terraform 用于管理基础设施,比如 GPU 和虚拟机(如 EC2 实例)
九、总结
Cursor 是一款超越传统 IDE 的 AI 驱动开发环境,它不仅提供智能补全,更通过语义索引、自然语言交互和多任务代理,实现了对整个项目的理解和操作。与 Copilot 相比,Cursor 在全局语义理解、自动化能力和多代理协作方面有明显优势,是 AI 参与软件开发的一种全新范式。
对于追求高效率、跨模块协作以及复杂项目自动化的开发者,Cursor 不只是辅助工具,而是一个真正的智能开发伙伴。
参考资料
https://newsletter.pragmaticengineer.com/p/cursor?utm_source=chatgpt.com
https://docs.github.com/en/copilot/tutorials/reduce-technical-debt?utm_source=chatgpt.com
https://cursor.com/docs/get-started/concepts
https://cursor.com/security#codebase-indexing
https://cursor.com/cn/blog/debug-mode
https://cursor.com/cn/changelog/2-2
https://dev.to/zachary62/building-cursor-with-cursor-a-step-by-step-guide-to-creating-your-own-ai-coding-agent-17c4
https://cursor101.com/zh/tutorial/learn-cursor-0-why-use-cursor