随笔 / 调研

Harness Engineering 调研

· AI/Agent 工程化 调研

从 OpenAI、Cursor 到 agent evals:这篇文章试图把 harness engineering 讲清楚——它不是单次 prompt,而是一整套让 agent 在真实代码库里稳定产出的工程系统。

Harness Engineering 调研

核心结论

  1. Harness engineering 的本质,是把软件工程的重心从“人直接写代码”转向“人设计环境、指定意图、建立反馈回路,agent 负责执行”。OpenAI 在官方文章中直接写到:"Humans steer. Agents execute.",并称他们在 5 个月里构建并交付了一个内部 beta,且是 "0 lines of manually-written code"OpenAI
  2. 这套方法的关键不在于单次 prompt,而在于让 agent 拥有可工作的环境:可启动的应用、可访问的日志/指标/trace、可执行的 CI、可引用的仓库知识、可验证的架构边界、可复用的评测流程。OpenAI
  3. Cursor 的“self-driving codebases”与 OpenAI 的 harness engineering 在工程哲学上高度同构:二者都强调多 agent 编排、角色分层、强可观测性、结构化 handoff、允许局部错误但追求整体收敛,而不是追求每一步绝对正确。Cursor self-driving codebases Cursor scaling agents
  4. OpenAI 后续关于长程任务的官方文章进一步说明:真正起作用的不是超长单 prompt,而是 plan -> implement -> validate -> repair -> repeat 的 agent loop,以及 prompt/specplans.mdimplement.mddocumentation.md 这类“持久项目记忆”。Run long horizon tasks with Codex
  5. 因此,harness engineering 可以理解为“agent-first 软件工程基础设施与操作系统”。它覆盖知识管理、执行编排、测试评估、审查合并、质量回收,以及长期自治运行的防漂移机制。

什么是 Harness Engineering

1. 定义

OpenAI 的定义不是一句术语解释,而是一套实践描述:当团队的主要工作“不再是亲手写代码,而是设计环境、指定意图、建立反馈循环,让 Codex agents 稳定工作”时,工程工作的核心就转向 harness。OpenAI

可压缩成一句中文:

Harness engineering = 为 agent 构建能可靠工作的工程环境、知识底座、控制规则和反馈回路。

OpenAI 原文中的几个关键句:

"Humans steer. Agents execute."
"The primary job of our engineering team became enabling the agents to do useful work."
"Our most difficult challenges now center on designing environments, feedback loops, and control systems"

来源:OpenAI

2. 它不是什么

3. 为什么现在重要

Harness Engineering 的组成部分

1. 仓库知识要成为 system of record

OpenAI 的一个核心观点是:agent 能看到的才存在,不能在运行上下文中访问的知识,对 agent 等于不存在。

"From the agent’s point of view, anything it can’t access in-context while running effectively doesn’t exist."
"We made repository knowledge the system of record"

他们反对一个臃肿的单文件 AGENTS.md,转而把 AGENTS.md 当目录,把真正的知识放进结构化 docs/、架构文档、执行计划、技术债跟踪与质量文档中,并用 linter / CI 机械检查其新鲜度与交叉链接。OpenAI

含义:

2. 让应用、日志、指标、trace 对 agent 可见

OpenAI 把 UI、日志、指标、trace 都做成 agent 可调用的运行时能力:

"Logs, metrics, and traces are exposed to Codex via a local observability stack"
"Agents can query logs with LogQL and metrics with PromQL."

并给出类似 "ensure service startup completes in under 800ms" 这样的可验证目标。OpenAI

这意味着 harness 不只是代码生成器,而是“agent 可观测的测试与诊断平台”。

3. 架构与 taste 要靠机械约束,不靠口头约定

OpenAI 明确强调:

"By enforcing invariants, not micromanaging implementations, we let agents ship fast without undermining the foundation."

它们使用分层架构、定制 linter、结构测试、命名规范、日志规范、文件大小约束等方式,为 agent 提供硬边界。OpenAI

这和传统“给人写代码规范”不同:

4. Throughput 会改变 merge 哲学

OpenAI 公开指出,在 agent 吞吐远高于人类注意力时,过重的阻塞式合并门槛会变成系统性瓶颈:

"Test flakes are often addressed with follow-up runs rather than blocking progress indefinitely."
"In a system where agent throughput far exceeds human attention, corrections are cheap, and waiting is expensive."

来源:OpenAI

这并不意味着放弃质量,而是把质量控制从“每一步人工卡死”转向“快速前进 + 后续自动修正 + 周期性清理”。

5. 需要持续做 entropy control / garbage collection

OpenAI 很坦率地承认全 agent 代码库会累积“AI slop”,他们早期甚至每周五花 20% 时间做清理,后来才把“golden principles”编码进仓库并由后台任务持续发起小型清理 PR。OpenAI

