Skip to Content
八. 实战与总结37 · 综合实战项目

37 · 综合实战项目

用 Cursor 从零构建一个完整的全栈应用,走通规划、开发、调试、部署全流程。


写在前面

经过前面 36 篇文章的学习,你已经掌握了 Cursor 的核心能力:Plan Mode 做架构设计、Agent 自主编码、Tab 补全提速、Debug 模式修复问题,以及如何将 Git 嵌入日常工作流。但单独学每个功能是一回事,把它们串联起来完成一个真实项目是另一回事。

本篇文章是一个 综合实战项目(Capstone Project),目标是用 Cursor 从零构建一个完整的全栈 Web 应用。我们将走完从项目规划到部署上线的每一个环节,让你亲身体验 Cursor 在真实开发流程中的全部价值。

为了让你有最直接的参考,我们选择构建一个 个人知识管理平台(NoteFlow)——一个支持 Markdown 笔记、标签分类、全文搜索、用户认证的 Web 应用。前端使用 React + TypeScript,后端使用 Node.js + Express + SQLite,部署到 Vercel + Railway。

如果你已经看过 Claude Code 的 capstone(todo-cli),你会发现本篇的思路类似,但 Cursor 的可视化 IDE 特性让每个环节都更直观。


01 · 项目概览与目标

1.1 我们要构建什么

NoteFlow 是一个轻量级的个人知识管理工具,核心功能包括:

功能模块描述优先级
用户注册与登录JWT 认证,Session 管理P0
Markdown 笔记编辑支持实时预览、语法高亮P0
标签系统创建、关联、过滤标签P1
全文搜索基于标题和内容的模糊搜索P1
笔记归档软删除 + 回收站P2
暗色模式主题切换P2

1.2 技术栈选型

前端(React + Vite) ├── React 18 + TypeScript ├── React Router v6 —— 路由管理 ├── Tailwind CSS —— 样式框架 ├── React Markdown —— Markdown 渲染 ├── Zustand —— 轻量状态管理 └── Vitest —— 单元测试 后端(Node.js) ├── Express + TypeScript ├── Prisma —— ORM / 数据库迁移 ├── SQLite —— 本地数据库(开发) ├── JWT —— 身份认证 ├── Zod —— 请求校验 └── Supertest —— API 测试

1.3 Cursor 工具链映射

在整个项目中,Cursor 的每个核心能力都会在最合适的阶段登场:

阶段使用模式典型场景
项目规划Plan Mode架构设计、数据库建模、API 路由规划
功能开发Agent实现完整的注册、登录、笔记 CRUD
日常编码Tab 补全组件 props、类型标注、重复性模板代码
问题修复Debug 模式调试 401 认证失败、CORS 配置错误
版本管理Git 集成提交规范、分支管理、Code Review
上线部署Agent + Terminal构建脚本、环境变量、部署配置

1.4 为什么选这个项目

个人知识管理是一个”足够复杂又足够熟悉”的领域:

  • 足够复杂:涉及用户认证、CRUD、搜索、状态管理,能覆盖全栈开发的典型挑战
  • 足够熟悉:笔记应用大家每天都在用,需求清晰,不需要额外解释业务逻辑
  • 结果可感知:做完以后是一个真正能用的产品,而不是一个 meaningless 的 demo

这种”做出来自己能用”的项目,是学习效率最高的——你会有动力去打磨它。


02 · 项目规划:使用 Plan Mode

2.1 初始化 Plan Mode

在 Cursor 中,按下 Cmd + Shift + I(Mac)或 Ctrl + Shift + I(Windows/Linux)进入 Plan Mode。此时你的输入框会变成蓝色,表示当前处于”计划模式”。

在 Plan Mode 下,Cursor 只讨论方案、不出代码。这是架构阶段最关键的习惯——先想清楚再动手

2.2 数据库建模

我们的 Plan Mode 对话:

用户:我需要设计 NoteFlow 的数据库模型。用户有注册登录功能, 每篇笔记属于一个用户,可以有多个标签。标签也可以被多个笔记共享。 帮我设计 Prisma schema。 Plan Mode:分析需求,给出 schema 设计

