Vibe Coding、Spec Coding、Harness Engineering 是 AI 驱动软件开发的三个递进式范式,从“快速原型”到“可靠工程”的能力跃迁


一、三者核心定义与定位

1. Vibe Coding(氛围编程 / 感觉流编程)

  • 提出者:Andrej Karpathy(2025年2月)
  • 核心理念感觉驱动,快速试错。用自然语言描述模糊需求,AI 自由生成代码,人负责验收与迭代。
  • 人类角色:提需求、看效果、调方向(不写代码)。
  • AI 角色:猜意图、写代码、快速迭代。
  • 产出质量Demo 级,适合原型、MVP、快速验证想法。
  • 适用场景:需求模糊、创意探索、快速原型、个人小工具。

2. Spec Coding(规格编程 / 规范驱动开发 SDD)

  • 核心理念规格先行,契约驱动。先写精确、结构化的 Spec(规格文档),AI 严格按 Spec 实现并自验证。
  • 人类角色:定义“做什么”(What)、写 Spec、审查与验收。
  • AI 角色:按 Spec 翻译为代码、自动测试、确保一致性。
  • 产出质量生产级,可维护、可审计、可追溯。
  • 适用场景:需求明确、团队协作、API 开发、企业级功能、需要验收闭环。

3. Harness Engineering(驾驭工程 / 约束工程)

  • 提出者:OpenAI、Anthropic(2026年初)。
  • 核心理念构建运行环境,让 AI 自主可靠执行。人类不再管代码,而是设计 AI Agent 的“马具”(约束系统)。
  • 人类角色:设计 Harness(环境、规则、反馈闭环)、定义目标、监控系统。
  • AI 角色:在 Harness 内自主完成编码、测试、修复、部署全流程。
  • 产出质量工程级,长期稳定、可扩展、高可靠。
  • 适用场景:复杂系统、多 Agent 协作、持续集成/部署、大规模软件工程。

二、核心区别对比表

维度 Vibe Coding Spec Coding Harness Engineering
驱动方式 感觉/直觉/实时反馈 规格/契约/预先设计 约束/环境/系统规则
输入形式 自然语言、模糊描述 结构化 Spec(可验证) Harness 系统(规则+工具+反馈)
人类重心 创意、方向、验收 定义 What、写 Spec、审查 设计环境、构建约束、监控
AI 角色 自由生成、猜意图 严格执行、自验证 自主执行、自我修复
代码质量 Demo 级、易有技术债 生产级、一致性高 工程级、长期可靠
可控性 低(AI 自由发挥) 中高(Spec 约束) 极高(系统级约束)
适用规模 小、原型、探索 中、生产、协作 大、复杂、工程化
核心价值 快、创意密度高 稳、可追溯、少返工 可靠、自主、规模化

三、演进关系:从“玩”到“用”再到“管”

三者是递进、互补而非替代的关系,对应软件开发的不同阶段与复杂度:

  1. Vibe → Spec:当原型验证有效、需求稳定后,用 Spec 固化规则,解决“看起来能用”到“真正能用”的鸿沟。
  2. Spec → Harness:当系统复杂到需要多 Agent 协作、持续迭代时,用 Harness 构建自动化环境,让 AI 自主可靠运行。
  3. 现实中:大型项目常混合使用——Vibe 做探索、Spec 做模块、Harness 做整体工程化

四、示例

需求:
写一个函数,计算两个数的除法,要处理除零错误。


1. Vibe Coding(凭感觉、快、糙)

特点:自然语言 → AI 直接写 → 能用就行

你说:

写个 Python 函数 divide(a, b),返回 a/b,除零返回错误提示,简单点。

AI 直接输出:

def divide(a, b):
    if b == 0:
        return "不能除以零"
    return a / b

你只看结果:能跑就行。不纠结类型、异常、规范。
→ 这就是 Vibe Coding

2. Spec Coding(先写规范,再按规实现)

特点:先写 Spec(契约),AI 严格遵守

你先写 Spec(这一步是关键):

# Spec: divide 函数
功能:计算 a / b
输入:a(int/float), b(int/float)
输出:float
异常:当 b=0 时抛出 ZeroDivisionError
返回值必须是数字,不能返回字符串

AI 必须严格按 Spec 生成:

def divide(a: int | float, b: int | float) -> float:
    if b == 0:
        raise ZeroDivisionError("division by zero")
    return float(a / b)

AI 不能自由发挥,必须符合 Spec。
→ 这就是 Spec Coding

3. Harness Engineering(人不写代码,只造“笼子”)

特点:人不写代码/不写Spec,只构建环境与规则,AI 自主完成

你给 AI 一套 Harness(约束系统)

Harness 规则:
1. 必须类型注解
2. 必须抛异常,不能返回字符串
3. 必须通过 pytest 测试
4. 必须通过 ruff lint
5. 通不过就自动修复,直到通过

然后你只说:

实现除法函数。

AI 自动:

  1. 写代码
  2. 跑测试
  3. 跑 lint
  4. 自己修复错误
  5. 直到全部通过

最终输出可直接上线的代码 + 测试:

# divide.py
def divide(a: int | float, b: int | float) -> float:
    if b == 0:
        raise ZeroDivisionError
    return a / b

# test_divide.py(AI 自己生成)
def test_divide():
    assert divide(4,2) == 2.0
    import pytest
    with pytest.raises(ZeroDivisionError):
        divide(1,0)

你全程不碰代码,只控规则环境。
→ 这就是 Harness Engineering


五、一句话总结

  • Vibe Coding快速出原型,凭感觉和 AI 对话
  • Spec Coding先写说明书,AI 按图施工
  • Harness Engineering搭好运行环境,让 AI 自己干活
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