Harness Engineering 读后感:AI工程的第三次范式转移

一句话总结

Harness Engineering = 为 Agent 构建「办公室」,而不是继续优化「邮件措辞」


背景:从三代工程范式看演变

时代 核心问题 关注点 类比
Prompt Engineering (2022-2024) 怎么跟模型说话 措辞、格式、few-shot、CoT 写一封完美的邮件
Context Engineering (2025) 怎么把关键信息摆到模型眼前 RAG、对话历史、工具定义 给邮件附上所有需要的附件
Harness Engineering (2026) 怎么让模型在真实环境里稳定做事 工作流、约束、反馈循环、工具链 架构整个办公室

三代并不是取代关系,而是抽象层次一层层向外扩展。任务越接近真实生产,后两者的重要性就越高。


核心论点:Agents aren’t hard; the Harness is hard

这是 OpenAI Codex 团队 Ryan Lopopolo 在用 GPT-5 agent 构建了 100 万行代码、1500 个 PR 之后的真实总结。

实验数据:

  • 同一模型、同一数据、同一 prompt,仅改变运行时环境(shell),编程 benchmark 成功率从 42% 跳到 78%
  • Anthropic 的实验:简单 prompt-and-run 方案产出 broken product($9),结构化的迭代管理环境产出可用游戏($200)

Cost difference is irrelevant. Capability difference is everything.


作为 Agent 开发工程师的感悟

1. 我们以前在优化错误的层级

花了大量时间在 prompt 模板、few-shot 示例、角色扮演上。但真正决定成败的,是** agent 运行环境的设计**。

做过 agent 开发的人都有类似经历:demo 惊艳,production 崩盘。原因是 demo 是「完美条件的单次交互」,而生产是「真实环境的持续运转」。

2. 约束 paradoxically 增加生产力

Cursor 团队在推进 “Self-Driving Codebases” 时发现:当模型能力足够强时,它会在死胡同和 nonsense 方案上浪费大量 token。一个设计良好的 Harness 通过提供清晰的边界和有限的高质量工具,强制 agent 更快收敛到正确答案

你不是在限制 agent,你是在给它一条通往成功的窄路。

3. 架构约束必须用 linter 强制,而不是用 prompt 请求

OpenAI 团队学到的硬规则之一:** Architectural constraints are enforced by linters, not prompts.**

不要跟 agent 说「请遵循单例模式」,而是构建一个 linter 来强制单例模式。不要请求,请约束。

4. Agent 失败时,Harness 才是问题所在

OpenAI 团队有一条原则:If a PR requires significant human intervention, the agent is not the problem — the Harness is.

这是思维模式的核心转变。当 agent 犯错时,我们不是去批评它,而是去改进它的运行环境,让这个错误再也不可能发生。这正是 Mitchell Hashimoto 对 Harness Engineering 的定义:

“Every time you discover an agent has made a mistake, you take the time to engineer a solution so that it can never make that mistake again.”

5. Anthropic 的关键发现:模型无法可靠评估自己的输出

这直接指向了 GAN 式的架构:分离的 Generator 和 Evaluator agent。这也是为什么可靠的 Harness 需要独立的验证层。


实践要点:Harness 的五大支柱(来自 OpenAI + Stripe)

  1. 单一真实来源:repository 是 agent 唯一的信息源,不假设任何外部知识
  2. Agent-readable 代码:不仅是人类可读,还需要能被 agent 理解(清晰的注释、结构)
  3. Linter 强制架构约束:规则不是 prompt,是代码
  4. 增量授权:Harness 必须有阶段和关卡,agent 不能一上来就拥有全部权限
  5. Two-strike 规则(Stripe):agent 第一次修复失败,立即 escalation 给人类,不浪费循环

对我当前项目的启发

结合我们的 iUX 迪元健康项目:

  • 工具调用层:需要更严格的 tool definition 和 error handling harness
  • 多步骤工作流:需要引入阶段性 gate 和反馈循环
  • 代码生成场景:agent 输出的代码需要有 linter 强制约束,而不是靠 prompt 提醒

Harness Engineering 不是一个工具,是一种工程哲学的升级——从「调教模型」到「构建系统」。


参考资料