SDD 把项目拆成规范定义与代码实现两次创造

任何项目都要经历两次创造,这是 SDD 理论的核心。第一次创造是定义规范,明确项目要解决什么问题、输入输出格式、边界条件和预期行为。第二次创造才是把这些规范变成可运行的代码。

SDD 全称 Spec-Driven Development,即规范驱动开发。它强调先把需求固化为精确、可验证的规格文档,而不是直接动手写代码。这个规格文档成为整个项目的唯一真相来源,后续所有实现都必须严格对齐它。作者在上一次文章中已经把这个理论梳理清楚,现在他用实际项目验证了这个观点。

在传统开发流程里,程序员往往同时承担架构设计和代码实现两项工作,容易在细节中迷失整体方向。SDD 把这两件事彻底分开:人负责思考和定义“做什么”,机器负责“怎么做”。这样做的好处是规范一旦确定,后面的代码生成就可以高度自动化,甚至交给 AI 完成。

这个理论听起来抽象,但作者直接拿它做了一个具体的 npm 包。整个项目没有传统意义上的“手写代码”阶段,而是从一份详细的规范文档出发,驱动后续所有产出。规范文档里包含了公众号文章排版的各种规则、中文文本处理逻辑、样式映射关系等关键信息。这些内容成为 AI 生成代码的唯一依据。

通过两次创造的拆分,项目开发过程变得更可控。规范定义阶段可以反复迭代,直到完全清晰;代码实现阶段则变成机械化的翻译工作,减少了人为错误。作者认为,这种方法让开发效率和质量都得到提升,尤其适合那些规则明确、重复性高的工具类项目。

公众号排版 npm 包的具体功能与 SDD 落地路径

这个 npm 包专门解决公众号文章排版问题。它能把 Markdown 或纯文本内容自动转换成适合微信公众号发布的格式,包括标题处理、段落间距、引用样式、代码块高亮、图片适配等一系列规则。

包的核心功能是提供一套统一的排版引擎,支持中文标点符号的正确处理、微信特有的样式限制适配,以及一键生成可直接复制到公众号后台的 HTML。作者把它打包成 npm 模块,方便其他开发者直接集成到自己的内容工作流中。

在 SDD 方法下,这个包的开发路径完全围绕规范展开。首先作者撰写了详细的规格文档,列出所有支持的 Markdown 元素、对应的微信排版要求、边缘情况处理逻辑、性能指标等。文档长度超过数千字,成为项目最核心的资产。

接着根据这份规范,AI 被用来生成实际的代码实现。整个过程没有传统的手动敲代码环节,而是通过迭代式的规范细化和代码生成完成。作者把规范文档喂给 AI,让它输出对应的 TypeScript 实现,然后再根据规范检查生成结果是否符合预期。

最终发布的 npm 包体积小巧,API 设计简洁,只暴露必要的配置选项。用户安装后只需传入原始内容和少量选项,就能得到排版后的结果。这个落地路径验证了 SDD 的可行性:从规范到产品的链条被大幅缩短,中间的人力投入集中在思考层面而非编码细节。

程序员从写代码转向制定规范的角色转变

在这个项目里,程序员的角色彻底从码农转变为架构师。作者不再花大量时间调试具体实现,而是把精力放在制定精确的规范上。他需要思考清楚每一个排版规则的边界、不同中文标点在微信中的表现、各种异常输入的处理策略。

这种转变意味着程序员的核心能力从“熟练使用编程语言”转向“精准表达需求”。规范文档写得越清晰,后续 AI 生成的代码质量就越高。作者发现,当规范足够严谨时,AI 犯错的概率会显著下降。

传统开发中程序员常常同时面对产品逻辑和工程细节,容易两头不讨好。SDD 把架构决策和实现细节解耦,让程序员可以更专注在系统设计上。他们需要成为优秀的规范工程师,能够把模糊的需求翻译成机器可严格执行的规格。

在这个公众号排版项目中,作者作为架构师的主要工作是不断完善规范文档,包括增加对更多 Markdown 语法的支持、优化中文排版规则、定义性能基准等。这些工作需要深厚的领域知识和抽象思维能力,而不再是单纯的编码技巧。

