Cursor
把 VS Code 的骨架换成 AI 原生:编辑器不再只是写代码的地方,而是你和一个能读懂整个仓库的助手协作的地方。
- 开发团队
- Anysphere
- 支持平台
- macOS / Windows / Linux / Web
- 产品分类
- AI 工具
- 目标人群
- 愿意把日常编码交给 AI 协作者的开发者,尤其是做整仓改动而不是单文件补全的人
一句话定位:编辑器不再只是「写代码的地方」,而是你和一个能读懂整个仓库的助手协作的地方。
这是「一天一款产品」系列的第一篇。今天讲 Cursor。
过去两年,几乎每个 AI 编程工具都在解决同一个问题:怎么让模型更好地写代码。Cursor 的选择不是再做一个聊天框,而是把 AI 拆进编辑器的每一个动作里——补全、选中、重构、提问、跑测试——让 AI 成为编辑过程的一部分,而不是一个需要你切换窗口的「外部工具」。
这篇能回答什么
- Cursor 到底是在 VS Code 上改的,还是重写的?哪些部分保留了?
- 为什么「AI 原生编辑器」这个说法,最后落到了「Agent 能不能自己跑完一串任务」上?
- 它的 codebase 索引是怎么影响体验的?为什么这比补全质量更关键?
- 什么团队适合用它,什么团队用不上?
前置知识:用过 VS Code 或其他 IDE,了解基本的「打开文件 → 编辑 → 调试」流程;知道 AI 编程工具大致分哪几类(补全插件 / 对话侧边栏 / Agent)。
它解决什么问题
在 Cursor 之前,用 AI 写代码的典型流程是这样的:
- 在 IDE 里写代码,遇到需要大改的地方
- 切到浏览器里的聊天窗口,把相关代码手动复制粘贴过去
- 拿到回复,再切回来手动粘贴、调试、修补
问题不在于模型不够聪明,而在于上下文搬运全靠人。你要让模型理解一个函数,得复制那个函数;要让它改一处 bug,得贴出错误上下文和调用方。粘贴过程中丢掉的往往是关键信息——这个函数被谁调用、这个配置项在哪些地方被读过。
Cursor 把这三个窗口合成一个:
- 补全(Tab):不是逐 token 的灰色幽灵文本,而是按「接下来这一段」预测,一次接受一整块
- 内联编辑(选中即改):选中一段代码,直接输入「改成异步的」,结果以 diff 形式出现在原地,可以逐块接受或拒绝
- 对话(Chat):带上下文引用的侧边栏,可以 @ 引用文件、目录、代码库、终端输出、文档
- Agent:给一个目标,让它自己拆任务、跨文件改、跑命令、根据报错再改
它的核心赌注是最后一个。 前面三个功能,任何一个 AI 插件都能做;把「Agent 能在真实仓库里连续工作」做成日常体验,才是需要重做编辑器架构的部分。
上手路径
装完之后,前十分钟建议这么用:
- 先建立索引。 打开项目后让 Cursor 扫描代码库,这一步会为仓库生成语义索引。之后问「支付流程是怎么走的」这类问题才有意义
- 用小问题建立信任。 先问「这个函数是干什么的」「谁调用了它」,确认它引用的代码是你以为的那份
- 再给任务。 从「把这个函数的错误处理改成返回 Result 而不是 panic」这种范围明确的改动开始,不要一上来就说「重构整个模块」
- 盯住 diff。 Agent 的每一步修改都可以逐块接受,看不懂的改动直接拒绝
关键路径是:先让它读,再让它写。 跳过读这一步直接派任务,是多数「AI 改坏了代码」事故的来源——它没看到你没告诉它的约束,就自己补了一个看起来合理的。
三个关键设计决定
一、继承 VS Code,而不是从零写
Cursor 是 VS Code 的 fork,扩展生态、设置面板、主题、调试配置、快捷键、文件浏览全部继承。
这看起来像保守的选择,实际是产品上的关键决断:
- 用户零迁移成本,VS Code 的肌肉记忆直接可用
- 扩展生态是最难复制的护城河,直接继承比自己造一个强
- 团队可以把全部工程资源投到 AI 集成上,而不是 IDE 基础功能
代价是包袱:fork 意味着要跟着上游版本升级,冲突解决是持续的维护成本;VS Code 的一些设计假设(比如插件沙箱模型)对 AI 代理的权限需求也不完全契合。
二、把「上下文」做成一等公民
大模型有上下文窗口,但窗口里放什么、放多少,是产品的核心决策。
Cursor 的做法是多层上下文:
| 层级 | 内容 | 触发方式 |
|---|---|---|
| 当前文件 | 光标附近的代码 | 自动 |
| 手动引用 | 指定的文件、目录、代码片段 | @ 显式引用 |
| 语义检索 | 按「意思」而不是「字面」召回相关代码 | Agent 自主调用 |
| 代码库索引 | 全仓库的向量索引 | 后台持续更新 |
第四层是关键。它把「这个概念在仓库里还出现在哪」变成可检索的问题。Agent 改一个配置项时,能顺着索引找到所有引用点,而不是只改你给它看的那一处。
这也解释了为什么 Cursor 的体验不依赖单一模型的补全质量——当模型能力相当时,喂给模型的上下文质量才是拉开差距的地方。
三、权限模型围绕「可撤销」设计
Agent 会跑命令、会改文件、会装依赖。对一个每天在生产仓库里工作的人,这部分的风险设计比模型能力更重要。
Cursor 的取向是:默认给出可见的中间状态。Agent 的每一步都留下可回滚的痕迹,改文件走 diff 接受,跑命令在终端里可见,失败时把错误塞回上下文让它自己纠偏。
这跟「一个黑盒按钮,点了等结果」的产品思路相反,但后者在真实仓库里几乎不可用。
短板
- 大仓库的索引成本真实存在。 首次扫描和后台索引要花时间和磁盘,仓库越大越明显
- 对「风格一致性」的破坏。 AI 生成的代码风格和你的代码库容易出现细微差异,格式没问题但读起来不像同一个人写的
- 它的强项是「有明确验收标准」的任务。 「给这个页面换个设计」这种需要主观判断的活儿,AI 帮不上多少忙,反倒会引入你不想要的改动
- 成本随使用量增长。 重度使用 Agent 的消耗量远高于只做补全,按量计费或订阅额度都会成为真实约束
替代方案
| 工具 | 形态 | 适合谁 |
|---|---|---|
| VS Code + Copilot | 在成熟 IDE 里加补全和对话 | 不想换环境、需求以补全为主 |
| Claude Code / Codex CLI | 终端里的 Agent | 偏好命令行、能接受无 GUI 环境 |
| Windsurf | 独立编辑器,AI 集成思路接近 | 想体验同类形态但换一家 |
| 纯 IDE + 手动粘贴 | 无工具 | 任务小、上下文简单 |
一句话评价
它真正改变的不是「代码怎么写出来」,而是「你什么时候需要离开编辑器」。
