结合OpenSpec,可以大幅提升vibe coding的质量
一段话说重点:作为软工实验室背景的研发,从不会轻易相信聊天vibe coding是个靠谱的事,不仅用ai辅助写代码,之前也尝试了几次小项目的vibe coding。我还是相信需要人输入详细的需求&设计,规范AI的上下文和具体执行,以及做好验证,才能让AI达到一定的质量和效率。
开头
周末带娃,之前用oii,觉得好玩,就顺便用AI写了个漫剧工具,之前也研究了一个做短剧agent的代码流程,这次先没做agent,而是跑通漫剧的流程。还顺便用了OpenSpec,来改善vibe coding(氛围编程)的不靠谱。
主要还是想自己玩玩,就自己写需求,让AI来干活实现掉,因为之前用vibe coding做了一些微信小游戏、或者一些游戏原型的实现,或者一些工具、算法等,还是发现了一些问题,就想试下OpenSpec规范下整体软件开发的流程。
编程工具,cursor
辅助,OpenSpec,不过我用的中文版
开发技术栈,python的fastapi+html
ai的api,openrouter和wavespeed
最终效果:



为什么要用OpenSpec
vibe coding写代码会遇到一些问题,如果不了解vibe coding的可以了解一下,也就是所谓的氛围编程。
- 如果给短的需求描述,ai会自我发挥,会实现混乱
- 如果给长的需求描述,上下文多了,ai会忘记,会漏掉需求
- 时间长了,人和ai都忘了需求了。难追溯,上下文多了也会出遗忘、注意力分散等各种问题
- 人要不停的跟ai聊天,也挺累的
软件一般如何开发,用大白话说
- 前期会有外来需求评审/宣讲,研发需求做需求理解与分析
- 理解需求后,研发需要再结合UI/UX做设计,抽象以及未来扩展,前后端的接口时序,数据库设计等
- 然后才开始写代码,写代码过程中也会自测与重构
- 都完成的做自测和前后端联调,正式提测。
普通的vibe coding问题比较多,所以现在专业使用sdd,spec-driven development,提前做好约束,让ai按照约束执行,效果就会好很多。
什么是OpenSpec
说白了就是按照理解定义了一个vibe coding的标准,有助于先做需求分析和设计,列好task,按照task一条条执行,最后再归档需求,为后续开发提供上下文。整体思路是符合软件工程思想的,未必有多好一定是银弹什么的,但是肯定比一般聊天聊出来的要靠谱和省心。
具体使用OpenSpec的指令开发核心用的3个指令,分别是:
- openspec-proposal 用来提一个需求,OpenSpec会将需求分析整理成每个模块的spec需求、做design设计、整理task任务。这时候可以仔细review几个文档的实现,我比较懒,虽然几乎也都概览了下,但是比较少认真review,如果是正式的项目,这个环节应该要非常认真的确认。
-

- openspec-apply 让ai执行需求实现,会按照task的list一条条的落地,我跑了差不多10几次proposal,可以看出来执行的非常不错,有时发现实现的功能不够好,结果发现是我需求写漏了。
-
- 这个过程也会比较长,该玩游戏玩游戏,该带娃带娃,不过大部分时间我是接下来写后续的需求,因为写需求也需要很长的时间啊🤷🏻♀️。
- 执行完成后,可以做验证,我也写了一点test,不过后来用的比较少。
- openspec-archive 将这个需求归档,会将需求合入到主干需求中,这样软件开发过程中的文档资产及都积累下来了。这个是软件工程领域里非常重要的事情。这里不细展开了。
- 最后就可以提交git了,我建议这里提交git,防止后续出现什么问题。因为我发生过直接点了undo,结果代码都没了。或者ai把代码改坏了,又折腾比较久,发现ai改不好,也可以直接放弃这些代码。
官方的英文流程,get一下流程。

翻译成中文流程。

创建的几个具体的文件,其实看内容也能具体看出来。

重要的文件还有openspec/project.md 和 openspec/AGENTS.md,分别是项目级约定与背景文件,和面向 AI 的说明文件,都是openspec初始化时生成的,project文件可以持续优化或者让ai帮忙丰富。
详细的也可以多看看其他介绍,然后我看英文也嫌累,毕竟中文是世界上第二大语言(笑),看到有中文版就用了中文版,用下来觉得效果还是不错的。
OpenSpec中文版
npm安装OpenSpec中文版
npm install -g @studyzy/openspec-cn
项目根目录初始化
cd myproject
openspec-cn init
初始化一下,CLI 会询问你正在使用的 AI 助手(如Cursor、Claude Code、VS Code 等),我就是选cursor:
项目根目录自动生成 openspec/ 目录:
openspec/project.md:项目级约定与背景openspec/specs/:当前真实的功能规范openspec/changes/:新的变更提案
包括上面说的生成面向 AI 的说明文件 openspec/AGENTS.md等
为支持的工具安装或更新 OpenSpec 相关的斜杠命令(/openspec:proposal、/openspec:apply、/openspec:archive)
命令
# 查看当前有哪些活跃变更
openspec-cn list
# 查看当前已经存在的规范能力
openspec-cn spec list --long
# 打开交互式仪表盘(终端 UI)
openspec-cn view
这个就是可以查看变更的列表了,结果发现我活都干完了,竟然还有几个change的task没干完,果然边干活边干别的会漏掉东西。

怪不得我发现这几个change还没close,仔细看了下,这也是个坑,因为openspec的apply干完活,我以为就真的干完了,实际上测试部分的task还没干,我当时没注意。
好在问题不大,我都自己验证过了,然后就手动close了。这样就没有遗留的活跃的变更了。

