在 AI 工具爆发的时代,各类辅助编程产品层出不穷。Cursor 因其独特的设计与对开发者真实问题的深度关注,正在成为开发者群体热议的焦点。
一、Cursor 的起源与快速成长
Cursor 背后的初创公司 Anysphere 成立于 2022 年,首个版本于 2023 年 3 月推出。两年内完成 9 亿美元的 C 轮融资,估值高达 99 亿美元,年收入突破 5 亿美元。财富 500 强中超过一半的最大科技公司都在使用它,显示出极高的市场认可度和增长速度。
Cursor 是由 Anysphere 公司研发的 AI 驱动智能开发环境,基于 VS Code 分支构建。它通过语义索引、自然语言交互和多代理系统,实现对整个代码库的深度理解与操作。核心功能包括全局语义搜索、Merkle 树索引同步、Debug Mode 调试模式及浏览器布局编辑器。技术栈主要采用 TypeScript 和 Rust,后端使用 Turbopuffer 和 Pinecone 存储数据。相比 GitHub Copilot,Cursor 在大型任务重构、多文件修改及隐私安全方面更具优势,适合追求高效率的开发者。
在 AI 工具爆发的时代,各类辅助编程产品层出不穷。Cursor 因其独特的设计与对开发者真实问题的深度关注,正在成为开发者群体热议的焦点。
Cursor 背后的初创公司 Anysphere 成立于 2022 年,首个版本于 2023 年 3 月推出。两年内完成 9 亿美元的 C 轮融资,估值高达 99 亿美元,年收入突破 5 亿美元。财富 500 强中超过一半的最大科技公司都在使用它,显示出极高的市场认可度和增长速度。
Cursor 是一个 AI 驱动的智能开发环境(AI-powered IDE),由 Anysphere 公司研发。它定位不是简单的代码补全插件,而是一个真正'理解你的代码库'的开发工具。基于大型语言模型,对整个项目语义进行深度理解,并可以用自然语言进行交互与编程。它更像是一个开发者的智能'协作者',被广泛用于解决跨文件重构、复杂代码搜索与快速迭代等真实开发难题。
Cursor 会在项目打开时对整个代码库进行索引,生成'语义图'。实现方法如下:
这种架构保证了 Cursor 能在不上传完整源码的情况下,实现全局语义搜索和自然语言问答功能,同时保持安全性。
为了支持向量搜索,Cursor 需要先将代码拆分成更小的块,创建嵌入(embeddings),并将这些嵌入存储在服务器上。具体流程如下:

生成嵌入需要大量计算资源,因此在 Cursor 的后端利用云端 GPU 来完成。对于中型代码库,索引通常在一分钟以内完成,而大型代码库可能需要数分钟甚至更长时间。用户可以在 Cursor 的设置中查看索引状态(Cursor Settings → Indexing)。

在编辑代码库时,服务器端的索引都会逐渐过时。Cursor 的做法是使用 Merkle 树和高延迟同步引擎(每 3 分钟运行一次)来保持服务器索引的更新。
Merkle 树是一种树结构,每个叶子节点是对应文件的加密哈希值,每个非叶子节点是其子节点哈希的组合。Cursor 对每个文件夹和项目建立类似结构的 Merkle 树(使用混淆后的文件名),客户端和服务器分别维护自己的树。

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

这种 Merkle 树结构非常适合实际使用场景:比如一天结束关闭电脑,第二天拉取 Git 更新,或者团队协作时大量文件变化,Cursor 只会重新索引必要的文件,节省时间和计算资源。
虽然 Cursor 不在服务器上存储源码,但一些敏感信息仍不适合上传,即使加密也可能存在风险,包括 密钥、API Key、密码 等。
.gitignore 和 .cursorignore 可以确保索引安全。敏感信息通常以本地变量或 .env 文件形式存储,这些文件被加入 .gitignore。Cursor 会遵循这些规则,不索引或上传被忽略的文件。对于包含数千万行代码的大型单仓库(monorepo),索引整个代码库非常耗时且消耗大量计算资源,而且通常没有必要。此时使用 .cursorignore 文件忽略不需要索引的文件是最合理的做法,官方文档提供了详细指南。
阶段 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 的真实工作方式是: 先看结构 → 再语义搜索 → 精确搜索 → 读文件 → 改代码 → 跑命令 → 再检查
以'添加用户认证功能'为例:

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

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

🛠️ 命令是如何工作的?
*.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.md
在代码生成过程中提供给 AI 模型的信息,包括文件、symbols 以及对话历史。

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

细节请查阅官网文档。
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 就帮你启动项目并且自动测试里面内容。
比如你的测试内容如下:
把 llm playground 页面里面文生文,文生图的功能给我测试一下,在测试的过程中,如果发现有什么问题,给我修复一下。后端 python 环境是 conda 里面虚拟环境 llm_Ft。
下图是测试结果。

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

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

它不只是一个插件,而是一个增强版 VS Code。
最开始我也用过 Copilot、Codeium、CodeGeeX 等插件,说实话,功能都差不多。但 Cursor 给我最大的感受是:它把 AI 功能完全整合进了编辑器,体验完全不一样。
具体体现在:
当然,Copilot 也有它独有的优势。
它几乎支持所有主流 IDE。你可以在 VS Code 里用它,换到 IDEA 或 WebStorm 也能用,甚至连 Neovim 党都能愉快地使用 Copilot。
简而言之,Copilot 更像是'增强型助手',依附于已有 IDE,而 Cursor 更像一个'AI 伙伴 IDE',在项目全局上提供智能决策和自动化支持。
个人
所有个人计划均包含:
每个计划都包含按模型推理的 API 价格计费的用量:

模型定价

关于 Cursor 这个不到 3 年历史的代码库的一些数据:
编辑器是基于 Visual Studio Code 的分支开发的,这意味着它使用了和 VS Code 相同的技术栈:
在公司刚成立时,他们必须决定是像 Zed 那样从零构建编辑器,还是从现有编辑器分支开始。Sualeh 解释了这个决定:
'我们需要拥有自己的编辑器,而不能'只是'一个扩展,因为我们想改变人们编程的方式。这意味着我们要么构建一个全新的 IDE,要么从现有编辑器分支。 我们选择了分支,因为从零开始构建稳定的编辑器需要巨大的工作量。我们的价值主张不是构建稳定的编辑器,而是以渐进方式改变开发者的编程方式。例如,要构建神奇的'标签模型',如果不分支几乎不可能,而通过分支就很简单。分支让我们能够专注于用户体验,而不是编辑器本身。'
Cursor 使用多个提供商来训练自己的模型或微调现有模型:
所有基础设施都运行在云端。Sualeh 说:
'非常依赖云。主要使用 AWS,其次 Azure 处理推理。我们还使用其他一些新型 GPU 云服务。'
在 Microsoft Azure 数据中心的 20 块 NVIDIA H100 GPU。Cursor 的计算需求相当于成千上万这样的机架。
Cursor 是一款超越传统 IDE 的 AI 驱动开发环境,它不仅提供智能补全,更通过语义索引、自然语言交互和多任务代理,实现了对整个项目的理解和操作。与 Copilot 相比,Cursor 在全局语义理解、自动化能力和多代理协作方面有明显优势,是 AI 参与软件开发的一种全新范式。
对于追求高效率、跨模块协作以及复杂项目自动化的开发者,Cursor 不只是辅助工具,而是一个真正的智能开发伙伴。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online