4 个 vibe coding 项目,一个普通前端的半年

去年,从老婆怀孕开始,我靠 vibe coding 做了 4 个项目58 次提交 的育儿全栈应用、一次提交写完的像素日记游戏、一个内耗检测小程序、一套 AI 写作工具链。代码行数加起来超过一万行,但我没有写过一个完整的 PRD,也没有画过一张设计稿。

这篇文章按时间顺序,把这半年拆成四个项目来记。每个项目讲三件事:当时为什么做、做的时候踩了什么坑、最后沉淀出什么。结尾把四个项目的共同经验拧成几条能带走的方法。

一:baby-tracker,一个琐碎灵感的集合体

去年,老婆怀孕。我想趁这个节点用 vibe coding 做点东西------去买了域名,摸索 Vercel、Cloudflare、Supabase,环境一通配好,项目就启动了。没有产品规划,就是脑子里蹦出什么做什么。

动机:老婆怀孕了,我想做点什么

知道怀孕后,我整天琢磨"得趁现在做点东西",项目就启动了。喂养记录、睡眠记录、换尿布记录是最早落地的,但说实话它们更像一个引子------我只是需要一个能跑起来的东西,好把技术栈串通。

杂了:58 次提交,项目变成了大杂烩

做这个项目时我犯了个典型错误:没有主线,脑子里蹦一个念头就加一个功能。今天想"记录宝宝的喂养",明天想"要不要做个图表看看规律",后天想到雷电游戏------那是我小时候的情怀,想知道靠 AI 能不能复刻一个。然后就真做了。

于是 baby-tracker 里同时住着:喂养/睡眠/换尿布记录、Recharts 作息曲线、心情日记(带照片)、家庭共享(invite code)、留言板、四款小游戏(消消乐、方块了个方、雷电射击、下班发售日)。雷电射击就是我自己想玩,想看 AI 能不能写个弹幕游戏出来,结果它真写出来了------还写着写着顺手加了 Boss、强化、背景音乐。游戏不是给宝宝玩的,是给我自己玩的情怀。

这个项目做到最后,你说不清它是育儿工具还是游戏合集。它不糟糕,但很杂。每个功能单独拿出来都说得过去,合在一起没有方向。

它不糟糕,但很杂。

翻车:一个 3721 行的单文件

技术栈:Next.js 16 + TypeScript + Supabase + Tailwind CSS + Shadcn UI,PWA 用 Serwist。但最扎眼的不是技术,是那个 src/app/game/raiden/page.tsx:3721 行,全项目最大的文件,也是最大的坑。游戏循环、碰撞检测、子弹池、敌人生成、UI、音效、存档全写在同一个文件里。

前 800 行很顺,改功能时 AI 上下文足够。到 2000 行,每次改动都要重读整个文件。到 3721 行,AI 开始重复实现:文件里出现了两份子弹碰撞逻辑,因为它忘了自己已经写过一遍。问题出在追加式开发:每次只说"加一个 X",从不提"这个文件已经太大"。

拆文件时才知道代价:依赖是网状的,render 函数被 20 处 调用,游戏状态和 UI 状态混在同一个组件里。花两个晚上拆成 8 个文件才理顺。教训不是"vibe coding 不用管结构",而是结构问题会推迟,然后一次性爆发。

结构问题会推迟,但从来不会消失。

亮点:Live Photo 导出,最没用也最好玩

心情日记的记录可以带一张 Live Photo(iPhone 按一下会动的照片),导出功能把它打包成可下载文件。流程:前端通过 FormData 上传静帧和短视频,Next.js API Route 用 fluent-ffmpeg 把 WebM 转码成 MOV,exiftool-vendored 写入 ContentIdentifier 标签,再用 archiver 打成 ZIP 返回下载。一个 POST 请求,服务端管道处理,用户拿到一个 iPhone 认得的 Live Photo ZIP 包。

DOM → canvas → ffmpeg → exiftool → ZIP,全程一个 POST 请求。

这个功能不解决任何育儿问题,没有任何 KPI,只是"既然记了这么多心情,不如能导出成会动的照片"。做完之后我几乎没用过------这功能对部署环境还有要求,服务端 ffmpeg 依赖在普通 PaaS 上不一定装得动,生产环境基本只能看着它在本地跑得欢。每次打开看到宝宝三个月前那一帧,觉得值。

二:caveOfSoul,一次提交写完的日记游戏

上一个项目 58 次提交,这个项目 1 次。commit message: "initial commit: caveOfSoul - 2D pixel diary exploration"。

1 次提交里有什么

Vite 8 + React 19 + TypeScript + Canvas 2D,没用任何游戏引擎。核心逻辑全在 App.tsx,569 行。画布 3600px 宽,上方 70 颗星星随机闪烁,两层山景视差滚动,地面像素纹理,时间轴从 2018 拉到 2026。

自己平时写的日记导出成 JSON,散落在画布上------每个节点一本 📓,坐标按年份锚在时间轴上。玩家控制 🚶 走路,碰撞节点弹窗阅读,每页 120 字,空格翻页。没存档,没菜单,没设置。打开浏览器就是游戏。

