乐于分享
好东西不私藏

普通人如何学习用AI做专业应用(app)——从vibe coding到Spec-Driven Development规范驱动开发

普通人如何学习用AI做专业应用(app)——从vibe coding到Spec-Driven Development规范驱动开发

AI 编程真正的分水岭:不是会写提示词,而是会写 Spec

很多上班族第一次接触 AI 编程,都会经历一个兴奋期。

你对 AI 说:

帮我做一个销售数据看板。
帮我开发一个客户管理系统。
帮我做一个可以上传 Excel 并自动分析数据的网页。

几分钟后,页面出现了,按钮也能点击,图表甚至还有动画。

你会产生一种错觉:

原来开发软件这么简单。

但继续修改几轮后,问题很快出现:

  • • 改了首页,详情页的样式乱了;
  • • 新增一个字段,三个页面的数据对不上;
  • • 修复一个问题,又出现两个新问题;
  • • AI 忘记了之前确定的技术方案;
  • • 页面看起来能用,实际流程却跑不通;
  • • 代码越来越多,你却越来越不敢动。

这并不意味着 AI 编程没有价值。

真正的问题是:你一直在让 AI“猜”,却没有给它一份可以持续执行的工程规范。

这正是 Spec-Driven Development,规范驱动开发 要解决的问题。


一、什么是 Spec-Driven Development?

Spec-Driven Development,简称 SDD,可以翻译为:

规范驱动开发。

它的核心思想非常简单:

在开始写代码之前,先把系统应该做什么、不能做什么、如何实现、怎样验收,写成一套明确的规范,再让 AI 按照规范进行开发。

这里的 Spec,不是一份写完就放在文件夹里吃灰的需求文档。

它应该是一套能够真正约束 AI 的执行契约。

例如,你不能只对 AI 说:

帮我做一个销售管理系统。

而应该逐步明确:

  • • 系统给谁使用;
  • • 要解决什么业务问题;
  • • 包含哪些页面和功能;
  • • 不包含哪些功能;
  • • 数据之间如何关联;
  • • 页面之间如何跳转;
  • • 使用什么技术栈;
  • • 哪些组件必须统一;
  • • 什么情况下算开发完成;
  • • AI 不允许擅自做哪些决定。

当这些内容形成稳定、可版本管理的规范后,AI 就不再是“根据一句话随机生成代码”,而是在一个确定的工程边界内完成任务。


二、为什么只靠自然语言聊天,很难做好一个完整系统?

很多人把 AI 编程理解成:

我提出要求,AI 生成代码;
不满意,我再说一句;
有问题,我让它继续修改。

这种方式适合做一个小页面、一次性脚本或者快速原型。

但当项目开始出现多个页面、多个角色、多个业务流程时,只靠对话就会逐渐失控。

原因主要有四个。

1. 对话不是可靠的项目记忆

你可能在第一轮告诉 AI:

所有列表页面统一使用相同的搜索区和分页组件。

到了第二十轮,你让它新增一个页面时,它可能重新设计一套完全不同的搜索区。

不是 AI 故意违反要求,而是长期对话中存在大量信息,早期约束很容易被弱化。

如果关键规则只存在于聊天记录里,项目就没有稳定的事实来源。


2. 模糊需求会被 AI 自动补全

当你说:

做一个用户管理功能。

AI 必须自行猜测:

  • • 用户有哪些字段;
  • • 是否支持新增和删除;
  • • 是否需要角色管理;
  • • 删除是真删除还是停用;
  • • 是否需要操作日志;
  • • 是否允许批量导入;
  • • 是否需要密码重置。

AI 的补全可能很合理,但未必符合你的真实业务。

没有明确写出来的需求,不代表不存在,而是意味着 AI 会替你做决定。


3. 代码能运行,不等于业务正确

AI 很容易生成一个“看起来像系统”的产品:

  • • 页面能打开;
  • • 表格有数据;
  • • 按钮能点击;
  • • 弹窗可以出现。