如果第一次在项目里使用 OpenSpec-cn,可以在 openspec/project.md,补充项目说明、技术栈和约定,当然这一块也可以自己先简单写一些,然后让ai干,自己检查一下
如果当前项目有代码,可以让ai的ide比如cursor之类的,基于当前项目做总结
“请阅读 openspec/project.md 和 openspec/AGENTS.md,并帮我总结这个项目的上下文和规范驱动开发流程。”
具体干活就是上面说的那3个重要的命令,proposal、apply、archive,然后多git提交存档,干就好了。
写需求
写了不少需求描述,同时也带了一些ui交互的设计性描述,因为只写需求吧,不可能什么都让openspec自由发挥。
另外如果有ui稿子是可以提供给cursor参考的,我是做工具性尝试,大概脑子里想了页面结构,样式不太重要,就直接让openspec干了,过程中其实openspec会给出一些设计的页面布局,例如:


基于OpenSpec的流程,一个个需求来落地。
大概就是写需求文档要花比较多时间,执行proposal要比较多时间,apply要更多的时间,我自己验证的时候用要花一些时间,以及毕竟需求总是写的不够完善,apply之后还不断做了一些小调整和问题修复。
对时间统筹兼顾一下就是,执行proposal和apply,我就写下一个需求了,apply之后密集的验证和修复,修复时间长就继续写需求。
下面这个是我写的需求的一部分。

这些是git的提交记录,都让ai写的描述,人为懒,但是看效果还不错吧,比以前每次提交git时想comment舒服多了。

因为是第一次尝试openspec,且做的东西比较简单,属于尝试的,所以整体流程我也跑的比较快,部分环节没有做非常仔细的校验。但是最后整体效果和质量,比以前简单的vibe coding效果还是好了很多,真的好了很多,质量好了,速度也就快了。
一些好玩的设计
素材自动关联
我做了素材自动关联的能力,假如我人设做了童年刘禅、成年刘禅,那么如果分镜会根据情况自己去选择关联哪一个,不会说只关注刘禅,于是弄了个老头的图片当小孩叫刘备爸爸。当然也可以手动做二次处理
预览功能
生成了很多视频片段后,如何预览整体的效果呢,oii是花了时间合成一个视频,我想了下,因为还涉及字幕问题,字幕可能需要在剪辑工具比如剪映上搞。我实现方案就把视频一个个按顺序播起来,然后把字幕也加在预览上,直接可以看效果。细节是,字幕需要跟视频对齐的,比如一个字幕是这个视频2秒-3秒播放,第二个字幕是4-5秒播放,那么都可以正确的预览看效果,与画面对应的。
这些功能也是我自己写下来让ai干的,过程中有点坎坷,ai出了一些问题,不过好在也调试明白了。
其实其他也有一些,反正边想边优化一些好玩的feature,然后快速落地看效果是挺有满足感的。比如做多参,做流程。
附代码git和使用
有些同学想看下代码,我本来合计挨个私发,好像也不太方便,还是放github上吧,代码基本除了部分sample外,全是AI写的,参考价值有限,玩玩还行,另外后面要做好是要深入优化提示词的,正好元旦放假了就没开始搞。
代码我扔github上了,平时不怎么参与开源项目,所以没什么规范,说不定对某些0-1的项目有点作用。 GitHub - madcloudsong/comicmaker: a toy of comic maker · GitHub
不方便用github的,也可以直接私信发送漫剧,发网盘链接。
这是个toy。要跑起来可以看readme,起个前端服务,起个后端服务就能跑起来,早期vibe coding写复杂框架的容易出问题,为了方便,没用啥前端高级的工程框架,原生js+css,后面可以考虑找个组件库重构下,因为做好规范和上下文,以及现在的ai能力,可以胜任了。
另外server/config/config.yaml里的一些ai的key需要填上,比如生图生视频我用的wavespeed的封装api,之前研究一个agent项目时看别人用的,wavespeed_api字段要填上key。LLM的我用的openrouter的封装api,访问gpt方便一些,填在openai_api_key字段上。
以及阿里云oss的key和bucket,需要开公共读,用来做图床,给一些图和视频模型用来访问图的,内在代码逻辑是先上传到oss,然后把链接给到生图生视频接口。
如果要了解wavespeed的api使用,比如seedance的文档 Bytedance Seedance V1.5 Pro Image To Video API Documentation - WaveSpeedAI
如果要对接其他的ai接口,就把接口做下适配就好了。
结语
用openspec撸了一个AI漫剧工具后,有几点体会:
- OpenSpec写代码不错,需求落地的代码,成功率很高,比之前纯vibe coding还是省了不少事的。
- 研发还是要更清晰的了解业务,架构的设计,去给ai设置一些边界,这样才可控。纯ai的天马行空,大概率不会符合诉求,只能让外行人觉得好酷。
- 其实也有一些其他的,比如speckit之类的,大家思路大体上差不多的,有的是各有侧重,因为软工学术圈一直都很重视ai时代的智能化软件开发。
- ai时代挺好的,需要勇于动手,勇于实践,充满热情,后续可以用sdd的方式开发一些其他好玩的小项目。
后续一个是做了一些思考,应该要做大的重构,觉得应该把分镜等某些功能做好才有用,把素材关联做的更好一些,设定做成子结构,有利于管理,以及优化前端样式。
另外准备尝试agent化,像oii似的用自然语言控制agent干活。

&spm=1001.2101.3001.5002&articleId=164001302&d=1&t=3&u=ade412cba02e4ee4ac293ff058b29b93)
882

被折叠的 条评论
为什么被折叠?



