vibecoding.site

关于这个项目

这个网站本身,是它讲述的事情的第一个证据。 它是用 4 个 AI Agent 协作搭建的全栈站,既是博客,也是作品集,也是 vibe-coding 协作流程本身的展示场。 我不写代码 —— 所有代码、文案、设计决策都由 AI 完成,我的角色是提需求 + 拍板 + 验收

项目动机

  • 求职:把自己应聘 vibe-coding 实习岗位的"简历附件作品"做出来,需要一个能讲故事 + 能跑起来的载体
  • 方法论:验证"AI 协作能不能取代单人 vibe-coding"。一个人指挥 Claude 是 vibe-coding,4 个 Agent 互相派活、互相审,协作本身就成了产品
  • 公开试验:整个开发过程会被写成 7 篇博客,部署稳定后写第 8 篇上线复盘

不做"关于我"页 —— 因为这个项目不该被任何"我个人是谁"的叙事盖过。它的可信度全部建立在 git history 和这套协作 MD 协议上

4 个 Agent 的协作架构

PM(主 Claude)审核 / 合并 / 仲裁Claude1前端工程师apps/web/*任务派发提交 / 自测Claude2后端 Tech Lead派活 + 审 CodexCodex后端编码工apps/api/*协作/任务板.md唯一进度真源(状态机持久化)状态读写
4 个 Agent 的角色与流向 · 实线:任务派发 / 提交 · 虚线:状态读写

每个角色都有一个私域 MD 卡片(协作/前端-Claude1.md / 协作/后端-Claude2.md / 协作/后端-Codex.md)和唯一的进度真源(协作/任务板.md)。 权限红线:通过 / 完成 / 合并 / STOP_NOW 只有 PM 能写。其它 Agent 越权写入视为无效,PM 下一次巡检时会撤销。

工程协议的核心 = 任务状态机

草稿 ──PM──▶ 待领取 ──Agent 领取──▶ 进行中 ──Agent──▶ 提交
                                                       │
                                          PM 审核 ◀────┘
                                          │   │
                                  ┌───────┘   └────────┐
                                  ▼                    ▼
                                通过                 打回(回到 进行中)
                                  │
                                  ▼
                                完成

每个 Agent 只会扫"负责自己 + 状态 ∈ 打回"的第一条任务,改成 进行中,干完改成 提交。 PM 巡检时只看 提交 状态的任务,审核后改 通过 / 打回状态机就是协作语言本身,不再依赖 prompt 调优。

不停止机制

Agent 启动后进入工作循环 —— 没活干就 sleep 60s,10 次后切到 300s。用户感知是"3 个 Agent 始终在线",实际上是 PM 在 invocation 自然结束后用 Agent 工具续命。 这一条让协作从"我喊一次它干一段"变成了可后台运行的小型软件团队

技术栈

选型
前端框架Next.js 16.2.6 (App Router) + React 19 + TypeScript strictTurbopack 默认
样式Tailwind v4 + shadcn/ui + framer-motion + next-themesoklch token + 自定 --brand
内容管线@next/mdx + remark-gfm + rehype-slug + rehype-pretty-code + Shiki 双主题Plugins 必须用字符串名(Turbopack 约束)
后端Fastify 5 + Zod + helmet + rate-limit + pinoapps/api
ORMPrisma 6apps/api/prisma/schema.prisma
DBSQLite(dev / 起步) → 后期可选 PostgreSQLdev.db
Monorepopnpm workspaceapps/web + apps/api
部署前端:Vercel / 后端:美国服务器 + Nginx + PM2域名待定

数据流

Browser用户Next.js RSCclient compapps/webNext.js 16RSCMDXVercel 部署apps/apiFastify 5Zod 校验美国服务器 + NginxSQLitePrisma 6dev.db→ PostgreSQL(可选)HTTP/api/* fetchPrismaMDX 文章正文 = 静态资源(content/posts/*.mdx)元数据(浏览量 / 点赞 / 评论)= API 持久化
正文走静态文件,互动数据走 API · 这是博客 + 作品集站典型的混合模型

正文(MDX 文件)在 build 时被 Turbopack 切成静态 chunk,部署后浏览器直接拿 HTML。 互动数据(浏览 / 点赞 / 评论 / 订阅)走 /api/* 到 Fastify,Prisma 落 SQLite。 这一拆分让前端可以 Vercel 极速分发,后端在自己服务器上可控,博客式 + 作品集式访问都能扛

协作文档清单

如果你想看协作流程本身长什么样,真正的源在仓库里:

  • 协作/协作总览.md — 项目级 ground truth(角色、状态机、不停止机制、产品规格)
  • 协作/任务板.md — 唯一的进度真源(每条任务的状态 + 备注 + 提交记录)
  • 协作/前端-Claude1.md — 前端 Agent 的角色卡 + 私域笔记
  • 协作/后端-Claude2.md — 后端 Tech Lead 的角色卡
  • 协作/后端-Codex.md — 后端编码 Agent 的角色卡
  • 进度/README.md — 项目级总览,任何 AI 接手只需要读这一份

这套方法适合谁

适合愿意把"AI 协作"当工程问题做的人:不依赖单次 prompt 灵光,把流程写到磁盘,把权限边界写成红线,把状态机当成 API。 不适合"我让 AI 一次写出整个 SaaS"的期望 —— 那是另一个项目的诉求。

想看具体怎么落地?去 /blog 读建站过程的实录,从 Hero 卡片到 MDX 管线到 SEO 一路写下来。