这说明 harness 不是“一次搭好”的系统,而是持续维护的软件工厂:

6. 长程任务依赖 durable project memory,而不是超长单 prompt

OpenAI 在 Run long horizon tasks with Codex 中把 long-horizon coding 拆成了非常明确的 agent loop:

"Plan" -> "Edit code" -> "Run tools" -> "Observe results" -> "Repair failures" -> "Update docs/status" -> "Repeat"

并明确指出:

"Long-running work is less about one giant prompt and more about the agent loop the model operates inside."
"The most important technique was durable project memory."

来源:Run long horizon tasks with Codex

它给出的文件栈也很值得注意:

这与 OpenAI 主文里“repository knowledge is the system of record”形成直接互证:

7. ExecPlan / AGENTS / PLANS 说明 harness 不只是理念,而是可落地模板

OpenAI Cookbook 的 Modernizing your Codebase with Codex 把这种做法进一步模板化。它建议在仓库中建立 .agent/AGENTS.md.agent/PLANS.md,并把复杂改造工作收敛到 ExecPlan 驱动的多阶段流程中。Modernizing your Codebase with Codex

关键表述:

"Give Codex a lightweight contract for how planning works in this repo"
"These explain what an ExecPlan is, when to create or update one, where it lives, and what sections every plan must have."

这意味着 harness engineering 在实践上至少包含三类 repo 内契约:

换句话说,harness engineering 并不是一句抽象口号,而是能沉淀成文件结构、计划模板和执行脚手架的工程方法。

Cursor 文章给出的互证

1. Cursor 证实了“结构比聪明更重要”

Towards self-driving codebases 中,Cursor 说他们“created a new agent harness to orchestrate many thousands of agents”,而且系统可以运行一周、完成大部分提交。Cursor self-driving codebases

这和 OpenAI 的观点高度一致:突破点不是单个 agent 更聪明,而是 harness 让大量 agent 可被编排、被观察、被收敛。

2. 平铺式自协调很快失败

Cursor 的早期方案是多 agent 共享协调文件,但很快出现锁竞争、忘记释放锁、状态混乱等问题:

"20 agents would slow to the throughput of 1-3"
"The coordination file quickly created more problems."

来源:Cursor self-driving codebasesCursor scaling agents

它说明 harness engineering 不能只理解为“多开几个 agent 并行跑”,而是必须解决同步、 ownership、任务切分和信息回流问题。

3. 最终有效的是 planner / subplanner / worker 的层次系统

Cursor 最终收敛到 root planner、subplanner、worker 的递归结构,worker 只做单一任务,planner 负责全局拥有权与后续决策;handoff 不仅传结果,还传 "notes, concerns, deviations, findings, thoughts, and feedback"Cursor self-driving codebases

这与 OpenAI 的“人负责高层意图、agent 负责执行”形成互证:

4. 正确率与吞吐量之间需要工程取舍

Cursor 明确写到:

"When we required 100% correctness before every single commit, it caused major serialization and slowdowns of effective throughput."

他们更倾向接受一个“小而稳定的错误率”,再靠最终收口到 green branch 的修复阶段控制发布质量。Cursor self-driving codebases

这个观点与 OpenAI “merge gate 变轻、修正更便宜”高度一致,是目前公开材料中最值得关注的共识之一。

Harness Engineering 与评测 / Evals 的关系

如果说 harness 是 agent 的“运行系统”,那 evals 就是这个系统的“仪表盘和回归测试框架”。

OpenAI 官方 Agent evals 文档写得很直接:

"Measure agent quality with reproducible evaluations."
"For identifying errors at the workflow-level, we recommend our trace grading functionality."

来源:Agent evals

OpenAI 官方 Trace grading 文档进一步定义:

"Trace grading is the process of assigning structured scores or labels to an agent’s trace"
"Unlike black-box evaluations, trace evals provide more data to better understand why an agent succeeds or fails."

来源:Trace grading

这说明 harness engineering 不是“先让 agent 跑起来,再想办法测”,而是要把以下能力内建进去:

换句话说:

没有 eval / trace grading 的 harness,很难稳定演化;
没有 harness 的 evals,也很难真正改善 agent 在真实工程流里的表现。

2. skill / workflow 的 eval 更接近“轻量端到端测试”

OpenAI 在 Testing Agent Skills Systematically with Evals 里把 agent skill 的评测说得非常工程化:

"Concretely, an eval is: a prompt -> a captured run (trace + artifacts) -> a small set of checks -> a score you can compare over time."
"In practice, evals for agent skills look a lot like lightweight end-to-end tests"

来源:Testing Agent Skills Systematically with Evals