但真正的业务系统还需要考虑:

  • • 页面之间的数据是否一致;
  • • 操作前后状态是否正确变化;
  • • 用户是否只能看到自己的数据;
  • • 异常情况如何处理;
  • • 前置条件不满足时是否禁止操作;
  • • 提交后是否允许撤回;
  • • 删除数据是否影响其他页面。

这些问题不能靠“页面看起来不错”来验收。

它们必须提前写进规范和验收标准。


4. 修改局部功能,可能破坏整个系统

没有规范时,AI 往往只关注你当前提出的问题。

例如:

把详情页的供应商状态改成“已通过”。

AI 可能只修改详情页,却没有同步修改:

  • • 项目列表中的状态;
  • • 工作台中的统计数量;
  • • 供应商汇总页面;
  • • 后续流程的进入条件;
  • • Mock 数据中的统一状态。

于是,一个页面改对了,整个系统的数据却不一致了。

SDD 强调的不是“把某个页面做出来”,而是:

所有实现都必须符合系统级规范。


三、Vibe Coding 和 SDD 有什么区别?

Vibe Coding 可以理解为“凭感觉和 AI 一起写”。

你告诉 AI 一个大概想法,然后不断查看效果、调整提示词、修改页面。

它的优势是快。

特别适合:

  • • 验证一个创意;
  • • 制作简单原型;
  • • 开发一次性工具;
  • • 学习新技术;
  • • 快速尝试不同页面风格。

但它的问题也很明显:

  • • 依赖当前对话;
  • • 容易前后矛盾;
  • • 难以复现;
  • • 不利于长期维护;
  • • 项目越大,修改成本越高。

SDD 则是先建立规则,再进行实现。

对比维度
Vibe Coding
Spec-Driven Development
开发起点
一个想法或一段提示词
结构化规范
AI 的角色
自由发挥的生成者
受约束的执行者
主要事实来源
当前对话和运行结果
版本化的 Spec 文件
需求变更方式
直接要求修改代码
先修改规范,再修改实现
验收方式
看起来能用
按验收标准逐项验证
适合场景
原型、探索、一次性工具
中大型项目、长期维护系统
主要风险
上下文漂移、代码失控
前期需要投入时间梳理规范

二者并不是非此即彼。

更合理的方式是:

先用 Vibe Coding 探索,再用 SDD 工程化落地。

你可以先让 AI 快速做出一个原型,确认产品方向;方向确定后,再把已经验证的内容整理成正式规范,进入稳定开发阶段。


四、对于普通上班族,Spec 到底应该写什么?

很多人看到“规范驱动开发”,第一反应是:

这是不是只有程序员和架构师才能做?

恰恰相反。

对于不擅长写代码、但熟悉业务的上班族来说,Spec 反而是最重要的能力。

因为你可能不知道某个函数应该怎么写,但你通常知道:

  • • 业务应该怎样运行;
  • • 用户真正需要什么;
  • • 哪些操作不允许发生;
  • • 哪些数据必须保持一致;
  • • 哪些结果才算正确。

一份适合 AI 编程的基础 Spec,至少应包含以下六部分。


1. 最终目标

不要只描述“做什么功能”,还要说明最终要交付什么。

模糊描述:

做一个销售数据分析系统。

更好的描述:

开发一套供销售运营人员使用的桌面端数据分析系统。用户可以上传线索表、商机表和订单表,查看销售漏斗、目标完成率、区域表现和异常客户,并导出分析结果。

目标要回答三个问题:

  1. 1. 谁使用?
  2. 2. 解决什么问题?
  3. 3. 最终交付什么成果?

2. 业务范围

明确哪些内容属于本次开发。

例如:

## 本次包含

-
 Excel 文件上传
-
 数据格式检查
-
 销售漏斗分析
-
 目标完成率分析
-
 区域和人员排名
-
 异常数据提示
-
 分析结果导出

## 本次不包含


-
 用户注册与登录
