---
title: "一个真实项目里的 Cursor 工作流"
description: "把 Cursor 用在真实项目：只读理解、计划、小步修改、验证、审查、沉淀规则。"
verifiedAt: "2026-05-09"
---

真实项目里的 Cursor 工作流不是"让 AI 一次性做完"。商业级用法是一条可观察闭环：读现场、定边界、写计划、小步改、跑验证、看 diff、做 review、沉淀规则。

> [!NOTE]
> **本章目标**：你会把前面 11 篇串成一个可以直接落地的项目流程，并知道每一步用哪个 Cursor 入口、留下什么证据、什么时候停止。

## 1. 开始前：先看现场

不要在未知工作树上直接启动 Agent。

先确认：

- 当前分支是什么。
- `git status` 里有哪些已有改动。
- 哪些改动不是你或 Cursor 做的。
- 任务允许修改哪些目录。
- 验证命令是什么。
- 是否有其他人或其他 agent 同时在改。

如果有并行改动，任务 prompt 必须写清“不触碰某些路径”。提交时也要精确 stage，不能 `git add .`。

## 2. 第一步：Ask 只读理解

第一条 prompt 不要要求修改：

```text
只读分析这个任务，不要修改文件，不要运行写入命令。

目标：[描述问题]

请输出：
1. 相关文件和调用链
2. 当前行为
3. 可能原因
4. 最小修改范围
5. 建议验证命令
6. 风险和停止条件
```

这一步用 Ask 或 Agent 的只读约束都可以。核心是先把项目现场从“感觉”变成“文件、命令、风险”。

## 3. 第二步：Plan 先审方案

只要任务跨多个文件、影响公共模块、涉及认证、支付、数据、权限、部署、Cloud Agent、MCP 或 CI，就先进 Plan。

Plan 里必须有：

- 改动目标。
- 涉及文件。
- 不会改的边界。
- 实现顺序。
- 验证命令。
- 回退方式。
- 需要人工确认的点。

如果 Plan 没写清这些，不要 Build。让 Cursor 修改计划，比在错误实现上修修补补更稳。

## 4. 第三步：Agent 小步执行

批准执行时，把范围压小：

```text
按已确认计划执行第一步。
只允许修改：
- src/components/LoginForm.tsx
- src/components/LoginForm.test.tsx

不要修改 package.json、lockfile、认证 schema、环境变量和路由配置。
完成后运行 pnpm test -- LoginForm，并输出 diff 摘要。
```

小步执行的标准：你能完整审查这次 diff。如果 diff 大到看不完，就说明任务拆得不够——遇到这种情况立即停下，把"改文件 + 改测试 + 改类型"拆成 3 个独立任务再继续。

## 5. 第四步：Terminal 和 Browser 验证

代码改完必须跑证据。

后端 / 库代码常见验证：

- lint。
- focused tests。
- type check。
- build。
- migration dry-run。

前端 / 文档站常见验证：

- build。
- 本地预览。
- console error。
- network error。
- mobile / tablet / desktop viewport。
- 横向 overflow。
- 长代码块、表格、Cards、details、Mermaid。

Browser 验证 prompt 示例：

```text
启动本地预览，只打开 localhost。
检查这些 viewport：390、768、1024、1440。
重点看横向溢出、导航遮挡、代码块、Cards、details 和 Mermaid。
输出 URL、viewport、问题和证据。
```

## 6. 第五步：Review 不只看总结

Cursor summary 只是索引，不是验收。

提交前看：

- `git diff`。
- 测试输出。
- build 输出。
- browser 检查结果。
- 是否改了无关文件。
- 是否引入格式化大面积重排。
- 是否碰了 secrets、凭据、生产配置、lockfile。

可以用 Agent Review 或独立 verifier subagent（验证子 agent，专责验证已完成工作而不动手实现），但结论仍要回到 diff 和命令输出。

## 7. 第六步：沉淀规则和流程

