返回文章归档

文章详情

从 Vibe Coding 到 Harness Engineering:AI 编码为什么进入工程化阶段

整理我对 Harness Engineering 的一套核心理解:它不是更高级的提示词技巧,而是给 AI Agent 搭一个可执行、可验证、可修复、可持续治理的工程环境。

系列:AI 工作流实践 Harness EngineeringAI CodingAgentVibe Coding工程化

这段时间,AI 编码领域开始频繁出现一个词:Harness Engineering

如果只看字面,它很容易被误解成又一个新概念,或者某种“Prompt Engineering 2.0”的包装词。但我越来越觉得,它之所以值得单独拿出来讲,不是因为名字新,而是因为它抓住了一个很现实的变化:

AI 编码的竞争,正在从“谁更会写提示词”,转向“谁能给 AI 提供更稳定的执行环境”。

也就是说,问题已经不只是“模型会不会写代码”,而是:

  • 它有没有清楚的规则入口
  • 它能不能读取到足够准确的上下文
  • 它写完之后有没有验证机制
  • 它出错之后能不能快速暴露并修回来
  • 它积累下来的经验,能不能变成长期有效的工程资产

这篇文章想系统整理一下我目前对 Harness Engineering 的理解:它是什么、为什么最近越来越重要、它和 Prompt / Context / Spec 这些概念是什么关系,以及一个项目到底是怎么从“AI 写得很爽”走到“AI 能稳定交付”的。

一、Harness Engineering 到底是什么?

如果用一句话来定义:

Harness Engineering = 给 AI Agent 搭一个可执行、可验证、可修复、可长期治理的工程环境。

这里最关键的不是“让 AI 生成更多代码”,而是让 AI 在真实项目里工作时,处在一个不容易跑偏、跑完能自检、出错能定位、长期不会越用越乱的系统里。

所以它强调的不是一次 prompt 的技巧,而是围绕执行过程建立闭环:

  • 有规则约束
  • 有上下文入口
  • 有验证反馈
  • 有错误修复路径
  • 有长期治理机制

换句话说,Harness Engineering 关注的不是“怎么让 AI 回答更聪明”,而是“怎么让 AI 在工程环境里表现得更稳定”。

二、为什么它最近突然变重要了?

原因其实很直接。

前一阶段,大家更关注模型能力本身。只要模型变强,很多人都会自然认为:AI 编码的问题主要会被更强的模型解决。

但实际用久了之后,很多团队和个人都会碰到同样的现实:

同一个模型,换一套更好的工作环境,效果提升往往比单纯换模型更明显。

这说明瓶颈已经在变化。

以前的问题更像是:

  • AI 听不懂
  • AI 写不出来
  • AI 表达不够像样

现在更常见的问题则变成:

  • AI 能写,但容易偏
  • AI 能改,但容易把别的地方带坏
  • AI 能干活,但缺少稳定反馈回路
  • AI 用得越多,仓库反而越乱
  • review 负担越来越重,团队经验无法沉淀

这时候你就会发现,真正限制结果的,不只是模型,而是整个系统设计。

三、它和 Prompt / Context / Spec 是什么关系?

我比较喜欢把这几个概念放在一条演进线上看。

1. Prompt Engineering:怎么说

Prompt Engineering 解决的是: 怎么跟 AI 说,才能让单次输出更准。

它很重要,但更像是单回合优化。对于复杂、长期、跨文件、跨工具的任务,单靠 prompt 很难兜住整个过程。

2. Context Engineering:给什么信息

Context Engineering 更进一步,关注的是: 给 AI 什么上下文,以及在什么时候给。

这让 AI 不再只是对一句话做反应,而是能在更完整的信息环境中工作。

但它本质上仍然偏输入侧。它改善了 AI 的理解能力,却不天然解决执行过程中的约束、验证和修复问题。

3. Spec-Driven Development:先把事情写清楚

Spec-Driven Development 解决的是: 在开始实现之前,把目标、边界和验收标准写清楚。

这对减少歧义、提高协作效率非常有效。它解决的是“做什么”更明确的问题。

但即便 spec 写得再清楚,也不代表执行过程天然稳定。

4. Harness Engineering:让执行环境稳定下来

Harness Engineering 解决的是: 怎么给 agent 搭一个真正能长期运转的执行系统。

它不是替代 prompt、context 或 spec,而是把这些能力放进一个更完整的工程框架里。

如果用最通俗的话说:

  • Prompt:怎么说
  • Context:给什么信息
  • Spec:先把目标写清楚
  • Harness:让整个执行环境稳定下来