这是 Plan Mode 给出的 Prisma schema:

model User { id String @id @default(cuid()) email String @unique name String password String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt notes Note[] tags Tag[] } model Note { id String @id @default(cuid()) title String content String archived Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt authorId String author User @relation(fields: [authorId], references: [id]) tags NoteTag[] } model Tag { id String @id @default(cuid()) name String color String @default("#6366f1") userId String user User @relation(fields: [userId], references: [id]) notes NoteTag[] @@unique([name, userId]) } model NoteTag { noteId String note Note @relation(fields: [noteId], references: [id]) tagId String tag Tag @relation(fields: [tagId], references: [id]) @@id([noteId, tagId]) }

2.3 API 路由规划

在 Plan Mode 中继续讨论 API 设计:

需求清单: - POST /api/auth/register —— 注册 - POST /api/auth/login —— 登录 - GET /api/notes —— 获取笔记列表(支持搜索、标签过滤、分页) - POST /api/notes —— 创建笔记 - GET /api/notes/:id —— 获取单篇笔记 - PUT /api/notes/:id —— 更新笔记 - DELETE /api/notes/:id —— 软删除(归档) - GET /api/tags —— 获取用户的所有标签 - POST /api/tags —— 创建标签

2.4 前端路由设计

/ → 首页 / 登录跳转 /login → 登录页 /register → 注册页 /dashboard → 笔记列表(主页面) /notes/new → 新建笔记 /notes/:id → 编辑笔记 /tags → 标签管理

2.5 Plan Mode 的最佳实践

做法推荐不推荐
粒度一次讨论一个模块一次塞进所有需求
输出产出文档 / schema / 路由表产出可运行的代码
迭代先认可方案,再逐步细化一次追求完美方案
确认让 Plan 给出多方案对比接受第一个方案直接实施

关键模型:慢规划、快编码。规划阶段花 20% 的时间可以避免开发阶段 80% 的返工。


03 · 架构设计:从 Plan 到可执行蓝图

3.1 项目结构

在 Plan Mode 确认方案后,我们切换到 Agent 来生成初始项目结构。但在此之前,先用 Plan Mode 定好目录结构:

noteflow/ ├── server/ # 后端 │ ├── prisma/ │ │ └── schema.prisma # 数据模型 │ ├── src/ │ │ ├── routes/ # 路由 │ │ ├── middleware/ # 中间件(auth, validation) │ │ ├── lib/ # 工具函数 │ │ └── index.ts # 入口 │ ├── package.json │ └── tsconfig.json ├── client/ # 前端 │ ├── src/ │ │ ├── components/ # 通用组件 │ │ ├── pages/ # 页面 │ │ ├── stores/ # Zustand 状态 │ │ ├── lib/ # API 调用封装 │ │ └── App.tsx │ ├── package.json │ ├── vite.config.ts │ └── tailwind.config.js ├── .github/ │ └── workflows/ # CI/CD └── README.md

3.2 认证数据流(Token 时序图)

这是一个重要的心智模型,我们在 Plan Mode 中画出来:

┌─────────┐ ┌──────────┐ ┌─────────┐ │ Client │ │ Server │ │ DB │ └────┬────┘ └────┬─────┘ └────┬────┘ │ POST /login │ │ │ {email, password} │ │ │───────────────────>│ │ │ │ SELECT user │ │ │─────────────────────>│ │ │ user data │ │ │<─────────────────────│ │ │ bcrypt.compare() │ │ │ sign JWT │ │ {token, user} │ │ │<───────────────────│ │ │ │ │ │ GET /notes │ │ │ Authorization: │ │ │ Bearer <token> │ │ │───────────────────>│ │ │ │ verify JWT │ │ │ attach req.user │ │ │ SELECT notes │ │ │─────────────────────>│ │ [{id, title...}] │ │ │<───────────────────│ │

这个数据流模型帮助我们确认:token 在客户端存储(localStorage),每次请求带在 header 中,服务端用中间件统一验证。

3.3 状态管理策略

