SDD三技能横空出世:用规格驱动AI编程的闭环实践

当AI编程从“玩具级”代码生成走向生产级交付,一个尖锐的问题浮出水面:如何确保Agent输出的代码与产品需求严丝合缝?传统做法依赖人肉审查提示词、人工调试单元测试,但效率低下且容易遗漏边界。邵猛开源的warpdotdev/common-skills工具链,试图用三个可安装Skill(/write-product-spec、/write-tech-spec、/validate-changes-match-specs)给出答案——将“Spec驱动开发”(SDD)从抽象方法论落地为可复用的终端命令。

这套方法的核心理念是“规格先行,闭环验证”。与传统开发中需求文档与设计文档分离、测试后补的模式不同,SDD要求开发者在编码前完成两层规格的编写:PRODUCT.md(以用户故事和不变量定义产品行为)和TECH.md(描述架构、数据流与实现策略)。两份文档均放置在specs/<issue>/目录下,随PR提交,确保每次变更都有可追溯的“契约”。这种分层思想暗合了敏捷开发中的BDD(行为驱动开发),但更强调用机器可读的结构化描述替代自然语言。

具体执行被拆解为五步流程:1)由Agent生成产品规格;2)根据产品规格生成技术规格;3)Agent严格按技术规格实现代码;4)一致性校验(validate-changes-match-specs)自动对比实际输出与规格;5)通过计算机操作端到端验证——这是整套方案最亮眼的设计:Agent模拟用户交互,在真实桌面应用中点击、输入、截图,验证UI行为是否符合Product Spec中的不变量。对于Rust桌面应用团队而言,这相当于用自动化测试直接覆盖了E2E验证的盲区,避免了传统单元测试只覆盖函数逻辑却遗漏界面状态的困境。

对比当前主流的AI编程模式——Copilot式的inline补全或ChatGPT式的对话迭代——SDD提供了一条更可控的路径。前者依赖开发者手动检查每次生成的逻辑,后者频繁出现“忘掉上下文、生成不一致代码”的问题。而SDD通过将需求形式化为规格,让Agent在执行前就与用户达成显式约定,大幅减少了“写代码+改代码”的来回。更重要的是,这三个Skill不绑定Warp终端,可移植到任意AI编码环境(通过npx skills add warpdotdev/common-skills安装),降低了尝试门槛。

在实际落地中,团队需要留意两个关键点:一是规格撰写的成本——对需求不清晰的项目,强写产品规格可能造成前期开销;二是验证假阳性——计算机操作验证依赖GUI解析能力,若UI元素无唯一标识,容易出现误判。但总体而言,对于追求代码交付质量(尤其是GUI密集型应用)的团队,SDD提供了一个可量产的标准化工作流。可以预见,随着AI编码工具链的成熟,“规格驱动”将成为继“提示工程”之后的下一个竞争焦点。