从零开始VibingCoding第六个项目:拾光盲盒小程序

用 AI 写代码的第 183 天,我花 3 天完成了一个 27 张表、9 个模块的校园社交小程序

不是我会写代码了,是我学会了让 AI 按我的规矩写代码。


体验地址:拾光盲合体验地址
体验说明:使用手机号登录会自动获取验证码,不会发送真实短信验证码全是虚拟数据

📌 一、什么是 Vibing Coding?

先说结论:Vibing Coding 不是让 AI 自由发挥,是你定规矩,AI 执行。

很多人对 AI 编程有误解——觉得就是打开 ChatGPT,说一句"帮我写个小程序",然后坐等成品。如果你试过一次就知道,这样生成的代码 90% 跑不起来,剩下的 10% 能跑但完全不是你要的。

我做 Vibing Coding 到现在第六个项目,总结出一句话:

氛围编程 = 你写"宪法"(CLAUDE.md)+ 你审"计划书"(plan)+ AI 批量"施工"(execute)+ AI 交叉"质检"(review)

在这个项目里,"我"的角色是产品经理 + 架构师 + 最终验收人,AI 的角色是程序员 + 测试 + 代码审查员。

下面我用「拾光盲盒」这个项目的真实经历,讲讲这个氛围到底是怎么"营"出来的。


📐 二、项目背景:第六个挑战

这次要做的东西不简单——一个完整的校园社交小程序,对标市面上真实上线的产品:

模块功能
纸条箱匿名放纸条、随机抽取、回信、收藏、精选专区
心动圈图文动态、点赞评论、收藏转发、话题体系
缘分匹配问卷问答、契合度计算、匿名互动
校园树洞匿名发帖、评论、敏感词过滤
签到任务每日签到、连续奖励、日常任务
余额商城装扮道具、虚拟币经济体系
消息中心6 类消息通知、已读管理
举报风控工单处理、用户封禁
管理后台数据统计看板 + 全模块 CRUD

数据规模:27 张业务表、70 个后端 Controller、39 个小程序页面、73 个管理后台视图。

按照纯手写代码的估算,这至少需要一个 3 人小团队干 1-2 个月。而实际的提交记录是这样的:

2026-07-15:6  个提交(基础设施搭建)
2026-07-16:21 个提交(后端全部模块 + 管理后台)
2026-07-17:16 个提交(小程序端全量 + 修复)

3 天,44 个提交,266 个文件,33055 行新增代码。

这不是我写代码的速度,是 AI 在正确引导下的产出速度。


📜 三、CLAUDE.md:给 AI 立的"宪法"

Vibing Coding 的第一步,不是打开 AI 就说"帮我写代码",而是先花 1-2 小时写一份 CLAUDE.md。

这份文件是整个项目的"宪法",它告诉 AI:

  • 项目的目录结构是什么
  • 每个目录的代码必须遵守什么规则
  • 哪些事情绝对禁止做
  • 接口命名规范、返回格式、权限模型
  • UI 组件库是哪个、用什么风格

这份文件有多重要? 它决定了 AI 产出的代码质量下限。没有它的 AI 就像一个没有入职培训的新员工——能干活,但活干得五花八门。

3.1 我的 CLAUDE.md 长什么样
# 拾光盲盒 全局强制约束

## 1. 项目基础信息 & 技术栈
- admin-backend: SpringBoot3 + JDK17 + MyBatis + JWT
- admin-front: Vue2 + Element UI + 原生 JS(非 TS)
- timebox-uniapp: UniApp Vue2 + Vuex + tuniao-ui(tn-* 组件)

## 2. 目录开发强制规则
1. admin-backend:仅输出后端代码,适配 jakarta.* 包,禁用 javax.*
2. admin-front:仅输出管理端代码,不混入小程序逻辑
3. timebox-uniapp:
   - 业务功能遵循 doc 需求文档
   - UI 组件必须复用现有组件,禁止从零自定义