在 Plan Mode 中,我们也讨论了前端的全局状态管理策略:

状态类型存储位置示例
用户认证信息Zustand storetoken, user profile
笔记列表Zustand store + SWR 缓存notes[]
当前编辑内容React local statetitle, content
UI 状态(主题、侧栏)Zustand storetheme, sidebarOpen
表单临时数据React local statelogin form

这个决策模型很简单:全局共享的放 store,局部使用的放 state,服务端数据考虑缓存策略


04 · Agent 驱动的功能开发

4.1 切换到 Agent 模式

方案确认后,我们切换到 Agent 模式(Cmd + I)。这是开发的主力模式——Agent 可以自主创建、修改、删除文件,比你逐行编码快得多。

4.2 第一节:搭建后端骨架

Agent prompt:帮我搭建 NoteFlow 后端项目骨架。 使用 Express + TypeScript + Prisma + SQLite。 初始化 npm,配置 tsconfig,安装所有依赖,创建 Prisma schema, 并实现以下 API: - POST /api/auth/register - POST /api/auth/login - GET /api/notes(带搜索和标签过滤) - POST /api/notes - PUT /api/notes/:id - DELETE /api/notes/:id(软删除) - GET /api/tags - POST /api/tags 需要 JWT 认证中间件,密码用 bcrypt 加密,请求用 Zod 校验。

这是 Agent 的典型用法——把上下文交代清楚,然后让 Agent 执行。Agent 会:

  1. 运行 npm initnpm install 安装依赖
  2. 创建 prisma/schema.prisma 并执行 prisma migrate
  3. 生成 src/index.ts 入口文件
  4. 创建 src/routes/auth.tssrc/routes/notes.tssrc/routes/tags.ts
  5. 创建 src/middleware/auth.ts 认证中间件
  6. 创建 src/lib/validation.ts Zod schema

整个过程 Agent 会自动完成。你只需要在关键决策点(比如 “数据库类型选 SQLite 还是 PostgreSQL”)被问到时做出选择。

4.3 验证后端 API

Agent 完成后,我们打开终端启动服务器:

cd server npx prisma migrate dev --name init npm run dev

然后用 curl 测试注册和登录:

# 注册 curl -X POST http://localhost:3001/api/auth/register \ -H "Content-Type: application/json" \ -d '{"email":"test@example.com","name":"测试用户","password":"123456"}' # 登录 curl -X POST http://localhost:3001/api/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"test@example.com","password":"123456"}' # 用返回的 token 创建笔记 curl -X POST http://localhost:3001/api/notes \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ -d '{"title":"我的第一篇笔记","content":"# Hello World\n这是一篇测试笔记。","tags":["学习"]}'

4.4 第二节:搭建前端项目

后端跑通后,我们用 Agent 创建前端:

Agent prompt:为 NoteFlow 创建 React + Vite + TypeScript 前端。 配置 Tailwind CSS,安装 React Router、Zustand、react-markdown。 创建以下页面组件(先用模拟数据占位): - LoginPage —— 登录表单 - RegisterPage —— 注册表单 - DashboardPage —— 笔记列表 - NoteEditorPage —— Markdown 编辑器 + 预览 - TagsPage —— 标签管理 并在 App.tsx 中配置路由。

Agent 会生成完整的页面骨架、路由配置,以及 src/lib/api.ts 这样的 API 调用封装。

4.5 Agent 开发的最佳实践

维度最佳实践
Prompt 粒度按功能模块拆分,一次一个完整模块
上下文在 prompt 中说明已有结构和约定
验证节奏每完成一个模块就运行测试或手动验证
偏差纠正如果 Agent 做出了你不想要的设计决策,及时指出并让 Agent 修正
增量构建先搭骨架、再填充细节,而不是一次生成所有代码

关键模型:Agent 是你的结对编程搭档,不是外包。你仍然需要审阅它的输出、做关键决策、保持整体的架构一致性。


05 · Tab 补全:日常编码的加速器

5.1 什么是 Cursor Tab