不为发布,只为自己

这个项目可能永远不会发布。写完的晚上我走了两遍时间轴,读完散落在地上的自己,然后关了电脑。不是给别人看,也不是"产品化"------只是某天觉得,这些日记不该永远躺在 JSON 文件里。

不是所有代码都要上线。有时候你只是想把一段人生渲染在 3600 像素宽的 Canvas 上,走一遍,然后关掉。

三:check-neihao,给自己做个内耗检测器

对话规范,一开始就有

说句实话,我对"怎么跟 AI 说话"这件事挺讲究的。很早就装了 superpowers 这类技能框架,习惯在每次对话前把背景、规则、约束讲清楚。所以 CLAUDE.md 对我不算新发明,是这套习惯的自然延续。

check-neihao 的 CLAUDE.md 有 58 行,写清技术栈(uni-app + Vue 3 + TypeScript + Vite,H5 + 微信小程序双平台)、组件目录结构、命名约定、已知问题和 TODO。每次新对话,AI 先读这个文件。上下文不靠我嘴说,靠文件扛。

后来好几个项目我都保留了这个习惯,还玩出了花------规定 AI 每次开口先叫我"爸爸"。不是恶趣味,是防止它脱离上下文:先叫一声,它就得绷着"我在跟谁说话"这根弦。效果还行,就是 AI 撒起娇来过于自然。

工具:从逐行检查到给 AI 写检查工具

之前的模式:AI 生成代码,我贴进项目,手动检查大括号少没少、模板字符串有没有意外截断。人的注意力只有 20 分钟------20 分钟后,少一个括号我也看不出来。