所以我更愿意把 Harness Engineering 看成:

把 prompt、context、spec 这些局部能力,升级成一个可长期运行的工程闭环。

四、Harness 的核心组成是什么?

如果把它拆开来看,我觉得一个靠谱的 harness,至少应该包含下面五块。

1. 规则入口

首先,AI 不能靠“猜”来工作。

你得给它明确的入口,告诉它:

  • 先读什么
  • 项目结构怎么理解
  • 什么规则不能碰
  • 哪些文档是 source of truth

这类入口常见的形式包括:

  • AGENTS.md
  • 架构文档
  • 产品说明
  • 编码规范
  • 模块边界说明
  • 任务模板

这一步的价值是让 agent 不要每次都从零开始摸仓库。

2. 验证体系

如果没有验证,AI 写完就停,那整个系统几乎一定会失控。

所以第二块一定是验证闭环,比如:

  • lint
  • test
  • build
  • CI
  • 类型检查
  • 合约校验

验证体系的本质,不是为了形式完整,而是为了把“看起来像对的”变成“经过机制确认过的”。

3. 架构护栏

很多 AI 代码问题,并不是语法错,而是结构错。

比如:

  • 跨层依赖乱引
  • 同类逻辑出现多套实现
  • API 返回结构被悄悄改坏
  • UI 模式越写越不统一

所以你需要的不只是测试,还需要架构层的护栏,例如:

  • import 边界规则
  • API contract
  • UI pattern 文档
  • 目录职责约定
  • 模块依赖约束

这决定了 AI 是在一条清晰跑道上跑,还是在一个到处都能拐弯的场地里乱窜。

4. 反馈系统

AI 要能稳定工作,反馈必须清楚,而且最好是“适合 agent 阅读”的。

比如一条失败信息,如果只是:

build failed

那几乎没什么用。

但如果它能告诉 agent:

  • 哪个文件
  • 哪一类错误
  • 预期是什么
  • 可能的修复方向

那 agent 自修的成功率会明显提高。

所以 Harness 的一部分,其实是在设计: 失败是如何被暴露和表达的。

5. 长期治理

这是最容易被忽略的一块。

很多团队前面四步都做了,但用久了之后仓库还是越来越乱。原因就在于缺少长期治理。

比如:

  • 文档没同步更新
  • 旧规则失效但没人清理
  • 重复实现逐渐增多
  • review 里反复出现同类问题
  • 临时 workaround 变成永久遗留

所以 harness 不是一次性工程,而是一种持续治理机制。它通常需要:

  • 周度清理
  • 文档对齐
  • 季度回顾
  • 高频 review 意见规则化
  • 针对仓库熵增的定期处理

五、一个项目是怎么从 Vibe Coding 走向 Harness 的?

要理解 Harness Engineering,最好的方式不是讲定义,而是看一个常见演进过程。

很多项目一开始都是典型的 Vibe Coding:

  • 需求想到就说
  • AI 写完看一眼能跑就过
  • 没有统一规则入口
  • 没有系统验证
  • 一开始速度很快,体验甚至相当爽

问题往往不是一开始出现的,而是在项目稍微长大之后。

第一阶段:爽,但不稳

早期确实很快。

因为几乎没有额外成本:不写规范,不建验证,不补文档,直接让 AI 开始干。

但随着功能增加,典型问题会逐渐冒出来:

  • 同类逻辑出现多套版本
  • 页面和交互风格开始飘
  • API 返回结构偶尔被改坏
  • 修一个地方,另一个地方又出问题
  • review 越来越像人工兜底

这时候就会发现,问题已经不是“AI 会不会写”,而是“系统撑不撑得住”。

第二阶段:补最小规则入口

通常最先补的是最基础的规则文档,例如:

  • AGENTS.md
  • architecture.md
  • product.md
  • coding-rules.md

这一步做完后,最明显的变化是:

  • agent 开始知道先看什么
  • 任务边界更清楚
  • 跑偏频率下降
  • 输出风格开始有一致性

第三阶段:接上基础验证

接下来要做的不是继续优化 prompt,而是把验证体系接起来:

  • lint
  • test
  • build
  • CI

一旦这套东西存在,开发过程就从:

写完就停

变成:

写完先验,失败再修

这一步非常关键,因为它把“生成”变成了“闭环执行”的一部分。

第四阶段:把高频问题沉淀成规则

很多 review 意见其实高度重复。

如果每次都靠人提醒,那团队会越来越累;但如果能把高频问题沉淀成规则,整个系统就会越用越顺。

