跳转至

热力学第二定律的工程启示

控制论告诉你反馈回路是什么样的。熵告诉你反馈回路为什么存在。看起来是两个故事——但它们是同一个故事的两面。

前面几篇拆清了 agent 系统中熵增的具体形态:context rot 稀释信号,error cascade 放大噪声,两者耦合成正反馈回路,驱动 intent drift。但全景图只回答了"发生了什么",没有回答一个更根本的问题:在一个注定熵增的系统里,可靠的工程到底可不可能?

1948 年,Claude Shannon 给了一个出人意料的回答。

Shannon 第二定理

Shannon 在那篇奠基论文里证明了一件反直觉的事:在一条有噪声的信道上,只要传输速率低于信道容量 \(C\),就存在一种编码方案,使错误率可以被压到任意小。

这个定理的力量不在于它告诉你怎么编码。它告诉你的是一个存在性结论:对抗噪声不需要无限能量,只需要正确的结构。

噪声不可消除。信道容量是硬约束。但在约束之内,通过系统化的编码,你可以让信号穿过噪声抵达另一端,几乎完好无损。

需要澄清:agent 系统不是 Shannon 定义的离散无记忆信道。agent 的"噪声"有记忆、有结构、有时间相关性,error cascade 的超线性衰减正是噪声非独立的证据。Shannon 定理的具体数学不能直接套用。但定理揭示的结构性洞察(约束内存在操作空间,冗余和验证是释放这个空间的机制)适用范围远超它的原始证明。

两种编码

Shannon 的框架把通信编码分成两类,各自解决不同的问题。

维度 Source coding(信源编码) Channel coding(信道编码)
核心操作 去冗余 / 压缩 加结构化冗余
Harness 对应 Compaction, summarization Testing, validation, assertion
目标 用更少 token 保留核心信息 检测和纠正执行中的错误
缺失后果 Context 膨胀,注意力稀释 错误在级联中无人检测

Source coding(信源编码):去掉冗余。信源产出的原始信号里有大量可预测的部分:英语文本中字母 'e' 出现的概率远高于 'z',相邻像素的颜色高度相关。信源编码把这些可预测性利用起来,用更少的 bit 表示同样的信息。核心操作是压缩

Channel coding(信道编码):加上结构化冗余。信道会引入噪声,压缩后的纯信号在噪声面前极其脆弱,任何一个 bit 翻转都可能造成不可恢复的错误。信道编码反过来,刻意加入冗余:校验位、纠错码、重复传输。这些冗余不携带新信息,但它们让接收端能检测并纠正传输中的错误。核心操作是验证与纠错

两种编码做的事看起来相反——一个去冗余,一个加冗余——但它们在同一个系统里协作:先压缩到只剩本质信息,再用结构化冗余保护这些本质信息穿过噪声信道。

Harness 在做的事情,眯起眼睛看,和这个框架同构。

Compaction 是 source coding。Context 窗口逼近上限时,compaction 把对话历史、工具调用的原始返回值、中间推理的细节压缩成结构化摘要,去掉可预测的、重复的、过时的部分,保留核心信息。Factory 的锚定式摘要、Anthropic SDK 的内建 compaction、OpenAI 的 compact 端点,设计路径不同,底层操作同构:信源编码。

测试、类型检查、assertion、output validation 是 channel coding。它们不产生新功能。一个通过所有测试的程序不比没有测试的程序多一行业务逻辑。但它们加入了结构化冗余,让系统能检测 agent 执行过程中引入的错误。每一次 CI 跑通,就是一次纠错解码:信号穿过噪声信道,校验位确认它没有失真。

两种编码在 harness 里也是协作关系:compaction 把 context 压缩到本质,validation 保护这些本质在多步执行中不被噪声吞噬。缺了前者,context 膨胀到注意力稀释;缺了后者,错误在级联中无人检测。

反馈回路是抗熵机制

