从 Prompt 到可提交代码:Vibe Coding 的工程闭环

Explore、Plan、Implement、Verify、Review、Commit 六步走

Posted by CodeWater517 on May 11, 2026

这篇文章是 Vibe Coding 系列的第四篇。它回答一个非常实际的问题:怎样把一句 Prompt 变成一段可以提交的代码,而不是变成一堆看起来能跑、实际上没人敢维护的改动。

系列导航

  1. Vibe Coding 系列导读:给计算机学生的 AI 协作开发路线
  2. Vibe Coding 学习路线:计算机学生如何从 0 到 1 上手 AI 辅助开发
  3. Cursor、Codex、Claude Code 怎么选:AI 编程工具链入门
  4. 工程闭环从 Prompt 到可提交代码:Vibe Coding 的工程闭环
  5. 上下文工程:AGENTS.md、项目规则和可复用 Skills
  6. 实战篇:用 Vibe Coding 做课程项目、个人工具和科研复现

为什么要讲工程闭环

很多 Vibe Coding 翻车不是因为 AI 完全不会写代码,而是因为人把开发过程压缩成了一句话:

1
帮我做一个完整的 xxx 系统。

这句话的问题不是不礼貌,而是没有工程边界。AI 不知道你已有项目结构,不知道第一版做什么、不做什么,不知道如何验收,也不知道哪些文件不能碰。它只能根据概率生成一个看似完整的结果。

工程式 Vibe Coding 需要一个闭环:

1
Explore -> Plan -> Implement -> Verify -> Review -> Commit

这六步看起来比直接写 Prompt 麻烦,但它能显著降低失控概率。你不是让 AI 随机发挥,而是在每一步给它明确目标和反馈。

Step 1:Explore,先探索

探索阶段的目标是让 AI 理解现状,而不是立刻动手。无论是课程项目、个人工具还是工作项目,只要不是全新空目录,都应该先让 AI 读代码。

一个好的探索 Prompt:

1
2
3
4
5
6
7
8
9
请先阅读这个项目,不要修改文件。

重点关注:
1. 项目的技术栈和启动方式;
2. 主要目录结构;
3. 和用户登录相关的模块;
4. 现有测试和构建命令。

请输出你的理解,以及如果要新增“重置密码”功能,可能涉及哪些文件。

这一步的价值在于防止 AI 凭空想象。它需要先知道项目是 Vue 还是 React,是 FastAPI 还是 Spring Boot,状态管理在哪里,接口层在哪里,测试怎么跑。

探索阶段你要检查三件事:

  • AI 有没有读到真实文件;
  • 它对项目结构的理解是否准确;
  • 它是否把不相关模块也拉进来了。

如果它理解错了,不要急着实现,先纠正。越早纠正,代价越小。

Step 2:Plan,再计划

计划阶段的目标是把任务拆成可控步骤。一个好计划应该回答:

  • 要改哪些模块;
  • 每个模块改什么;
  • 有哪些风险;
  • 如何验证;
  • 哪些事情本次不做。

你可以这样要求:

1
2
3
4
5
6
7
8
基于刚才的项目理解,请为“重置密码”功能制定实现计划。

要求:
1. 不要写代码;
2. 按后端、前端、测试、文档拆分;
3. 标出每一步涉及的文件;
4. 标出你认为需要我确认的产品细节;
5. 给出最小可交付版本,不要扩展到短信、邮箱模板和复杂审计。

计划阶段尤其适合发现需求缺口。比如“重置密码”到底是通过邮箱链接,还是管理员手动重置?是否需要验证码?链接多久过期?这些不是 AI 能凭空决定的产品问题。

如果是学生项目,可以把计划简化,但不要省略。哪怕只有三步,也要先写出来。

Step 3:Implement,小步实现

实现阶段的原则是:一次只做一个稳定可验证的改动。

不要让 AI 同时做数据库、后端、前端、样式、测试、文档。更好的顺序是:

  1. 先改数据模型或接口;
  2. 跑后端测试;
  3. 再接前端页面;
  4. 手动验证流程;
  5. 最后补文档和边界。

一个实现 Prompt 可以这样写:

1
2
3
4
5
6
7
8
请只实现计划中的第一步:新增后端接口。

限制:
1. 不要修改前端;
2. 不要新增第三方依赖;
3. 沿用现有 Service 和 Controller 风格;
4. 修改后请说明改了哪些文件;
5. 如果有测试命令,请运行或告诉我需要运行什么。

这里的“只实现第一步”非常重要。Vibe Coding 的速度已经足够快,不需要再通过大包大揽来冒险。小步修改让你可以随时停下来审查,也让 Git diff 更容易理解。