当你写代码时,Cursor 会在灰色文本中显示预测的下一段代码。按 Tab 接受,按 Esc 忽略。这听起来简单,但在实际项目中每天可以节省数百次击键。

5.2 实际场景演示

场景一:编写 React 组件

// 你输入: interface NoteCardProps { note: Note; onEdit: (id: string) => void; onDelete: (id: string) => void; } // 输入完 interface 后开始写组件: export function NoteCard({ note, onEdit, onDelete }: NoteCardProps) { return ( // 在这里输入 <div 后,Cursor 会预测整个卡片结构 <div className="bg-white rounded-lg shadow p-4 hover:shadow-md transition-shadow"> <div className="flex justify-between items-start"> <h3 className="text-lg font-semibold text-gray-900">{note.title}</h3> <div className="flex space-x-2"> <button onClick={() => onEdit(note.id)} className="...">编辑</button> <button onClick={() => onDelete(note.id)} className="...">删除</button> </div> </div> <p className="text-gray-600 mt-2 line-clamp-3">{note.content}</p> <div className="flex gap-1 mt-3"> {note.tags.map(tag => ( <span key={tag.id} className="...">{tag.name}</span> ))} </div> </div> ); }

你实际只需要写 <div className="bg-white">,剩下的全是 Tab 补全。

场景二:写 API 路由

// 你已经写了 createNote 的 handler,现在写 updateNote: export const updateNote: RequestHandler = async (req, res) => { const { id } = req.params; const { title, content, tags } = req.body; // 输入 const note = await 后,Cursor 会预测: const note = await prisma.note.update({ where: { id }, data: { title, content, tags: { set: [], connectOrCreate: tags?.map(name => ({ where: { name_userId: { name, userId: req.user!.id } }, create: { name, userId: req.user!.id } })) } }, include: { tags: { include: { tag: true } } } }); res.json(note); };

5.3 Tab 补全的技巧

技巧说明
写清晰的类型定义TypeScript 类型越精确,Tab 预测越准
先写函数签名给出函数名 + 参数,Cursor 能推断实现
保持代码风格一致Tab 会学习你的风格,保持一致很重要
输入关键字符输入 <div 触发 JSX 预测,输入 prisma. 触发 DB 操作
利用注释引导// TODO: validate input 然后换行,Cursor 会帮你实现

5.4 数据驱动的对比

一个简单的实验:在 NoteFlow 项目中创建 5 个新的 API handler,分别用”手动打字”和”Tab 补全”两种方式:

指标手动打字Tab 补全提升
完成 5 个 handler约 18 分钟约 6 分钟3x
击键次数约 1200 次约 300 次4x
手动纠错3-5 次0-1 次显著减少

当然这些数字因人而异,但 Tab 补全带来的效率提升是实打实的。更重要的是,它减少了”上下文切换”——你不需要停下来想 API 的拼写或组件 props 的顺序,Cursor 帮你记住了。

关键模型:Tab 补全像是”代码的自动语音”——它在你开口之前已经知道你想说什么。你越熟悉项目,它的预测就越准。


06 · Debug 模式:问题定位与修复

6.1 真实 Bug 场景

在实际开发 NoteFlow 的过程中,几乎一定会遇到问题。这里我们用三个真实场景来演示 Cursor 的 Debug 模式。

6.2 场景一:401 认证失败

表现:前端登录成功后,带着 token 请求笔记列表,返回 401。

在 Cursor 的 Chat 中切换到 Debug 模式(Cmd + Shift + D), 粘贴错误信息: POST /api/notes 401 (Unauthorized) {"error":"未授权访问"} 提示:Debug 模式

Debug 模式会自动分析:

  1. 检查 token 传递:前端 api.tsAuthorization: Bearer ${token} 是否正确?
  2. 检查 token 解析:后端 auth.ts 中间件中 jwt.verify(token, secret) 是否用了正确的 secret?
  3. 检查 token 格式Bearer 前缀是否有空格?

结果发现:问题是前端存储 token 时用了 localStorage.setItem('token', data.token),但发请求时读的是 localStorage.getItem('auth_token'),key 不一致。修复后问题解决。