-
 在线支付
-
 CRM 系统接口
-
 手机端适配
-
 数据库持久化
-
 多租户权限体系

“不做什么”与“做什么”同样重要。

因为 AI 很容易为了让系统显得完整,主动增加你没有要求的功能。


3. 业务规则

业务规则决定系统能不能真正使用。

例如:

## 业务规则

1.
 一条线索只能归属于一个销售人员。
2.
 已关闭的商机不能重新进入跟进状态。
3.
 订单金额必须大于 0。
4.
 销售目标完成率 = 实际订单金额 ÷ 销售目标金额。
5.
 同一客户存在多笔订单时,客户数只能统计一次。
6.
 上传数据存在必填字段缺失时,不允许进入分析页面。

很多 AI 项目失败,不是因为页面做得不好,而是因为业务规则没有被明确表达。


4. 页面、功能与交互

不要让 AI 自行决定整个系统的信息架构。

你需要提前说明:

## 页面结构

1.
 首页工作台
2.
 数据上传
3.
 销售漏斗分析
4.
 目标完成分析
5.
 区域分析
6.
 销售人员分析
7.
 异常数据中心
8.
 分析报告

## 页面跳转关系


-
 首页点击“上传数据”进入数据上传页。
-
 数据校验成功后,才能进入分析页面。
-
 点击销售人员姓名进入个人详情页。
-
 点击异常数量进入异常数据中心,并自动带入筛选条件。

页面设计的重点不是“有几个按钮”,而是用户如何完成完整任务。


5. 技术与工程约束

这一部分是给 AI 划定技术边界。

例如:

## 技术约束

-
 使用 React、TypeScript 和 Vite。
-
 使用统一的组件库,不重复开发相同组件。
-
 所有演示数据统一从 Mock 数据层读取。
-
 页面中禁止直接写死业务数据。
-
 类型定义统一存放在 types 目录。
-
 页面组件、业务组件和基础组件分层管理。
-
 单个文件职责必须清晰,禁止将整个系统写入一个文件。
-
 不接入真实后端和数据库。

对于非技术人员,不需要一开始就把所有技术细节写得非常专业。

你可以先明确最重要的原则:

  • • 技术栈统一;
  • • 数据来源统一;
  • • 组件统一;
  • • 代码模块化;
  • • 禁止重复实现;
  • • 不允许擅自更换方案。

6. 验收标准

验收标准必须能够判断“通过”还是“不通过”。

不要写:

页面要美观。
系统要好用。
数据要准确。

应该写成:

## 验收标准

1.
 上传符合模板的 Excel 后,可以正常进入分析页面。
2.
 缺少必填字段时,页面必须明确提示缺失字段名称。
3.
 首页订单金额必须与订单分析页汇总金额一致。
4.
 销售人员排名页与个人详情页的订单金额必须一致。
5.
 所有列表页面使用统一的搜索区、表格和分页组件。
6.
 在 1440×900 和 1920×1080 分辨率下,不出现横向内容遮挡。
7.
 所有页面均不得出现无效按钮、空白跳转或模拟成功提示。
8.
 构建命令、类型检查和自动化测试必须通过。

AI 能否稳定完成任务,很大程度上取决于你是否定义了明确的完成条件。


五、一套适合上班族的 SDD 工作流程

对于个人学习和中小型项目,不需要一开始就建立特别复杂的体系。

可以先使用下面这套七步流程。


第一步:先说清楚业务目标

先不要急着让 AI 写代码。

你可以告诉 AI:

我想开发一套销售运营数据分析工具。

目标用户是企业销售运营人员。

他们需要上传线索、商机和订单数据,快速发现销售转化问题、目标完成差距以及重点异常客户。

请先不要写代码,先帮助我梳理业务目标、用户角色、核心场景和产品范围。

这一阶段的核心任务不是开发,而是减少需求模糊。


第二步:形成产品规范

让 AI 把讨论结果整理成 product_spec.md