角色转变也带来了新的挑战。写出好的规范本身就是一项高阶技能,它要求程序员既懂业务又懂技术,还要具备良好的表达能力。作者认为,未来优秀的程序员会越来越像产品经理和系统设计师的结合体,而日常编码工作将逐步交给 AI 完成。

AI 在规范驱动下承担的代码生成工作

AI 在这个项目中完全承担了代码开发者的角色。它根据作者提供的规范文档,负责生成具体的 TypeScript 代码、测试用例和文档。

具体来说,AI 完成了核心排版引擎的实现,包括 Markdown 解析器的定制、样式转换逻辑、中文标点处理函数、HTML 模板生成等模块。这些原本需要程序员几周时间手写调试的代码,现在通过 AI 在规范指导下快速产出。

AI 还生成了大量的单元测试,确保每一条规范都被正确实现。作者会把规范中的每一条规则转化为测试用例,让 AI 据此编写对应测试,然后运行验证。通过这种方式,规范和实现之间建立了严格的对应关系。

与程序员的架构工作形成鲜明对比的是,AI 处理的是高度确定性的实现任务。它不需要理解为什么某个规则这样设计,只需要忠实按照规范把逻辑翻译成代码。这种分工让 AI 的优势得到充分发挥,同时避免了它在架构决策上的弱点。

整个过程中 AI 不是一次性生成全部代码,而是随着规范迭代逐步完善。当作者发现规范有遗漏或不清晰的地方时,会先更新规范,再让 AI 重新生成对应部分。这种迭代方式保证了最终代码与规范的高度一致性。

SDD 在中文内容工具中的应用价值

公众号排版只是中文内容工具的一个缩影。SDD 方法对整个中文内容创作生态都有实际价值。中文排版规则复杂,涉及标点、字体、间距、微信特定限制等多方面因素,传统手动开发成本高、维护难。

通过 SDD,开发者可以把这些复杂规则固化到规范文档中,然后让 AI 负责实现。这降低了中文内容工具的开发门槛,让更多专注于内容而非编程的内容从业者也能参与工具创造。

对中文开发者来说,SDD 提供了一种新的工作方式。他们可以把精力放在理解微信生态、用户排版痛点这些领域知识上,而把重复的编码工作交给 AI。这在当前 AI 编码能力快速提升的背景下特别有意义。

这个 npm 包的发布也展示了 SDD 在垂直工具领域的潜力。类似的方法可以扩展到小红书排版工具、知乎内容适配器、视频字幕生成器等众多中文内容场景。这些工具的共同特点是规则明确、需求迭代频繁,非常适合规范驱动的开发模式。

更重要的是,SDD 让规范本身成为可复用的资产。一份写得好的排版规范文档,可以被多个项目、多个 AI 模型反复使用,长期价值远高于一次性编写的代码。这种资产化思维对内容工具领域的持续创新有重要意义。

SDD 方法论在当前实践中的局限

尽管这个公众号排版 npm 包验证了 SDD 的可行性,但该方法在中文内容工具场景下仍存在明显局限。首先是规范编写的成本和难度。写出一份足够精确、没有歧义的规范文档本身需要大量时间,对程序员的表达能力和领域知识要求很高。

当前 AI 对复杂规范的理解能力仍有不足。当规范涉及较多隐含规则或中文语义细节时,AI 生成的代码经常出现偏差,需要人工多次修正。这导致实际开发中规范迭代和代码验证的循环可能比预期更长。

另一个局限是规范的维护问题。随着微信排版规则更新或新增需求,规范文档需要持续更新。如果规范和代码之间的同步机制不够完善,很容易出现两者脱节的情况。

在更复杂的中文内容工具中,比如涉及动态排版、个性化样式、多平台适配的场景,规范的复杂度会指数级上升。目前还不清楚 SDD 在这类大型项目中是否还能保持效率优势。

此外,SDD 对 AI 编码能力的依赖也带来了风险。如果使用的 AI 模型在特定领域(如中文排版)表现不佳,整个开发流程就会受阻。作者的项目虽然成功,但更多是小规模验证,大规模推广仍需更多实践数据支持。

总体来看,SDD 提供了一种有价值的思考框架,但要成为主流开发方法论,还需要在工具链、规范语言、验证机制等方面继续完善。

参考来源