控制论那一章描述了四层嵌套的反馈回路:token 级、turn 级、session 级、alignment 级。当时的语言是控制论的:observer 观测偏差,controller 施加修正,负反馈对抗正反馈。

现在换一副透镜。

最快的是 token 级。自回归机制本身就是一个纠错回路:每生成一个 token,它立刻成为下一个 token 的输入条件。模型在毫秒尺度上用前序输出校正后续生成,本质上是时间常数极短的 channel decoder,对抗的是 token 分布层面的随机性。

往上一层,turn 级反馈在秒到分钟的尺度上运行。模型调用工具,工具返回真实世界的信号(文件内容、测试结果、编译错误),这些信号被拼回上下文,校正下一步决策。每一次工具调用是对外部世界的一次采样,每一次结果回传是纠错信号的一次注入。Output parsing、result validation、sanity check,都是这一层的纠错编码。

再往上,session 级。一个 session 结束后,CI 结果、用户反馈、进度文件的比对提供了更高层次的校验:不只是"这一步对不对",而是"整体方向对不对"。Context reset、prompt 模板切换、工具组合调整,这些纠错操作对抗的是跨多个 turn 累积起来的 drift。

最慢的是 alignment 级。人类偏好信号通过训练改变模型权重,周期以周和月计。它校正的不是某次输出的偏差,而是模型概率分布的系统性偏向。

四层回路,四个时间尺度,对抗的是同一件事:熵增。快的回路抓住小偏差在它放大之前修正;慢的回路抓住系统性偏向在它根深蒂固之前调整。控制论把它们描述为"嵌套的 Observer-Controller-Plant 回路";信息论把它们描述为"不同时间尺度上的纠错编码层"。两种描述指向同一个结构。

控制论和熵不是两个独立的理论框架。控制论描述了反馈回路的拓扑:什么连接什么、信号怎么流动、正负反馈怎么交织。熵和信息论解释了这些回路为什么必须存在,因为系统在默认方向上滑向无序,纠错是维持秩序的唯一机制。拓扑和动力学,结构和理由,同一枚硬币的两面。

Ashby 定律的信息论重读

Ashby 定律用控制论语言说的是:控制器的多样性必须不小于它要对抗的扰动多样性。V(C) >= V(D)。

信息论提供了另一种读法。

"多样性"度量的是什么?是系统可能状态的数量。而"可能状态的数量"的对数,正是熵。Ashby 的 variety 和 Shannon 的 entropy,说的是同一件事。

控制器的多样性 V(C),是控制器能发出的不同控制信号的数量,也就是控制信道的容量。扰动的多样性 V(D),是环境能施加的不同干扰的数量,也就是噪声信道的带宽。

V(C) >= V(D) 翻译成信息论的话就是:纠错信道的容量必须不小于噪声信道的带宽。 控制器需要有足够的信道容量来传输纠错信息,否则噪声的一部分就会"漏过"纠错网。这些漏过去的部分,就是系统的盲区。

回到 harness 的语境。Agent 系统面对的"噪声带宽"(context rot 的速率、error cascade 的放大系数、外部环境的不确定性)决定了 harness 需要提供多大的"纠错容量"。工具的种类和精度、验证机制的覆盖度、反馈回路的时间分辨率,这些构成了 harness 的纠错信道。Ashby 定律说的是:如果纠错信道的容量不够,噪声就会赢。

这也解释了控制论那一章最后的观察:简单 harness 为什么经常赢。不是因为简单本身有魔力,而是因为降低 plant 的有效多样性(结构化输出、工具约束、任务分解)等价于缩窄噪声信道的带宽。带宽缩窄之后,简单的纠错信道就足以覆盖。信道容量恰好匹配噪声带宽,不多不少。这是 Ashby 和 Shannon 同时认可的最优点。

不对抗,而是理解

热力学第二定律是宇宙级别的约束。系统的总熵不减少。这不是工程手段能绕过的限制。

