游乐游手机版
首页/AI教程/文章详情

Cursor AI编辑器与SDD开发工作流实战指南

时间:2026-06-06 17:19
Cursor AI 编辑器与 SDD 开发工作流实战指南:从入门到精通 在当前 AI 编程领域,Cursor 已成为开发者不可或缺的效率工具,能够显著提升编码速度。然而,仅有工具并不足够——关键在于如何确保 AI 输出精准可靠、如何让它真正理解项目意图。本文将系统梳理从 Cursor 基础操作、Ru

Cursor AI 编辑器与 SDD 开发工作流实战指南:从入门到精通

在当前 AI 编程领域,Cursor 已成为开发者不可或缺的效率工具,能够显著提升编码速度。然而,仅有工具并不足够——关键在于如何确保 AI 输出精准可靠、如何让它真正理解项目意图。本文将系统梳理从 Cursor 基础操作、Rules/Skills 高级配置,到 OpenSpec 规格驱动开发(SDD)完整工作流,提供一站式实战指南,帮助你快速掌握这套高效开发体系。

Cursor AI 编辑器 + SDD 开发工作流实战指南

一、Cursor 编辑器:AI 辅助开发入门

1.1 下载与安装(全平台支持)

官方下载地址:cursor.com/download/

  • Windows:下载 .exe 安装包,双击运行即可使用
  • macOS:下载 .dmg,直接拖入 Applications 文件夹
  • Linux:下载 .AppImage.deb

1.2 核心概念:三种交互方式

Cursor 提供三种与 AI 交互的方式,各自适用不同场景,建议根据需求灵活选择,避免混用。

交互方式 快捷键 适用场景 输出
Tab 补全 Tab 写代码时的行内补全、续写 光标处直接插入代码
Agent 模式 Ctrl+L / Chat 面板切换 跨文件重构、端到端实现需求 直接读写文件、执行终端命令

Tab 补全

最轻量的交互方式——编写代码时,Cursor 会自动预测下一段代码,按 Tab 键即可接受:

