Vibe Coding 原型去留决策:可抛弃 Spike 与产品地基不要混写
Spike 的任务是低成本回答未知问题,产品地基则要长期承受变更。本文给出实验边界、隔离方法、晋升门和删除证明,避免把一次演示直接长成生产系统。
本文要点
- 主题聚焦:Vibe Coding、AI Agent、DevOps
- 适合人群:独立开发者、全栈工程师、AI 应用开发者
- 核心价值:快速理解背景、实践路径、常见误区和工程建议
Vibe Coding 很适合把模糊想法迅速变成可以点击的东西,但速度会掩盖一个关键分叉:这段代码是在回答“方案可不可行”,还是准备成为未来几年都要修改的产品地基?前者是 Spike,价值来自尽快消除未知;后者是长期资产,价值来自边界清楚、可测试、可恢复。把两者放进同一目录、同一分支和同一验收标准,团队最终往往既舍不得删除实验,又没有证据证明它能承受真实流量。
编程 Agent 的仓库地图适合定位现有系统入口;在建立地图之前,应先决定新代码究竟有没有资格成为地图的一部分。
先写实验卡,再让 Agent 生成代码
一个 Spike 只回答一个主要未知,例如“浏览器端能否在目标设备完成该格式解析”“这个接口能否表达所需交互”,而不是笼统地“做出第一版”。实验卡至少包含问题、输入样本、时间盒、成功与失败证据、允许使用的替身、明确不验证的事项,以及到期后的处置人。时间盒可以按团队节奏设定,但必须在运行前确定;看到结果后不断延长,相当于取消实验边界。
把未验证项写成负面清单尤其重要:没有真实鉴权、没有迁移策略、没有无障碍验收、错误只打印到控制台、数据可随时清空。这样演示中的顺畅路径不会被误读成产品能力。需要操作系统或仓库权限时,先沿用编程 Agent 沙箱权限的最小授权方式,Spike 也不能读取真实密钥或生产数据。
实验代码应物理隔离在独立目录、短生命周期分支或专用仓库,使用合成数据和可销毁环境。它可以硬编码一个明确标记的测试 ID,却不能把凭据、客户数据或无法撤销的云资源写进提交。自动生成的文件仍要标明来源;如果试验依赖 codegen,生成代码所有权边界要求同时保存输入与生成命令,避免演示只能在作者电脑上重现。
隔离还应进入构建与发布配置。Spike 目录默认不被正式制品、容器上下文、站点路由和生产部署工作流包含;实验环境使用独立名称与预算标签,不能复用生产数据库或消息主题。分支规则可以要求实验提交只能合入专用归档位置,若决定晋升则创建新的产品化变更,由 reviewer 对实际保留文件逐项确认。否则一次方便的 squash merge 会把临时依赖、宽松配置和测试凭据名一起带进主线,使“可抛弃”只剩口头承诺。
Spike 的输出是结论,不是代码行数
结束时先回到实验卡逐项判定:证据支持、证据反驳,或仍未知。一次漂亮录屏不是可复现证据;应保存固定输入、环境版本、运行命令、原始输出和失败样本。性能问题要说明设备、样本与测量方法,不把一次本机耗时外推为生产容量。仍未知的事项不能默认为通过,只能进入下一张实验卡或停止投入。
随后从三个出口中选一个:
- 删除:问题已回答,代码本身没有长期价值。保留简短决策记录和必要的最小复现,删除运行制品与临时资源。
- 重写:交互或技术方向成立,但代码跨越了权限、数据或模块边界。把学到的约束写成产品规格,从空白实现开始。
- 受控晋升:只有当现有实现已经满足产品门禁,才允许保留部分代码;晋升不是把目录改名,而是逐条补齐证据。
默认选择删除或重写能减少沉没成本影响。不是因为 Spike 必然低质量,而是它的优化目标与产品不同。Agile 原则强调尽早、持续交付有价值的软件,但并不意味着每个探索产物都要永久保留。
产品地基必须先建立长期合同
产品实现至少要回答六组问题:谁拥有模块;公开输入输出是什么;状态存在哪里并如何迁移;权限在哪一层执行;失败如何被用户看见并恢复;怎样验证和回滚。依赖版本、运行时和构建入口必须固定,配置与秘密分离,默认日志不能泄露输入。若一个问题只能靠“以后再补”回答,就把它登记为阻断项,而不是藏进 README 尾部。
地基不等于一次设计完所有抽象。可以只建立当前垂直路径所需的最小契约,但契约必须可测试。规格驱动开发可把用户行为转成验收样例,AI 生成代码的属性测试则用边界输入攻击过度乐观的实现。两者都应针对产品重写后的接口运行,不能拿 Spike 自己的测试证明 Spike 可以晋升。
晋升评审逐项比较实验代码与产品合同。比如实验直接从组件调用第三方 SDK,产品要求通过受控 adapter;正确动作是保留已验证的请求形状,重写调用边界,而非把 SDK 调用包一层同名函数就宣称完成。实验使用内存数组,产品需要持久化,也必须先定义并发、唯一性、失败重试和迁移语义。
用删除证明阻止“临时”常驻
Spike 到期后,由非作者执行一次删除检查:临时部署已销毁,测试密钥已撤销,DNS、队列、对象存储和定时任务没有遗留,文档链接不再把实验地址当正式入口。仓库中若保留最小复现,应去掉客户数据和凭据,并明确它不在发布路径。无法确认资源所有者时状态是 UNKNOWN,不能记为清理完成。
受控晋升则需要一个新的提交边界,只包含获准保留的部分,并通过编程 Agent 的改动验证门。评审记录连接实验问题、产品规格、实际差分、测试结果与回滚提交。这样以后回看时,团队知道哪些结论来自实验,哪些能力已经按产品标准重建。
Vibe Coding 的优势是快速获得反馈,而不是快速累积永久代码。让 Spike 可以安心删除,让产品地基从明确合同开始,才能同时保住探索速度和长期可维护性。
Related