6.3 场景二:CORS 跨域错误

Access to fetch at 'http://localhost:3001/api/notes' from origin 'http://localhost:5173' has been blocked by CORS policy.

把错误粘贴到 Debug 模式,Cursor 会给出修复方案:

  • 安装 cors
  • 在 Express 入口配置 app.use(cors({ origin: 'http://localhost:5173', credentials: true }))
  • 如果用了自定义 header(如 Authorization),需要添加到 allowedHeaders

6.4 场景三:Prisma 查询结果为空

表现:创建笔记时传了 tags 数组,但数据库里 NoteTag 关联没有创建。

Debug 提示:prisma.note.create 调用中 tags 的 connectOrCreate 逻辑有误。

Debug 模式会逐层分析:

  1. req.body.tagsstring[](标签名数组)
  2. connectOrCreate 需要 where 条件匹配 name_userId 复合唯一约束
  3. 但代码中 create 时没有包含 userId

修复是将:

create: { name, userId: req.user!.id }

添加到 connectOrCreatecreate 字段。

6.5 Debug 模式的正确打开姿势

做法推荐不推荐
输入粘贴完整的错误栈 + 相关代码只说”它报错了”
范围指明哪个 API / 哪个页面说”整个项目都有问题”
预期说明你期望的行为只描述错误不描述预期
配合在 Debug 模式下迭代追问一句话后就不管了

关键模型:Debug 模式像是带着一个资深同事一起看报错——它能快速缩小范围,但最终的修复决策还是需要你来做。


07 · Git 工作流贯穿全程

7.1 初始化仓库

cd noteflow git init git add -A git commit -m "chore: init project structure with backend + frontend"

7.2 Cursor 的 Git 集成

Cursor 左侧的 Git 面板(Source Control 图标)让你可以:

  • 查看变更:每个文件的改动用颜色标注(绿色 = 新增,红色 = 删除,蓝色 = 修改)
  • 暂存文件:点击 + 暂存,- 取消暂存
  • 写提交信息:Ctrl + Enter 提交
  • 查看历史:点击文件查看历史版本

7.3 提交规范

我们采用 Conventional Commits 规范,在 NoteFlow 项目中实际用到的提交类型:

类型用途示例
feat新功能feat: add note search API with title and content matching
fixBug 修复fix: fix CORS config for production origin
chore项目配置chore: setup Prisma with SQLite and initial migration
refactor重构refactor: extract auth middleware to separate file
docs文档docs: add API endpoints documentation
style代码格式style: format code with Prettier

7.4 分支策略

main —— 生产分支 └─ develop —— 开发分支 ├─ feat/auth —— 用户认证模块 ├─ feat/notes —— 笔记管理模块 ├─ feat/search —— 搜索功能 └─ fix/cors —— CORS 修复

工作流程:

# 从 develop 切出功能分支 git checkout -b feat/auth develop # 开发完成后合并回 develop git checkout develop git merge feat/auth # 发布时合并到 main git checkout main git merge develop git tag v0.1.0

7.5 AI 辅助的 Code Review

使用 Cursor Chat 来做 Code Review:

在 Chat 中输入: "Review the diff of this branch. Check for: security issues, error handling gaps, TypeScript type safety, and SQL injection risks."

Cursor 会逐文件审查变更,指出潜在问题。这让 Code Review 从”人工跑一遍”变成”自动扫描 + 人工复核”。

7.6 一个真实的提交序列

这是 NoteFlow 开发过程中的实际提交日志:

feat: implement JWT auth with register and login endpoints feat: add note CRUD API with tag association feat: create React frontend with routing and auth pages feat: implement Markdown editor with preview fix: resolve token storage key mismatch in frontend fix: add CORS config for development environment feat: add note search by title and content refactor: extract API client into reusable module feat: add dark mode support with Tailwind docs: update README with setup instructions chore: configure CI with GitHub Actions

一共 11 次提交,覆盖了开发周期的完整轨迹。


08 · 部署上线

8.1 部署策略

