(design-doc v5)氛围编程当天能跑,随后却不可靠、不可用、快速腐烂。解决办法不是少用 AI,而是先把设计写成能依据的规范文档。开源工具 design-doc 在 v5 把「人审定稿后才能作为实现依据」落到技能里。免费,可商用。更新能力见 v6 介绍文。

版本说明:本文是 design-doc v5 的宣传介绍,保留当时的问题意识与能力边界,便于对照演进。仓库当前版本见 GitHub;v6 起强调「产品基线」(定稿之外还要钉住可实现集),见文末链接。

一句话就能让AI写出一个可以直接运行演示的产品,这种爽感确实非常的吸引人。

但之后呢:说不清做了什么、改不动、交不出去、越迭代越糟糕,过两周没人敢碰。

这就是氛围编程的特点:快是真的快,问题也来得一样快。

1 这些坑几乎人人都会碰上

1.1 不清楚系统到底做了什么

系统能跑,但要逐项核对、验收、对客、交接时,谁也不确定实际会怎样。没有规范,就没有标准和尺子,无法度量。

1.2 同样的提示词得到的结果不一样

稍微变一下,比如换个窗口、换个模型、甚至换个时间,生成的内容就漂了。

粗看好像都能对的上,细看就面目全非了。

究其根因 1:从来没有一份确认无疑的设计。这种情况下就不是偶发抽风,是每次都在重新猜测,随意发挥。

1.3 改一处乱一堆

AI只看见眼前这几轮对话,看不见整张图。登录、价格、接口、旧逻辑,常常是按下葫芦浮起瓢。更糟糕的的是:已经不要的做法,会在某次修改里混回来,把刚改好的盖掉。

你都不知道AI什么时候想起了啥,添加了些啥,自由发挥了些啥。

如果碰上冲突(迭代后期,功能多了后几乎不可避免),直接整个系统一塌糊涂。

1.4 演示好看,一用就翻车

对于sunny day的情况和固定的场景,AI相当拿手。空数据、重复提交、中途退出、权限差一档、网络一抖,这些rainning day的事如果没人先写进设计,就得等到上线才算账。业内的人都知道欠的债都是要还的,技术债 2越往后要还的越多。

1.5 创意活在聊天里,窗口一关就开始忘

对大部分人来说,过两周连自己都想不起来当初为啥要那么做。更别说换人了。代码还在、依据没了,等于从零猜。 很多时候需求的描述就和之前的设计冲突,甚至是设计看上去完美,但在技术架构上又不合理。

对于不合理的要求,AI往往尽量去满足,这就导致了大量的冗余,堆砌,绕线和不明所以的实现和必然的大坑。然后越改越乱,只能推倒重来。

这就是大家说的快速腐烂。

1.6 看起来快,实则慢

用AI写代码,初期进度惊人,一下子就能拿到了演示版;

后期速度也惊人,是那种填不完的坑,改不好的错的那种惊人。

只需要一两周的时间,就会被困在混沌的泥潭中动弹不得。

上面这些问题很少单独出现。共同点很简单:走得太快,什么经得起用的都没留下。

2 解决办法:先留下能依据的设计

少用 AI 没用,速度也回不去了。继续空着手聊,在用心也只是把翻车往后推。

能按住这种混沌趋势的,唯一的办法就是把要做成什么样写下来,想清楚,规划清晰,再动手。

不是写给人看的说明书,是要写一份精确定义,清晰无误,相近细致的设计规范。所有的要求都落实在条条框框里,AI 能跟着做。这样子验收才有尺子,就算换会话,换AI也不至于出现偏差;改需求知道该动哪,不用靠回忆;约束先定然后编码;编码依照规范实现,任何时候都可以重新实现,审查实现,评估和度量实现。

这种情况下普通的文档肯定是不行的。

逻辑性不够,完整性,可维护性,最关键整个系统的一致性,都无法保证。

这就是规范化设计文档在这儿的意思。