如果同一类问题反复出现，不要每次重新靠 prompt。

沉淀方式：

- 一句长期约束：Project Rule。
- 多步流程：Skill。
- 独立验证角色：Subagent。
- 固定事件检查：Hook。
- 对 PR 审查：`.cursor/BUGBOT.md`。
- 对团队统一策略：Team Rules 或 dashboard controls。

沉淀标准：重复三次、边界清楚、验收明确、失败可回退。

## 8. 一个完整登录模块例子

任务：登录后偶发不跳转。

正确流程：

```mermaid
flowchart TD
  A1["1.Ask 只读分析"] --> A2["2.Debug 加 instrumentation"]
  A2 --> A3["3.用户复现 + Cursor 读 logs"]
  A3 --> A4["4.Plan 写根因和修复范围"]
  A4 --> A5["5.Agent 只改登录组件 + 测试"]
  A5 --> A6["6.Terminal 跑 focused test"]
  A6 --> A7["7.Browser 检查 console / network"]
  A7 --> A8["8.Agent Review 做 Deep review"]
  A8 --> A9["9.人工审 diff 决定是否提交"]
  A9 --> A10["10.沉淀 Project Rule"]
```

逐步说明：

1. Ask 只读分析登录组件、auth API、路由和测试。
2. Debug Mode 根据复现步骤添加最小 instrumentation。
3. 用户复现，Cursor 读取 logs。
4. Plan 写出根因、修复范围、验证命令。
5. Agent 只改登录组件和相关测试。
6. Terminal 跑 focused test。
7. Browser 检查登录流程和 console / network。
8. Agent Review 对本地 diff 做 Deep review。
9. 人工审 diff，决定是否提交。
10. 如果发现"不要改 auth schema"是长期边界，写入 Project Rule。

这个流程看起来比"一句帮我修"长，但每一步都有证据和停点。

## 9. 停止条件

出现这些情况就停：

- Agent 开始修改未授权文件。
- 任务范围从 2 个文件扩到 20 个文件。
- 测试失败但 Agent 想跳过。
- 它修改测试来迎合错误实现。
- 需要生产密钥、账单、删除、数据库写入。
- 其他人或其他 agent 正在同一文件上改。
- 你看不懂 diff。

停止不是失败。停止是把风险重新拉回可控范围。

## 10. 最终交付清单

一个 Cursor 任务完成时，至少留下：

- 修改文件清单。
- 关键实现说明。
- 已运行验证。
- 未运行验证和原因。
- 断点 / UI 检查结果。
- 剩余风险。
- 若任务走的是 Cloud Agent，PR、artifacts、远端桌面录像也要进交付物。
- 是否沉淀 Rules / Skills / Hooks / Bugbot rules。
- commit 是否只包含本任务文件。

## 官方来源

- [Cursor Agent Overview](https://cursor.com/docs/agent/overview.md)：Agent tools、checkpoints、queued messages 和执行模型。
- [Cursor Plan Mode](https://cursor.com/docs/agent/plan-mode.md)：复杂任务先计划再构建。
- [Cursor Debug Mode](https://cursor.com/docs/agent/debug-mode.md)：基于运行时证据定位 root cause。
- [Cursor Agent Review](https://cursor.com/docs/agent/agent-review.md)：本地 diff 提交前 review。
- [Cursor Browser Tool](https://cursor.com/docs/agent/tools/browser.md)：Browser 截图、console、network 和 UI 验证。

## 接下来去哪

<Cards>
  <Card title="上一篇" description="先用工作流位置完成工具选型。" href="/docs/cursor/understanding/11-cursor-vs-codex-claude-windsurf-copilot" />
  <Card title="官方手册" description="按能力域查询 Cursor 官方事实和配置边界。" href="/docs/cursor/official" />
  <Card title="返回 Cursor 首页" description="回到 Cursor 教程总入口。" href="/docs/cursor" />
</Cards>