服务平台原因
前端Vercel零配置、自动 HTTPS、全球 CDN
后端Railway支持 Node.js、PostgreSQL、环境变量管理
数据库Railway Postgres与应用同平台,部署简单
文件存储可选:Cloudinary后续扩展图片上传功能

8.2 前端部署到 Vercel

用 Agent 辅助配置:

Agent prompt:为 NoteFlow 前端配置 Vercel 部署。 需要: 1. 在 client/ 目录下创建 vercel.json 2. 配置 rewrites 让所有路由 fallback 到 index.html 3. 设置 build command 和 output directory 4. 添加 .env.example 说明需要的环境变量

Agent 会在前端目录下创建:

{ "buildCommand": "npm run build", "outputDirectory": "dist", "devCommand": "npm run dev", "rewrites": [ { "source": "/(.*)", "destination": "/index.html" } ] }

然后通过 Vercel CLI 部署:

cd client npx vercel --prod

或者连接 GitHub 仓库启用自动部署——每次 push 到 main 分支自动构建。

8.3 后端部署到 Railway

Railway 的部署更简单:

  1. 在 Railway 面板创建新项目
  2. 连接 GitHub 仓库
  3. 设置启动命令:cd server && npm run build && npm start
  4. 设置环境变量:DATABASE_URLJWT_SECRETPORT
  5. Railway 会自动检测 Node.js 项目并部署

8.4 环境变量管理

# .env (本地开发) DATABASE_URL="file:./dev.db" JWT_SECRET="dev-secret-key" PORT=3001 FRONTEND_URL="http://localhost:5173" # 生产环境 (Railway) DATABASE_URL="postgresql://user:pass@host:5432/noteflow" JWT_SECRET="<随机生成的强密钥>" PORT=8080 FRONTEND_URL="https://noteflow.vercel.app"

8.5 持续集成

用 Agent 配置 GitHub Actions:

# .github/workflows/ci.yml name: CI on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest services: postgres: image: postgres:15 env: POSTGRES_DB: noteflow_test POSTGRES_USER: test POSTGRES_PASSWORD: test ports: - 5432:5432 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: | cd server && npm ci cd ../client && npm ci - name: Run backend tests run: cd server && npm test - name: Run frontend tests run: cd client && npm test - name: Build check run: | cd server && npm run build cd ../client && npm run build

8.6 部署清单

