Appearance
Cursor 使用教程:从安装配置到 Agent 自主编程的完整指南
如果你还在用「让 ChatGPT 写代码然后手动粘贴」的方式工作,这篇文章可能会改变你的习惯。
Cursor 不是代码自动补全工具,也不是一个 ChatGPT 插件——它是一个以 AI 为核心重新设计过交互方式的代码编辑器。从第一次 Tab 补全接受一整个函数,到用自然语言让 AI 独立完成一个功能模块并跑通测试,这中间有一套完整的使用逻辑。
这篇文章从安装开始,把 Cursor 的每个核心功能和使用场景讲清楚,最后以一个实际项目贯穿演示。
Cursor 是什么
Cursor 是基于 VS Code 深度魔改的编辑器,所有的快捷键、插件、配色方案都和 VS Code 完全兼容——如果你有 VS Code 的使用习惯,切换过来几乎没有学习成本,区别只在于多了一套强大的 AI 层。
和「IDE 里装个 Copilot 插件」的方案相比,Cursor 的核心差异在于:
- AI 对整个代码库有感知:不是只看当前文件,而是理解项目结构、文件依赖关系、你写过的函数命名习惯
- 多种协作模式:补全、对话、指令改写、Agent 自主完成——针对不同任务密度有对应工具
- Rules 系统:可以给项目写「AI 指令书」,规定技术栈、代码风格、命名规范,让 AI 在整个项目中保持一致
安装与基础配置
安装
从 cursor.com 下载对应平台的安装包(Windows / macOS / Linux),安装后首次启动会提示导入 VS Code 配置,选「是」即可把插件、主题、快捷键全部迁移过来。
选择模型
设置(Ctrl+Shift+J)→「Models」,可以切换 AI 的底层模型。主要选项:
| 模型 | 特点 | 适用场景 |
|---|---|---|
| claude-4-sonnet | 综合质量最好,逻辑强 | 复杂功能、架构设计、代码审查 |
| gpt-4.1 | 速度快,代码质量稳 | 日常补全、快速改写 |
| claude-4-haiku | 极快,成本低 | 简单任务、高频补全 |
| gemini-2.5-pro | 上下文窗口大 | 超大代码库、长文件分析 |
没有特别要求的话,claude-4-sonnet 是综合最优的日常选择。
设置 .cursorrules(现在叫 Rules for AI)
在项目根目录创建 .cursor/rules 文件夹,新建一个规则文件(比如 main.mdc)。这是整个项目的「AI 宪法」,所有 AI 交互都会遵守这里写的内容:
你是一个 TypeScript + React 项目的助手。
技术栈规范:
- 前端:React 18,TypeScript strict 模式
- 样式:Tailwind CSS,不要写内联样式
- 状态管理:Zustand,不要用 Redux
- 组件命名:PascalCase,文件名同组件名
- 函数命名:camelCase,异步函数以 fetch/load/save 开头
代码规范:
- 所有函数必须有 TypeScript 类型注解
- 不要用 any 类型
- 组件 props 用 interface 定义,不用 type
- 注释用中文这个文件一旦写好,之后无论在哪个文件里用 AI,它都会自动遵守这些规则,不需要每次重新交代。
核心功能详解
Tab 补全:比你想的聪明
Cursor 的补全不是简单的下一词预测。它会看:
- 当前函数的上下文(参数名、已有逻辑)
- 同文件中其他函数的写法
- 你最近几次接受补全的内容(学习你的风格)
常见用法是「先写注释,让 Tab 生成实现」:
// 计算购物车总价,price 已含税,discount 为折扣率(0-1),满 300 打九折光标放在这行注释下面,Tab 一下,通常能直接生成正确的函数。遇到长函数可以连续多次 Tab,分段接受。
不接受补全的快捷键:Esc。如果补全不对,按 Esc 丢弃,继续手写,Cursor 会从你的手写里重新学习并调整。
Chat 模式(Ctrl+L):问代码库里的问题
Chat 和普通 ChatGPT 的根本区别是「有代码库上下文」。可以直接问:
- 「这个
useUserStore在哪里定义的,有哪些地方用到了它?」 - 「为什么
handleSubmit里没有做 loading 状态管理,其他表单是怎么处理的?」 - 「帮我找一下项目里有没有类似的数据表格组件可以复用」
Chat 里可以用 @ 引用具体的文件、文件夹、甚至 Git 历史,让 AI 聚焦在特定上下文里。
技巧:对话里不要只说「修这个 bug」,要把现象、期望、已经尝试过的方法都说清楚——AI 给出的答案质量和你描述问题的精度成正比。
Cmd+K:在文件里直接改写
选中一段代码,按 Ctrl+K(macOS 是 Cmd+K),输入指令,AI 直接在文件里修改,同时展示 diff 让你确认。
适合的场景:
- 「把这个函数改成 async/await 风格」
- 「给这个组件加上错误边界处理」
- 「把所有 console.log 改成 logger.debug」
Ctrl+K 是文件级别的精准改写,不涉及其他文件,适合快速的局部修改。
Agent 模式(Ctrl+I):让 AI 自己跑
这是 Cursor 最强力也最需要理解的功能。Agent 模式下,AI 可以:
- 自主创建、修改、删除文件
- 运行终端命令(安装依赖、跑测试)
- 根据执行结果调整下一步操作
使用方式:按 Ctrl+I 打开 Composer,描述你要完成的功能,然后等它工作。
重要心态转变:不要在 Agent 开始后就盯着每一步操作挑毛病。Agent 工作到一半的时候中断它、给它大量即时反馈,反而会让结果变差。给它一个完整清晰的任务描述,让它跑完,然后 code review 结果,指出问题让它修。
Agent 失败的最常见原因:任务描述太模糊。「帮我做一个用户管理系统」这类描述会让 AI 做很多假设,结果可能和你预期差很远。换成「在现有 /api/users 路由下增加一个 PATCH /users/:id 端点,参数是 {name, email},需要验证邮箱格式,更新 users 表,返回更新后的用户对象,参考 GET /users/:id 的错误处理方式」——这个描述就清晰很多。
Rules for AI 进阶用法
除了全局规则,Cursor 支持文件夹级别的规则,以及按情景触发的规则。
场景规则示例:新建一个 test.mdc 规则文件,设定「仅在测试文件里触发」:
当我要求写测试时:
- 使用 vitest,不要用 jest
- 测试文件放在被测文件同目录的 __tests__ 文件夹里
- 每个测试必须包含:正常情况、边界情况、错误情况三种 case
- mock 外部依赖,不要发真实网络请求
- 测试描述用中文这样当你在 __tests__ 目录里让 AI 写测试时,它会自动应用这套规范;在其他文件里工作时这个规则不生效,不干扰正常开发。
实战:用 Cursor Agent 构建一个 Markdown 笔记应用
下面用一个简单的 Markdown 笔记 Web App 演示 Agent 的完整工作流程。目标是:本地 Vite + React + TypeScript 项目,可以新建/编辑/保存/删除笔记,内容以 Markdown 格式存储,支持实时预览。
第一步:初始化项目,写 Rules
pnpm create vite notes-app --template react-ts
cd notes-app
pnpm install在 .cursor/rules/main.mdc 里写好技术栈规则(见上方示例,把状态管理改成 Zustand,增加 marked 库处理 Markdown 渲染的说明)。
第二步:用 Agent 生成核心数据层
打开 Composer(Ctrl+I),输入:
创建笔记应用的数据层:
- 在
src/store/notesStore.ts里用 Zustand 创建笔记 store,笔记有 id(UUID)、title、content(Markdown 文本)、createdAt、updatedAt 字段- 实现 actions:createNote、updateNote、deleteNote、setActiveNote
- 初始化时加载 3 条示例笔记
- 用 localStorage 持久化数据(zustand persist 中间件)
Agent 会创建文件、安装依赖(uuid、zustand),写出完整的 store。整个过程大概 40-60 秒。
第三步:用 Agent 生成 UI 组件
继续在 Composer 里:
基于 notesStore,创建以下组件:
NoteList:左侧笔记列表,显示标题和创建时间,点击切换 activeNote,支持删除NoteEditor:右侧编辑区,textarea 输入 Markdown,实时用 marked 渲染预览(左右分栏)AppLayout:组合 NoteList 和 NoteEditor,顶部有「新建笔记」按钮- 样式用 Tailwind,整体配色用深色主题
Agent 会依次创建组件文件,在组件里正确引用 store,装上 marked 库,完成渲染逻辑。
第四步:用 Cmd+K 做局部优化
跑起来之后,发现标题编辑没有 debounce(每次按键都在更新 store)。选中 NoteEditor 里的 title input 处理函数,Ctrl+K:
给标题输入加 300ms debounce,避免频繁更新 store
5 秒生成,确认 diff,接受。
第五步:用 Chat 排查问题
如果 Markdown 渲染里 code block 的代码没有语法高亮,打开 Chat(Ctrl+L):
@src/components/NoteEditor.tsx Markdown 渲染用的 marked,但代码块没有语法高亮,我想加 highlight.js,怎么改?
Chat 会给出修改方案,还能直接点「Apply to file」把代码应用到文件里。
Cursor 与常用工具的集成
Git:Cursor 的 Source Control 面板和 VS Code 一致,对 staged 的改动可以直接在 Chat 里让 AI 「写一个规范的 commit message」,引用 @git diff 上下文。
终端:在 Agent 模式下,AI 可以直接执行终端命令。如果不放心,可以在设置里把 Agent 的终端执行权限设为「需要确认」,每次执行命令前会弹出确认。
MCP(Model Context Protocol):Cursor 支持通过 MCP 接入外部工具,比如连接数据库直接查表结构、接入 Jira 读取当前 sprint 的 ticket、连接 Figma 读取设计稿尺寸。配置方法:设置 →「MCP Servers」→ 添加对应的 MCP 服务器地址。
让 Cursor 发挥最大价值的几个原则
原则一:Rules 写得越细,AI 越省心
最值得投入时间的地方是在项目开始时把 .cursor/rules 文件写好。一个好的 Rules 文件能消除项目里 90% 的「AI 没按我习惯写」的问题。可以从第一个 AI 生成的代码里挑出不满意的地方,逐条加进 Rules 里。
原则二:Agent 适合「一次性功能」,不适合「渐进式迭代」
Agent 最适合「新增一个完整功能」这种任务,比如「做登录页」「写一套 API 测试」「搭建 CI/CD 配置」。如果是「把现有组件改得更好」这种需要大量上下文理解的任务,Chat + Ctrl+K 的组合更可控。
原则三:维护一个「上下文文件」
在大型项目里,可以维护一个 CONTEXT.md 或 AI_NOTES.md,记录项目里一些不在代码里但 AI 需要知道的信息:「UserType 这个 enum 不要改,和后端协议锁定的」「这个 legacyHelper.ts 文件先不动,下个版本统一重构」。然后在 Chat 里 @CONTEXT.md 给 AI 读。
原则四:不要对 AI 的代码「信任但不验证」
AI 生成的代码在通过明显的代码审查后,一定要跑测试或手动验证边界情况。特别是 Agent 生成的代码,很可能在主路径正确但边界处理不完整。把 Review AI 代码当成 Review 实习生代码的心态——不是每行都重写,而是看逻辑是否合理、边界是否覆盖、安全问题有没有漏。
常见问题排查
Q:补全经常不出现或者很慢
检查网络是否能访问 Cursor 的服务器(cursor.com 和其 API 端点在境外)。如果使用境外网络,补全速度会明显更快。也可以在设置里切换到更快的模型(claude-4-haiku)。
Q:Agent 做了一半停下来问我
这是正常行为——遇到需要确认的决策(如选择数据库方案、是否覆盖已有文件)Agent 会暂停等待。给出明确答复就能继续。如果不想被打断,在任务描述里提前把关键决策点说清楚。
Q:Chat 上下文太多导致回答开始偏题
长对话里 AI 的注意力会被早期对话稀释。发现答案开始不精准时,点「New Chat」开一个新会话,用 @ 重新引用需要的文件,比继续在旧对话里追问效果好很多。
Q:Cursor 是否比 VS Code + Copilot 强
对于轻度使用(偶尔补全,偶尔让 AI 写个函数):差别不大。对于重度使用(用 AI 完成完整功能模块、多文件联动修改):Cursor 的 Agent 模式和 Rules 系统没有等价替代,差距很显著。如果每天有超过 2 小时在写代码,Cursor 的订阅是值得的。
FAQ
Q:Cursor 免费版够用吗?
免费版有每月的 AI 请求次数限制(目前 2000 次/月),对轻度使用够用。重度开发用 Pro 版(每月约 20 美元),请求次数更多,还能用最新的模型版本。企业有团队套餐,可以统一管理账号和 Rules。
Q:Cursor 支持哪些编程语言?
理论上支持所有 VS Code 支持的语言。AI 质量最好的是 TypeScript、Python、JavaScript、Go、Rust、Java;对 SQL、Shell 脚本、Terraform 等也有不错支持。小众语言 AI 质量会差一些,但补全和 Chat 仍然可用。
Q:代码会不会被 Cursor 拿去训练模型?
默认情况下,Cursor 不使用用户代码训练模型(根据官方隐私政策)。企业版有「隐私模式」,代码不经过第三方服务器。如果是高度敏感的代码库,建议开启隐私模式并确认当前模型提供方的数据政策。
Q:Cursor 能用来写文档、写测试吗,还是只适合写功能代码?
非常适合写测试和文档。给 AI 一个组件文件,让它写对应的 Vitest 测试,通常能覆盖 80% 的 case,剩下的边界情况自己补。写 API 文档、README、组件 props 说明,也是 AI 省力最明显的场景之一。
Q:已经在用 GitHub Copilot 了,还有必要换 Cursor 吗?
如果你的工作里有「需要跨多文件理解和修改」的任务,比如重构、新建功能模块、修复涉及多处的 bug,换 Cursor 会有明显感知差异。如果以单文件的补全为主,迁移收益不大。建议用 Cursor 的免费版试用两周,主观感受决定要不要换。