Spec-Kit 走下神坛:从红极一时到形式主义泥潭

前几周,GitHub 的 spec-kit 在社区火得一塌糊涂。

30k+ stars,各种技术博主推荐,仿佛找到了 AI 时代软件开发的圣杯:Spec-Driven Development (SDD)

我也兴冲冲地上手试了几周。

结果?大失所望

实操后的第一感受:太啰嗦了

说实话,这个 workflow 比 kiro 还啰嗦

一个简单的需求,走完完整流程:

  1. 📝 写 Feature Spec(需求规格)
  2. 🔍 Clarification(澄清环节)
  3. 📋 Review & Acceptance Checklist(验收检查)
  4. 🏗️ Generate Plan(生成技术方案)
  5. 🔬 Research(技术调研)
  6. 📦 Implementation Details(实现细节)
  7. ✅ Validate Plan(验证计划)
  8. 🚀 Implementation(实现)

看起来很"专业",对吧?

问题是:产出了一堆文档,实际代码还没开始写。

文档屎山来了

用 spec-kit 做了几个需求后,项目目录变成了这样:

specs/
├── 001-create-taskify/
│   ├── contracts/
│   │   ├── api-spec.json
│   │   └── signalr-spec.md
│   ├── data-model.md
│   ├── plan.md
│   ├── quickstart.md
│   ├── research.md
│   ├── spec.md
│   └── tasks.md
├── 002-user-authentication/
│   ├── contracts/...
│   ├── data-model.md
│   ├── plan.md
│   └── ...
└── 003-...

每个需求 7-8 个文档。

做 10 个需求,就是 70-80 个文档。

更糟糕的是:这些文档很快就会过时,代码改了,文档谁去更新?

这不就是传统软件工程最大的痛点吗?怎么到了 AI 时代又回来了?

为什么有人觉得 SDD 很好?

冷静下来想想,SDD 也不是完全没道理。

本质上,这是"磨刀不误砍柴工":

  • Pre-AI 时代,我们也会拆解需求
  • 也会做技术调研
  • 也会写技术方案(或者在脑子里)
  • 也会拆解成任务放到 Jira、禅道

功夫花在需求实现之前,效果确实会好。

这也是为什么 Cursor 的 Plan Mode 效果好的本质原因:

  • 先思考
  • 再行动
  • 避免盲目写代码

但 SDD 的问题在哪?

1. 过度形式主义

SDD 把"规划"这件事形式化了。

不是说形式化不好,而是过度形式化让人看不清事情的本质

就像公司里的各种流程:

  • 最开始是为了解决问题
  • 后来变成了为了走流程而走流程
  • 最后大家只记得填表,忘了为什么要做这件事

典型的工具主义陷阱

2. 任务拆解过细

spec-kit 和 kiro 都有这个问题:

一个简单需求,能拆出 70-80 个任务

简直好笑。

日常我们不是那样做需求的

你见过哪个工程师真的会把"创建一个登录表单"拆成:

  1. 创建 HTML 结构
  2. 添加 CSS 样式
  3. 写 input 字段验证
  4. 写 submit 按钮逻辑
  5. 连接 API
  6. 处理错误
  7. 添加 loading 状态

这不是计划,这是八股文。

3. 文档幻觉

SDD 的一个卖点是:文档能跟上代码变化

听起来很美好。

但现实是:

  • 代码改了 10 次
  • 文档改了 2 次
  • 最后文档还是旧的

而且到了 AI 时代,这个问题的解决方案变了:

我们不需要手写文档,AI 可以从代码提取文档。

  • 想知道这个函数做什么?问 AI
  • 想知道这个模块的架构?问 AI
  • 想知道 API 接口?问 AI

实时、准确、永不过时。

谁还维护静态文档?

商业现实:速度 > 文档

还有一个很多人忽略的点:

在商业世界中,文档并不重要。

重要的是:

  • ✅ 能不能快速验证想法
  • ✅ 能不能快速交付功能
  • ✅ 能不能快速响应市场

创业公司不会因为"文档写得好"而成功。

会因为"产品迭代快"而赢得市场。

SDD 的完整流程,一个需求下来,可能需要:

  • 📝 写文档:2 小时
  • 🤖 AI 生成计划:30 分钟
  • 🔍 Review 计划:1 小时
  • 💻 实现:3 小时

总共 6.5 小时。

如果直接写代码:

  • 💻 实现:2 小时
  • 🧪 测试:1 小时

总共 3 小时。

你愿意选哪个?

SDD 不是一无是处

冷静点,我也不是完全否定 SDD。

它确实有一些可取之处:

1. EARS 语法

在规范需求描述时,EARS(Easy Approach to Requirements Syntax)语法很有用:

When [触发条件]
The system shall [系统行为]

比模糊的"系统应该能够…“清晰多了。

2. 规范的 Workflow

SDD 提供了一个相对规范的开发流程模板。

对于新手或者没有流程的团队,有参考价值。

3. 强制思考

走一遍 SDD 流程,强制你在写代码前把需求想清楚

这本身是好的。

我的建议

折腾了几周,我的结论是:

❌ 不要在大需求上用 SDD

  • 会产生文档屎山
  • 维护成本极高
  • 实际价值有限

✅ 在细小需求上用 SDD 没问题

  • 需求范围小,文档少
  • 容易维护
  • 快速验证

✅ 坚持 KISS 原则

KISS = Keep It Simple, Stupid

  • 不要为了形式而形式
  • 不要为了工具而工具
  • 不要为了文档而文档

✅ 坚持本质:程序 = 数据结构 + 算法

永远跟踪这条主线:

  1. 数据怎么存?(数据结构)
  2. 逻辑怎么处理?(算法)
  3. 接口怎么暴露?(API)

搞清楚这三点,代码自然就清晰了。

不需要 80 个文档告诉你怎么写代码。

最后

Spec-Kit 的走红,某种程度上反映了 AI 时代的焦虑:

我们该如何与 AI 协作?

有人觉得需要更严谨的流程,于是有了 SDD。

有人觉得需要更智能的工具,于是有了各种 AI Agent。

但本质上,好的软件工程实践没有变

  • 理解需求
  • 设计方案
  • 实现代码
  • 测试验证
  • 持续迭代

不要因为 AI 的出现,就忘了这些基本功。

工具是为了让我们更快,不是让我们更慢。

如果一个工具让你产出大量文档,却没有产出更好的代码,那它就是在浪费时间。

Spec-Kit,不是不好,只是被过度神化了

链接


你用过 spec-kit 吗?体验如何?欢迎在评论区聊聊 💬

#AI #开发 #工具 #吐槽