搜yinheit-从 Vibe Coding 到 Harness × SDD 全栈开发实战-学习记录

📅 2026/7/18 21:34:57 👁️ 阅读次数 📝 编程学习
搜yinheit-从 Vibe Coding 到 Harness × SDD 全栈开发实战-学习记录

从Vibe Coding到Harness × SDD:AI全栈开发的范式跃迁与工程化落地

一、Vibe Coding的浪漫与残酷

2025年初,Andrej Karpathy提出了一个引爆技术圈的概念——Vibe Coding(氛围编程)。它的本质是:你不再逐行写代码,而是描述你想要什么,让AI去写,你只看效果不看实现。在原型验证、一次性脚本这些低风险场景中,Vibe Coding确实好用——简单、快、几乎没有认知负担。

但浪漫很快被残酷现实击碎。

当Vibe Coding被引入生产级代码库,三个结构性缺陷迅速暴露:

问题维度Vibe Coding的典型表现
信息损耗同一句话多次执行给出不同实现,AI按自己的理解“猜”需求
知识孤岛AI只知训练语料里的通用知识,不懂团队历史决策和私有约束
验证断档“能跑”就直接提交,概率性错误顺着MR滑进主干

更扎心的一组数据来自高德大模型应用平台:出码率从53%提升到80%-90%,但项目交付周期没有明显缩短。编码快了,但Review慢了;出码多了,但返工也多了。

出码率≠交付率——AI编程的瓶颈,已经不再是模型本身的智力,而是工程化能力。

二、范式跃迁:从“写代码”到“控工程”

行业对“AI究竟怎么写代码才靠谱”这个问题的认知,经历了清晰的演进:

Vibe Coding(凭感觉写)→ SDD(规范驱动)→ Harness Engineering(工程化体系)

这不是三个并列选项,而是三个递进阶段。Vibe Coding教会了我们“AI能写代码”,但也暴露了“光让AI写代码不够”的残酷事实。

SDD:让规范成为AI的“唯一事实来源”

SDD(Spec-Driven Development,规范驱动开发)的核心思路是:在AI写代码之前,先把“你想要什么”严格地、结构化地写下来,再让AI去实现。SDD的工作流包含四个阶段:

  1. 写Spec(规范)→ 描述“要做什么、满足什么约束”

  2. 写Plan(计划)→ 拆成具体任务、定义验收标准

  3. 生成代码→ AI按Spec和Plan实现

  4. 验证→ 用Spec里定义的验收标准对照验收

一份完整的SDD通常包含三个核心文档:

  • proposal.md:需求提案,描述“为什么要做”和“要做什么”

  • spec.md:技术规格,包含组件设计、接口契约、数据结构

  • tasks.md:任务拆分,每个task对应可执行的代码变更单元

Harness:给AI套上“工程缰绳”

Harness Engineering不是简单的技术叠加,而是一套给AI智能体设立边界、搭建运行环境、实现可控自治的系统级工程方法论。它的核心目标是让AI在复杂代码库中像资深工程师一样工作,而非像刚入职的实习生

Harness思维的本质是:给AI一个已有的实现作为参照,让它照着复刻,而不是凭空创造

三、四阶段实战指南

结合实战经验,从Vibe Coding到Harness × SDD的全栈落地可以分为四个阶段:

第一阶段:Vibe Coding的“可控化”改造

Vibe Coding最大的痛点是生成的代码“能跑但不规范”。破局点是:让AI生成代码的同时,强制生成规格文件

实战操作:在Prompt中明确要求——“请为这个功能编写代码,并同步生成openapi.yaml和package.json中的版本依赖锁”。

工具链:使用Cursor/Windsurf结合GitHub Copilot,利用.cursorrules文件强行约束AI的输出结构。

产物:一份包含API契约、数据库Schema(Prisma/Entity)以及基础单元测试的PR。

第二阶段:SDD的“契约”锚定

规格驱动开发的核心是“契约即真理”。在AI生成大量代码后,需要用规格来反向校验代码,而不是用代码去解释规格。

实战策略:

  • 引入Confluent Schema Registry(Kafka事件)和Stoplight(REST API)进行规格托管

  • 将openapi.yaml作为PR合并的硬性门槛

  • 利用Spectral对规格进行质量检查,确保AI生成的API路径符合RESTful规范

  • 基于固化的规格,使用Prism生成Mock Server,前后端彻底解耦并行

第三阶段:Harness平台的全栈编排

Harness在这里不仅是CI/CD,它是连接“规格”与“运行时”的神经中枢

三个核心实践:

  1. Harness CI:在Pipeline中插入“规格合规性检查”步骤。如果AI生成的代码导致OpenAPI规格与现有生产环境规格冲突,Pipeline直接Fail,不构建镜像

  2. Harness CD + GitOps:部署新服务时,Harness自动读取SDD中定义的SLO(如:P99延迟 < 100ms)

  3. 特性标志(Feature Flags):将AI生成的新功能用Harness FF包裹起来,先在生产环境对内部员工或小流量用户开放,而不是全量上线

第四阶段:持续验证闭环

这是让系统“自愈”的关键。

实战要点:

  • 在Harness中定义“Verification”步骤,利用其机器学习算法自动对比新版本部署后的黄金指标(吞吐量、错误率、饱和度)与历史基线

  • 如果验证失败(如错误率飙升),Harness自动触发回滚

  • 自动在Git中创建Issue,将失败的监控截图和日志片段附着在Issue上

四、Harness思维的核心:让AI模仿,而非凭空创造

得物技术团队的实践揭示了一个关键洞察:

Agent = 模型 + Harness治理层

原则核心执行点
找相似实现在代码库中锚定功能最相似的现有模块作为参照物
复用优先强制复用现存的组件、接口封装与底层数据结构
模仿替换维持Controller/Service分层原貌
锁定生成域精确框定需要参考的具体文件路径与代码行号

提示词对比

不推荐(零约束)

“请实现一个结束语管理的CRUD接口及前端页面。”

推荐(Harness驱动)

“请参照现有的'场景欢迎语'功能(后端接口/api/v1/feature/list,前端入口@FeatureTable/index.tsx:53-58),实现'结束语'功能。数据结构、分层逻辑、命名规范必须保持一致。”

五、写在最后

Vibe Coding提供了无与伦比的生成效率,而Harness × SDD则赋予了其企业级的工程骨架。这一技术架构的融合,让全栈开发者从繁琐的“代码搬运工”与“流程救火队员”转型为真正的“AI架构师”

核心矛盾在于:大模型本质是概率驱动的非确定性引擎,而软件工程要求绝对的确定性。SDD与Harness的结合,正是连接AI非确定性推理与软件工程确定性要求的桥梁。

如果你还在Vibe Coding的舒适区里“随性编程”,不妨试试这套方法论——把写代码的时间,前置到写规约上。当AI出码率达到90%却没有真正提效时,真正该升级的不是模型,而是你的工程化思维。