找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3140

积分

0

好友

426

主题
发表于 2 小时前 | 查看: 5| 回复: 0

切记,规范是死的,人是活的,AI也是如此。过于僵化的流程,有时容易使其陷入类似于DDD、TDD那样的尴尬境地,让开发者感到束缚而非助力。

在AI辅助编程的多种范式中,Vibe Coding模式非常自由,依赖于开发者的“感觉”来驱动。而与之相对的 Spec Coding(规范驱动开发,Spec-Driven Development,简称SDD) 则更强调稳定性与确定性。实际上,Vibe Coding、Agent Coding、Spec Coding等多种模式之间并无绝对的优劣或冲突,它们更像是工具箱中不同用途的工具,适用于不同的人群、需求、模型复杂度或项目阶段。

很多时候,当AI的输出达不到预期时,问题不一定在于模型本身的能力不足,而可能在于我们使用它的方式。换一种辅助模式,或许就能打开新的局面。在没有AI的时代,开发者常戏称自己是在“面向搜索引擎编程”。遇到问题,第一反应是去问百度或Google。而当AI成为日常搭档后,我们就不能仅仅把它当作一个更聪明的搜索引擎来用了。它虽然擅长模式识别,但仍需要明确、无歧义的指令才能发挥最佳协作效果。

引入AI后,你是否会担心代码质量下降?担心它在复杂的业务场景中迷失方向?担心传统编码下的各种问题会被无限放大?那么,引入SDD模式或许是一个值得考虑的选项。

SDD 的核心思路是:将规范(Spec)置于核心地位,代码只是规范在特定语言和框架下的具体表达。因此,维护软件意味着维护其规范,而调试则意味着修正规范中的错误描述。这是一种思维和工作重心的根本性转变。

三大SDD框架概览

为了帮助你更直观地了解它们的定位和特点,我们先来看一张对比表格。

Spec Kit、OpenSpec与GSD对比表格

GitHub Spec Kit:结构化流程的重量级方案

Toolkit to help you get started with Spec-Driven Development

https://github.com/github/spec-kit

Spec Kit 的核心是一套严谨的七阶段门控流程:Constitution(宪法) → Specify(规范) → Plan(计划) → Tasks(任务) → Implement(实现) → Analyze(分析) → Archive(归档)。每个阶段都必须完成并通过,才能进入下一阶段,确保了过程的完整性和可审计性。

Spec Kit 还引入了 constitution.md 文件,允许团队在项目开始前就定义那些不可违背的“宪法”级规则——比如始终要求单元测试覆盖率达到特定标准,或必须遵守某个框架的特定版本。这些原则会在生成计划时被强制执行,从而确保所有技术决策都与组织的长期标准保持一致。

为了提升其可扩展性,Spec Kit 提供了扩展系统预设系统:扩展(Extension)用于添加全新的命令和模板,例如集成Jira、增加V-Model测试可追溯性检查等;而预设(Preset)则用于在不添加新功能的前提下,通过覆盖现有模板和命令来定制工作流的行为方式。

Spec Kit的constitution.md文件示例


OpenSpec:变更驱动的轻量级方案

Spec-driven development (SDD) for AI coding assistants.

https://github.com/Fission-AI/OpenSpec

OpenSpec 的核心机制是其独特的 Delta规范系统。它不会在每次变更时都重新描述整个系统,而是使用 ADDEDMODIFIEDREMOVED 标记来精准追踪相对于现有功能集的增量变更。这种轻量级的文档形态,特别适合在已有的开源项目或遗留代码库上进行持续迭代。变更完成并验证后,Delta 规范会被合并回主规范文件,而变更文件夹则会以日期为前缀移入归档目录,保留完整的历史记录。

其工作流通过几个核心命令驱动:/opsx:propose(创建变更提案)、/opsx:apply(执行实现)、/opsx:verify(验证结果)、/opsx:archive(归档合并)。对于需求明确的场景,可以用 /opsx:ff (fast-forward) 一次性生成所有规划文档;若需求仍在探索阶段,则可以用 /opsx:continue 命令逐步推进。

OpenSpec的Delta规范示例


GSD(Get Shit Done):执行编排的性能优化方案

A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, CodeBuddy, and Cline.

https://github.com/gsd-build/get-shit-done

GSD 要解决的核心痛点是AI编程中的 “上下文腐烂”(Context Rot) 问题——即在长会话中,随着上下文的不断累积,AI的输出质量会逐渐下降。它的解决方案颇为巧妙:将整个项目拆解为一系列小型、独立的原子任务,每个任务都在一个全新的200k Token上下文窗口中独立执行。主会话仅用于协调,其上下文使用率始终保持在一个很低的水平。

GSD采用波浪式并行执行策略:根据任务间的依赖关系将其分组成多个“波次”。独立任务可以并行执行,而有依赖关系的任务则按序推进。每个任务完成后都会立即生成一个原子的Git提交。

更重要的是,它引入了多级验证机制。通过计划检查器(Plan Checker)和验证器(Verifier)等智能体节点,对每个任务的执行进行严格把关。每个阶段的输出必须通过上一节点的检查,才能进入下一阶段,不符合规范的任务会被中止或打回重做。GSD v2 已从最初的Markdown提示框架演进为一个独立的TypeScript应用,可以直接控制智能体会话,实现上下文清理、精确文件注入、Git分支管理、成本追踪等高级功能。

如何选择适合自己的框架?

这三者并非简单的竞争关系,而是在SDD工具链的不同层次上各司其职:

  • 选择 Spec Kit,如果你需要跨越多款工具协作、要求严格的阶段门控与完整的审计追踪,或者极其重视“宪法”级别的项目治理原则。
  • 选择 OpenSpec,如果你主要在现有的代码库上进行持续迭代(Brownfield项目),希望以最小的规范编写代价,获得最大的上下文一致性保障。
  • 选择 GSD,如果你长期使用Claude Code等工具,已经明显感受到了“长会话质量下降”的困扰,或者你对执行计划的编排和质量有极高要求,重视执行阶段的自动化而不仅仅是规范的编写。

当然,也有开发者觉得这些框架都过于“重”了,更倾向于从它们之中汲取灵感,整合成适合自己的“技能包”。这种灵活运用的思路,本身也是对计算机科学实践精神的体现。

写在最后

SDD不仅仅是一种工具,更是一种思维方式的转变。它将规范而非代码作为首要的维护对象,试图将AI从“猜测执行者”转变为“精确实现者”,从而让AI编程的核心从修改代码的机械工作,升级为设计和维护规范的系统性设计工作。

这些框架是很好的起点,但最终我们应该理解它们背后的原则,发展出适合自己约束条件的系统。SDD 本质上是系统设计,而最佳设计从来都是定制的。最好的解决方案,永远是适合你特定约束的方案。

技术的发展离不开社区的交流与共享。如果你对AI辅助编程的更多模式和最佳实践感兴趣,欢迎来 云栈社区 与大家一同探讨。

本文基于 GitHub Spec Kit、OpenSpec 与 GSD 官方文档及社区反馈整理。




上一篇:Pi深度解析:终端原生、极简可扩展的AI编码代理是下一代Agent架构?
下一篇:Sucker Punch编剧管线重构实践:新工具如何为《羊蹄山之魂》团队节省600小时
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-12 06:21 , Processed in 0.729530 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表