之后写了一个 verify.mjs,构建时自动扫描所有 .vue / .ts / .js 文件,统计 { } [ ] ( ) 和模板字符串 ````` 的数量,不匹配就报错、退出构建。33 行,没有 AST 解析,就是逐字符计数。

我不再检查 AI 的代码,我给 AI 写检查 AI 的工具。我的工作从"改 bug"变成了"写改 bug 的机器"。

这个脚本的价值不在技术------正则就能写。价值在于一种转向:盯着 AI 一行行看,不如让脚本盯着它看。

不只是能跑------开始能看了

技术栈:uni-app + Vue 3 + TypeScript + Vite。功能线:5 个场景问卷(职场 / 学习 / 家庭 / 日常 / 恋爱)→ 答题计分 → 长按释放互动 → 猫咪治愈海报生成。之前项目的标准是"功能跑通就好",这次没停在这里。

视觉上定了 GQ 赛博印刷品风格------黑白为主、硬边框 4px 实线、层层粗阴影叠加,全手写 CSS,没依赖任何 UI 框架。海报里 23 个猫咪 SVG 是纯手写的 path 路径,每张搭配随机主题文案("做完这题就下班""你不需要让所有人满意")。问卷题库用 src/data/questions.ts 统一管理,五个场景题目方向刻意不同:职场考权衡,家庭考关系,恋爱考自我认知。

做到这里,我开始享受从"跑通"到"跑好看"的跳跃。做这个项目也纯粹是摸索------想做点自己想做的东西,看看靠 vibe coding 能不能落地。

结果是:落地了,但微信小程序的 30 块认证费至今没赚回来。苦笑。

四:wechat-ai-editor,AI 写代码给 AI 用

前三个项目有一个共同点:我写代码,人来用。第四个不是------它是一套工具链,AI 写的代码给 AI 自己用。

从造房子到造生产线

wechat-ai-editor 的链路不复杂:Markdown 文章 → marked 转 HTML → juice CSS 内联 → WeChat API 保存草稿。另一条分支:Markdown → HTML → Playwright 打开小红书 → 自动填表单发布。Node.js + Playwright + marked + highlight.js + juice + front-matter。3 次 commit,两周写完。

但它的关键不是包管理器的排列组合。是一套叫 skill 的系统。

给 AI 装方法论

skill 是把"怎么写"教给 AI。我跟 AI 说"写一篇公众号文章",它写的是通用体。但我给它装三个 skill------article-writing 管文章结构和风格约束加禁用词表,writing-beats 管交互式逐 beat 写作、每个概念先 ground 再推进,writing-shape 管段落级逐段打磨、有争议就回退------它写出来的东西就有了骨架和节奏。

装进去的不是"做什么",是"怎么写"。

类比一下:项目三里 CLAUDE.md 是给一个项目立规矩,那几十行告诉 AI"在这个项目里你得注意这些"。skill 不一样------它跨项目复用。我今天写公众号用它,明天写小红书也用它。

整个项目装了 127 个 agent skill 文件,含 hallmark 设计系统 100+ 参考文件、dbs-wechat-html、SVG 动画工具链等。但这个数字不重要。重要的是:我不再每次对话重新交代写作规则。skill 替我扛住了。

15 篇,和最后一步自动化

这套工具链跑在一个人夫/宝爸视角的个人公众号上,育儿、婚姻、日常主题。到现在发了 15 篇以上,包括含 SVG 交互的文章。接入了小红书 Playwright 自动发布------写完文章,自动填标题、贴正文、提交。

公众号每天能带来大概 1 块钱的收入,得攒两天才够多买一个包子吃。不多,但乐在其中吧。

整条链路的最后一环:AI 写代码 → AI 写文章 → AI 帮你发文章。我只剩一件事:决定今天写什么。

你现在读的这篇文章,十有八九也经过了这套工作流。

四点能带走的东西

1. 给 AI 立规矩:项目根目录放文件,叫它爸爸也行

从一开始我就在做这件事。很早就装了 superpowers,习惯于把"AI 在这个项目里要注意什么"写成一个文件------CLAUDE.mdAGENTS.md,随便叫什么,内容是技术栈、目录结构、命名约定、已知问题,每次改代码前更新。check-neihao 那份 58 行 ,后面几个项目也都跟上了。操作:根目录建 CLAUDE.mdAGENTS.md,写清技术栈、目录结构、命名约定、已知问题。每次改动前更新它。

不是给人看的文档------是给 AI 看的记忆外挂

不过 superpowers 这套不是人人适用------有人用 ChatGPT 的新模型配这套流程,反而觉得降智了。工具是死的,适不适合看个人。

2. 拆文件要趁早,别等它爆炸

baby-tracker 的 raiden/page.tsx 长到 3721 行 ,游戏循环、碰撞检测、UI、音效全挤一起。八百行时拆几分钟,三千行时拆了两个晚上。AI 还在文件里写了两份子弹碰撞逻辑------它忘了自己写过。操作:单文件超 800 行就提示 AI 拆分。拆之前让它先画依赖图再给方案,不然拆出来还是乱的。

3. 从检查 AI 到给 AI 写检查工具

check-neihao 早期,AI 生成代码贴进项目,我逐行检查括号和模板字符串------20 分钟就疲劳。之后写了一个 verify.mjs33 行,构建时扫描所有文件的括号和模板字符串匹配,不匹配直接报错退出构建。操作:找出你反复手动检查的东西,写成脚本。你的工作从改 bug 变成了写改 bug 的机器。盯着 AI 一行行看,不如让脚本盯着它看。

4. 给 AI 装方法论,而不只是下指令

wechat-ai-editor 有三个 skill:article-writing 管风格约束,writing-beats 管写作节奏,writing-shape 管逐段打磨。之前每次写公众号重新交代规则。之后三个 skill 跨项目复用,公众号和小红书通用。操作:把反复用到的规范沉淀成 skill 或提示词模板------写作规则、代码风格、部署流程。装进去的不是"做什么",是"怎么做"。

还欠着的东西

写完这半年回头看,欠的东西不少。baby-tracker 的"杂"没根治------四款游戏和喂养记录混在一起,说到底是我脑子里蹦一个念头就加一个,没有哪个时刻停下来问"这到底是个什么项目"。raiden/page.tsx 从 3721 行拆成 8 个文件,但我很清楚它迟早还会长回去,追加式开发的惯性没断。测试更是欠账:四个项目加起来只有一个 live-photo-metadata.test.mjs,其余全是"跑起来能看就行"。

这半年写的代码,没有一个是认真当产品做的。baby-tracker 给自己家人用,caveOfSoul 给自己走,check-neihao 给自己测,wechat-ai-editor 给自己发公众号。文章开头说"没有 PRD,没有设计稿",现在可以补全:

代码是 AI 写的,规矩是边做边磨出来的,但每一个想法都是真的。这大概是 vibe coding 最诚实的样子。

相关推荐
颜进强40 分钟前
Claude Code - 26 效率三件套:cc-switch 切模型 · codeburn 算成本 · claude-hud 看状态
前端·后端·ai编程
阿古大王1 小时前
Youtube视频笔记工具怎么选:NoteAi、billNotes、NoteGPT 横向对比
人工智能
科技新资讯1 小时前
AIGC重构工业设计 一号设计解锁智造新势能
人工智能·重构·aigc
东方小月1 小时前
从零开发一个 Coding Agent(八):如何使用 Agent 类管理对话状态
前端·人工智能
这张生成的图像能检测吗1 小时前
(论文速读)基于鸡群算法变分模式分解的超低温振动传感器去噪
人工智能·信号处理·信号去噪·鸡群算法·模态分解
AI即插即用1 小时前
即插即用系列 | IEEE TMI PLG-HN:原型学习引导的 CNN-Transformer 混合网络,攻克乳腺肿瘤分割难题
人工智能·深度学习·神经网络·学习·目标检测·cnn·transformer
光影少年1 小时前
RN 网络请求:Fetch / Axios 封装、超时、拦截器
前端·react native·react.js
AIyy8661 小时前
2026小红书封面AI绘图工具横评:实测各平台出图质感与平台适配度
人工智能
自由能燃气设备2 小时前
燃气容积式热水器厂家选购指南:2026年商用热水设备采购避坑手册
大数据·数据库·数据仓库·人工智能