这对 harness engineering 很关键,因为它说明:

这比传统 LLM eval 更贴近真实软件工程,也更接近 survey session 里应强调的“系统性方法论”。

3. eval 不是孤立模块,而是持续改进 flywheel 的一环

OpenAI 官方 Agent evals 还明确把它和持续改进绑在一起:

"Operate a flywheel of continuous improvement using evaluations."

而在 Safety in building agents 中,又把 trace graders 和 evals 作为多 agent workflow 的安全与质量缓解手段之一。Safety in building agents

这进一步支持一个判断:

harness engineering = 运行时脚手架 + 观测 + 评测 + 安全约束 + 持续修正的闭环。

Harness Engineering 与 AI-native engineering team 的关系

OpenAI 官方 Building an AI-Native Engineering Team 给了一个更组织化的视角:coding agents 正在把工程团队从“自己做所有实现”转向“把大量 SDLC 阶段交给 agent 首轮执行,人类负责 review / own / direction”。Building an AI-Native Engineering Team

其中几条很值得和 harness engineering 放在一起看:

这实际上说明,组织层面的 AI-native engineering,底层正是 harness engineering:

Harness Engineering 与 Benchmark 的关系

1. Benchmark 是外部度量,harness 是内部生产系统

SWE-bench 的定位是公开基准,衡量 agent 在真实软件工程问题上的解决率;官网强调 "% Resolved" 作为核心指标,并列出 VerifiedLiteMultilingualMultimodal 等变体。SWE-bench

因此:

两者相关,但不能互相替代。

2. 公开基准很重要,但不足以覆盖真实 agent 工程问题

OpenAI / Cursor 的文章都更强调真实仓库中的长期运行问题:

这些问题不是单一 benchmark 分数能完整描述的,所以 harness engineering 可以看作 benchmark 之外的“生产工程层”。

3. EVMbench 提醒我们:benchmark 也会反过来推动 harness 设计

Paradigm 与 OpenAI 联合发布 EVMbench 时,用词很直接:

"Together with OpenAI, we built EVMbench to measure exactly that."
"EVMbench is an open evaluation framework that tests AI agents across detecting, patching, and exploiting vulnerabilities."
"We’ve also extended the benchmark harness into an auditing agent"

来源:Paradigm - Introducing EVMbench

这里有一个非常重要的信号:

它和我们当前 blog / 功力系统 / survey sessions 的相关之处

当前工作区里没有现成的 survey sessions 或已有 harness engineering 调研文件,因此本次是新建调研。结合你的描述,harness engineering 和你们现有内容体系最相关的地方至少有四个:

1. 对 blog 来说,它是一个上位框架

如果你们 blog 已经在写 agent、评测、工作流、技能系统、代码生成、自动化开发,那么 harness engineering 可以作为一个总纲,把这些零散主题串起来:

2. 对“功力系统”来说,它非常像工程内功

如果“功力系统”强调的是长期积累、基本功、抽象能力、方法论沉淀,那么 harness engineering 正是 agent 时代的软件工程内功:

它不像 flashy demo,更像“把 agent 变成稳定生产力”的底层功法。

3. 对 survey sessions 来说,它很适合做系列主题

这个话题不该只做成一篇新闻摘要,后续完全可以拆成系列:

4. 对实际系统设计来说,它可直接映射到你们自己的 agent 产品/内容体系

如果你们已经有 blog 系统、技能系统、survey session 机制,那么可以把 harness engineering 直接翻译为内部建设议题:

对我们自己的可执行启发

1. 先做知识底座,再做更强 agent

比起继续堆 prompt,优先做这些事情更符合 harness engineering:

2. 先做可观测性,再做自治

如果 agent 不能看日志、trace、指标、UI 状态,它就只能“猜”。Harness engineering 的核心恰恰是减少猜测,让 agent 能自己验证。

3. 先做约束编码,再做规模化并发

没有边界时,多 agent 容易把错误放大;有边界时,多 agent 才能带来真实吞吐提升。

4. 先做 eval flywheel,再谈可靠交付

OpenAI 近几篇文档连起来后,比较清楚的一条路线是:

要把 agent 的成功标准写成可重复跑的 eval / trace graders,而不是只靠人工体验判断“这次看起来还行”。

证据状态

高共识(多个独立来源一致)

单一来源(需谨慎,但很重要)

矛盾信息 / 表述差异

一句话总结

Harness engineering 说的不是“让 AI 帮你写代码”,而是“把软件工程重新组织成一个 agent 能稳定运行的系统”。它最相关的不是单个 demo,而是文档、约束、评测、观测、review、merge、cleanup 这些过去常被忽略、但在 agent 时代决定成败的基础设施。

参考来源

流程合规自检表