Step 4:Verify,必须验证

验证阶段是区分“AI 写了代码”和“代码可以交付”的分界线。

验证可以分很多层:

  • 语法层:能否编译或启动;
  • 单元层:函数和模块是否符合预期;
  • 接口层:请求和响应是否正确;
  • 页面层:用户流程是否跑通;
  • 回归层:旧功能是否被破坏。

如果项目有测试,优先跑测试。如果没有测试,至少做手动验证,并把验证步骤写下来。

一个验证 Prompt:

1
2
3
4
5
6
7
请根据刚才的改动给出验证清单。

要求:
1. 包含自动测试命令;
2. 包含手动验证步骤;
3. 包含至少 3 个边界场景;
4. 如果项目缺少测试,请说明最小应该补哪类测试。

对学生来说,验证经常被忽略。页面看起来能点,不等于功能正确。比如表单提交成功了,但刷新后数据丢失;接口返回 200,但错误输入也被保存;模型训练跑完了,但数据集路径其实错了。这些都需要验证。

Step 5:Review,审查 diff

AI 修改完代码后,你必须看 diff。不是随便瞄一眼,而是带着问题看:

  • 它是否只改了计划中的文件?
  • 有没有顺手格式化大量无关代码?
  • 有没有新增不必要依赖?
  • 有没有把配置、密钥、路径写死?
  • 有没有删掉原有逻辑?
  • 有没有把错误吞掉?
  • 有没有重复造轮子?

一个代码审查 Prompt:

1
2
3
4
5
6
7
8
9
10
请以代码审查的方式检查当前改动。

重点关注:
1. 行为是否符合需求;
2. 是否有安全或数据一致性问题;
3. 是否有无关改动;
4. 是否缺少测试;
5. 是否有更简单的实现方式。

请按严重程度列出问题,不要重写代码。

这一步可以让 AI 自己复查,但最终仍然要你判断。AI 很擅长发现明显问题,也可能漏掉业务语义。因此你要结合需求和项目背景来审查。

Step 6:Commit,形成可回退节点

提交不是最后的形式主义,而是工程闭环的一部分。每次完成一个可验证功能,都应该形成一个清楚的 Git 节点。

好的提交应该满足:

  • 一个提交只解决一个明确问题;
  • 提交信息能看懂;
  • 提交前已经验证;
  • diff 中没有无关改动。

提交信息可以简单:

1
2
3
4
feat: add password reset API
fix: handle empty score rows in importer
docs: document local setup workflow
test: cover monthly summary calculation

学生项目也应该这么做。Git 不是团队项目才需要,它是你和 AI 协作时的安全绳。AI 改乱了,Git 能让你知道改了什么,也能回到上一个稳定点。

一个完整任务示例

假设你要给“实验记录系统”增加导出 CSV 功能。

不要这样说:

1
帮我加一个导出功能。

可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Explore:
请先阅读项目,找出实验记录列表的数据来源、接口和页面组件,不要修改文件。

Plan:
请设计“导出当前筛选结果为 CSV”的最小实现方案,说明涉及文件和验证方式。

Implement:
请只实现后端导出接口,沿用现有查询条件,不改前端。

Verify:
请给出 curl 验证命令,并说明如何确认 CSV 表头和行数正确。

Review:
请检查当前 diff,重点看是否有无关改动、编码问题和大数据量风险。

Commit:
我确认后再提交。

这就是从一句模糊需求到可提交代码的过程。每一步都可检查,每一步都能停下来。

常见失败模式

第一种失败是“跳过 Explore”。AI 没读项目就开始写,结果目录结构、命名风格、接口约定全都对不上。

第二种失败是“计划太大”。一个计划里包含十几个功能,AI 一次改几十个文件,最后你不知道哪里出了问题。

第三种失败是“没有验证”。代码能生成不代表能运行,能运行不代表正确。

第四种失败是“只看结果不看 diff”。页面看起来好了,但 AI 可能改坏了旧逻辑。

第五种失败是“没有提交节点”。项目一旦乱了,只能靠回忆找问题。

这些失败都可以通过六步闭环缓解。

本篇 Checklist

  • 我是否让 AI 先探索项目,而不是直接写代码?
  • 我是否要求 AI 先给计划,并列出涉及文件?
  • 我是否把实现拆成小步?
  • 我是否运行测试或完成手动验证?
  • 我是否审查 diff,确认没有无关改动?
  • 我是否在稳定状态提交 Git?

参考资料

修改记录

  • 新增 Vibe Coding 工程闭环文章。