比如逐步补充:

  • import 边界规范
  • UI patterns
  • API contracts
  • 常见任务模板
  • 错误说明规范

这一步之后,review 才会开始从“低级兜底”转向“方案判断”。

第五阶段:加上清理和回顾

真正成熟的阶段,不只是能做功能,而是能控制熵增。

这时通常会加入:

  • 周度清理任务
  • 文档对齐
  • 季度回顾
  • 失败案例复盘
  • 仓库健康检查

到这里,项目才算真正从“AI 提效”进入“AI 工程化”。

六、怎么判断 Harness 有没有开始起作用?

我觉得可以看几个非常朴素的信号。

如果 AI 用得越来越多,但同时:

  • 仓库没有越来越乱
  • review 没有越来越重
  • 相同问题没有反复靠人肉提醒
  • 团队经验能持续沉淀进系统
  • agent 的首轮成功率在逐步提高

那基本可以说明 harness 开始起作用了。

反过来,如果模型越来越强,但项目却越来越依赖“有经验的人在最后擦屁股”,那通常说明 harness 还不够成熟。

七、个人和小团队应该怎么开始?

很多人一听到 Engineering、治理、体系这些词,就会觉得这是不是只有大团队才需要。

我反而觉得不是。

因为越是小团队、越是个人项目,越需要一个轻量但清晰的 harness。否则 AI 带来的不是效率,而是额外混乱。

一个现实可行的起步方式,大概是:

1. 先补最小入口

至少把这些东西补上:

  • 一个 AGENTS.md
  • 一个最小的项目说明
  • 一份简明的编码规则
  • 一份架构或目录职责说明

2. 接最基本的验证

不必一上来搞得很复杂,但至少要有:

  • lint
  • build
  • 必要的测试

3. 把高频 review 问题写下来

不要总靠记忆,也不要每次都重复口头说。

把它们逐步沉淀成:

  • 文档
  • 规则
  • 模板
  • 脚本
  • CI 检查

4. 定期做一点清理

哪怕不是很正式,也最好有节奏地做:

  • 删重复实现
  • 补漏掉的文档
  • 清临时方案
  • 回看哪些问题最近最常出现

一个最小可用 harness,不需要一开始就很重。关键是它要能形成闭环。

八、Harness Engineering 的本质,不是“更会用 AI”

说到底,Harness Engineering 真正重要的地方,并不是让工程师显得更懂 AI,也不是发明一个新的 buzzword。

它的价值在于,它把大家的关注点从:

  • 模型参数
  • 提示词技巧
  • 一次性输出效果

转向了更本质的问题:

  • 规则是否清楚
  • 验证是否存在
  • 反馈是否有效
  • 系统是否能长期稳定运转

所以我现在越来越倾向于这样理解它:

Harness Engineering 的本质,不是更会让 AI 写代码,而是更会设计一个让 AI 稳定工作的工程系统。

这件事一旦想明白,很多判断标准都会变得清楚。

你就不会再只盯着“这次生成得像不像”,而会更关注:

  • 这个系统有没有变得更稳
  • 这个仓库有没有变得更可维护
  • 这套经验能不能被复用
  • AI 的使用是不是在放大团队能力,而不是放大混乱

九、结语:AI 编码的下一阶段,是工程化而不是玄学化

我不觉得 Harness Engineering 是一个替代一切的新词。

它更像是一个提醒: 当 AI 真正进入开发流程之后,决定效果上限的,已经越来越不是单条 prompt,而是整个执行系统。

Prompt、Context、Spec 当然还重要,但如果没有 Harness,它们更像是一些分散的局部优化。

只有当这些能力被放进一个可执行、可验证、可修复、可治理的环境里,AI 才会从“偶尔很惊艳”变成“长期可依赖”。

这也是为什么我觉得,AI 编码的下一阶段,不是玄学化,而是工程化。

从这个角度看,Harness Engineering 其实并不神秘。

它只是让我们开始认真回答一个问题:

当 AI 真正参与软件开发时,我们到底该给它一个什么样的工作环境?

系列阅读

AI 工作流实践

11 分钟
AI 工作流:从提示词到可执行系统

聊聊什么是 AI 工作流、为什么它比单次问答更重要,以及如何从个人效率一步步搭建出真正能落地的 AI 协作系统。

12 分钟
从 Vibe Coding 到 Harness Engineering:AI 编码为什么进入工程化阶段

整理我对 Harness Engineering 的一套核心理解:它不是更高级的提示词技巧,而是给 AI Agent 搭一个可执行、可验证、可修复、可持续治理的工程环境。