上线前逐项检查:

  • 数据库迁移在生产环境执行过(prisma migrate deploy
  • JWT_SECRET 是强随机字符串,不是默认值
  • CORS 配置了生产环境的前端域名
  • 前端 API 地址指向生产后端
  • 日志级别调整为 warn(开发环境是 debug)
  • 关闭了 SQLite 的 PRAGMA journal_mode=WAL(生产用 PostgreSQL)
  • HTTPS 已配置
  • 错误页面和 404 处理已就位

09 · 总结篇:从项目看能力

9.1 完整能力地图

通过 NoteFlow 这个 capstone 项目,你实际演练了 Cursor 的每一个核心能力:

Cursor 能力树 ├── 规划层 ◄ Plan Mode │ ├── 数据库建模 │ ├── API 设计 │ ├── 路由规划 │ └── 架构决策 ├── 开发层 ◄ Agent + Tab │ ├── 项目脚手架搭建 │ ├── 后端功能实现 │ ├── 前端页面开发 │ └── 接口联调 ├── 质量层 ◄ Debug + Code Review │ ├── 认证 Bug 修复 │ ├── CORS 配置修复 │ ├── 数据库查询修复 │ └── 代码安全审查 └── 部署层 ◄ Agent + Terminal ├── 构建配置 ├── 环境变量管理 ├── CI/CD 配置 └── 自动化部署

9.2 各模式的适用场景速查

模式最佳使用时机一句话描述
Plan Mode开始新模块、做架构决策、讨论方案”先想清楚再动手”
Agent实现完整功能、搭建项目骨架、重构”自动化执行已知方案”
Tab 补全日常编码、编写模板代码、重复模式”预测你想写的每一行”
Debug 模式遇到错误、调试异常行为、排查问题”带着专家一起看报错”
普通 Chat代码修改建议、技术问答、代码解释”随时可以问的伙伴”

9.3 从项目中获得的经验

1. 模式切换的节奏感

一个典型的开发循环是这样的:

Plan Mode(5 分钟) → 讨论方案 Agent(15 分钟) → 实现功能 手动测试(3 分钟) → 验证正确性 Tab 补全 + 手动编码(10 分钟) → 打磨细节 Debug 模式(如果有问题) → 修复 Bug Git 提交(2 分钟) → 保存工作

循环往复,每个功能模块大约 30-45 分钟。

2. 人机协作的分界线

交给 AI 做自己把控
代码实现、模板模式架构决策、技术选型
Bug 定位、错误分析修复方案审批
测试用例编写测试范围定义
重复性编码业务逻辑确认
配置脚本安全与性能的权衡

3. 能力的复利效应

Tab 补全每天节省 30% 的击键 → 一个月累积节省数小时 Agent 每次实现一个功能节省 50% 时间 → 一个月多做 2-3 个功能 Debug 模式每次省去 10 分钟排查时间 → 一个月少遇到数十次卡壳

这些节省不是线性的,而是复利的——你省下的时间可以去做更高层的设计,而更好的设计又减少了后期的 Bug,形成正向循环。

9.4 三大心智模型

模型来源核心思想在 Cursor 中的体现
慢规划快编码本书核心原则规划阶段花时间是效率最高的投资Plan Mode 先讨论,Agent 后执行
人机协作分界线软件开发实践知道什么交出去、什么自己把控架构你决定,代码 Agent 写
能力的复利复合增长思维工具节省时间 → 时间换能力 → 能力又节省更多时间每个功能用 Cursor 都比上次更快

这三大模型不仅是 Cursor 的使用指南,也是你在 AI 辅助时代持续成长的核心方法。


10 · 延伸阅读与下一篇

10.1 可继续探索的方向

NoteFlow 完成了基线功能,但还有很多可扩展的方向:

  1. 富文本编辑器:替换为 TipTap 或 Slate,支持更丰富的编辑体验
  2. 图片上传:集成 Cloudinary 或 S3,在笔记中插入图片
  3. 协作编辑:用 WebSocket + CRDT 实现实时协作
  4. AI 辅助写作:集成 OpenAI API,实现自动补全、摘要、翻译
  5. 离线 PWA:用 Service Worker 实现离线访问
  6. 移动端适配:用 React Native 或 Tauri 打包为移动应用
  7. 多语言支持:用 i18next 实现国际化

10.2 学习路径总结

阶段目标主要 Cursor 能力产出
第 1-10 篇基础操作Chat、Tab、Composer能写简单脚本
第 11-25 篇进阶能力Agent、Plan Mode、Debug能独立开发模块
第 26-36 篇高级技巧Git 集成、CI/CD、Code Review能管理项目
第 37 篇(本篇)综合实战全流程串联能独立交付项目

10.3 下一步

如果你已经跟着走完了 NoteFlow 的全流程,接下来可以:

  • 回看薄弱环节:哪一步让你卡最久?翻到对应的文章再读一遍
  • 复盘项目:用自己的话写一篇回顾,哪里的设计可以更好?
  • 开始自己的项目:用 Cursor 去构建你真正想做的产品——一个个人博客、一个小工具、一个 Side Project
  • 保持学习:关注 Cursor 的更新,新功能(如 .cursorrules、Composer 改进)持续出现

提示:你也可以回到第 36 篇,了解更多 Git 工作流的进阶技巧。
下一篇将进入附录部分,包括常见问题、快捷键速查表、以及参考资源。


10.4 参考资料


下一篇: 附录 A · 常见问题与排错指南
回到目录:Cursor 完全指南


本文是 “Cursor 完全指南” 系列的第 37 篇。通过 NoteFlow 这个完整的全栈项目,你将 Plan Mode、Agent、Tab 补全、Debug 模式、Git 工作流和部署串联成一条完整的开发流水线。从现在开始,每一个新项目都是一个 capstone。