Harness Engineering 到底是什么?AI 会写代码之后,项目还缺什么?

What is harness engineering?

最近读到 OpenAI 的一篇实践文章《Harness engineering: leveraging Codex in an agent-first world》。它记录了一个小团队如何用 Codex 从空仓库构建真实产品,以及他们为什么逐渐把重点从“让 AI 写更多代码”,转向为 Agent 设计项目资料、工具、规则和反馈机制。

我最初的反应是:

Coding agent 现在已经会读项目、修改代码、运行命令,甚至可以自己检查问题了。为什么还需要再发明一个叫 Harness Engineering 的概念?

继续看下去,我觉得这个词想提醒的,其实是一件很朴素的事:

一个 Agent 能不能完成工作,不只取决于模型本身。

它还取决于:

它知道哪些项目信息;可以使用哪些工具;有哪些不能越过的边界;完成以后,怎样检查结果。

这几部分加起来,就是模型周围的 Harness。

Harness 不是模型,也不只是 Prompt

Prompt 主要告诉 Agent:

这一次要做什么。

Harness 处理的是另一组问题:

它在什么条件下完成这件事?

比如,我让 coding agent 修复一个注册问题。

只有一句 Prompt 时,它可能会:

搜索相关文件;找到一个看起来可疑的函数;修改代码;运行几个测试;告诉我已经修复。

但它未必知道:

注册流程还有不同用户类型;部分操作通过异步任务完成;本地环境不会真正发送邮件;修改后需要走一遍完整注册流程;这次修复可能破坏其他已经正常的功能。

这些信息不会因为模型变强,就自动出现在项目里。

Agent 仍然需要知道去哪里找,也需要拥有观察真实结果的方法。

Harness Engineering 具体在设计什么?

我现在会用四个问题理解它。

1. Agent 知道什么?

产品目标是什么?目录怎样组织?哪些决定已经确认?当前任务做到哪里?哪份文档才是最新的?

如果关键信息只存在于聊天记录、外部文档或人的脑子里,对正在项目中工作的 Agent 来说,它可能根本看不到。

2. Agent 能使用什么?

它只能修改文件,还是也可以:

启动应用;操作浏览器;读取日志;查询测试数据;运行完整流程;比较修改前后的结果?

工具越完整,Agent 越不需要只根据代码表面猜测产品是否正常。

3. Agent 必须遵守什么?

哪些文件不能修改?哪些数据不能访问?哪些操作必须先确认?什么时候应该停下来交给人?

有些要求可以写在项目说明里;更重要的边界,则可能需要由权限、检查或产品流程真正拦住。

4. Agent 怎样证明自己做完了?

代码改完不等于任务完成。

它还可能需要:

运行固定测试;走一遍真实用户流程;确认已有功能没有被破坏;提供日志、截图或修改记录;保留可以撤回的版本。

如果缺少这些条件,Agent 很容易把“我已经修改了代码”,误认为“问题已经解决”。

OpenAI 为什么开始讨论 Harness Engineering?

OpenAI 分享了一项内部实验:团队让 Codex 负责生成一个软件产品中的代码、测试、文档、CI 和内部工具。

他们发现,早期推进不及预期,并不只是模型能力问题。项目缺少适合 Agent 使用的工具、结构和反馈方式。后来,工程师的工作越来越多地转向设计环境、表达任务意图,以及建立可以让 Agent 检查和修正结果的反馈循环。

这并不意味着所有个人项目都要复制 OpenAI 的复杂配置。

OpenAI 也明确说明,他们获得的 Agent 自主能力高度依赖这个代码库专门设计的结构和工具,不能直接假定它会自然出现在其他项目里。

但这个实验仍然带出一个有用的判断:

模型能力是一部分,模型周围的工作条件也是一部分。

什么情况下 Harness 更重要?

如果只是让 Agent 修改一句文案、调整一个样式,结果又很容易肉眼检查,Harness 可以非常轻。

但当任务开始出现这些特征:

跨越很多文件;持续多个 session;需要调用不同工具;拥有较大的操作权限;错误不容易被发现;希望 Agent 独立工作更久;

项目信息、工具、边界和验证方法就会越来越重要。

Anthropic 在研究长时间运行的 coding agent 时,也遇到了类似问题:每个新 session 都可能像一次没有记忆的换班。如果上一轮没有留下清楚的进度和项目状态,新的 Agent 就不得不重新猜测发生过什么。

这篇对我最有用的 take away

以后 coding agent 没有把任务做好时,我不会只检查两个问题:

模型是不是不够强?Prompt 是不是没写好?

我还会多检查四件事:

它是否看得到必要信息?是否拥有完成任务所需的工具?是否知道哪些边界不能越过?是否有办法验证结果和恢复错误?

Harness Engineering 并不是说,所有 Agent 问题都能靠搭环境解决。

它只是补上了一个容易被忽略的视角:

AI 会写代码,不代表它已经自动具备了完成一个真实项目所需的全部条件。