AI 时代 solo 个人开发的核心矛盾和推荐框架
你的优势 你的劣势 ───────────────────────────────────────────── AI 可以 30 秒生成一个功能 AI 不知道你的代码库长什么样 AI 可以同时写前端+后端+SQL AI 一次改 50 个文件,你不知道哪些变了 AI 不会累, 可以无限迭代 AI 不会累, 可能把你的正确代码改崩 你可以只专注产品和想法 你没有同事 review AI 的产出
所以 AI 时代的 solo 开发流程,不是为了规范化而规范化——是为了管理 AI 的风险。
────────────────────────────────────────────────────────────────────────────────
三层流程框架
不是线性流程,是三个持续运行的轨道:
第一层:安全网(防止 AI 搞崩你的代码) ├── Git(知道 AI 改了什么) ├── 类型系统(AI 写错时编译报错) └── 自动化测试(AI 改完验证功能没坏)
第二层:效率引擎(让 AI 更好用) ├── 领域文档(让 AI 理解你的业务) ├── 规范文件(让 AI 遵守你的约定) └── 提示词模板(减少重复沟通)
第三层:交付管道(从代码到用户) ├── 开发环境(你 + AI 改代码) ├── 预览环境(看一眼效果) └── 生产环境(用户访问)
────────────────────────────────────────────────────────────────────────────────
第一层:安全网
### Git:AI 的撤销键,不只是备份
没有 Git: AI 改了一下午代码 → 你不知道改了哪些文件 → 某个功能突然崩了 → 你:哪个改动导致的?→ AI:不知道 → 你:完了
有 Git:
git diff # 精确看到每行改动
git log --oneline # 看到改动历史:"AI 改了分页逻辑"
git bisect # 自动二分法定位哪个 commit 引入的 bug
git revert
对 AI 开发来说,Git 真正的价值是 diff。 git diff 让你能审计 AI 的输出。你看的不是 AI 生成的代码对不对——你看的是 AI
改动的东西有没有你不希望它碰的。AI 经常在修 bug 时顺手"优化"了旁边的代码,git diff 让这种行为无法隐藏。
### Git 的实操:只学四个命令
```bash
git add . # 把改动加入暂存
git commit -m "一句话描述" # 保存一个快照
git push # 传到远程
git diff # 看改动
高级的以后再说。每天用这四个就够了。
类型系统:AI 的第一道检查
TypeScript(强类型):
AI 写:user.nickName
tsc 编译:Property 'nickName' does not exist → ❌ 编译不过
AI 修正:user.nickname ✅
PHP(无类型标注):
AI 写:$user->getNickName()
浏览器:500 Internal Server Error
你:???????
类型检查是 AI 幻觉的自动检测器。 这是 Next.js/TypeScript 对 AI 开发最重要的优势——不是性能、不是生态,是编译器替你做 code review。
测试:不是写不写的问题,是让 AI 写
传统开发的痛点:写测试很烦,没人写。
AI 时代:30 秒生成一个测试文件。你没有理由不测。
// 你:帮我把积分转账的逻辑写几个测试
// AI:
describe('transferPoints', () => {
it('正常转账:A给B转50积分', async () => { ... })
it('余额不足时报错', async () => { ... })
it('不能给自己转账', async () => { ... })
it('并发转账不会导致余额负数', async () => { ... })
})
原则:让 AI 写测试,你只确认测试覆盖了关键路径。 不用追求覆盖率,只测三类:
- 核心业务流程(积分转账、VIP 激活)
- 历史 bug(修过一个 bug 就加一个测试,防止 AI 以后改回来)
- 并发/边界情况(余额为 0、文章为空、用户名太长)
────────────────────────────────────────────────────────────────────────────────
第二层:效率引擎
领域文档:让 AI 理解你的业务
你的 CREATOR_PLATFORM_PLAN.md 就是这个。但格式可以更 AI 友好:
# CONTEXT.md(放项目根目录)
## 这是什么项目
耽美小说创作平台。用户可以转载/投稿小说、积分激励、VIP 付费。
## 核心业务规则
- 积分只能由平台发放,用户间可以打赏(transfer_points)
- VIP 通过兑换码激活,不是直接购买
- 小说内容存储在文件系统,不是数据库
- 每章一个 JSON 文件
## 技术栈
- Next.js 14 App Router + TypeScript + Prisma
- 数据库 MySQL,共享实例,每项目独立 database
- 部署用 Coolify + Docker
## 当前进度
- 已完成:WordPress 版本的基础功能
- 进行中:迁移到 Next.js
- 下一步:阅读器分页
为什么这是你最重要的文件? 因为每次新对话、每次换一个 AI 模型,它不知道你的产品是干什么的。你把 CONTEXT.md 喂给它,等于每次对话都带着你的项目文档。这比每次解释一遍"我们的积分系统是这样的"省无数时间。
规则文件:让 AI 遵守你的约定
项目根目录放一个 rules.md 或 .cursorrules(看 AI 工具支持什么):
## 代码规范
- 所有函数必须有返回类型标注
- 数据库查询不要用 findMany({ select: ... }),用 Prisma 的 include
- 路径导入用 @/ 别名,不要用相对路径 ../../
- UI 组件用 shadcn/ui,不要手写
## 禁止事项
- 不要引入新的 npm 包除非确认必要
- 不要在组件里直接写 fetch
- 不要改动 prisma.schema 除非明确要求
## 测试要求
- 任何修改积分/VIP 的代码,必须有对应测试
AI 遵守规则的能力比你想象的好。但前提是规则写下来——口头约定 AI 不记。
────────────────────────────────────────────────────────────────────────────────
第三层:交付管道
不是 CI/CD 那个 CI/CD,是适合你个人的轻量管道
开发(VPS 上 Claude Code)
│
├── 随时改,随时 git commit
│
├── 改完一个功能 → git push
│
▼
Coolify(或者你自己写的脚本)
│
├── git pull
├── npm ci
├── npx prisma migrate deploy
├── npm run build
├── npm start(新进程)
└── 旧进程关闭(零停机)
│
▼
用户看到新版本
你不需要 GitHub Actions、不需要 CI 服务器。 Coolify 做的事情本质上就是上面这几步——只是它帮你自动化了。如果你不想用 Coolify,甚至可以用一个 bash 脚本替代:
#!/bin/bash
# deploy.sh - 放在项目根目录
set -e
git pull
npm ci
npx prisma migrate deploy
npm run build
pm2 restart reader
echo "部署完成"
然后 git push && ssh vps './deploy.sh'。
不要过早自动化。 手动 deploy 三个月,等你真的烦了再加 Coolify。不然你连 Coolify 的黑盒出了什么问题都诊断不了。
────────────────────────────────────────────────────────────────────────────────
一周的真实节奏
周一:
上午:看产品,确定本周做什么
下午:Claude Code 开发功能 A
[git commit -m "功能A: 添加章节预加载"]
[git push → 部署到线上]
周二:
上午:Claude Code 开发功能 B
下午:发现功能 A 有个 bug
[git diff 查看功能 A 的改动]
[Claude Code 修 bug]
[git commit -m "修复功能A的预加载时机"]
[git push → 部署]
周三:
上午:Claude Code 做重构(抽一个 shared UI 组件)
[git diff 确认 AI 没有乱改其他页面]
[npm run test → 测试通过]
[git push]
周四:
上午:Claude Code 开发功能 C
下午:用户在群里反馈 bug
[git log 看最近改动 → 定位到周三的重构是原因]
[git revert 回滚重构]
[git push → 紧急修复上线]
晚上:调查为什么重构导致 bug,写测试覆盖
周五:
上午:根据一周的用户反馈确定下周计划
下午:给功能 A 补充测试用例
────────────────────────────────────────────────────────────────────────────────
组件清单:你需要的东西,按优先级
┌───────────┬──────────────────┬───────────────────────────────┬─────────────────────┐ │ 优先级 │ 东西 │ 一句话 │ 谁来维护 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🔴 必须 │ Git │ AI 的撤销键 + 改动审计 │ 你每天用 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🔴 必须 │ 类型系统 │ AI 的第一道检查(TypeScript) │ 编译器自动 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🔴 必须 │ CONTEXT.md │ AI 的业务说明书 │ 你每次改完更新 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🟡 重要 │ 测试 │ AI 写的,防回归 │ AI 写,你跑 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🟡 重要 │ rules.md │ AI 的编码规范 │ 你写一次 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🟡 重要 │ Git 远程仓库 │ 代码不丢 │ Gitea/GitHub │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🟢 慢慢来 │ 自动部署 │ git push 就上线 │ Coolify │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ 🟢 慢慢来 │ 监控/日志 │ 线上出问题知道 │ Coolify 自带 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ ⚪ 不需要 │ CI/CD Pipeline │ 对你一个人来说是过度设计 │ 别搞 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ ⚪ 不需要 │ Code Review 流程 │ 你没有 reviewer │ 别假装有 │ ├───────────┼──────────────────┼───────────────────────────────┼─────────────────────┤ │ ⚪ 不需要 │ Jira/项目管理 │ 你不需要给自己开 ticket │ 一个 TODO.md 足够了 │ └───────────┴──────────────────┴───────────────────────────────┴─────────────────────┘
────────────────────────────────────────────────────────────────────────────────
一句话总结
在 AI 时代,solo 开发者的竞争力不在于你会多少工具,而在于你的"安全网"有多薄但多结实。 最结实的四根绳子是:
- Git → 知道 AI 改了什么,随时撤销
- TypeScript → AI 写错了编译不过
- 测试 → AI 帮写的,验证功能没坏
- 领域文档 → AI 知道你的产品是什么
其他都是锦上添花。这四个是底线。