Harness Engineering 为什么是 Agent 时代的“控制论”?

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
Harness Engineering 为什么是 Agent 时代的“控制论”?
8203点击    2026-03-18 16:15

本文是 George Zhang 对 Harness engineering 的解读,原文发布于他的 X(https://x.com/odysseus0z)。


今年 2 月,OpenAI 发布了一篇文章 Harness engineering: leveraging Codex in an agent-first world,描述了一种新的工作方式:工程师不再直接编写代码,而是设计环境、制定规则,让 agent 在其中完成编码。


这篇文章很快在技术圈引发了广泛讨论。有人认为这是软件工程的终结,也有人觉得不过是新的炒作。事实上,围绕 AI coding 的叙事一直在演化:从最早的 prompt engineering,到 context engineering,再到如今的 harness engineering,工程师的关注点逐渐从“如何与模型对话”,转向“如何构建一个能够持续运行的系统”。


不过,把视野再拉远一点,这种演变其实也并不新鲜。从瓦特的离心调速器,到 Kubernetes 的控制器,工程师的角色早已多次完成类似的转变:从亲手操作系统,变成设计让系统自动运转的机制。1948 年,Norbert Wiener 将这种模式命名为控制论(cybernetics)。


因此,真正值得追问的问题或许不是“AI 会不会取代程序员”,而是:当反馈回路终于能够在“架构决策”这一层闭合时,工程师需要做什么,才能让这套机制真正运转起来?


01.

同一个模式,出现了三次


我读完 OpenAI 那篇关于 harness engineering 的文章后,心里一直有种说不清楚的感觉。直到某一刻,我突然想通了:这个模式我已经见过了,而且见过不只一次,是三次。


Harness Engineering 为什么是 Agent 时代的“控制论”?


第一次是在 18 世纪 80 年代。詹姆斯·瓦特(James Watt)发明了离心调速器(Centrifugal governor)。在这之前,工人得一直守在蒸汽机旁边,用手不停地调节阀门。有了调速器之后,一套带飞球的机械装置会自动感知转速、自动调节阀门。工人没有因此消失,只是工作内容变了:从亲手拧阀门,变成设计调速器本身。


离心调速器(Centrifugal governor)是一种利用离心力自动调节发动机转速的机械装置。1788 年,James Watt 对这一装置进行了改进,并将其用于蒸汽机的自动速度控制。


Harness Engineering 为什么是 Agent 时代的“控制论”?


第二次是在 Kubernetes 出现之后。使用 Kubernetes 的时候,你只需要声明目标状态,比如运行三个副本、用这个镜像、分配这些资源。控制器(controller)会持续监测系统的实际状态,一旦实际状态和目标状态出现偏差,控制器就会自动介入修正:重启崩溃的 Pod,调整副本数量,回滚出问题的部署。工程师的工作也随之改变:从手动重启服务,变成编写系统需要对齐的目标 spec。


Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用(例如基于 Docker 的应用)。它最初由 Google 设计并开源,现在由 Cloud Native Computing Foundation 维护,是现代云原生基础设施的核心组件之一。


Harness Engineering 为什么是 Agent 时代的“控制论”?


第三次就是现在。OpenAI 在文章中描述了这样一批工程师:他们不再亲手写代码,而是负责设计运行环境、构建反馈回路、把架构约束转化成可执行的规则,然后让 agent 去完成实际的编码工作。他们用五个月生成了约一百万行代码,没有一行是人手写的。OpenAI 把这种工作方式叫做“harness engineering”。


每一次变化的背后其实都是同一个模式。诺伯特·维纳(Norbert Wiener)在 1948 年给这个模式命名为控制论(cybernetics)。这个词来自希腊语 κυβερνήτης,意思是舵手,Kubernetes 这个名字也来自同一个词根。本质含义都是一样的:你不再需要亲手拧阀门,而是开始掌舵。


Norbert Wiener(1894–1964)是美国数学家,被认为是控制论的奠基人之一,在 Cybernetics: Or Control and Communication in the Animal and the Machine 中提出信息、控制与反馈的理论框架。


Harness Engineering 为什么是 Agent 时代的“控制论”?


这个模式每次出现,背后都有同一个原因:有人造出了足够强大的传感器和执行器,能够在那个层面上把反馈回路闭合起来。


02.

为什么代码库是最后被攻克的领域?


代码库并不是没有反馈回路(feedback loop),只是这些回路都存在于底层。


 编译器(Compilers)在语法层面闭合回路;


 测试套件在行为层面闭合回路;


 Linter 在代码风格层面闭合回路。


这些机制虽是真实的控制论回路,但仅能处理可机械检验的问题,比如,代码能编译吗?测试能通过吗?格式符合规范吗?


再往上一层,就没有任何自动化机制了,比如,这个改动符合系统的整体架构吗?这个技术方案是对的吗?这个抽象层随着代码库不断增长,将来会不会出问题?这些问题既没有传感器来感知,也没有执行器来修正。只有人能在这个层面上工作,而且两端都需要人来完成:一端是判断质量好坏,另一端是动手写出修复方案。


而 LLM 同时改变了上述这两端。LLM能像人一样判断代码质量和进行改动:重构一个模块;重新设计接口不一致的地方;围绕真正重要的约束条件重写整套测试。这是第一次,反馈回路可能在真正关键的决策层面闭合。


但是闭合回路只是必要条件,还不是充分条件。瓦特的调速器需要仔细调校才能正常工作,Kubernetes 的控制器需要一份正确的 spec 才能对齐目标,而在代码库里工作的 LLM,则需要一样更难提供的东西。


03.

如何校准传感器和执行器?


事实上,让 agent 能够执行测试、CI 能产出可解析的结果、报错信息能指向具体修复方向这样的基础反馈循环运行起来,仅仅是最低门槛。


Carlini 曾经做过一个演示:他让 16 个 agent 并行协作,一起构建一个 C 编译器。他用的 prompt 极其简单,但测试基础设施的设计却非常精心。他事后说:“我大部分的精力都花在设计 Claude 周围的环境上,也就是测试、运行环境和反馈机制。”


Nicholas Carlini 是美国计算机科学家,专注于 AI 安全与对抗性攻击(adversarial attacks)的研究。


Harness Engineering 为什么是 Agent 时代的“控制论”?


Harness Engineering 为什么是 Agent 时代的“控制论”?


也就是说,真正困难的问题在于,如何基于你对自己系统的认知,来校准这套传感器和执行器。大多数人就卡在这一步,然后把问题归结于 agent 本身:“它一直在做错误的事情,它根本不理解我们的代码库。”这种诊断几乎总是错的。


Agent 失败,不是因为它的能力不够,而是因为它需要的那些知识,比如对你的系统来说什么叫做“好”、你的架构鼓励哪些模式、又刻意回避哪些模式,这些知识全都锁在你自己的脑子里,你从来没有把它们写出来。Agent 不会自主学习进化。如果你不把这些知识写下来,agent 第一百次犯的错会和第一次一模一样。


因此,真正需要做的工作,是把你的判断标准变成机器可以读懂的形式:写一份描述真实分层结构和依赖方向的架构文档,配置一套内置了修复指引的自定义 Linter,整理一套把团队审美和品味编码进去的黄金原则。OpenAI 也发现了这一点:他们曾经每周五花 20% 的时间专门清理“AI slop”,后来他们把自己的标准直接编进了 harness 本身,问题才得到根本解决。


04.

唯一的出路


文档、自动化测试、编码成规则的架构决策、快速的反馈回路,这些本来就是正确的工程实践。过去三十年,几乎每一本软件工程的书都在推荐这些。但大多数人选择跳过,因为跳过的代价来得很慢、散得很开:代码质量缓慢下滑,但新人上手越来越痛苦,技术债在不知不觉中积累。


Agentic engineering 让这个代价变得极端。


• 如果你跳过了文档,agent 就会无视你所有的规范,而且不是在某一个 PR 上出问题,而是在每一个 PR 上都出问题,并以机器的速度,全天候不间断地重复同样的错误。


• 如果你跳过了测试,反馈回路就根本无法闭合。


• 如果你跳过了架构约束,代码漂移的速度会远远快过你手动修复的速度。


代码漂移(Code Drift)指的是软件项目中代码随时间逐渐偏离最初设计目标或规范的现象,可能表现为架构不一致、功能冗余等。这种漂移会增加维护成本、降低代码可读性和可靠性。


 更糟糕的是,如果 agent 不知道什么叫做整洁的代码,你就没有办法用 agent 来收拾这个烂摊子。也就是说,没有经过校准的 agent,制造出了问题,也解决不了问题。


该做的事情从来没有变过。只是不做这些事情的代价,已经变得无法承受。


正因如此,我们必须关注生成之外的验证环节。生成答案和验证答案之间存在明显的不对称性,也就是 P vs NP 问题的核心直觉:通常验证一个答案比生成一个正确答案要容易得多。Cobbe 等研究者已经在 LLM 上通过实验验证了这一点。这个不对称性给出了明确的方向:你不必在编写代码上比机器更快,只要你能知道怎么高效地评估它的产出也就是说,你需要能够定义什么是“正确”,识别输出结果偏离目标的地方,并判断整体方向是否正确。


P vs NP 问题是计算机科学中一个未解难题:每个能被快速验证的问题(NP 类问题),是否也能被快速求解( P 类问题)。


Karl Cobbe 等人在 2021 年 10 月 27 日 在 arXiv 发布了 Training Verifiers to Solve Math Word Problems,实验证明在 LLM 上训练“验证器”用于判断答案正确性要比直接生成正确答案任务更容易,验证方法显著提高了模型在数学应用题上的表现。


Harness Engineering 为什么是 Agent 时代的“控制论”?


Harness Engineering 为什么是 Agent 时代的“控制论”?


那些当年设计了瓦特调速器的工人,后来没有回去拧阀门。不是因为他们不会拧,而是因为回去拧阀门这件事,已经没有任何意义了。


文章来自于“海外独角兽”,作者 “George Zhang”。

AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

2
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0