avatar

leviegu

2026年3月15日
Vibe Coding 全栈项目 goi 总结
#全栈#Vibe Coding#AI撰写

最近一直在用 Vibe Coding 的方式做一个全栈项目 goi。目前核心功能已经开发完毕,项目暂时进入封版维护阶段。这篇文章记录并复盘这段 Vibe Coding 旅程。

项目背景

goi 是一个面向个人使用的全栈管理系统。起初的想法很简单:做一个自己愿意长期使用的工具,同时也借此探索和实践当下流行的 “Vibe Coding”——在 AI 的深度辅助下完成编码开发。

这是一个典型的“利用下班后时间”完成的项目:每天下班回家花一点时间,推进 1–2 个小功能。虽然进度不快,但这种细水长流的节奏让我有足够的空间去思考架构,也能持续获得“看着项目一点点搭起来”的成就感。

Vibe Coding 体验

在这个项目中,我尝试了一种更激进的协作模式:以 AI 编写为主,人工经验为辅

我更多扮演 “Reviewer”“Architect” 的角色,而将 “Coder” 的工作几乎完全交给 AI。在开发过程中,我主要依据过往经验判断 AI 提出的设计方案是否合理。大多数情况下,只要方案逻辑自洽且符合最佳实践,我会采纳 AI 的建议,甚至直接让它执行代码修改。

在这种模式下,AI 不再只是补全代码的助手,而是实际的执行者:我负责“把关”,它负责“实现”。

工具形态上,我目前主要采用像 Trae 这样的编辑器 + AI 来完成项目开发;更“深一层”的终端式开发形态(例如 Claude 这类工具)我还没有真正实践,但已经能感受到趋势正在从“问答式写代码”转向“让 AI 直接在工程里动手”:围绕项目结构做修改、运行命令、迭代验证。

技术栈与架构

项目采用了 Monorepo 结构,统一管理前后端代码,方便类型共享和依赖管理。

goi 项目架构图

功能概览

虽然整体节奏是“小步快跑”,但经过一段时间的积累,goi 已经具备较为完整的核心功能。

用户端 (App)

用户端主要面向个人用户,专注于日常数据的记录与查看。

管理后台 (Admin)

管理后台是整个系统的控制中枢,负责对 ToC 核心数据进行配置与管理。

研发历程与挑战

项目的开发过程并非一帆风顺,中间经历了多次重构与工程化调整。

关键里程碑

项目起步于一个简单的单体全栈应用:我先构建了基于 NestJS 的权限管理基础,打通前后端流程;随后进入业务开发,完成核心功能设计并进行小规模迭代。随着复杂度增加,单一应用的架构逐渐显得力不从心。为了更好的扩展性与维护性,我引入 Nx 做工程化重构,将 Admin 管理端与 ToC 用户端业务拆分,最终形成了现在的 Monorepo 架构。

工程化踩坑

这个项目耗时较长的一个主要原因,是在工程化探索上走了不少弯路,特别是在 packages 的拆分与构建上。

最初我尝试了 源码直接引用 的模式:packages 下的代码不做打包,仅做类型检查,通过多入口导出来实现代码隔离。但随着项目复杂度增加,问题接踵而至:

  1. 多入口管理混乱:对外暴露多个入口在实际使用中非常麻烦,最终还是回归到了统一输出。
  2. 构建产物发散:在 Node 项目中,源码引用导致 dist 难以收敛,容易把 Workspace 下的冗余代码也打包进去。
  3. 模块规范冲突:从 nodemon 切换到 nestjs/cli 后,发现其对 ESM 的支持不够理想。

最终我确立了 “Build First” 的策略:公共包先构建再引用。构建工具也从 tsc 升级到 Rslib 以提升性能,配合自定义的 Nx Scripts 与 Biome/Prettier 工具链,最终落地了一套稳定高效的工程化体系。

Vibe Coding 经验总结

在使用 AI 辅助编程的过程中,我也总结出了一些心得:

  1. 顺风局(AI 状态好):直接通过自然语言指令让 AI 修改代码,效率极高。
  2. 逆风局(AI 降智):发现 AI 逻辑混乱或反复出错时,立刻停止编码。优先把方案讨论清楚,形成可执行的文档约束,再让 AI 严格按文档落地。
  3. 知识盲区(新库/冷门库):这是在完成架构后迭代具体功能时遇到的主要痛点。遇到较新、示例稀缺的库时,AI 往往因为训练样本不足而输出质量不稳定。这时必须人工强力介入,回归传统的“查文档 + 手写”模式。

总结

通过 goi 这个项目,我更直观地体会到了 Vibe Coding 带来的效率提升:它让我能把更多精力放在业务逻辑与产品设计上,而不是被繁琐的实现细节所束缚。

虽然每天只做一点点,但聚沙成塔,现在的 goi 已经是一个功能完备的全栈应用了。

至此,goi 项目暂时告一段落。作为一个探索性质的项目,它已经完成了它的使命:验证了 Vibe Coding 在全栈开发中的可行性与高效性。只是这次旅程带来的不止兴奋,更多时候是一种焦虑与迷茫——当 AI 能替我写下越来越多代码时,我也会反复追问:如果它真的能代替我,我还能做什么?未来又该往哪里走?