// 用户输入注释
// 计算用户的年龄
function calculateAge(← 此时 Cursor 自动补全函数签名和实现体

Chat 聊天

打开侧边栏聊天面板并向 AI 提问。适合的场景非常明确:

  • "这段代码在做什么?"
  • "帮我写一个正则表达式,匹配邮箱格式"
  • "这个函数有没有 bug?"

Chat 中可以使用 @ 引用将文件、文件夹、文档喂给 AI(后面将详细说明)。

Agent 模式(重点)

Agent 模式下,AI 可以读文件、改文件、执行终端命令,全自动循环直到完成任务。典型用法:

你:"帮我给 User 模型加一个 avatar 字段,数据库迁移也一起做"
Agent:读 schema → 改 model → 生成 migration → 跑 migrate → 改前端组件 → 跑类型检查

1.3 上下文控制:@ 引用

AI 输出质量 = 模型能力 × 上下文质量。@ 引用是提供上下文最直接的方式:

引用语法 含义 用途
@filename.ts 引用具体文件 让 AI 精准理解某个文件
@folder/ 引用整个文件夹 给 AI 一个模块的全貌
@codebase 语义搜索整个仓库 "不知道代码在哪"时使用
@docs 引用外部文档 让 AI 读框架文档而非靠记忆
@web 搜索互联网 获取最新信息、查版本
@git 引用 Git 历史 查看最近改了哪些内容

实战技巧:

❌ "帮我改一下登录逻辑"(AI 不知道代码在哪,会瞎猜)
✅ "帮我改一下 @src/auth/login.ts 里的登录逻辑,参考 @src/auth/register.ts 的错误处理方式"

原则很简单:先收窄上下文,再执行大改动;上下文越精准,无效输出越少。

1.4 模型选择

Cursor 支持多种模型,不同任务应选用不同模型:

模型层次 适合任务 说明
快速模型 Tab 补全、简单重命名、格式化 低延迟、低成本
强模型 架构设计、复杂 bug 分析、跨模块重构 推理能力强、成本较高

二、Rules:为 AI 设置行为规范

2.1 什么是 Rules

Rules 是你写给 AI 的「永久指令」,放置在项目根目录后,每次对话 AI 都会自动遵循。它的作用非常明确:

  • 统一代码风格("用 TypeScript strict 模式"、"禁止使用 any")
  • 约定技术栈("后端用 NestJS + Prisma"、"前端用 React + Zustand")
  • 约定目录结构("组件放在 src/components/ 下")
  • 约定验证方式("每次改完运行 pnpm test")

2.2 创建 Rules

在项目根目录创建 .cursor/rules/ 文件夹,放入 .mdc 规则文件:

项目根目录/
├── .cursor/
│   └── rules/
│       ├── general.mdc    # 通用规则
│       ├── frontend.mdc   # 前端规则
│       └── backend.mdc    # 后端规则
├── src/
└── ...

规则文件示例

.cursor/rules/general.mdc

---
description: 项目通用开发规范
globs:
alwaysApply: true
---
# 项目规范

## 技术栈
- 语言:TypeScript(strict 模式)
- 包管理器:pnpm
- 测试框架:Vitest

## 代码规范
- 不使用 any 类型
- 函数必须有明确的返回类型
- 错误处理使用自定义 Error 类,不用裸字符串
- 提交信息格式:feat(scope): 描述 / fix(scope): 描述

## 验证命令
- 类型检查:pnpm tsc --noEmit
- 单元测试:pnpm test
- 代码检查:pnpm lint

.cursor/rules/frontend.mdc(按文件类型触发):

---
description: 前端 React 组件规范
globs: src/components/**/*.tsx, src/pages/**/*.tsx
alwaysApply: false
---
# 前端组件规范
- 使用函数组件 + Hooks,不用 Class 组件
- 状态管理:简单状态用 useState,跨组件用 Zustand
- 样式方案:Tailwind CSS
- 组件文件结构:组件 + 类型定义放在同一文件中

2.3 Rules 的类型

类型 触发方式 配置
Always(全局) 每次对话都生效 alwaysApply: true
Auto(自动) 匹配到特定文件时生效 globs: "*.tsx"
Agent Requested AI 自己判断是否需要 写好 description
Manual 需手动 @ruleName 引用 不设 globs,不设 alwaysApply

2.4 另一种方式:AGENTS.md

在项目根目录放置 AGENTS.md,效果类似于 Rules 但写法更自由,适合编写:

  • 项目如何运行(启动命令)
  • 关键环境变量名(不要写入真实密钥)
  • 目录结构说明
  • 协作约定
# AGENTS.md

## 启动方式
pnpm install && pnpm dev

## 环境变量
需要在 .env.local 中配置:DATABASE_URL, NEXTAUTH_SECRET

## 目录结构
- app/ — Next.js App Router 页面
- lib/ — 工具函数和服务
- components/— 共享 UI 组件
- prisma/— 数据库 schema

三、Skills:为 AI 扩展能力

3.1 什么是 Skills

Skills 是比 Rules 更重量级的「能力包」——包含详细的操作步骤、代码模板、工作流程。

Rules vs Skills:

对比项 Rules Skills
定位 约束和规范 能力和方法论
触发 自动/按文件类型 AI 判断后主动调用
内容 简短的规则清单 详细的操作流程 + 模板
场景 "代码风格要这样" "遇到这种需求要按这个流程做"

3.2 常用 Skills 类型

Skill 名称 用途
brainstorming 在实现前先探索需求、做方案设计
writing-plans 写实现计划,拆解任务
test-driven-development TDD 流程:先写测试再实现
systematic-debugging 遇到 bug 时系统化排查
subagent-driven-development 将独立任务分派给并行子 Agent
verification-before-completion 完成前必须运行验证命令确认

3.3 Skills 的安装与使用

Skills 安装后存放在本地特定目录,AI 会在合适的时机自动调用。你也可以手动提示:

你:"按照 SDD 流程帮我实现这个需求"
AI:(自动加载 spec-driven-dev skill,按 proposal → spec → design → tasks → implement 流程执行)

3.4 OpenSpec 作为 Skill

OpenSpec 项目本身可以作为 Cursor 的 Skill 集成。安装后,你可以直接在对话中使用 OpenSpec 命令:

你:/opsx:propose add-user-avatar
AI:自动创建 proposal.md → specs/ → design.md → tasks.md

3.5 官方 Skills 仓库

仓库地址:skills.sh/

四、SDD:Spec-Driven Development(规格驱动开发)

4.1 为什么需要 SDD

没有 SDD 时的问题:

你:"帮我做一个用户管理功能"
AI:(理解各异,生成的代码可能不符合预期)
你:"不对,我要的不是这个……"
AI:(推倒重来)
你:"还是不对……"
→ 浪费 3 轮对话 + 大量 token

采用 SDD 时:

你:"帮我做一个用户管理功能"
AI:先输出 Proposal(意图+范围)→ 你确认
AI:再输出 Spec(行为契约)→ 你确认
AI:再输出 Design(技术方案)→ 你确认
AI:最后输出 Tasks(实现清单)→ 逐个实现
→ 每一步对齐,减少返工

核心理念:先对齐需求,再编写代码。

4.2 OpenSpec 项目介绍

GitHub:github.com/Fission-AI/…

OpenSpec 是一个开源的规格驱动开发框架,专为 AI 编程助手设计。

设计哲学:

原则 说明
Fluid not Rigid 流式迭代,不搞阶段门控
Iterative not Waterfall 边做边学,随时修正
Easy not Complex 轻量设置,最少仪式感
Brownfield-first 面向已有代码库的增量开发

4.3 安装 OpenSpec

前提:Node.js >= 20.19.0

# 全局安装
npm install -g @fission-ai/openspec@latest

# 进入项目目录
cd your-project

# 初始化
openspec init

初始化后,项目中会生成如下结构:

openspec/
├── specs/              # 源头规格(系统当前行为描述)
│   └── /
│       └── spec.md
├── changes/            # 变更提案(每次改动一个文件夹)
│   └── /
│       ├── proposal.md   # 为什么做、做什么
│       ├── design.md     # 怎么做(技术方案)
│       ├── tasks.md      # 实现清单
│       └── specs/        # Delta Specs(变更了哪些行为)
│           └── /
│               └── spec.md
└── config.yaml         # 项目配置(可选)

4.4 SDD 完整工作流程

全局视图

┌─────────────┐  ┌──────────────┐  ┌─────────────┐  ┌───────────┐  ┌──────────┐
│1. PROPOSE    │──►│2. SPEC       │──►│3. DESIGN    │──►│4. TASKS   │──►│ 5. APPLY │
│为什么做       │   │做什么         │   │怎么做        │   │执行清单     │   │ 写代码    │
│+ 范围        │   │行为契约       │   │技术方案      │   │可勾选      │   │ 逐个实现  │
└─────────────┘  └──────────────┘  └─────────────┘  └───────────┘  └──────────┘
       ▲                    ▲                    ▲
       └────────────────────┴────────────────────┴────── 实现中发现问题可随时回退修正 ──┘

步骤 1:Propose(提案)

在 Cursor 对话中输入:

/opsx:propose add-dark-mode

AI 会自动创建变更文件夹并生成所有制品:

✓ proposal.md — 意图、范围、方法
✓ specs/— 行为要求和场景
✓ design.md — 技术方案
✓ tasks.md— 实现清单

Proposal 示例:

# Proposal: Add Dark Mode

## Intent
用户反馈夜间使用刺眼,需要暗色模式减少眼部疲劳。

## Scope
In scope:
- 设置页面添加主题切换开关
- 检测系统偏好自动切换
- 本地持久化用户偏好
Out of scope:
- 自定义主题色(未来版本)
- 每页独立主题设置

## Approach
使用 CSS 自定义属性实现主题切换,React Context 管理状态。

步骤 2:Spec(行为契约)

Spec 不描述「怎么实现」,只描述「系统应该表现出什么行为」:

# Delta for UI

## ADDED Requirements

### Requirement: Theme Selection
系统 SHALL 允许用户在亮色和暗色主题间切换。

#### Scenario: 手动切换
- GIVEN 用户在任意页面
- WHEN 用户点击主题切换按钮
- THEN 主题立即切换
- AND 偏好保存到本地,跨会话生效

#### Scenario: 跟随系统
- GIVEN 用户没有保存的偏好
- WHEN 应用加载
- THEN 使用操作系统的偏好配色方案

关键语法:

  • MUST / SHALL:必须实现
  • SHOULD:推荐实现,允许例外
  • MAY:可选实现
  • GIVEN / WHEN / THEN:可验证的场景描述

步骤 3:Design(技术设计)

# Design: Add Dark Mode

## Architecture Decisions

### Decision: Context over Redux
选择 React Context 因为:
- 简单的二元状态(亮/暗)
- 不需要复杂状态转换
- 避免引入 Redux 依赖

### Decision: CSS Custom Properties
选择 CSS 变量而非 CSS-in-JS 因为:
- 与现有样式表兼容
- 无运行时开销
- 浏览器原生方案

## File Changes
- `src/contexts/ThemeContext.tsx` — (new)
- `src/components/ThemeToggle.tsx` — (new)
- `src/styles/globals.css` — (modified)

步骤 4:Tasks(实现清单)

# Tasks

## 1. Theme Infrastructure
- [ ] 1.1 Create ThemeContext with light/dark state
- [ ] 1.2 Add CSS custom properties for colors
- [ ] 1.3 Implement localStorage persistence

## 2. UI Components
- [ ] 2.1 Create ThemeToggle component
- [ ] 2.2 Add toggle to settings page

## 3. Styling
- [ ] 3.1 Define dark theme color palette
- [ ] 3.2 Update components to use CSS variables

步骤 5:Apply(执行实现)

/opsx:apply

AI 逐个读取 tasks.md 中的任务,编写代码、修改文件、运行命令,完成后打勾:

Working on 1.1: Create ThemeContext...
✓ 1.1 Complete
Working on 1.2: Add CSS custom properties...
✓ 1.2 Complete
...
All tasks complete!

步骤 6:Verify + Archive(验证 + 归档)

/opsx:verify  ← 检查实现是否匹配 Spec
/opsx:archive ← 归档变更,Delta Specs 合入主规格

归档后:

  • Delta Specs 合入 openspec/specs/ 成为新的「系统当前行为」
  • 变更文件夹移入 openspec/changes/archive/ 保留审计记录

4.5 Delta Specs:增量规格

Delta Specs 是 OpenSpec 最核心的概念——不重写整个规格,只描述「改变了哪些内容」:

区段 含义 归档时操作
## ADDED Requirements 新增行为 追加到主规格
## MODIFIED Requirements 修改行为 替换主规格中对应条目
## REMOVED Requirements 移除行为 从主规格中删除

为什么使用 Delta 而非全量覆盖:

  • 清晰显示「改了什么」,无需在整份文档中查找差异
  • 多个变更可以并行而不冲突
  • Code Review 时只需关注变化部分

4.6 OpenSpec 命令速查

核心路径(默认)

命令 作用
/opsx:propose 创建变更 + 一次性生成所有制品
/opsx:explore 探索思考,不创建制品
/opsx:apply 按 tasks 逐项实现
/opsx:archive 归档已完成变更

扩展路径(高级,需开启)

自行开启 openspec config profile

命令 作用
/opsx:new 只创建变更骨架
/opsx:continue 按依赖顺序创建下一个制品
/opsx:ff 快进:一次创建所有规划制品
/opsx:verify 验证实现是否匹配 Spec
/opsx:sync 将 Delta Specs 合入主规格(不归档)
/opsx:bulk-archive 批量归档
/opsx:onboard 交互式引导教程

五、完整实战:从零开始构建一个功能

场景

在现有项目中添加「用户头像上传」功能。

Step 1:确保环境就绪

# 确认 OpenSpec 已安装
openspec --version

# 进入项目并初始化(如未初始化过)
cd my-project
openspec init

Step 2:确保 Rules 已配置

检查 .cursor/rules/ 目录下是否包含项目规范文件。

Step 3:发起提案

在 Cursor Agent 对话中输入:

/opsx:propose add-user-avatar

AI 自动产出 4 个制品文件,逐个审阅并确认。

Step 4:审阅制品

关键审阅点:

制品 重点检查
proposal.md 范围是否正确?是否有超出本次需求的项?
specs/ 行为描述是否与你理解一致?场景覆盖了边界情况吗?
design.md 技术方案是否合理?是否与现有架构冲突?
tasks.md 任务粒度是否合适?是否有遗漏的步骤?

如有问题,直接告知 AI 修改:

你:"proposal 的 scope 里应该排除批量上传,只做单张头像上传"
AI:(修改 proposal.md)

Step 5:执行实现

/opsx:apply

AI 逐项实现,你可以在每一步确认或纠正。

Step 6:验证并归档

/opsx:verify  ← 检查完整性、正确性、一致性
/opsx:archive ← 归档,Delta Specs 合入主规格

六、常见问题与注意事项

6.1 常见坑

现象 原因 对策
AI 改了一堆无关文件 上下文过大、任务描述太泛 缩小 @ 引用范围;明确指定"只改这几个文件"
AI 编造不存在的 API 缺乏真实文档 使用 @docs 喂入官方文档;贴已有代码示例
重复犯同样的错 没有固化规范 写入 Rules,一劳永逸
Diff 太大难以审阅 一次改动过多 拆分任务;先接口后实现
制品与代码脱节 实现中改了方案但未更新制品 发现问题后回 Spec/Design 修正再继续

6.2 最佳实践

  1. 先小后大:先用 Chat 理解代码 → 再用 Agent 做修改
  2. 先规格后实现:用 SDD 流程对齐需求再编写代码
  3. 频繁验证:每完成一组任务跑一次测试 / 类型检查
  4. 迭代修正:制品不是一次性的,实现过程中发现不对就回去修改
  5. 保持干净的上下文:新功能开启新对话,不要在超长对话里处理所有事务

6.3 安全注意

  • 永远不要将真实密钥、密码写入 Rules / AGENTS.md / 对话中
  • 审阅 diff:Agent 改完代码后,逐文件审阅变更再接受
  • 安装依赖要确认:AI 要 npm install 新包时,检查包名是否正确

七、快速回顾

Cursor 使用要点
├── 三种交互:Tab 补全 / Chat 聊天 / Agent 模式
├── 上下文控制:@ 引用(文件、文件夹、文档、Web、Git)
├── Rules:项目规范,让 AI 遵守规则
├── Skills:为 AI 扩展能力包
└── 模型选择:简单任务用快模型,复杂决策用强模型

SDD 工作流(OpenSpec)
├── 安装:npm install -g @fission-ai/openspec@latest && openspec init
├── 核心流程:Propose → Spec → Design → Tasks → Apply → Archive
├── 关键概念:Delta Specs(增量规格)
├── 核心命令:/opsx:propose /opsx:apply /opsx:archive
└── 理念:先对齐需求,再写代码;流式迭代,不卡阶段

八、延伸资源

资源 链接
Cursor 官网 cursor.com
Cursor 下载 cursor.com/download
OpenSpec GitHub github.com/Fission-AI/…
OpenSpec 入门文档 Getting Started
OpenSpec 命令手册 Commands
OpenSpec 核心概念 Concepts
OpenSpec 工作流 Workflows
来源:https://juejin.cn/post/7628180482584264730
上一篇AI帮我写一万行代码后我却看不懂自己的项目了 下一篇阿里发布最强AI思考模型 实测体验详解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Synthesia零基础教程:客户端安装与工作区权限设置
AI教程 · 2026-06-07

Synthesia零基础教程:客户端安装与工作区权限设置

本文介绍了AI视频生成工具Synthesia的入门流程。内容涵盖从官网下载客户端、完成账户注册与登录,到软件安装与启动的完整步骤。详细说明了如何初始化工作区,包括创建首个AI视频项目、选择模板与AI主播。最后,指导用户理解并设置团队协作中的不同权限角色,以便安全高效地共同管理项目。

FramePack新手入门指南:安装启动报错修复导出全流程
AI教程 · 2026-06-07

FramePack新手入门指南:安装启动报错修复导出全流程

本文详细介绍了FramePack工具从下载安装到项目导出的完整流程。内容涵盖软件安装步骤、首次启动设置、常见报错解决方案以及项目打包导出方法。指南旨在帮助用户快速掌握工具核心操作,解决使用过程中可能遇到的技术问题,确保顺利完成AI视频帧处理任务。

FLUX.1保姆级教程:环境安装、显存优化与首次出图测试
AI教程 · 2026-06-07

FLUX.1保姆级教程:环境安装、显存优化与首次出图测试

本文详细介绍了FLUX 1的安装与初步使用流程。内容涵盖从Python环境配置、代码仓库克隆、依赖包安装,到关键的显存优化设置,最后指导用户完成首次文生图测试。教程旨在帮助用户顺利搭建运行环境,解决常见安装问题,并实现基础图像生成功能。

AnythingLLM新手实战:本地大模型部署后知识库接入设置
AI教程 · 2026-06-07

AnythingLLM新手实战:本地大模型部署后知识库接入设置

本文介绍了在本地部署大模型后,如何为AnythingLLM设置知识库。内容涵盖知识库的基本概念、创建与配置步骤、文档上传与处理技巧,以及如何通过问答测试其效果。旨在帮助用户有效整合本地文档资源,构建个性化的AI知识助手,提升信息检索与利用效率。

Aider安装失败排查:扩展冲突与登录异常全解析
AI教程 · 2026-06-07

Aider安装失败排查:扩展冲突与登录异常全解析

本文针对Aider安装过程中常见的扩展冲突与登录异常问题,提供了系统的排查思路与解决方案。内容涵盖如何识别并处理与其他AI工具的兼容性问题,解决因网络或账户设置导致的登录失败,以及通过环境检查、依赖更新等步骤彻底排除安装障碍,帮助用户顺利完成安装与配置。