建议至少包含:

product_spec.md
├── 项目背景
├── 用户角色
├── 核心问题
├── 产品目标
├── 使用场景
├── 业务范围
├── 非目标范围
├── 业务流程
├── 业务规则
└── 验收指标

这一文件回答的是:

系统为什么做、给谁做、要解决什么问题。


第三步:形成页面与交互规范

接着生成 page_structure.md 或 interaction_spec.md

建议包含:

page_structure.md
├── 页面层级
├── 页面功能
├── 页面数据
├── 操作入口
├── 跳转关系
├── 页面状态
├── 异常状态
└── 页面间数据同步关系

这一文件回答的是:

用户如何使用系统完成任务。


第四步:形成工程规范

建立类似下面的文件:

AGENTS.md
design_guide.md
frontend_rules.md
data_spec.md
acceptance.md

它们可以分别负责:

  • • AGENTS.md:AI 在整个项目中必须遵守的最高规则;
  • • design_guide.md:视觉语言、布局和组件使用原则;
  • • frontend_rules.md:代码结构、技术栈和开发规范;
  • • data_spec.md:字段定义、状态枚举和统一演示数据;
  • • acceptance.md:验收场景和完成标准。

这样做的目的,是把关键要求从聊天记录中移到项目文件里。


第五步:把大任务拆成小任务

不要对 AI 说:

请一次性完成整个系统。

应该让 AI先生成 tasks.md

# 实施任务

## 阶段一:基础工程


-
 [ ] 初始化项目
-
 [ ] 建立目录结构
-
 [ ] 配置路由
-
 [ ] 建立全局样式
-
 [ ] 建立 Mock 数据层

## 阶段二:通用组件


-
 [ ] 页面标题组件
-
 [ ] 搜索区组件
-
 [ ] 数据表格组件
-
 [ ] 状态标签组件
-
 [ ] 分页组件
-
 [ ] 空状态组件

## 阶段三:业务页面


-
 [ ] 首页工作台
-
 [ ] 数据上传页面
-
 [ ] 销售漏斗页面
-
 [ ] 目标完成页面
-
 [ ] 异常数据页面

## 阶段四:系统验收


-
 [ ] 页面跳转检查
-
 [ ] 数据一致性检查
-
 [ ] 响应式检查
-
 [ ] 构建检查
-
 [ ] 自动化测试

每完成一个任务,就进行一次验证。

这比让 AI 一次生成几十个文件更加稳定。


第六步:按规范实现和测试

执行任务时,提示词不要只写“继续开发”。

可以使用以下结构:

## 当前任务

实现销售漏斗分析页面。

## 必读规范


-
 AGENTS.md
-
 product_spec.md
- page_
structure.md
-
 design_guide.md
- data_
spec.md
-
 acceptance.md

## 实施范围


只实现销售漏斗分析页面及其必要组件。

## 禁止事项


-
 不修改其他业务页面。
-
 不新增规范中不存在的功能。
-
 不重新定义 Mock 数据。
-
 不复制已有通用组件。
-
 不更换现有技术栈。

## 完成要求


-
 完成代码实现。
-
 执行类型检查和构建。
-
 检查页面数据与首页统计是否一致。
-
 根据 acceptance.md 输出自检结果。

这时 AI 接收到的不再是一句孤立命令,而是一个有上下文、有边界、有验收条件的工程任务。


第七步:修改需求时,先修改 Spec

这是 SDD 最容易被忽略的一步。

假设你决定:

销售目标完成率不再按照订单金额计算,而是按照回款金额计算。

不要直接让 AI 修改代码。

正确顺序应该是:

  1. 1. 修改指标定义;
  2. 2. 修改字段说明;
  3. 3. 修改页面展示规则;
  4. 4. 修改 Mock 数据;
  5. 5. 修改验收标准;
  6. 6. 再让 AI 根据新规范修改代码;
  7. 7. 运行全量检查。

这样,需求、数据、页面和代码才能保持一致。


