Skip to content
Welcome
Go back

Vibe Coding 不是放飞 AI,而是按风险分配控制权

Edit page

前言:Vibe Coding 不等于把需求扔给 AI

很多人理解的 Vibe Coding,是把需求描述给 AI,然后等待它生成代码。但真正决定开发质量的,不是 AI 能不能写出代码,而是我们有没有为它定义清晰的边界,并且能不能及时验证结果。

我现在更愿意把 Vibe Coding 理解为一种按风险分配人机控制权的开发模式:功能越核心、越复杂、越难验证、越难回滚,控制权越应该掌握在人手里;功能越简单、越清晰、越容易测试和恢复,就可以把更多执行权交给 AI。

Vibe Coding = 按风险分配控制权的人机协作开发模式

判断一个功能适不适合交给 AI 批量开发,关键要问五个问题:

一、守旧派:人主导,AI 执行

守旧派模式要求开发者理解项目的业务、架构和关键逻辑,再让 AI 按照明确的改动边界小步执行。

它适合以下场景:

守旧派的基本流程是:

人理解业务和架构
  -> 人指定改动边界
  -> AI 小步实现
  -> 人逐轮 review
  -> 测试与验收
  -> 继续下一小步

在已有项目中,AI 不能只追求“先跑起来”。开始编码前,至少要对齐以下内容:

守旧派的价值不在于拒绝 AI,而在于防止 AI 猜业务、绕开已有调用链,或者在项目中创造一套平行实现。

二、维新派:文档主导,AI 批量执行

维新派模式把更多执行权交给 AI,但这并不意味着不需要设计。它要求先把业务意图、架构意图和行为意图写成文档,再拆成清晰的 tickets,让 AI 按照文档批量推进。

它适合以下场景:

基本流程是:

讲清业务逻辑和技术栈
  -> 编写 PRD / ADR / BDD
  -> 拆分 tickets
  -> AI 按 tickets 开发
  -> 自动化测试 + 人工验收
  -> 定期 review 与架构防腐

“CRUD”本身并不自动代表低风险。如果 CRUD 涉及权限、金额、库存、审批、数据隔离或多租户,它依然应该按照守旧派或混合派处理。

三、维新派的五个准入条件

维新派能否安全放权,不取决于功能看起来是否简单,而取决于下面五个条件是否同时成立。

1. 需求可以讲清

功能目标、使用角色、输入、输出和核心规则,应该能用普通语言说明,不依赖大量只存在于开发者脑中的隐性经验。

文档至少要回答:

谁使用?
在什么场景使用?
用户做什么操作?
系统返回什么结果?
哪些字段必填?
哪些状态允许操作?
哪些状态禁止操作?

如果一个需求无法被整理成几条明确规则,AI 就只能自行猜测,不能直接进入维新派流程。

2. 边界可以列出

除了正常路径,还要提前列出空值、重复、不存在、无权限、状态不允许、数据被引用和并发提交等情况。

例如“删除分类”至少要定义:

边界列不出来,通常说明功能本身还没有想清楚。边界越明确,AI 的自由发挥空间越小,批量开发越安全。

3. 测试可以覆盖

需求和边界必须能转化为自动化测试、BDD 场景,或者明确的验收清单。可以使用下面的格式描述行为:

Given 前置条件
When 用户执行操作
Then 系统产生预期结果

例如:

Given 系统中已经存在名为“手机”的分类
When 管理员再次创建名为“手机”的分类
Then 系统拒绝创建,并提示“分类名称已存在”

如果只能通过“看起来差不多”来验收,而无法写出可重复的测试,就不适合完全交给 AI。

4. 错误能被发现

AI 写错以后,错误不能悄悄隐藏在数据或业务流程中,而应该能通过测试、接口状态码、页面提示、日志或数据库检查暴露出来。

文档中应明确:

如果错误可能悄悄污染金额、权限、库存、订单或生产数据,就不能按纯维新派放权。

5. 回滚成本低

即使测试通过,也要考虑 AI 写错后的恢复代价。要提前确认:

一个后台标签页面出错,通常可以回滚代码并清理测试数据;支付状态流转出错,则可能导致真实订单状态异常。这两者不能使用同样的放权程度。

四、混合派:按功能内部的风险拆分

真实项目往往不是整个功能都属于某一种模式。一个看似普通的管理功能,可能有 80% 的 CRUD 外壳和 20% 的权限、状态或事务规则。

更合适的做法是拆开处理:

CRUD 页面、DTO、基础接口 -> 维新派
权限判断、状态流转、事务边界 -> 守旧派

因此,模式选择的粒度不应该只到“项目”或“模块”,还应该细化到 ticket 和关键风险点。

可以用下面的风险矩阵快速判断:

条件更适合维新派更适合守旧派
业务影响内部工具、辅助页面核心交易、权限、安全
技术复杂度单表 CRUD状态机、并发、事务
架构影响顺着既有模式扩展修改接口、抽象或调用链
可验证性测试和验收明确只能依赖人工理解
回滚成本容易撤销可能造成数据污染

五、文档就是维新派的控制边界

维新派不是减少思考,而是把思考提前写进文档。建议在写 tickets 之前完成三层对齐:

每个 ticket 至少应该包含:

## 目标
## 输入与输出
## 业务规则
## 边界场景
## 验收条件
## 测试要求
## 允许修改的范围
## 不允许改变的既有行为

文档越完整,AI 越像一个高执行力的工程团队;文档越模糊,AI 越像一个会自行补全需求的临时设计师。

六、Review 与架构防腐

无论采用哪种模式,都不能因为 AI 开发速度快就取消 review。

每个 ticket 完成后,可以让 AI 反向回答:

  1. 本轮改了哪些地方?
  2. 为什么这样改?
  3. 和原计划相比有哪些差异?
  4. 遇到了哪些隐藏边界?
  5. 哪些地方仍然不确定?

此外,还应该定期进行架构防腐扫描,检查:

Review 是针对当前改动的质量检查,架构防腐则是对系统长期形态的检查,两者不能相互替代。

七、接下来的学习目标

今天我也确定了接下来的学习方向:

  1. 学习 AI Agent,理解 Agent 的工具调用、任务规划、记忆和工程闭环。
  2. 学习 AIGC 技巧,掌握如何更有效地使用 AI 进行内容生成、知识整理和创作。
  3. 继续记录真实学习过程,例如今天对 FastAPI 的学习,沉淀类型提示、Pydantic、异步、路由参数和 APIRouter 等基础知识。
  4. 把学习内容转化为可复用的文档、实践和复盘,而不是只停留在一次性对话中。

这也是 Vibe Coding 方法论的延伸:先把目标和约束讲清楚,再让 AI 协助执行,最后通过实践和复盘验证学习结果。

结语

Vibe Coding 的成熟形态,不是更相信 AI,而是更清楚:

什么时候应该相信 AI?
应该把多少控制权交给 AI?
用什么测试和 review 验证 AI?
出错以后如何低成本恢复?

最终可以把三种模式概括为:

守旧派:人掌握业务与架构,AI 做小步执行。
维新派:文档和测试掌握边界,AI 做批量执行。
混合派:低风险部分放权,高风险部分收权。

真正高效的 AI 编程,不是让人退出开发,而是让人从“逐行写代码”升级为“定义问题、划定边界、验证结果和维护系统”。


Edit page
Share this post:

Next Post
Spring @Configuration 配置类完全指南