每日壁纸
AI 工具No. 03---

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 写代码的典型流程是这样的:

  1. 在 IDE 里写代码,遇到需要大改的地方
  2. 切到浏览器里的聊天窗口,把相关代码手动复制粘贴过去
  3. 拿到回复,再切回来手动粘贴、调试、修补

问题不在于模型不够聪明,而在于上下文搬运全靠人。你要让模型理解一个函数,得复制那个函数;要让它改一处 bug,得贴出错误上下文和调用方。粘贴过程中丢掉的往往是关键信息——这个函数被谁调用、这个配置项在哪些地方被读过。

Cursor 把这三个窗口合成一个:

  • 补全(Tab):不是逐 token 的灰色幽灵文本,而是按「接下来这一段」预测,一次接受一整块
  • 内联编辑(选中即改):选中一段代码,直接输入「改成异步的」,结果以 diff 形式出现在原地,可以逐块接受或拒绝
  • 对话(Chat):带上下文引用的侧边栏,可以 @ 引用文件、目录、代码库、终端输出、文档
  • Agent:给一个目标,让它自己拆任务、跨文件改、跑命令、根据报错再改

它的核心赌注是最后一个。 前面三个功能,任何一个 AI 插件都能做;把「Agent 能在真实仓库里连续工作」做成日常体验,才是需要重做编辑器架构的部分。

上手路径

装完之后,前十分钟建议这么用:

  1. 先建立索引。 打开项目后让 Cursor 扫描代码库,这一步会为仓库生成语义索引。之后问「支付流程是怎么走的」这类问题才有意义
  2. 用小问题建立信任。 先问「这个函数是干什么的」「谁调用了它」,确认它引用的代码是你以为的那份
  3. 再给任务。 从「把这个函数的错误处理改成返回 Result 而不是 panic」这种范围明确的改动开始,不要一上来就说「重构整个模块」
  4. 盯住 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 + 手动粘贴无工具任务小、上下文简单

一句话评价

它真正改变的不是「代码怎么写出来」,而是「你什么时候需要离开编辑器」。

← Previous productLinear