← 回總覽

别再写 Spec 了,开始写 Facts——整个 SDD 运动已经过时

📅 2026-06-05 00:00 王俊博客 软件编程 2 分鐘 1484 字 評分: 88
AI 编程 LLM 工程实践 软件工程 测试与质量
📌 一句话摘要 本文批判 Spec-Driven Development(SDD)在 AI 时代的根本缺陷,提出用可执行断言(Facts)替代自然语言 Spec,并给出 90 天迁移计划。 📝 详细摘要 作者 Jaroslaw Wasowski 收回此前鼓吹 SDD 的文章,指出核心矛盾:Spec 是对 LLM 的统计预测,而非可验证的契约。LLM 的非确定性机制、意图差距(Intent Gap)和 Spec Drift 是系统性问题,无法通过更好的 prose 修复。文章提出 Facts-first 范式:Facts 是机器可检验的可执行断言(测试、属性、契约),穿越模型升级而不变,其思

📌 一句话摘要

本文批判 Spec-Driven Development(SDD)在 AI 时代的根本缺陷,提出用可执行断言(Facts)替代自然语言 Spec,并给出 90 天迁移计划。

📝 详细摘要

作者 Jaroslaw Wasowski 收回此前鼓吹 SDD 的文章,指出核心矛盾:Spec 是对 LLM 的统计预测,而非可验证的契约。LLM 的非确定性机制、意图差距(Intent Gap)和 Spec Drift 是系统性问题,无法通过更好的 prose 修复。文章提出 Facts-first 范式:Facts 是机器可检验的可执行断言(测试、属性、契约),穿越模型升级而不变,其思想可追溯至 1969 年的 Hoare triple 等 57 年形式化方法传统。作者坦诚给出 SDD 仍适用的三个场景(合规监管、跨团队 B2B 集成、新人入职),并提供 90 天迁移计划(审计→转向→门禁),强调从明天开始写一个事实。

💡 主要观点

- Spec 是对模型的预测,不是与模型的契约。 LLM 每次读取 prose 都会重新采样解释,即使 temperature 0.0 也存在非确定性输出,导致 spec 在不同模型版本间被重解释,而测试(Fact)则穿越模型升级不变。

Fact 是可执行断言,不依赖模型解读。 Fact 包括单个测试、属性(Property)和契约(Contract),运行时验证通过/失败,exit code 0 或非 0,无需 LLM 参与,因此稳定可靠。
SDD 在特定场景仍有价值,但不应作为默认范式。 合规监管、跨团队 B2B 集成、新人入职等需要外部人员阅读的场景保留 SDD;内部开发应迁移到 Facts。
Facts-first 是 57 年形式化方法的 AI 时代综合。 从 1969 年 Hoare triple 到 1992 年 Design by Contract、2000 年 QuickCheck,再到 2026 年 Agent Behavioral Contracts,可执行断言的思想一脉相承,AI 时代使其价值凸显。

💬 文章金句

- 一份在 Sonnet 3.5 时代写的单元测试,穿越了 3.7、4、Opus 4.5+ 四个模型版本依然通过 CI。而描述同一 endpoint 的 1500 字 spec,被每个模型重新理解了一遍——四次重解释。

  • Spec 不是契约,是对模型的预测。模型在变,预测就永远不准。
  • PRD 会消失。Spec 正在退出内循环。只有事实在哪儿都能活。

📊 文章信息

AI 初评:88

来源:王俊博客

作者:王俊博客

分类:软件编程

语言:中文

阅读时间:10 分钟

字数:2252

标签: AI 编程, LLM, 工程实践, 软件工程, 测试与质量

阅读完整文章

查看原文 → 發佈: 2026-06-05 00:00:00 收錄: 2026-06-05 16:00:10

🤖 問 AI

針對這篇文章提問,AI 會根據文章內容回答。按 Ctrl+Enter 送出。