所以,真想要一个完整的可工作的系统,不要期望和试图一句话生成代码。

先把自己的想法完善成一份规范的设计文档,并借助AI不停的完善这个设计方案。 设计规范了,实现代码就自然简单了,也容易审查和验证是否跑偏,把氛围编程的问题和困境,解决在编码阶段。

如果没有这么一份严谨规范的设计,那么实现的代码天马行空,自由发挥,也就是可以想象的了。

设计规范是一切的基础

3 design-doc v5 怎样把这件事做下来

design-doc 是开源的AI技能,帮你编制这种文档。下面说的是 v5 已经落地的那一套。

不要一听到设计规范,设计文档就犯怵。好的方面是,借助 designdoc, AI也可以帮你做这个事情。 你只需要描述你的想法和需求,意见和思路, AI就可以按照标准的,规范的设计文档的规格去拆分和整理设计文档。并且校验逻辑性,检查冲突项,依赖项,风险项等。

最最重要的时,在产品迭代升级的过程中,可以持续的借助designdoc补充,更新,升级,废弃相关的设计项,从而可靠的推动代码的升级。

这个过程中,你只需要用自然语言描述需求,designdoc就按规范落设计,并将相关的设计详情反馈给你审核。

3.1 designdoc 做了什么:

把该交代的摊开——为什么做、谁在用、系统必须有什么、怎么拼、怎么验。

3.2 designdoc不做什么:

designdoc不做决策,他讲你的想法落实成详细的设计后,会汇总给你审核,审核确认之后他才可以定稿,并用做实现代码的依据。 如果中间碰到任何逻辑上的缺陷,碰撞,或是更好的方案。他也会提供方案和建议,供你选择,你做完决策后,他在继续按照你的决策来推进。

3.3 最终效果:

你永远只需要描述你关心的需求,且后期迭代则更多的是具体的功能点这种细节。但是designdoc永远将他放到整个的产品设计规划 3中去做全盘的分析,设计,规划,复核,审查。确保新增的和已有的整个系统是协调一致的。 并且这个过程中,任何的模糊的地方,都会分析后给出建议方案,并提示你做选择和决策。

3.4 designdoc v5 的特性

  1. SSOT: designdoc 遵循唯一真实可信源的设计思想。所有的设计细节都可以索引、依赖,升级、废弃和追踪。
  2. 严格的审核机制。任何的设计细节,都需要最终人的审核才能定稿为正式版本。在 v5,定稿过的设计才可作为实现代码的依据——把「人审闸门」立住,也就是那时所说的产品基线雏形。
  3. 几十种设计细节类型,如假设,依赖,风险,约束,流程,算法,规则,功能等等,自动的分门别类的整理和管理。不需要人操心设计规范的细节实现。
  4. 设计文档采用标准的模板方式,内容涵盖软件工程领域的相关国标,IEEE的规范的内容。并且覆盖有余。
  5. 作为一个技能来说,初期可能需要明确的要求AI按照designdoc的技能来编制设计文档。后期基本上只需要正常的描述需求,AI都能识别到并自动使用本技能来管理设计文档。

4 开源,免费,可商用

designdoc 采用 MIT 许可,发布在https://github.com/reddishz/designdoc。 个人和公司都可以用、可以改、可以放进自己的仓库。

本文对应 v5 能力边界。仓库会继续演进;若要看「定稿之外如何钉住可实现集」,请读 v6 介绍。


  1. 商业分析中的五十种分析方法和技巧之40-根本原因分析. https://srs.pub/babok/genbenyuanyin-fenxi.html↩︎

  2. 需求分析在AI编码导致的技术债中的重要性. https://srs.pub/thinking/ai-coding-who-defines-problems.html↩︎

  3. 需求开发向设计规划的转化. https://srs.pub/theory/xu-qiu-kai-fa-xiang-she-ji-gui-hua-de-zhuan-hua.html↩︎