Spec-Driven Development(规格驱动开发)五步曲实战,终结Vibe Coding痛点

2026-01-24 38 0

1. 背景

手头负责一个项目,因历史原因项目代码不规范,导致后续团队维护困难,痛点如下:

  • VO/DTO/DO混在一起,分不清层次
  • 缺少清晰的模块边界,牵一发而动全身
  • 命名不规范并且存在很多重复对象
  • 采用jdk8+springBoot2.5版本非常老旧了
    动过重构的念头,可一想到“15 万行 + 零单测 + 业务不能停”,所有人都怂了。

2. AI 试水:为什么总是“帮倒忙”?

最近大模型编程火爆,准备拿AI Coding搞个复杂场景试试,尝试了很多AI工具和方法,效果都不太好:

  • 让AI帮忙重构总是跑偏,理解不了复杂的业务约束
  • 团队有编码规范,但AI生成的代码各行其是,review起来头大
  • 不断重复prompt,一小块小块改,不断确认方案,累成狗,感觉还不如自己写
  • 经常被它改错代码,好不容易确认过的代码,要重头再来

一段时间,感觉自己被AI给整蒙子 ,感觉比自己写代码更累,被AI在带着走(Vibe Coding),脑袋闪过了一阵放弃的念头

3. 转折点:规格驱动开发(Spec-Driven Development)

当我了解到基于AI的Spec Coding方法和理论后,意识到一个问题:不是AI不够聪明,是我们没给它讲清楚"怎么干",对于复杂需求,缺乏工程化的思维

Specification-Driven Development(规格驱动开发):让AI严格遵循"明确规格→方案设计→任务分解→代码实现"的完整流程,每一步都有标准化的输入输出

虽然现还不够完美,但效果已经开始显现,下面实践使用火热的Spec-Kit工具

4. 快速上手:3分钟搞定环境

  • 4.1 先装工具:
# linux 推荐用uv (快得多)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

# Windows:
irm https://astral.sh/uv/install.ps1 | iex

# 验证安装
uv --version
specify check
  • 4.2 然后初始化项目:

    # 已有工程
    specify init . --ai claude
  • 4.3 初始化后会生成几个指导AI后续干活的重要命令:
    /speckit.constitution - 创建项目规范
    /speckit.specify - 明确需求
    /speckit.plan - 生成方案
    /speckit.tasks - 分解任务
    /speckit.implement - 执行开发
    这几个核心命令都会有他的输入和成果输出,如下图:
    file

5. 实战案例: Spring Boot项目重构全流程

下面将这个真实场景核心过程详细记录一下

5.1 第一步:给项目立规矩(constitution)

这一步很关键。没有规则,AI就像没有规章制度的团队,各做各的。

> /speckit.constitution 这是一个已有的Spring Boot 3.x项目,后续开发和重构都必须按照dm-backend-coding-enriched编码规范
1. VO/DO实体分层,遵循dm规范
2. 命名要按规范来
3. 日期类型处理要符合框架规范,去掉硬编码时区
4. 接口文档用OpenAPI 3.0
5. Feign复用控制器实体
6. 异常处理按规范来
7. 分api和service两个工程
8. system-service实体分好类,控制层提到system-api,DO提到dao,其他用BO

执行完后会生成constitution.md文件,这就是项目的"宪法"。
file

坑点:这一步要投入时间把规则写清楚。别嫌麻烦,"磨刀不误砍柴工",不然后面AI生成的代码还得改。

5.2 第二步:说清楚你要什么(specify)

> /speckit.specify 我要对当前项目重构,需求如下:

1. 只优化控制器、业务层、持久层入参出参,不新增CRUD
2. 按模块分阶段,优先级重构实体
3. 每完成一个模块要编译通过,再下一个
4. 合并大实体时核对字段,保证接口兼容
5. 规范重构但接口命名尽量不动,影响前端的记到变更文件
6. 过程有好的实践但规范没有的,写改进建议到本地文件
7. 全部重构后,用MCP操作浏览器测试核心模块

AI会生成specification.md,把所有需求书面化。这样做的价值是:需求清晰了,AI不会瞎猜
file

5.3 第三步:补充细节(clarify)

如果前面需求说得不清楚,用clarify让AI主动问:

> /speckit.clarify 补充一些重要需求:
1. 检查所有接口注解按OpenAPI 3.0
2. 控制器实体放到system-api工程vo包下,DO放到system-service的do包,其他放到bo包
3. 日期类型按规范处理
4. 有规范改进建议写到临时文件
5. 按模块改造,逐个通过编译

5.4 第四步:让AI出方案(plan)

> /speckit.plan

AI会生成plan.md,包含技术架构、实施路径、风险点等。
file

对比传统:以前方案设计得资深架构师花半天,现在几分钟搞定。

5.5 第五步:分解任务(tasks)

> /speckit.tasks

AI会把plan拆成详细的tasks.md,用于指导执行和跟踪状态,就像靠谱的PM给你安排工作:

  • 清晰的任务编号和优先级
  • 每个任务的具体内容非常的细
    file

5.6 第六步:开始编码(implement)

> /speckit.implement

AI按任务清单逐个完成:

  1. 读取任务
  2. 执行代码修改
  3. 自动编译测试
  4. 记录进度
  5. 有问题的主动问

file

5.7 我的实战经验分享

用下来的几点心得:

  1. 规格要清晰:前期多花点时间写规格,比后期返工好
  2. 别贪多:按模块分批执行,有问题好排查
  3. 明确验收标准:每个任务完成后要知道"完成"的标准(编译/单测)
  4. 持续优化宪法:过程中发现规范问题及时更新
  5. 用版本控制: 让AI及时提交GIT阶段任务,方便错误回滚

6. 总结

SSD的最大革新,是让人和AI回到了各自擅长的位置:

人类:专注于思考和决策

  • 业务需求分析和规格定义
  • 技术方案的方向把控
  • 异常情况的处理决策
  • 系统架构的核心设计

AI:专注于规范执行

  • 繁琐的代码生成
  • 重复的格式化和规范化
  • 机械的接口和文档生成
  • 大范围的代码扫描和检查

原文:http://www.hushowly.com/articles/3791

相关文章

开源神器planning-with-files:让Claude拥有“硬盘记忆”,复杂任务不跑偏
给Claude Code装上左膀右臂 :Chrome DevTools+Postgres MCP实战

发布评论