但 Shannon 的证明揭示了一个操作空间:第二定律约束的是总熵,不是局部结构。在总熵增加的大背景下,你可以在局部建立和维持秩序——代价是在别处产生更多的无序。空调让房间降温,但它让室外更热。冰箱让食物保鲜,但它让厨房升温。Maxwell's demon 在理论上能分拣分子,但 Landauer 原理告诉你擦除 demon 记忆本身就要耗散能量。

Harness 做的正是这件事。Compaction 在 context 局部降低熵(压缩掉冗余和噪声),但它消耗 token 预算和计算资源。测试和验证在 agent 输出端检测并纠正错误,但它消耗执行时间和算力。每一层反馈回路都在局部对抗熵增,但维持这些回路本身就是额外的系统开销。

目标不是"零熵"。一个零熵的 agent 系统是完全确定的系统——没有不确定性,也没有灵活性。它退化成硬编码的脚本。

目标是熵增速率和纠错速率之间的可持续平衡。Context rot 的速率、error cascade 的放大速率,这是系统面对的熵增压力。Compaction 的频率和质量、validation 的覆盖面和精度、反馈回路的响应速度,这是系统的纠错能力。当纠错速率能持续跟上熵增速率时,系统在时间维度上维持着一种动态的有序,不是静止的平衡,而是持续地消耗能量维持低熵状态。

热力学管这叫耗散结构。远离平衡态的开放系统,通过持续的能量输入维持有序。

从 demon 到操作系统

三章的线索在这里汇合。

正交说清了两股力的分解:模型能力和 harness 工程,各做各的功。控制论给了骨架:反馈回路的拓扑、OCP 的角色分离、Ashby 的多样性约束。熵给了动力学:熵增为什么是默认方向、噪声怎么在系统中传播和放大、纠错编码为什么是维持秩序的唯一机制。

三个视角叠在一起,harness 的形象立体了。它是一个 Maxwell's demon——读取系统状态(observer),做出分拣决策(controller),把快分子和慢分子分开(维持低熵)。Compaction 是 demon 分拣上下文中的信号和噪声。Validation 是 demon 分拣正确输出和错误输出。反馈回路是 demon 的感知-行动循环。

但 demon 有一个问题:它是个体的、手动的、临场的。一个 demon 手动分拣分子,效率有限,规模不可扩展。

如果你把分拣规则写成制度——快分子走左通道、慢分子走右通道、每分钟清理一次、异常分子隔离审查——你就有了一个操作系统。

内存管理是制度化的 context management:页面置换策略、缓存逻辑、垃圾回收周期,不再需要每次手动判断什么该保留什么该丢弃。进程隔离是制度化的 error boundary,从架构层面让一个进程的崩溃不会传染到另一个。调度器把资源分配写进了优先级队列和时间片里,不再需要临场决定谁先执行。

从 demon 到 OS,是从个案判断到系统机制的跃迁。这就是 ch-04 要展开的故事。


延伸阅读

  • Prigogine, I. & Stengers, I. (1984). Order Out of Chaos: Man's New Dialogue with Nature. — 耗散结构理论的非技术性入门;文末"熵增速率和纠错速率之间的可持续平衡"正是耗散结构的核心思想

概念与实体

本文涉及的核心概念与实体,在项目知识库中有更详细的资料:

  • Context Compression — 本文将 compaction 定位为 source coding(信源编码),去冗余以维持信噪比
  • Generation-Verification Loop — 本文将测试和验证定位为 channel coding(信道编码),加结构化冗余以检测错误
  • Harness Engineering — 三章线索汇合处:harness 作为制度化的 Maxwell's Demon
  • Context Rot — 本文用 Shannon 信道容量公式统一解释 context rot 的三种退化机制
  • Error Cascade — 级联信道的噪声复合:本文从信道编码角度解释超线性衰减的结构性原因