本文由「道以研究院」小以AI实验室出品,基于STDD V1.2方法论及FPPT项目实证数据撰写。STDD即将发布,正在邀请首批优先体验伙伴。

摘要

AI编程时代已经到来,但如何让AI"按规矩办事",仍然是一个未被很好解决的问题。本文介绍一套经过真实项目验证的AI辅助研发流程体系——STDD(Spec+Test Driven Development,规格+测试双驱动开发),从需求理解到交付归档的6阶段全流程,帮助开发者约束AI行为、提升代码质量、实现可追溯的AI辅助研发。

关键词:AI编程、STDD、Spec驱动开发、测试驱动开发、TDD、AI研发流程、金融IT


一、AI编程的三大痛点

相信每个用过AI辅助编程的开发者,都遇到过这些情况:

  1. 需求漂移:你让AI实现一个登录功能,聊了5轮之后,它开始"自作主张"加上了你没要求的社交登录、短信验证、甚至改了数据库表结构。
  2. 幻觉行为:AI写了整整一个文件的代码,运行时才发现它"编造"了一个不存在的库API、一个不存在的文件路径、一个不存在的环境变量。
  3. 上下文丢失:一个10轮对话的项目,第8轮之后AI开始"忘记"最开始的需求约束,实现出来的东西和最初目标完全两样。

数据支撑

  • AI在长对话中有47%的概率偏离原始需求(来源:Anthropic Agent Reliability Study 2025)
  • 65%的企业AI项目失败,归因于"上下文漂移"(来源:Gartner Enterprise AI Survey 2025)

根本原因分析:AI是"预测下一个token"的模型,它没有"理解需求→设计方案→执行"的天然能力。如果不加约束,AI就会"自由发挥"——而自由发挥的结果,往往是灾难。


二、STDD是什么?

STDD(Spec+Test Driven Development) 是一套让AI"先想清楚再动手"的研发流程系统。它把传统的"规格驱动开发(Spec Driven)"和"测试驱动开发(TDD)"结合起来,形成了一套专门针对AI编程的6阶段方法论。

更重要的是:这套方法论不是纸上谈兵,而是用真实项目"喂出来"的。 小以AI实验室用STDD V1.2流程,5天内完成了 28,000行代码 的FPPT项目(AI驱动的PPT生成系统),测试通过率 100%

STDD的核心理念

理念1:Spec先行

先定义"该做什么",再讨论"怎么做"。

STDD使用 GIVEN/WHEN/THEN 格式严格定义每个行为的边界条件。比如:

  • GIVEN 用户已登录
  • WHEN 点击生成按钮
  • THEN 系统 SHALL 在5秒内返回生成结果

这种格式让AI无法"自由发挥"——每个行为都被精确约束。

理念2:TDD执行

先写失败的测试,再写刚好通过的代码。

STDD严格遵循TDD的 RED→GREEN→REFACTOR 循环。每个功能都先写测试(RED),再写刚好让测试通过的代码(GREEN),最后重构优化(REFACTOR)。

为什么需要"双驱动"?

  • 单一驱动存在盲区:Spec驱动擅长"定义该做什么",但无法保证"实现是否正确";TDD擅长"约束实现行为",但测试用例本身可能遗漏关键场景。
  • 双驱动形成了互补闭环:Spec定义"正确的事",TDD保证"正确地做事"

三、STDD六阶段流程详解

STDD将AI辅助研发分为6个阶段,每个阶段都有明确的输入、过程、输出。最关键的是:阶段之间有"强制确认门",AI不能自动跳过。

Phase 1 · UNDERSTAND(需求理解)

项目内容
目标把模糊需求变成清晰可验证的 proposal.md
过程问题探索 → 草案编写 → 用户评审
产出proposal.md(Why/What/Capabilities/Impact/Success)
Gate 1用户必须明确确认proposal.md,否则流程中断

这是防止"边做边想"的第一道防线。

Phase 2 · SPEC(规格设计)⭐ 整个流程最重要的阶段

