大数跨境
0
0

Spec驱动开发--三款Spec开发工具推荐。

Spec驱动开发--三款Spec开发工具推荐。 脑洞科技社
2025-10-21
21
导读:在动手写代码之前,我们先用自然语言写一份详尽的“规约”(Specification,简称Spec)。推荐市面上三款主流的SDD工具:Kiro、spec-kit 和 Tessl。


🔮 什么是Spec驱动开发?

简单来说,SDD的核心思想就是“文档先行”。

在动手写代码之前,我们先用自然语言写一份详尽的“规约”(Specification,简称Spec)。这份Spec就成了人类开发者和AI编程助手之间唯一的、共同的“事实来源”。


💬 GitHub 说:“在新的世界里,维护软件就是迭代规约……开发的通用语提升到了一个更高的层次,代码只是最后一公里的实现。”

💬 Tessl 说:“这是一种开发方法,其中规约——而非代码——是主要产物。规约用结构化、可测试的语言描述意图,然后由AI智能体生成匹配的代码。”

听起来很棒,对吧?但实际上,SDD根据“Spec”在开发流程中扮演角色的不同,可以分为三个层次:

  1. 🥇 Spec-first(规约先行):这是最基础的。先写一份深思熟虑的Spec,然后用它来指导AI完成当下的开发任务。任务完成后,这份Spec可能就被搁置了。

  2. 🥈 Spec-anchored(规约锚定):进阶版。任务完成后,Spec不会被丢弃,而是被保留下来。在后续的功能迭代和维护中,我们继续更新和使用这份Spec。

  3. 🥉 Spec-as-source(规约即源码):终极形态。Spec是唯一需要人来编辑的核心文件。开发者只修改Spec,代码由AI全权负责生成和修改,人类甚至不需要直接接触代码。

这三个层次层层递进,描绘了一幅从“人机协作”到“人导机创”的宏伟蓝图。那么,实现这个蓝图的工具表现如何呢?

⚔️ 三大SDD工具实战对比

为了搞清楚SDD在现实世界中的样子,我们来看看市面上三款主流的SDD工具:Kirospec-kit 和 Tessl

1. Kiro:轻量级的敏捷派 🍃

Kiro是三者中最简单、最轻量级的一个。它的工作流非常清晰,基本上遵循Spec-first的理念。

工作流需求 (Requirements) → 设计 (Design) → 任务 (Tasks)

每个步骤都对应一个Markdown文档,Kiro会在VS Code里引导你完成这三步。听起来很美好,但实际用起来可能会发现一个问题:杀鸡用牛刀

比如,当你想用Kiro修复一个小Bug时,它可能会让你把这个小Bug写成4个“用户故事”和16条“验收标准”。这对于一个小任务来说,流程显得过于繁琐和冗长了。

2. Spec-kit:GitHub出品的重量级选手 🥊

Spec-kit是GitHub官方推出的SDD工具,功能更强大,也更复杂。它最核心的概念是“章程(Constitution)”,相当于一个项目的“记忆库”,包含了所有开发任务都必须遵守的顶层原则。

工作流章程 (Constitution) → 规约 (Specify) → 计划 (Plan) → 任务 (Tasks)

Spec-kit的流程非常严谨,会生成大量的Markdown文件和检查清单,让你在每个环节进行确认和精炼。但这也带来了新的问题:文档评审地狱

A developer looking stressed, sitting in front of a monitor filled with countless markdown files and checklists.

一位尝试过的开发者吐槽说:“Spec-kit为我创建了海量的Markdown文件,它们内容重复,冗长乏味。说实话,我宁愿去审查代码!”

这种体验,相信很多开发者都能感同身受。过多的流程和文档,有时非但不能提升效率,反而会成为一种负担。

3. Tessl Framework:激进的理想主义者 ✨

Tessl是三者中最激进的,它明确追求Spec-anchored,甚至在探索Spec-as-source的终极形态。

它的一个惊人特性是,从Spec生成出来的代码文件顶部,会赫然写着一行注释:

// GENERATED FROM SPEC - DO NOT EDIT // (由Spec生成 - 请勿编辑) 

这意味着,开发者应该彻底放弃修改代码,转而只维护Spec文档。Tessl会负责将Spec同步到代码。

A visual metaphor of a spec document magically turning into a code file.

这种模式让人想起了十几年前的模型驱动开发(MDD)。MDD也试图通过中间模型来生成代码,但最终因为过于笨重、抽象层次尴尬而未能普及。Tessl虽然借助LLM的强大能力摆脱了MDD的某些束缚,但也引入了LLM的“不确定性”问题。这会不会是新瓶装旧酒,甚至陷入“不灵活”和“不确定”的双重困境呢?

🤔 SDD是银弹还是陷阱?五大灵魂拷问

体验了这些工具后,我们不禁要冷静下来,提出一些关键问题。SDD的未来,或许就藏在这些问题的答案里。

1. 一套流程能打天下吗?

当前的SDD工具似乎都提供了一套固定的、相当“重”的流程。但软件开发任务的规模和类型千差万别,从改一个错字到开发一个全新模块。用同一套重量级流程处理所有问题,显然不现实。一个高效的SDD工具,必须为不同规模的任务提供灵活的工作流。

2. 审文档,还是审代码?

SDD的核心之一是用自然语言的Spec来替代部分代码审查。但当Spec变得像代码一样冗长、复杂、充满技术细节时,审查它真的比审查代码更轻松吗?我们是不是只是把负担从一个地方转移到了另一个地方?

A developer in a thinking pose, looking at a complex decision tree with paths labeled 'Review Markdown' and 'Review Code'.

3. 我们真的掌控一切了吗?

尽管有详尽的Spec、模板和检查清单,但AI智能体仍然会“自由发挥”。它们有时会忽略Spec中的关键指令,有时又会过度解读某些规则,导致生成重复或错误的代码。这种“虚假的控制感”可能会让开发者在关键时刻措手不及。

4. 谁是目标用户?

很多SDD工具的演示都包含了定义产品目标、编写用户故事等环节。这究竟是为谁设计的?是希望开发者承担更多产品经理的角色,还是需要产品经理和开发者结对使用?目前,这个界限非常模糊。

5. 我们是否在重蹈覆辙?

正如前面提到的Tessl与MDD的相似之处,Spec-as-source的理念并非全新。我们应该从过去的技术浪潮(如MDD)中吸取教训。LLM解决了代码生成器的问题,但也带来了不确定性。我们必须警惕,不要在追求自动化的道路上,陷入新的困境。

💡 写在最后:未来何去何从?

经过一番深入探索,我们可以得出几个初步结论:

首先,“规约先行(Spec-first)”的原则本身极具价值。在开始一项复杂的AI编程任务前,花时间精心构建一份清晰的Spec,无疑能极大地提升与AI协作的效率和准确性。如何构建有效的“记忆库”,如何为AI编写高质量的设计文档,这些都是当下开发者最关心的问题。

然而,“Spec驱动开发(SDD)”这个术语本身还很模糊,定义尚在演变中。市面上的工具虽然各有特色,但似乎都还在摸索阶段,离成熟好用还有一段距离。

AI编程的未来,需要我们保持开放的心态,更需要批判性的思考。SDD或许指明了一个方向,但通往未来的路,还需要我们一步一个脚印地去探索和验证。


那么,你对Spec驱动开发有什么看法呢?你认为它是未来的趋势,还是一个被过度炒作的概念?欢迎在评论区留下你的真知灼见!👇


【声明】内容源于网络
0
0
脑洞科技社
1234
内容 119
粉丝 0
脑洞科技社 1234
总阅读714
粉丝0
内容119