一、引子
第一次接触"控制论"这个词,是大学《信息论》课本的脚注里。当时只觉得那是个挺浪漫的术语------cybernetics,希腊语 κυβερνήτης,意思是"舵手"。多年后我才意识到,这门学科真正想讲的是一件极其朴素的事: 任何系统要保持稳定,都得有人(或某个机制)拿着舵,根据偏差不断微调方向 。维纳在 1948 年把它正式立成一门学问,覆盖机械、生物、电子、社会------但它本质上只关心几件事:目标、感知、反馈、修正、稳态。
最近我重新捡起这个概念,是因为发现 AI 编码冒出来的"Harness Engineering"思潮,几乎一比一地在重演控制论的老故事------只不过这次,舵柄被装在了 LLM Agent 上。
二、一个被忽视的事实:代码库一直有反馈回路,只是太低级
仔细想想,软件工程从一开始就是控制论的拥趸:
- 编译器 :在语法层闭环------"代码合法吗?"
- 单元测试 :在行为层闭环------"功能对吗?"
- Linter / Formatter :在风格层闭环------"写法符合规范吗?"
这三类工具完全符合控制论的定义:它们都有传感器(检测)、执行器(报错/修复)、目标函数(通过/不通过),构成了一个标准的负反馈闭环。
但它们也都有一个共同的边界------ 只能处理"机械可判定"的属性 。
至于真正决定一个系统死活的问题:
- 这次改动是否破坏了架构分层?
- 这个抽象在 6 个月后会不会变成债务?
- 这个接口的命名是否暴露了不该暴露的实现细节?
- 这个修复是否只是补丁,没有触及根因?
------这些问题没有传感器,也没有执行器。它们悬空在那里, 只能靠人来感知、判断、修正 。Code Review 是唯一的"人形闭环",慢、贵、不可扩展、还经常因为评审者疲劳而失灵。
三、Transformer 之后,传感器和执行器同时出现了
2017 年那篇 Attention 论文之后发生的事,本质上是把"以前只有人能做的事"变成了一种可以被批量生产的能力。LLM 第一次让两件事同时成立:
- 它能在高层语义上"感知" ------能读懂"这段代码违反了 DDD 的边界"
- 它也能在高层语义上"动作" ------能把一个错位的接口重构到正确的层级里
这一刻, 控制论的反馈回路终于能在那些"重要的决策点"上闭合了 。Harness Engineering 的价值,就是认识到这件事,并把控制论里所有被前几代工程师们用过、试过、验证过的稳态设计套路------分层、边界、负反馈、二阶控制------一次性全部拉到 LLM Agent 身上。
四、Harness Engineering 的三层控制论结构
我把 Harness Engineering 拆成三个层次来理解,每一层都对应控制论里的一个经典概念。
第一层:闭环控制------把"写代码"变成自动调节系统
OpenAI 团队公开过他们的内部 Agent loop 大概是这样的:
人类输入意图(setpoint)
│
▼
Agent 生成代码(actuator)
│
▼
Lint / 测试 / 架构守卫执行(sensor)
│
▼
错误信号回流给 Agent(feedback)
│
▼
Agent 自我修正(control)
│
└──── 直到所有信号都收敛 ────┐
│
▼
收敛到目标
这是教科书式的负反馈控制系统。如果把里面的"Agent"换成"温度调节阀",把"测试"换成"温度计",这就是恒温器。
人类的角色变了。我们不再"敲代码"------我们 设计这个闭环 :决定哪些东西算 setpoint,决定哪些信号是 sensor,决定误差容忍度,决定什么时候要把系统拉出来人工干预。
第二层:硬约束 > 软建议------用机械边界代替"请你不要"
控制论里有个反直觉的真相: 减少自由度,比增加智能更能让系统稳定 。瓦特调速器之所以能工作,不是因为它"很聪明",而是因为它的机械结构物理上就只允许"转速高 → 阀门关小"这一种因果链。
Harness Engineering 把这个原则贯彻到了极致------ 让 AI 不可能越界,而不是请它别越界 :
- 目录结构强制分层: ui/ → service/ → domain/ → infra/
- Lint 规则禁止反向 import: ui 文件 import infra 直接红线
- 类型系统编码契约:核心域类型不允许被序列化层污染
- CI gate 一票否决:违规 PR 根本进不了主干
这些都不是"建议",是机械边界。Agent 在生成代码时哪怕"想"违规也做不到------因为它的输出会被立刻拒绝并附带具体错误信息,进入下一轮反馈。
控制论给这种设计的术语是: 用环境约束替代行为约束(constraint shaping) 。结果就是系统的稳态空间被人为收窄,AI 再"聪明"也只能在这个空间里跳舞。
第三层:二阶控制------让规则本身也能进化
这是 Harness Engineering 最有意思的地方,也是真正把它从"高级 CI"提升到"自组织系统"的地方。
控制论里的二阶(second-order cybernetics)讲的是: 不仅控制系统行为,还控制控制系统的规则 。Heinz von Foerster 的话糙理不糙------"一阶控制让系统稳定,二阶控制让系统进化"。
落到 Harness Engineering 上:
一阶 二阶 Agent 通过测试 人类把"Agent 上次犯的错"沉淀成一条新规则 Lint 检查代码风格 出现新的反模式 → 加新的 Lint rule CI 阻断坏 PR 后台有 Agent 定期扫描技术债、自动修复 测试套件验证行为 测试套件本身根据新发现的边界条件自动扩张
这条二阶回路的存在意味着: 这个系统每被使用一次,它的"自我控制能力"就强一点 。它不会因为暴露了更多场景而变得脆弱,反而会因为新场景被编码进规则而变得更稳。
控制论里有一个专门的词形容这种性质------ 反脆弱(antifragile) 。一个反脆弱系统接受冲击后不是恢复原状,是变得比之前更强。
五、《三体》童话中宽姨打的那把伞
控制论的图腾,就是瓦特那个带重锤的飞球调速器。在它出现之前,蒸汽机旁边必须站一个工人,盯着压力表手动开关阀门。这个工人很重要,他的判断决定了机器的死活。
调速器装上之后,这个工人没有失业------但他的工作变了。他不再拧阀门,他开始 设计更好的调速器 :怎么让响应更灵敏,怎么避免共振,怎么在高负载下不失稳。
设计调速器的工人,没有再回去拧阀门。不是因为他们做不到,而是因为这件事已经没有意义。
Harness Engineering 想做的事,本质上是同样的位移:
让程序员从"逐行写代码的工人"变成"设计代码生产闭环的控制系统工程师"。
这不是浪漫化叙事。这是控制论一个世纪以来反复发生的剧本------ 任何一个领域,只要它的关键反馈回路能被自动化闭合,从业者的工作就会上移一层 。
六、总结
Harness Engineering 是把"写代码"从一门 手工艺 ,重新定义成一项 控制系统设计 ------它不再追问"你能写多快",而是追问"你设计的这个反馈系统,能不能在没有你看着的情况下持续收敛到正确的状态"。
这件事不是 AI 时代的新发明。维纳在 1948 年就讲完了。我们只是花了 70 多年,等到了一种感知/执行能力足够强的"执行器",才让控制论第一次有机会进入软件工程的高层语义闭环。
所以,下次再有人问"AI 取代程序员了吗"------可以反问一句:
瓦特调速器普及之后,那个拧阀门的工人,算不算被取代了?