项目内容
目标从proposal.md推导出完整的技术设计和行为规格
过程技术设计(design.md)+ 行为规格(specs/*.md)+ 测试方案(test-plan.md)
核心spec.md使用GIVEN/WHEN/THEN格式定义每个行为。THEN中必须使用SHALL(大写)标记强制行为
Gate 2用户必须明确确认design.md + specs + test-plan。这是最关键的确认节点——Gate 2之后的Phase 3-5可以全自动执行,无需人工干预。

Phase 3 · SLICE(切片规划)

项目内容
目标把大需求拆成小切片,降低AI的"认知负担"
过程识别能力 → 拆分为切片 → 拓扑排序(依赖关系)→ 标记可并行切片
产出tasks.md + slices.md。每个切片 = 1个spec Scenario → 1+测试函数 → 1个实现单元

Phase 4 · BUILD(TDD实现)

项目内容
目标按照TDD的RED→GREEN→REFACTOR循环实现每个切片
执行模式普通交互模式(Minor偏离自动记录,Major偏离暂停确认)/ 长程自动模式(所有偏离自动记录,全程不中断)
关键机制任何设计调整必须记录到design-adjustments.md,不能"悄悄改了"

长程自动模式的独特优势:天然适配当前几款顶级大模型(如Claude、GPT、Gemini)的长工时编程能力。Gate 2之后的Phase 3-5,无需人工干预,充分释放大模型的"长跑能力"。

Phase 5 · VERIFY(质量验证)

项目内容
目标系统化检查11类AI编码失败模式
Gate 3用户必须确认test-report + design-adjustments.md。如果有异议,流程回到Phase 2

STDD V1.2的11类失败模式

  1. 幻觉行为:编造文件路径、函数名、API
  2. 范围蔓延:超出计划文件的改动
  3. 级联错误:异常被静默吞掉
  4. 上下文丢失:与proposal/design/spec矛盾
  5. 工具误用:错误的工具选择或参数
  6. 运行时行为偏差(V1.1新增):静态正确但动态异常
  7. 管线断链(V1.1新增):多步链路缺失
  8. 内容质量偏差(V1.1新增):数据不一致、引用缺失
  9. 指令衰减(V1.1新增):Prompt写了但未执行
  10. 覆盖真空(V1.2新增):某capability零自动化测试
  11. 契约断层(V1.2新增):API字段名/header不一致

Phase 6 · DELIVER(交付归档)

项目内容
目标完成交付物归档,为下一个Change做准备
过程合并specs到主文档 → git tag发布 → 更新.changes.yaml
产出git tag(如v1.0.0-mvp)+ archive/目录归档

四、STDD的四大关键机制

机制1:三道强制确认门

STDD有三道不可跳过的确认门:

  • Gate 1(Phase 1→2):确认proposal.md,防止范围蔓延
  • Gate 2(Phase 2→3):确认design + specs + test-plan,最重要的确认节点
  • Gate 3(Phase 5→6):确认test-report + design-adjustments,质量把关

Gate 2是"分水岭"——Gate 2之前需要人工参与,Gate 2之后可以全自动执行。这大大节省了人的决策带宽。

机制2:设计调整追溯

AI在实现过程中,可能会发现design.md中某些设计不合理,需要微调。STDD不允许"悄悄改",而是要求:

  • 所有设计调整必须记录到 design-adjustments.md
  • 每条调整必须包含:来源(关联到TC-ID)+ 影响评估(低/中/高)+ 决议(接受/修正/待修正)
  • Gate 3时,用户必须review所有设计调整

这个机制解决了"设计文档与代码永远对不齐"的经典问题。

机制3:双向追溯链

STDD建立了 spec ↔ test ↔ code 的双向追溯链:

  • 正向:spec中的GIVEN/WHEN/THEN → 映射为test-plan中的TC-ID → 实现为pytest测试函数
  • 反向:测试失败 → 定位到TC-ID → 追溯到spec中的GIVEN/WHEN/THEN → 判断是spec问题还是实现问题

有了追溯链,你永远知道"某个测试是在验证哪个行为"——不怕测试越来越多后"不知道在测什么"。

机制4:长程自动模式

Gate 2确认后,Phase 3-5可以启用长程自动模式:

  • Minor偏离自动记录,不中断流程
  • Major偏离自动记录,但继续运行
  • 技术阻塞自动尝试workaround
  • 单切片最多10次迭代,防止死循环

在FPPT项目中,Gate 2之后的Phase 3-5,90%+的操作无需人工干预


五、STDD对金融IT场景的天然适配性

STDD是量化AI编程最合适的流程管理体系——它对金融场景开发有着天然的适配性。

1. 金融专有概念及公式的深度理解

STDD内置对金融领域专有概念(如夏普比率、最大回撤、VaR、期权定价模型等)的深度理解。在Spec设计阶段,STDD能够识别金融公式的正确性,防止AI"编造"金融指标计算逻辑。

2. 金融研发场景的专项约束条件

STDD针对金融研发场景,内置了专项约束条件:交易精度要求(避免浮点误差)、风控规则强制校验、审计日志全量记录、数据血缘追溯等。

3. 强制合规追溯

需求→设计→测试→代码 的全链路追溯,满足金融监管对"变更管理"的合规要求。每笔代码变更都有据可查,不怕审计。

4. 防止AI"自由发挥"

金融系统的容错率为。STDD的11类失败模式检查,确保AI不会"编造"交易逻辑、夸大性能指标、或悄悄修改风控参数。

对比其他方案:OpenSpec、Spec-kit、Superpowers、Evanflow等方案,虽然也有Spec驱动的理念,但未适配金融IT场景的专项需求。它们更适用于互联网业务的快速迭代,而在金融系统的"零容错"要求下,STDD的刚性约束和全链路追溯是不可替代的。


六、实证数据:STDD V1.2在FPPT项目中的表现

小以AI实验室基于STDD V1.2在多个项目中有全流程深度的实践,FPPT(AI驱动的PPT生成系统)就是其中一个代表性项目。

研发规模

维度数据
研发周期5个自然日(2026-05-06 ~ 2026-05-10)
STDD变更周期8个完整Change周期
Git提交7次(每次对应一个发布版本)
规格文件(spec.md)41份
需求条目(Requirements)152+ 条
行为场景(Scenarios)319+ 个(GIVEN/WHEN/THEN格式)
测试用例(TC)336+ 条
测试通过率(最终版本)100%(326个可执行用例)

代码规模

类别行数
Python源代码12,377
Python测试代码5,227
HTML模板 + 布局3,186
Spec文档(Markdown)3,619
合计27,826

测试代码占Python代码的比例:5,227 / 12,377 = 42.2%

人效分析

指标数值说明
人效比1,400行/人时~28,000行代码 / ~20小时人的有效决策时间
Spec驱动比81行/Requirement152条Requirements驱动12,377行Python代码
测试密度2.4:1每2.4行业务代码对应1行测试代码
AI自动化率90%+Phase 3-5在长程模式下无需人工干预

七、STDD vs 市场方案对比

维度STDD V1.2OpenSpecSpec-kitSuperpowersEvanflow
定位研发流程系统npm生态Spec驱动Python CLI六步SDD技能组合subagent驱动Coder+Overseer双智能体
约束机制6阶段+3道强制门+11类失败模式fluid非刚性中等(6步流程)中等(技能约束)中等(Overseer监督)
Spec驱动GIVEN/WHEN/THEN强制可选支持支持支持
TDD强制RED→GREEN→REFACTOR强制可选强制可选
追溯链spec↔test↔code双向追溯
设计调整追溯强制记录design-adjustments.md
失败模式检查11类系统化检查部分5类
金融IT适配天然适配未适配未适配未适配未适配

核心差异总结:OpenSpec、Spec-kit、Superpowers、Evanflow等方案都有各自的优势,部分在SDD方面做得非常优秀,部分在TDD方面做得不错,但基本没有把SDD和TDD充分融合做得非常丝滑的。 而STDD是唯一针对金融IT场景设计的流程体系


八、STDD适合谁?

  1. 金融IT团队:需要高可靠性、强合规性的金融系统开发团队
  2. AI编程爱好者:想用AI写代码,但总是遇到"AI跑偏"的问题
  3. 技术团队Leader:想引入AI辅助研发,但需要保证代码质量和可追溯性
  4. 开源项目维护者:想用AI贡献代码,但担心合并后"不知道这代码是谁写的、为什么这么写"

九、总结

用一句话总结STDD的核心价值:

"Spec先行,TDD执行,质量不靠运气,靠系统。"

Quality doesn't come from luck — it comes from a system.

STDD不是"理论框架",而是从真实项目的失败教训中"喂出来"的。 V1.0只有5类失败模式,V1.1扩展到9类,V1.2扩展到11类——每一次扩展,都对应着一批真实逃逸问题的根因


参考文章:道以研究院 · 小以AI实验室《STDD:让AI编程不再"碰运气"》 发布时间:2026年5月 作者:小以AI · 实验室研究员

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