Rock Sun
Vibe

花了一天用 SDD 写了个带审批的网盘

记录用一天借助 SDD 与 Kiro 搭建带审批流程的共享网盘的过程、关键决策与使用心得。

工作中有个需求:做一个带审批流程的共享网盘。公司现有产品功能冗余且变更流程繁琐,我估计自己开发会更快些。前些日子看了几篇关于 SDD(软件设计对话)的文章,并对 Kiro 有一些使用经验,于是决定试试把这个需求用 SDD+Kiro 整一遍。

从 steering rules 开始

首先要明确项目的大方向,这在 Kiro 中对应 steering rules。Kiro 的向导会根据项目生成 steering rules。但我这个项目是基于一个 Next.js starter,如果直接用框架生成,结果会比较偏离目标。于是我先让 Kiro 帮我生成一个 steering 文档,向导输入如下:

这是一个模板项目,包含一些我不需要的功能。我希望做一个共享网盘项目,可以添加文件并共享给其他人。共享时,需要管理员审核,审核通过后目标用户才可以下载文件。请帮我生成 steering 文件。

可惜没有直接触发 Kiro 生成 steering rules,但它给了一个类似的文档。于是我把文档内容复制到项目的 README.md,再用 Kiro 向导生成了初始的 steering 文档,效果还不错:

product.md

alt text

structure.md

alt text

tech.md

alt text

总体上基本符合我的想法。

开始 SDD

先实现基本的文件管理功能,我告诉 Kiro:

用户可以管理目录、上传文件、删除文件。文件实际存放在 S3 上。

随后 Kiro 为我生成了一个 spec:file-directory-management,位于 .kiro\specs\file-directory-management\requirements.md

alt text

这是熟悉的 Scrum 风格用户故事,结构清晰,基本符合拆分原则。

接着可以一路用向导生成 Design 和 Task List。中间如果不满意,可以直接修改或请 Kiro 帮忙调整。确认没问题后,就可以执行任务了:

alt text

后来我又增加了一个涉及 LDAP 筛选的分享认证 spec,以及一个文件分享的 spec,这里是对话截图:

alt text

通过这三个 spec,基本完成了大部分功能;中间穿插了一些单独的 Vibe 对话来解决零散需求。

效果

文件浏览与目录管理:

alt text

分享文件界面:

alt text

感受

整体流程比较顺畅。唯一卡住的是 LDAP 筛选部分,我当时选了一种特别复杂的实现方式,反复失败。最后决定不要纠结,采用最简单的筛选策略,问题就解决了。

我还用 Kiro 做了一个更大的应用,目前对 SDD 的模式还是比较认可。SDD 解决了我之前用 Vibe 时遇到的一些问题,比如无法记住之前的要求。但上下文过长时仍会重复犯错,说明工具需要更智能的上下文筛选机制。

关于粒度的把握也很重要:需求太小,使用 SDD 显得浪费;需求太大,又需要额外的提示与拆分。

总结

这个行业确实竞争激烈。文章写到一半时,Google 那边的 Antigravity 也出现了,我试了下,感觉在 SDD 思路上的实现更简练,在浏览器测试和上下文管理方面也有独到之处,以后会再分享体验。

如果你有兴趣,可以试试 Kiro——目前注册可能还送 500 点,这个项目大概只用了十几点就能把基本功能覆盖完。