六、一个可以直接使用的 Spec 模板

下面这份模板适合个人工具、内部管理系统和高保真前端 Demo。

# 项目规范

## 1. 项目背景


说明为什么要开发该系统,目前存在什么问题。

## 2. 目标用户


说明系统由哪些角色使用,每个角色的职责是什么。

## 3. 产品目标


说明系统最终需要帮助用户完成什么任务。

## 4. 最终交付物


说明需要交付网页、桌面应用、脚本、数据看板还是其他形式。

## 5. 核心业务场景


按照用户实际工作流程描述核心场景。

## 6. 功能范围


### 6.1 本次包含


-
 功能一
-
 功能二
-
 功能三

### 6.2 本次不包含


-
 排除项一
-
 排除项二
-
 排除项三

## 7. 业务规则


1.
 规则一
2.
 规则二
3.
 规则三

## 8. 页面结构


### 8.1 一级页面


-
 页面一
-
 页面二
-
 页面三

### 8.2 页面跳转关系


说明页面之间如何进入、返回和携带参数。

## 9. 数据规范


-
 核心实体
-
 字段定义
-
 状态枚举
-
 数据关联关系
-
 统计口径
-
 演示数据要求

## 10. 交互规范


-
 默认状态
-
 加载状态
-
 空状态
-
 错误状态
-
 禁用状态
-
 成功反馈
-
 二次确认

## 11. 技术约束


-
 技术栈
-
 项目结构
-
 组件复用
-
 数据管理
-
 状态管理
-
 响应式要求
-
 代码质量要求

## 12. 禁止事项


-
 禁止擅自扩展业务范围
-
 禁止重复创建相同组件
-
 禁止在页面中写死业务数据
-
 禁止绕过统一数据层
-
 禁止为了通过测试删除有效断言
-
 禁止修改未经授权的模块

## 13. 验收标准


使用可验证、可判断通过与否的方式描述。

## 14. 完成定义


只有满足以下条件,任务才能标记为完成:

-
 功能已实现
-
 页面可正常访问
-
 数据保持一致
-
 异常状态已处理
-
 构建成功
-
 测试通过
-
 自检结果已输出

七、学习 AI 编程,上班族真正需要补的不是语法

很多人认为,自己不会 JavaScript、Python 或数据库,所以不适合使用 AI 编程。

但在 AI Agent 时代,开发者的工作正在发生变化。

你不一定要先成为一个能够手写所有代码的程序员,但需要逐步建立五种能力。

1. 业务建模能力

能够把日常工作拆成:

  • • 角色;
  • • 流程;
  • • 规则;
  • • 数据;
  • • 状态;
  • • 异常;
  • • 结果。

业务越清楚,AI 生成的系统越接近真实需求。


2. 规范表达能力

把“我大概想要什么”,转换成:

  • • 明确目标;
  • • 具体范围;
  • • 操作规则;
  • • 数据口径;
  • • 验收条件。

AI 编程的核心,不只是把话说得详细,而是把要求表达得可执行、可验证。


3. 任务拆解能力

不要追求一句提示词生成整个系统。

要学会把项目拆成:

项目规范 → 页面结构 → 数据规范 → 工程规则 → 任务清单 → 分步实现 → 测试验收。

任务越小,AI 越容易稳定完成。


4. 结果验证能力

至少要学会检查:

  • • 页面是否能正常运行;
  • • 浏览器控制台是否报错;
  • • 数据是否前后一致;
  • • 不同状态是否正确;
  • • 构建是否成功;
  • • 测试是否通过;
  • • AI 是否修改了不该修改的内容。

不会写代码,并不意味着只能盲目接受代码。


5. 版本管理能力

规范、代码和数据都应该进入版本管理。

每次修改要能够回答:

  • • 为什么改;
  • • 改了什么;
  • • 影响哪些模块;
  • • 是否更新了规范;
  • • 是否完成回归验证。

