控制论之后:Harness Engineering 面对的新约束
18 世纪晚期,瓦特改良了蒸汽机,但早期的蒸汽机极不稳定——转速波动剧烈,动不动就因为过快而发生危险。热力学定律在那时还有要等几十年后才被建立,瓦特没有去修改燃烧室的内部结构,而是去发明了一个纯外部的机械装置:离心调速器(centrifugal governor)。
当机器转速过快时,飞锤受离心力甩开,自动关小进气阀门;转速降下来,飞锤落下,阀门开大。
通过一个不需要理解蒸汽机内部发生了什么的纯外部装置,瓦特就实现了闭环控制。(麦克斯韦 1868 年写了一篇 On Governors,专门分析这个装置的稳定性,这也是公认为反馈控制理论的奠基文献之一。)
离心调速器是理解 harness 的一个绝佳意象。
它同时是传感器(感知转速)、控制器(调节阀门)和执行器(限制进气)——三体合一的反馈回路,完全不依赖对被控对象内部的认知。
今天的harness engineering其实做的也是同样的事:context engineering 调节输入,guardrails 约束输出,eval loop 闭合反馈,harness 本身则是包裹住黑箱的整个外部控制结构。
1956 年,另一位控制论先驱阿什比在《控制论导论》中提出了一条定律——必要多样性定律(Law of Requisite Variety):
一个控制器要有效控制一个系统,其可用响应的多样性必须大于或等于系统可能扰动的多样性。
翻译一下:工具箱得和问题一样丰富。
Ashby 这条定律在数学上是精确的,但它的工程含义非常直觉化——如果控制能力不足就会控制不住,但控制能力过剩就会控制不好。
一个只能转方向盘的司机开不了需要换挡的车(多样性不足);一个驾驶舱有 300 个按钮的飞机,如果飞行员不知道该按哪个,比按钮少的飞机更危险(多样性溢出)。
这条定律在 agent 工程中其实也会有一个非常直接的应用——skill/tool该怎么设计。
使用skills的同学很难不会发现,skills是必须要有的,但是也不能太多,太多了就会效果变差,这其实就是控制论的这个问题:
skill/tool太少 → agent 完不成任务,控制器多样性不够,任务就会失败。 skill/tool太多且没有约束 → agent 行为发散。agent 面对 200 个 skills不知道该用哪个,或者用了不该用的那个。多样性溢出了,效果变差。 Anthropic 在其 Agent SDK 的工程文档中,明确把 harness 定义为 agent 的 缰绳 ——包括 tools、prompts、file system、skills、sub-agents、memory。
Anthropic 的工程师在总结 harness 设计经验时写道: “harness 中的每一个组件,都编码了一个关于模型自身无法完成什么的假设” 。
从这样的角度来看,这些组件都在补偿 agent 能力的 variety 缺口,每一个 harness 组件都是一个多样性调节器。
当下时代,我们并不能够简单地把旧的控制论方法搬到新的对象上,这是因为,被控对象本身已经发生了变化。而这种变化,事实上破坏了控制论原本依赖的一些基本假设。
经典控制理论之所以能够建立稳定性分析,并不是因为系统简单,而是因为它依赖若干隐含的前提:观测通道是外生的、控制信号在语义上可以区分、系统的可达状态空间是有限或可建模的,在这样的前提下,反馈回路得以建立,但在大模型及基于它的agent 系统中,情况则有多不同。
首先改变的是观测的性质。
在经典控制模型中,观测可以包含噪声,但噪声被当作外部扰动处理,而不是系统内部生成的状态。传感器的输出通常被视为被控对象状态的函数,加上一些统计意义上的误差项,因此可以写成明确的观测方程。控制器可以不完全理解系统,但可以假设观测信号本身不是策略性的,也不会为了满足目标而主动改变含义。
而在 LLM 驱动的 agent 中,观测往往来自模型本身的生成结果。当系统依赖模型的输出判断任务是否完成,或者让模型评价自己的行为时,观测通道与执行通道实际上已经合并在一起。模型既是 actor,又是 observer,而生成模型本身就可能产生幻觉、过度自信或策略性回答。此时反馈回路不再建立在外生测量之上,而是建立在一个可能被目标函数影响的观测之上,控制系统失去了最基本的稳定基础。
Anthropic指出,agent在评价自己的作品时往往会倾向于给出更高的评价。 于是,在最新的harness应用实践中,Anthropic 放弃了让模型自评,将 Playwright MCP 交给独立的评估器(Evaluator),传感器的信号不再是生成的文本,而是真实的浏览器点击和数据库状态。
Cybernetics 来自希腊语 κυβερνήτης——舵手。Harness 的本义是马具、缰绳。
两个词都不是"锁链"。舵手不消灭海浪,而是借助海浪的力量航行。缰绳不压制马的力量,而是把它引向骑手想去的方向。