从 Vibe Coding 到工程化 AI Coding:如何让 AI 写代码更可靠?

从 Vibe Coding 到工程化 AI Coding:如何让 AI 写代码更可靠?

💡 原文中文,约9100字,阅读约需22分钟。
📝

内容提要

文章探讨如何从随意的 Vibe Coding 转向可靠的工程化 AI Coding,核心做法包括:编写含目标、范围、约束、验收标准和验证方法的 Spec;复杂任务先让 Agent 出 Plan 再改代码;提供项目级与任务级 Context 并保持会话干净;AI 声称完成后核对实际 Diff、测试与构建记录,用 Quality Gate 强制检查;将有效做法固化为 Skill 和带检查点的 Workflow,跨会话保存进度与决策,并评估流程本身是否值得。

🔎

延伸解读

Spec 的关键:验收标准与验证方法要分开写

文章强调,Spec 中的 Acceptance Criteria 和 Verification 必须分开:前者描述预期结果,后者说明如何检查。只写“资源最终达到期望状态”仍缺少检查依据,还需写明用集成测试复现临时错误和恢复过程。这样 Agent 改完后,开发者才能逐项核对,而不是凭一句“已完成”判断。

Plan 不是形式:先确认问题再改代码

复杂任务先让 Agent 读代码并给出 Plan,重点看它是否找对问题、方案是否合理、会改哪些文件。文章举例,若 Plan 要求修改 CRD Schema,就应追问恢复调谐为何必须改资源定义。等文件都改完再发现多余改动,返工成本更高;小任务如改错别字则可省去 Plan。

Context 要分层,但规则文件并非越长越好

项目级 Context 写长期约定,如构建测试命令、公共接口兼容性和禁止修改区域;任务级 Context 指明本次该读哪些文件。文章同时提醒,规则文件应逐条检查能否减少具体错误,因为所引研究未发现仓库上下文文件普遍提高成功率,反而增加推理成本。独立任务宜开新 Session,避免旧假设干扰。

验证要看执行记录,Quality Gate 要由工具落实

Agent 声称“测试通过”时,应核对实际运行的命令、日志和对应代码版本;只跑一个测试文件不能代表全部通过。Quality Gate 最好通过 CI 必需检查和分支保护执行,并确认测试未被跳过。文章还指出,构建测试通过不代表改动合规,Diff 若超出约定范围仍需人工审查。

❓

Q&A

Vibe Coding 和工程化 AI Coding 有什么区别?

Vibe Coding 指跟着 AI 生成结果不断尝试,用自然语言提要求、运行代码、遇错再改,未必逐行审查;工程化 AI Coding 则是在已有项目中使用 Coding Agent,由它读仓库、分析问题、改文件、跑测试,开发者负责检查方案和结果,强调可验收、可追溯。

给 AI 写任务 Spec 应该包含哪些部分?

Spec 应包含 Goal(要修复的问题)、Scope(修改范围)、Constraints(不能违反的约定)、Acceptance Criteria(预期结果)和 Verification(检查方法)。验收标准和验证方法要分开写,例如“API 恢复后资源达到期望状态”是验收标准,“用集成测试复现临时错误和恢复过程”是验证方法。

复杂任务为什么要先让 Agent 出 Plan 再改代码?

复杂任务涉及多个模块时,先让 Agent 读代码并给出 Plan,可以在文件未变动时检查它是否找对问题、方案是否合理,避免改完多个文件后才发现多余改动。Plan 应说明当前逻辑、拟采用方案及理由、需修改文件、假设与风险、验证方式。小任务如改错别字可省略 Plan。

如何管理 AI 编码时的 Context,避免它读到无关代码?

分项目级和任务级:项目级把长期规则写进 AGENTS.md、CLAUDE.md 等规则文件,包括构建测试命令、项目约定和禁止修改区域;任务级明确告诉 Agent 这次该读哪些文件、参考哪部分实现。同时一个任务尽量保持干净 Context,独立任务开新 Session,避免旧假设干扰。

AI 说“测试通过、完成了”,开发者还需要核对什么?

需要打开执行记录,核对实际运行的命令是否覆盖项目要求的构建、测试、Lint 等检查;按 Spec 查看 Diff 和测试内容,确认验收项有对应测试、修改未涉及无关模块。缺少执行记录或测试未覆盖的验收项应记为未验证,不能仅凭 AI 的总结认定完成。

Quality Gate 应该怎么设置才真正有效?

Quality Gate 要明确哪些检查必须通过才能进入下一阶段或合并代码,并尽量由工具执行而非只写在 Prompt 里。例如通过 CI 必需检查和分支保护落实门禁,同时确认测试确实执行、未被跳过或忽略失败。任务记录中的 passed 不能代替实际命令、日志和对应代码版本,还需人工审查 Diff 是否超出约定范围。

长任务跨 Session 时如何保存进度和决策?

不要让 Session 成为唯一事实源。确认的需求和决策放进 Spec 或项目文档,代码变更由 Git 保存,当前进度、失败检查和下一步另留任务记录。可用 Workflow State 模板记录当前阶段、已确认约束与决策、代码位置、验证记录、失败项、尚未验证项、下一步和需要人工决定的事项,只更新变化部分。

如何把有效的 AI 编码做法固化成可复用的流程?

把重复的固定提示保存为 Command,需要携带参考文档、模板或脚本时封装为 Skill;任务更长、需中途检查或跨 Session 时,用 Workflow 设置阶段检查点(Spec、Design、Coding、Verification),明确每阶段完成条件。不必一开始就搭建整套 Workflow,简单任务用简单流程,并评估流程本身是否减少返工、值得增加的成本。

🏷️

标签

➡️

继续阅读