## 3. Superpower 标准执行流程(固定顺序)
1. /superpowers:brainstorm → 拆解模块,输出文件路径清单
2. /superpowers:write-plan → 分阶段开发计划
3. /superpowers:execute-plan → 批量生成可运行代码
4. /superpowers:code-review → 四重校验

## 4. 编码硬性规范
- 全部使用 jakarta.* 包
- 分页、异常、统一返回体复用框架内置工具
- 扣费、次数校验、敏感词过滤等逻辑必须完整实现
- app 端接口路径 /api/app/*,管理端 /api/*

## 5. 禁止行为
- 跨目录生成代码(后端逻辑写到小程序)
- 省略余额校验、权限校验
- 脱离需求文档新增字段
3.2 为什么是"强制约束"而不是"建议"?

因为 AI 有一个致命问题——它会"偷懒"。

比如让它做敏感词过滤,它可能会说"这里先跳过,后续补充"。如果你写的文档里说的是"建议做",它就真的跳了。

所以我用的是强制语气:“必须”、“禁止”、“不得”。这不是修辞——对于 AI 来说,这些词就是编译器的语法规则。


🗺 四、开发计划:AI 产出的 44 步施工图

有了宪法之后,下一步是让 AI 出一个可执行的开发计划。

我没有直接开始写代码,而是先让 AI 根据需求文档生成了一份详细的 plan。这份 plan 不是给人看的甘特图——它是给 AI 自己执行的任务清单:

Phase 0: 数据库建表(27 张表 DDL)
Phase 1: 基础设施(异常处理、全局配置、敏感词)
Phase 2: 认证模块(微信登录、JWT 签发)
Phase 3: 业务模块 7 个(纸条、动态、匹配、树洞、签到、商城、举报、消息、用户)
Phase 4: 管理后台前端(9 个模块 CRUD 页面)
Phase 5: 小程序端(请求封装 + API + 39 个页面)

每个 Phase 下面又有具体的 Task,比如 Phase 3 的纸条模块:

Task 7: 纸条模块
  - [ ] 7.1 Entity: Paper, PaperTag, PaperReply, PaperDrawLog
  - [ ] 7.2 Mapper + XML: CRUD + 随机抽取 + 回信计数
  - [ ] 7.3 Service: 发布(敏感词)、抽取(免费→扣费)、回信(上限+扣费)、收藏
  - [ ] 7.4 Controller: /api/app/paper/* (JWT, 小程序端)
  - [ ] 7.5 Admin Controller: /api/paper/* (权限校验, 管理端)

这份计划的作用是什么?

它把一个巨大的项目拆解成了 AI 可以逐个攻克的小任务。每个 Task 的粒度刚好是 AI 一次能处理的上下文量——太大了会丢信息,太小了又浪费时间。


⚙️ 五、执行阶段:AI 是怎么"搬砖"的

计划确认后,进入执行阶段。这才是 Vibing Coding 的"高光时刻"。

5.1 批量生成:一个 Task = 一次 AI 调用

我用的工具是 Claude Code + Superpowers 插件。执行流程是:

  1. 我输入 /superpowers:execute-plan Task 7
  2. AI 读取 plan 中 Task 7 的具体要求
  3. AI 读取 CLAUDE.md 中的约束规则
  4. AI 一次性生成:4 个 Entity、4 个 Mapper 接口、4 个 Mapper XML、1 个 Service 接口、1 个 ServiceImpl、2 个 Controller
  5. AI 自动运行 mvn compile 检查编译
  6. AI 自动 git commit 提交代码

整个过程我只需要确认,不需要写一行代码。

5.2 实际产出:一次 Task 的提交记录

以 Task 7(纸条模块)为例,一次执行产生了这个提交:

feat(paper): add paper module (entities/mapper/service/controllers)
  with publish/draw/reply/collect + shared UserInfo/UserMsg

 - Entities: Paper, PaperTag, PaperReply, UserCollect, UserMsg
 - Mappers + XML: standard CRUD + draw query (ORDER BY RAND())
 - PaperServiceImpl: publish (sensitive-word + max_reply_count),
   draw (free-draw-first then balance charge, visible-scope random),
   reply (cap + charge + user_msg notify), collect (idempotent toggle)
 - Controllers: PaperController, PaperTagController,
   PaperReplyController, PaperCollectController

 6 files changed, 1060 insertions(+)

1060 行代码,一个提交。 这还不是个位数的提交——整个项目 44 个提交里,平均每个提交新增 750 行代码。

5.3 代码质量:AI 写的能直接用吗?

说实话,第一版不能。但这就是 Vibing Coding 的精髓——AI 生成只是 60 分,后续的 review 和迭代才是 80 分的关键。

我遇到的典型问题:

问题 1:接口返回格式不统一

AI 有时候会自创返回格式,而不是用框架的 AjaxResult。

修复方式:在 CLAUDE.md 里加一条更明确的规则,然后告诉 AI “全局搜索所有 Controller,统一返回 AjaxResult”。

问题 2:小程序端鉴权方式写错

AI 沿用了旧项目的 header.token 鉴权方式,但新后端要求 Authorization: Bearer。

修复方式:这个问题被记录到了 AI 的持久记忆里(.claude/projects/.../memory/),后续所有 API 调用都自动修正了。

问题 3:Mapper XML 引用了不存在的字段

AI 有时候会"幻觉"出数据库里没有的字段。

修复方式:让 AI 执行 mvn compile,编译报错后 AI 会自己读错误信息并修复。


🔍 六、Code Review:AI 给自己找 Bug

Superpowers 插件有一个非常强大的功能——在每个 Task 执行完后,自动运行 review-package 脚本。

这个脚本做的事情是:

  1. 读取当前提交的 diff
  2. 对照 CLAUDE.md 的规则逐条检查
  3. 对照需求文档检查业务逻辑完整性
  4. 输出一份"审计报告",列出所有不合规的地方

实际的 review 结果(节选):

[FAIL] Report 模块:用户举报接口缺少登录态校验
  → 修复:添加 @PreAuthorize 注解

[FAIL] Treehole 模块:详情接口未返回 isMine 字段
  → 前端需要此字段判断是否显示"关闭评论"按钮
  → 修复:DTO 增加 isMine 字段,Service 层判断当前用户

[FAIL] Message 模块:消息类型枚举值与需求文档不一致
  → 文档定义 6 种类型,代码只实现了 4 种
  → 修复:补充 AT_REMIND 和 MATCH_SUCCESS 类型处理

然后 AI 自动修复这些问题,生成新的 fix 提交。

这就是为什么你在 git log 里看到很多 fix: 开头的提交——它们不是我发现问题后手动改的,是 AI 自己 review → 自己发现 → 自己修复的。


🧠 七、AI 的"记忆系统":跨会话的知识积累

Vibing Coding 有一个很多人忽略的要点:AI 的上下文窗口是有限的。

当你执行到第 20 个 Task 时,AI 已经忘了第 1 个 Task 的细节。这就是为什么需要持久记忆系统。

在这个项目里,AI 自动维护了一个记忆文件:

---
name: uniapp-cross-tier-contract
description: 小程序端与后端通信规范
---

## 关键发现

1. 鉴权方式:新后端用 Authorization: Bearer,旧项目用 header.token
2. 状态管理:用 Vuex(不是 Pinia)
3. UI 组件库:tuniao-ui(tn-*),通过 easycom 自动注册
4. 请求封装:旧项目用全局 mixin $request,新模块需新建 utils/request.js
5. 分页组件:mescroll-uni,使用 upCallback/downCallback 模式

这份记忆是 AI 在开发过程中自己发现、自己记录的。当后续 Task 涉及到小程序端开发时,AI 会自动读取这份记忆,避免重复犯错。

这就是为什么后面的 Task 比前面的 Task 质量高——AI 在"成长"。


🐛 八、踩坑记录:那些 AI 搞砸的瞬间

Vibing Coding 不是银弹。下面这些坑,每一个都是真实发生的。

8.1 图片上传成功但 UI 显示失败

现象:调用 /common/upload 返回 200,但小程序端显示"上传失败"。

排查过程:

  1. 我先让 AI 检查后端日志 → 后端正常返回
  2. 让 AI 检查小程序端 request.js → 发现 uploadFile 函数期望 {data: {url, fileId}} 格式
  3. 但 /common/upload 实际返回 {url, fileName, ...} 没有 data 包裹层

根因:API 返回格式不统一。

AI 的修复:在 uploadFile 里加了一层格式兼容逻辑:

const payload = d.data && typeof d.data === 'object' ? d.data : d
resolve(payload)

教训:在 CLAUDE.md 里加一条规则——“所有接口返回格式必须在 plan 中明确定义,AI 不得自行假设格式”。

8.2 静态资源 404

现象:No static resource upload/2026/09/08/profile_xxx.jpeg

排查过程:

  1. 让 AI 检查 ResourcesConfig → 映射配置是 /profile/** → profile/upload/
  2. 让 AI 检查 getPathFileName() → 返回路径是 /profile/upload/...
  3. 路径重复了!

AI 的修复:修改资源映射根目录。

教训:Spring 的路径映射规则需要在 CLAUDE.md 里写清楚,否则 AI 会按"默认理解"配置。

8.3 trim is not a function

现象:小程序端计算属性报错。

排查过程:

  1. 后端通过 @JsonProperty("images") 把 imagesList 序列化为 images 字段
  2. 前端收到的是数组,但代码按字符串处理(imgs.split(','))

AI 的修复:添加类型判断:

if (Array.isArray(imgs)) return imgs.filter(Boolean)
if (typeof imgs === 'string') return imgs.split(',')...

教训:前后端字段类型必须在 plan 中明确标注,不能让 AI 猜。

8.4 图片尺寸反复调整

这个比较搞笑——AI 生成的九宫格图片尺寸,我前后改了 4 次:

第 1 轮:1 张图 249px × 249px → "太大了"
第 2 轮:1 张图 300rpx × 300rpx → "还是太大了"
第 3 轮:1 张图 60% × 240rpx → "宽度太宽"
第 4 轮:1 张图 60% × 240rpx,2/4 张 200rpx,3+ 张正方形 → "OK"

教训:UI 尺寸这种主观判断,最好在 CLAUDE.md 里直接写死数值,不要让 AI “自由发挥”。


📊 九、数据说话:Vibing Coding 的效率提升

9.1 开发速度

指标传统开发Vibing Coding
项目总工时约 240 人时(3人×4周)约 30 人时(1人×3天 AI 辅助)
代码产出约 33,000 行约 33,000 行
平均每日产出约 1,400 行约 11,000 行
Bug 密度(首轮)中等较高(但 review 后快速收敛)
Bug 密度(终轮)低接近传统开发

9.2 提交统计

总提交数:44
feat 提交:24 个(新功能,占 55%)
fix 提交:19 个(修复问题,占 43%)
chore 提交:1 个(初始化)

按天分布:
  7月15日:6  个(基础设施)
  7月16日:21 个(后端 + 管理后台全量)
  7月17日:16 个(小程序端 + 修复)
  9月7日: 1  个(后续 bug 修复)

关键观察:fix 提交集中在 7 月 16-17 日,说明 AI 在批量生成后进行了集中的 review 修复。

9.3 代码分布

后端代码:
  - 20 个 Mapper XML
  - 40+ 个 Service 接口 + 实现
  - 70 个 Controller(管理端 + 小程序端)
  - 27 张表 DDL

小程序端:
  - 13 个 API 模块文件
  - 39 个 Vue 页面
  - 12 个业务组件(ImageGrid、PaperNoteCard、TnDrawBox...)

管理后台:
  - 13 个 API 文件
  - 73 个 Vue 视图
  - 9 个模块的 CRUD 页面

🎯 十、Vibing Coding 的方法论总结

做了六个项目之后,我总结出了一套可复制的 Vibing Coding 流程:

10.1 五步法

┌─────────────────────────────────────────────────────────────┐
│                    Vibing Coding 五步法                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ① 写宪法(CLAUDE.md)                                       │
│     └─ 告诉 AI 什么能做、什么不能做、必须怎么做               │
│                          │                                  │
│                          ▼                                  │
│  ② 出计划(plan.md)                                        │
│     └─ 让 AI 把大项目拆成它能处理的小任务                     │
│                          │                                  │
│                          ▼                                  │
│  ③ 审计划(人工确认)                                        │
│     └─ 你检查 plan 是否合理,调整优先级和依赖关系             │
│                          │                                  │
│                          ▼                                  │
│  ④ 批量执行(execute-plan)                                  │
│     └─ AI 按 Task 逐个生成代码 + 编译 + 提交                 │
│                          │                                  │
│                          ▼                                  │
│  ⑤ 迭代修复(review → fix → re-review)                     │
│     └─ AI 自审 + 你验收 + 发现新问题 → 回到 ① 更新宪法       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

10.2 核心原则

原则说明
宪法先行没有 CLAUDE.md 不开工,磨刀不误砍柴工
计划驱动不让 AI 自由发挥,每个 Task 都有明确输入输出
批量执行一次处理一个模块,不要东一个西一个
自动 Review每次提交后自动跑 review,发现问题立即修复
记忆沉淀跨会话的知识要持久化,避免重复犯错
人工验收AI 生成的代码必须人工跑一遍,不能盲信

10.3 适用场景

Vibing Coding 不是万能的,它在以下场景效果最好:

  • ✅ CRUD 密集型项目(管理后台、CMS、ERP)
  • ✅ 架构规范明确的项目(基于 RuoYi、Spring Boot 等成熟框架)
  • ✅ 需求文档完善的项目(有明确的表和接口定义)
  • ❌ 强算法型项目(AI 写算法容易出错,需要人工把控)
  • ❌ 强 UI/UX 项目(AI 的审美一言难尽,需要设计师介入)
  • ❌ 探索型项目(需求不明确时,AI 无法替你做决策)

🔧 十一、工具链:我的 Vibing Coding 装备

工具用途
Claude Code主力 AI 编程工具(终端内运行,直接操作文件)
Superpowers 插件提供 brainstorm → plan → execute → review 工作流
CLAUDE.md项目宪法,约束 AI 行为
Git每次 AI 提交都有完整记录,可随时回滚
Maven后端编译检查,AI 自动运行
微信开发者工具小程序端实时预览

💬 十二、给想学 Vibing Coding 的人说几句

12.1 常见误区

误区 1:“AI 会替代程序员”

不会。AI 替代的是"打字员",替代不了"架构师"。Vibing Coding 里最值钱的能力是什么?是把需求翻译成 CLAUDE.md 的能力,是判断 AI 产出是否合理的能力。

误区 2:“不需要学编程了”

恰恰相反。你不懂编程,就看不出 AI 代码里的坑。我在这个项目里能快速定位问题(比如鉴权方式不统一、路径映射重复),是因为我有多年开发经验。纯小白用 AI 写代码,出了问题连怎么描述都不会。

误区 3:“AI 写的代码质量差”

AI 写的代码一致性远比人类好。人类今天写的代码和一个月后写的风格可能完全不同,但 AI 只要 CLAUDE.md 不变,它永远按同一个标准写。

12.2 学习路径建议

  1. 先做一个小项目:不要上来就搞拾光盲盒这种规模的,先做个"待办事项"或"博客系统"
  2. 学会写 CLAUDE.md:这是最核心的技能,花 1-2 小时写一份好的宪法,能省你 10 小时的返工时间
  3. 学会 Review AI 代码:不要盲信 AI 产出,每一行都要知道它在干什么
  4. 建立自己的记忆库:把常见问题(鉴权、分页、文件上传)的解决方案沉淀下来

📸 附录:项目核心功能展示

管理后台界面

📊 数据统计看板(首页)

管理后台首页,展示核心运营指标:总用户数、今日活跃、今日内容数、虚拟币消耗、用户增长趋势、内容发布趋势、互动数据、用户分布等。

在这里插入图片描述


📝 纸条管理

纸条分页列表,支持按标签、状态、精选状态筛选,可查看纸条详情、下架违规纸条、配置精选专区。

在这里插入图片描述


👥 用户管理

用户列表分页查询,支持按学校、年级、状态筛选,可查看用户详情(收藏、匹配、举报记录)、批量发放余额、启用/禁用账号。


💝 缘分匹配管理

匹配题库编辑(性格题/兴趣题)、匹配规则配置(每日免费次数、匹配范围)、匹配数据统计。

在这里插入图片描述


📅 签到任务管理

签到规则配置(每日奖励、连续 7/15/30 天阶梯奖励)、日常任务配置(登录奖励、发布奖励、互动奖励)。

在这里插入图片描述


🛒 装扮商城管理

装扮道具上下架管理(头像框/主页装扮)、兑换价格配置、库存管理、用户兑换记录查询。

[此处插入商城管理截图]

---

⚠️ 举报风控管理

举报工单处理列表,支持查看举报详情、处理(封禁用户/驳回)、违规日志留存。


小程序界面


🏠 首页(纸条抽取)

核心入口页面。顶部显示余额和剩余免费次数;中部为抽取盲盒动画(TnDrawBox 组件,摇晃+光爆+信封展开);底部为标签筛选和可见范围选择。

在这里插入图片描述


📄 纸条详情 + 回信页

仿真便签纸风格展示纸条内容(暖色渐变背景、胶带装饰、引言符号、手写字体);支持九宫格图片预览;回信输入框+表情选择;回信历史分页列表。

在这里插入图片描述


✏️ 发布纸条页

文本输入(字数限制+敏感词实时校验)、标签选择(字典配置:表白交友/心情树洞/寻人启事等)、可见范围设置(全部/同校/年级)。


🌀 心动圈首页

动态卡片流(TnDynamicCard 组件),支持全部/本校/推荐三个 Tab 切换;点赞、评论、收藏、@用户;右下角 FAB 发布按钮。


📝 发布动态页

图文动态编辑,支持多图上传(九宫格预览)、话题选择、内容输入。


💕 缘分匹配页

匹配问卷(性格选择题+兴趣选择题),进度条展示;提交后展示匹配结果(契合度排序、匿名用户信息);每日免费 3 次,超出扣余额。

在这里插入图片描述

[此处插入匹配结果截图]


🌳 校园树洞

匿名发帖列表,支持匿名评论;发帖者可关闭评论或删除帖子;内容经过敏感词过滤。


📅 签到任务中心

签到日历(连续签到可视化)、一键签到按钮、阶梯奖励展示;今日任务列表(登录/发布/互动)+ 完成进度。


💬 消息中心

6 类消息通知:纸条回复、互动消息、@提醒、匹配成功、福利到账、系统公告;支持已读标记、一键清空、免打扰设置。


🛍️ 余额商城

装扮商品列表(头像框/主页装扮)、兑换价格、库存显示;兑换后自动穿戴;余额明细收支记录。


👤 个人中心

头像/昵称/个性签名、余额展示、装扮中心;我的纸条/我的动态/我的收藏;隐私设置、黑名单管理、访客记录。


🎉 结语

这就是 Vibing Coding 第六期的完整实践。

我没有写一行代码。但我写了:

  • 一份 126 行的 CLAUDE.md(宪法)
  • 一份 44KB 的 development plan(施工图)
  • 若干次 review 反馈(质检报告)
  • 若干次 bug 描述(验收反馈)

这就是 Vibing Coding 的本质:你不再是写代码的人,你是定义规则、把控方向、验收成果的人。

如果你也想试试 Vibing Coding,记住我的第一句话:

先写宪法,再写代码。宪法写得越好,AI 干活越靠谱。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