AI 可以快速生成大量代码,但只有版本管理才能让这些代码保持可追踪、可恢复和可维护。


八、普通上班族应该从什么项目开始?

刚开始学习 SDD,不建议直接挑战复杂的企业级系统。

可以从与自己工作高度相关的小工具开始。

例如:

销售运营

  • • 销售目标拆解工具;
  • • 销售漏斗分析看板;
  • • 渠道商分级管理工具;
  • • 商机异常预警工具;
  • • 销售周报生成器。

人力资源

  • • 简历筛选辅助工具;
  • • 面试评价记录系统;
  • • 员工培训管理看板;
  • • 绩效数据分析工具;
  • • 招聘流程跟踪系统。

财务与行政

  • • 费用报销检查工具;
  • • 预算执行分析看板;
  • • 合同到期提醒工具;
  • • 固定资产管理系统;
  • • 会议纪要任务追踪工具。

产品与运营

  • • 用户反馈分类工具;
  • • 需求优先级评估工具;
  • • 内容选题管理系统;
  • • 活动数据复盘看板;
  • • 项目进度跟踪系统。

选择项目时,可以遵循一个原则:

先选择自己熟悉业务,但技术复杂度不高的问题。

你的业务经验会帮助你写出更准确的 Spec,而 AI 可以帮助你完成技术实现。


九、使用 SDD 最常见的五个误区

误区一:Spec 写得越长越好

规范的目标不是堆砌文字,而是减少歧义。

没有执行价值的背景介绍,不需要写几十页。

真正重要的是:

  • • 规则是否明确;
  • • 边界是否清晰;
  • • 数据是否统一;
  • • 验收是否可执行。

误区二:写完 Spec 后就永远不能修改

SDD 不意味着需求不能变化。

它要求的是:

需求变化时,规范必须同步变化。

Spec 是活的工程资产,不是一次性文档。


误区三:有了 Spec,就可以完全不检查代码

规范可以提高 AI 输出的稳定性,但不能彻底消除错误。

对于重要系统,仍然需要:

  • • 自动化测试;
  • • 静态检查;
  • • 安全检查;
  • • 人工评审;
  • • 真实场景验证。

误区四:把普通需求文档改名为 Spec

一份只描述“需要哪些功能”的文档,还不能算完整 Spec。

真正能驱动开发的规范,还要包括:

  • • 范围边界;
  • • 业务规则;
  • • 数据契约;
  • • 技术约束;
  • • 异常场景;
  • • 验收条件;
  • • 禁止事项。

误区五:让 AI 自己生成规范,然后直接执行

AI 可以帮助你整理 Spec,但最终决策必须由人确认。

特别是以下内容,不能完全交给 AI 决定:

  • • 业务规则;
  • • 数据口径;
  • • 权限边界;
  • • 核心流程;
  • • 技术选型;
  • • 安全要求;
  • • 完成标准。

AI 可以起草,但人必须负责判断。


十、写在最后

AI 编程降低了写代码的门槛,却没有降低做好软件的门槛。

过去,软件开发的主要困难是:

如何把需求翻译成代码。

现在,越来越多的代码可以由 AI 完成,新的困难变成了:

如何准确地描述目标、组织上下文、约束过程并验证结果。

这也是为什么,真正决定 AI 编程效果的,不再只是你会不会写一条精彩的提示词。

而是你能不能建立一套清晰、稳定、可执行、可验证的规范。

对于上班族来说,这反而是一个机会。

因为你最大的优势可能从来不是编程语法,而是你对业务流程、岗位痛点和真实场景的理解。

当这些经验被整理成高质量的 Spec,再交给 AI Agent 执行,你就不只是一个“让 AI 帮忙写代码的人”。

你正在逐步成为:

产品意图的定义者、智能体工作的编排者,以及最终结果的质量负责人。

未来真正稀缺的,未必是写代码最快的人。

而是能够把模糊想法转化为明确规范,再组织 AI 稳定交付成果的人。