心 智 七 篇 · Seven Mental Models
篇 III · 心智模型

Entropy
§ 01

熵是什么

你的桌面现在是什么样?

如果你和大多数人一样,答案是”比上周更乱”。不是因为你故意弄乱它——恰恰相反,你一直在整理。但乱是默认方向。

乱是默认方向 乱是默认方向

这个直觉比你以为的更精确。它背后有一个跨越物理学和信息论的数学结构,而这个结构和你每天在 LLM 系统里调的一个参数直接相关。

Boltzmann 的桌面

1870 年代,Ludwig Boltzmann 在思考一个问题:为什么热量总是从热的物体流向冷的物体,而不是反过来?

他的回答惊人地简洁:不是”不能”,是”极其不可能”。

回到你的桌面。假设桌上有五本书、三支笔、一杯咖啡。“整齐”的排列方式很少——书按大小排好,笔插在笔筒里,咖啡在右手边。但”乱”的排列方式有无数种——书可以散在任何位置,笔可以在任何角落,咖啡可能在键盘上方摇摇欲坠。

Boltzmann 把这个直觉写成了一行公式:

S=klnWS = k \ln W

SS 是熵,WW 是系统在宏观状态不变的前提下,微观上有多少种可能的排列方式。整齐桌面的 WW 小,熵低。凌乱桌面的 WW 大,熵高。

系统倾向于从 WW 小的状态走向 WW 大的状态,不需要任何外力推动——纯粹因为 WW 大的状态在可能性空间里占据的体积压倒性地更大。这就是热力学第二定律的统计学本质:不是一条禁令,而是一个压倒性的概率。

Shannon 的电话线

1948 年,Claude Shannon 在贝尔实验室研究一个完全不同的问题:怎么量化一条通信线路能传输多少信息?

他需要一个度量——“收到这条消息之前,我有多不确定?“不确定性越大,消息携带的信息量越大。“太阳明天会升起”几乎不携带信息;“明天有日全食”携带大量信息。

Shannon 写出的公式是:

H=ipilogpiH = -\sum_{i} p_i \log p_i

HH 是信息熵,pip_i 是第 ii 个可能结果的概率。当所有结果等概率时,HH 最大——你完全无法预测下一个符号是什么。当某个结果的概率趋近于 1 时,HH 趋近于 0——结果几乎确定,没有”意外”。

两个不同领域、不同年代的人,面对不同的问题,写出了结构相同的公式。

E.T. Jaynes 在 1957 年给出了统一框架:Boltzmann 的物理熵和 Shannon 的信息熵是同一个数学结构——关于”不确定性”或”可能状态数量”的度量——在不同领域的实例化。物理学里它度量的是微观状态的不确定性,信息论里它度量的是消息的不确定性。数学骨架是同一副。

据说,Shannon 在选择用”熵”这个词命名他的度量时,von Neumann 建议他这么做——“一来这个概念和热力学的熵确实有深刻联系,二来没人真正理解熵是什么,所以在辩论中你永远占上风。“这个轶事的真实性无从考证,但它流传甚广——大概因为它准确地捕捉到了”熵”这个概念的特质:数学上严格,直觉上滑溜。

Temperature:你每天都在调的熵

如果你用过任何 LLM API,你一定调过 temperature 参数。

这个参数的名字不是比喻——它和 Boltzmann 分布里的温度参数做的是数学上相同的事情。

LLM 在生成下一个 token 时,先为词表中的每个候选 token 计算一个分数(logit)。然后通过 softmax 函数把这些分数转换为概率分布。temperature 就是这个转换过程中的缩放因子。

temperature 接近 0 时,概率分布变得极度集中——得分最高的 token 几乎吃掉全部概率质量。输出近乎确定,熵最低。Shannon 公式里,HH 趋近于 0。

temperature 升高时,概率分布变得越来越平坦——各 token 之间的概率差距被压缩。输出越来越不可预测,熵升高。当 temperature → ∞ 时,分布趋近于均匀分布,HH 达到最大值。

你调 temperature,就是在直接控制输出分布的熵。这不是”好比”在调熵——分布的 Shannon 熵会随着 temperature 的变化单调变化,这是数学事实。

为什么 temperature 和熵单调相关

LLM 的 softmax 输出为 pi=ezi/T/jezj/Tp_i = e^{z_i / T} / \sum_j e^{z_j / T},其中 ziz_i 是 logit,TT 是 temperature。这和统计力学中的 Boltzmann 分布 pi=eEi/kT/Zp_i = e^{-E_i / kT} / Z 结构相同。当 T0T \to 0,分布退化为 argmax(零熵);当 TT \to \infty,分布趋向均匀(最大熵)。Shannon 熵 HH 在这个参数上严格单调递增——这不是经验观察,而是 softmax 函数的数学性质。

物理学里,温度高意味着粒子的微观状态更随机、更不可预测。LLM 里,temperature 高意味着输出的 token 更随机、更不可预测。Boltzmann 和 Shannon 在这里又一次相遇。

从桌面到 agent 系统

回到桌面的隐喻。

整洁桌面的状态数少,熵低。但你不需要做任何事就能让它变乱——你只需要”正常使用”它。每拿起一本书、每放下一支笔、每喝一口咖啡,都在把系统推向更高熵的状态。维持低熵需要持续投入能量:你得定期整理。

一个长时间运行的 agent 系统面对的是同样的力。上下文窗口在积累噪声,工具调用结果在引入不可预测的外部状态,多轮对话中的意图在漂移,错误在级联放大。这些不是 bug——它们是默认方向。

但”agent 系统的桌面在变乱”这句话,目前还只是一个直觉。要让它变成一个有工程指导意义的洞察,得先回答几个问题:agent 系统里的”桌面”具体是什么?什么叫”乱”?乱的速度有多快?有没有办法量化它?


延伸阅读

  • Shannon, C.E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379-423. — 信息论的创世论文;本文所有关于信息熵的讨论都从这里长出来,而且 Shannon 的写作清晰得不像数学论文
  • Jaynes, E.T. (1957). Information Theory and Statistical Mechanics. Physical Review, 106(4), 620-630. — 把 Boltzmann 和 Shannon 统一成同一个数学结构的关键论文;读完会理解为什么 temperature 参数的名字不是比喻

概念与实体

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

  • Scaling Laws — temperature 作为 softmax 缩放因子直接控制输出分布的熵,与 scaling 行为密切相关
  • Context Management — 文末预告的”agent 系统的桌面在变乱”,其工程应对在这里展开
  • Agentic Systems — 本文从物理学引出的熵概念,最终要落在 agent 系统的退化分析上
§ 02

Agent 系统里的熵

假设你的 agent 已经跑了两个小时。你回来看结果,发现它做的事跟你要的不太一样了。不是完全错——但方向偏了,细节走形了,有些决定让你摸不着头脑。

你试着回溯:哪里开始偏的?找不到一个清晰的转折点。它不是在某个时刻突然犯了一个大错,而是像一条河流,在你没注意的时候悄悄改了道——每一米的偏移都微不足道,两公里之后你已经在另一个山谷了。

这不是个例,是所有长时运行 agent 系统的共同命运。

理解它为什么发生,需要先拆清三种现象。

三种退化

Context rot——信号在稀释。

Agent 运行越久,它的上下文窗口里积累的东西越多:之前的对话、工具调用的返回值、中间推理的痕迹、文件内容的摘要。上下文越长,模型对每条信息的注意力越分散。Chroma 的实验精确测量了这件事:同样一条关键信息,放在 100 token 的上下文里能被准确提取,放在 10,000 token 的上下文里就开始打折扣。不是任务变难了,是信号被淹没了。

更麻烦的是,上下文里不只有有用的信息。那些跟当前任务”有点相关但不正确”的历史内容(之前探索过但放弃的方案、早期的错误假设、已经过时的中间状态),它们像杂讯一样干扰模型对真正重要信息的检索。Chroma 的实验发现,这种干扰项的干扰强度不均匀,而且不均匀性会随上下文长度增长而放大。

Error cascade——误差在放大。

多步任务中,前一步的小错会改变后续步骤面对的输入条件。第一步改错了一个函数签名,第二步调用这个函数时看到的是一个”看起来合理但语义错误”的接口。它不知道这个接口是错的。它按照错误的前提继续推理,产出一个建立在错误基础上的结果。

如果步骤之间完全独立,每步 95% 的成功率在十步后给你大约 60% 的成功率。几何衰减,不好但可预测。实际观测到的衰减比这更快。SWE-EVO 基准测试把单 issue 修复扩展到了多步软件演进:同一类任务,步数从平均不到 2 个 PR 增加到近 15 个 PR,即使是最强的模型也只有 25% 的解决率,而 64% 的任务在所有模型-框架组合下都无人解出。ReliabilityBench 的数据从另一个角度确认了超线性衰减的存在:步间错误正相关,一步错倾向于步步错。

这不是”做得多所以错得多”的平凡解释。这是耦合放大:每一步的错误不只是自己错了,它还在毒化下一步的输入。

Intent drift——行为在偏离意图。

你要它重构一个模块,它重构着重构着开始给不相关的文件加注释。你要它修一个 bug,它修着修着开始”顺便优化”周边代码。行为没有明显断裂,每一步看起来都有一定的道理,但总方向在悄悄漂移,最终产物跟你最初的意图之间出现了一段说不清的距离。

三种退化,三个名字。看起来是三个独立的问题。

但事情没这么简单。

不是三个问题

做一个反事实推理。

先拿掉 context rot。 假设模型对 100,000 token 的注意力跟对 100 token 一样均匀精确,没有任何信号稀释。Error cascade 会因此消失吗?不会。多步任务中前一步的错误仍然会改变后一步的输入条件,耦合放大照样发生。而只要 error cascade 存在,agent 的行为就会在错误积累中逐渐偏离原始意图。Drift 仍然在。

再拿掉 error cascade。 每一步都基于完全正确的前置状态运行,步骤之间没有任何耦合放大。Context rot 消失了吗?没有。上下文仍然在积累,注意力仍然在稀释,干扰项仍然在干扰。只要 context rot 存在,模型从上下文中提取关键信息的能力就在退化,agent 对”当前到底该做什么”的把握就会越来越模糊。Drift 仍然在。

最后,假设 intent drift 本身被完美消除了。 Agent 的行为始终精确对准原始意图,一步不偏。但 context rot 不会因此消失,上下文还是在膨胀、注意力还是在稀释。Error cascade 也不会消失,多步任务的耦合放大跟意图是否对齐没有直接关系。

三个反事实实验,结论清晰:

  • 消除 context rot → drift 减轻但不消失
  • 消除 error cascade → drift 减轻但不消失
  • 消除 drift → context rot 和 error cascade 照常发生

Context rot 和 error cascade 各自独立地导致 drift。反过来,drift 的消除不影响另外两者。Drift 是果,不是因。

因果结构

三者之间的关系不是并列的,是有方向的:

graph LR
  CR["Context rot"] -->|稀释信号| ID["Intent drift"]
  EC["Error cascade"] -->|放大噪声| ID
  EC -->|错误写入上下文| CR
  style CR fill:#f9f,stroke:#333
  style EC fill:#f9f,stroke:#333
  style ID fill:#ff9,stroke:#333

Context rot 和 error cascade 是两种独立的退化机制,各自通过不同的路径导致 intent drift。Drift 是它们的涌现效应——当上下文信号被稀释到一定程度,或误差累积到一定程度,agent 的行为就必然偏离意图。

但图里还有一条回路。

Error cascade 产生的错误(错误的工具调用结果、错误的中间推理、错误的代码修改),这些全部被写入上下文。它们变成了 context rot 里最危险的那类干扰项:跟当前任务高度相关但实际上错误的信息。模型在后续步骤中不得不在一个被错误信息污染的上下文里工作,注意力不仅被稀释,还被主动误导。

这条回路把两个独立的退化机制耦合成了一个正反馈系统:cascade 产生的错误加速 rot,恶化的 rot 让模型更容易在下一步犯错,更多的错误进一步污染上下文。ReliabilityBench 的数据为这个正反馈回路提供了间接证据:更复杂的 Reflexion 架构(反思再重试)在故障注入条件下反而比简单的 ReAct 架构退化更快,故障恢复率 67.3% vs 80.9%。机制正是回路:反思层从被污染的上下文中提取”教训”,这个教训本身就是错误的,然后用错误的教训指导下一步行动。反思的意图是好的,但它给正反馈回路加了一圈额外的迭代。

信息论的统一

三种现象各有各的名字和表现,但它们共享一个底层语言:信息论。

把 agent 系统看成一个通信系统。用户的意图是信号源,agent 的最终行为是接收端,中间经过的每一步处理(上下文的读取、推理的展开、工具的调用)都是信道。

Context rot 是信道噪声在增大。 上下文越长,信噪比越低。原始意图的信号在越来越多的无关信息和干扰项中被稀释。这跟通信工程里的基本问题一模一样:信道越长、噪声越多,接收端还原原始信号的能力就越弱。

Error cascade 是级联信道的噪声复合。 多步任务是多个信道串联。每个信道引入一点噪声,这些噪声不是简单叠加,而是以超线性的方式复合,因为前一个信道的输出噪声变成了下一个信道的输入噪声的一部分,扰动在传播过程中被放大。超线性衰减的实证数据(步间错误正相关、成功率比几何衰减预测更低)正是噪声复合效应的统计指纹。

Intent drift 是信号失真的可观测表现。 它不是一种独立的退化机制,它是接收端的测量:当你比较 agent 的最终行为和你的原始意图时,它们之间的偏差就是 drift。信道噪声(rot)和级联复合(cascade)是造成失真的原因,drift 是你看到的失真本身。

这个统一不只是修辞。既然三种现象本质上是信息通道中的噪声问题,对抗它们的逻辑框架就是一致的。理解信息如何在 agent 系统中退化,就掌握了分析所有退化的统一工具。


退化的全景看清了:两种独立的机制,一个涌现的效应,一条正反馈回路。但全景图不等于行动指南。要真正理解每种机制怎么在 agent 内部展开,需要走进去看细节。

Context rot 的三种退化机制具体是什么?它怎么从注意力稀释一步步走到信号丧失?这是下一个问题。而 error cascade 的耦合放大到底是怎么发生的、为什么比独立概率模型预测的更严重,是紧接其后的问题。


概念与实体

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

  • Context Rot — 本文识别的第一种独立退化机制,信号在上下文中被稀释的过程
  • Error Cascade — 本文识别的第二种独立退化机制,误差在步间耦合中被放大
  • Reliability Decay — 三种退化共同驱动的宏观效应:系统可靠性随时间单调下降
  • Agentic Systems — 本文分析的对象:长时运行 agent 系统的退化全景
  • Harness Engineering — 因果结构揭示了 harness 需要对抗的两条独立退化路径
§ 03

Context Rot:上下文腐化

2026 年,主流模型的 context window 已经到了 256K 甚至 1M tokens。容量听起来够用了,两小时的 agent session 产生的工具调用结果、文件内容、对话历史,塞进去绰绰有余。但问题不在于能不能塞下。问题是:当 context 堆积到第 500,000 个 token 时,模型对第 1,000 个 token 处那条关键指令的”记忆”,还剩多少?

直觉回答是”只要没超窗口大小就没问题”。

这个直觉是错的。

不是杯子满了,是水变淡了

大多数人对 context window 的心理模型是一个杯子:往里倒水,倒满了就溢出来,没满就没事。在这个模型下,context 管理的唯一问题是”别让它溢出”,所以 128K 比 32K 好,256K 比 128K 更好,1M 解决一切。

但 Chroma Research 在 2025 年对 18 个前沿 LLM 的系统性实验给出了不同的答案。他们发现:模型性能随输入 token 数增长而可测量地退化——不是到达某个阈值后突然崩塌,而是从一开始就在持续衰减。窗口还远未”满”,性能已经在下滑。

更准确的心理模型不是杯子,是冲茶。你有一杯浓茶:前几千个 token,信号强,模型对每个 token 都关注得很到位。然后你不断往里加水,但不加茶叶。液体的总量在增加,但浓度在稀释。杯子没满,茶已经淡得喝不出味道了。

Chroma 把这个现象命名为 context rot——上下文腐化。不是溢出,是衰变。

三种退化机制

Chroma 的实验设计很干净:保持任务难度不变,仅变化输入长度,从而隔离了”输入长度本身”作为性能退化的变量。这个控制让他们分离出三种独立的退化机制。

注意力稀释(Attention Dilution)。 Transformer 的自注意力机制让每个 token 关注所有其他 token。当 context 从 1,000 tokens 增长到 100,000 tokens,注意力预算被摊薄到 100 倍的 token 上。实验表明,当 needle(目标信息)和 question(查询)的语义相似度较低时,这种稀释的杀伤力尤其大。不是因为任务变难了(同样的 needle-question 配对在短 context 下表现良好),而是因为模型在茫茫 token 海中”找不到路”了。

干扰项干涉(Distractor Interference)。 Context 中与目标信息主题相关但内容不正确的 token(distractor)会主动误导模型。即使只有一个 distractor 也能拉低性能,四个 distractor 更严重。关键发现是:不同 distractor 的干扰强度不均匀,而且这种不均匀性随输入长度增长而放大。

这里还有一个反直觉的模型行为分化。面对 distractor 干扰,Claude 系列的策略是弃权,“找不到确定答案,我不回答”;GPT 系列的策略是自信回答,即使答案来自 distractor 而非 needle。一个选择了假阴性,一个选择了假阳性。同样的退化压力,不同的失败模式。

结构干扰(Structural Interference)。 这是三种机制中最违反直觉的。实验发现:逻辑连贯、结构完整的 haystack(背景文本)反而比随机打乱句子顺序的 haystack 更损害 needle 检索性能。

为什么?一种假说是注意力机制被结构化内容”吸引”了。一段逻辑连贯的文本内部有更强的局部关联(句子之间相互呼应、段落之间层层递进),这些关联吸走了本该分配给 needle 的注意力资源。打乱顺序后,局部关联被破坏,注意力反而更容易被 needle 捕获。

对 agent 系统来说这意味着什么?你精心格式化的工具输出、结构清晰的文件内容、逻辑连贯的对话历史。这些”好的工程实践”产生的结构化 context,在 attention 层面可能正在和你的核心指令抢夺注意力。工程师花力气让 context 更有条理,注意力机制却可能因此更难找到那条藏在里面的关键指令。

Lost-in-the-Middle 只是冰山一角

如果你关注过长 context 的研究,大概听说过 Liu et al. 2024 年的 “Lost in the Middle” 发现:模型对 context 中间位置的信息检索能力最差,呈现一条 U 型曲线:开头和结尾的信息被记住,中间的信息被遗忘。

这个发现是真实的,但它只描述了 context rot 的一个切面:位置效应。Chroma 的实验在 11 个 needle 位置上未发现显著的位置效应。他们观察到的退化不依赖于信息放在哪里,而是依赖于 context 有多长、里面有多少干扰项、内容的结构有多强。

换句话说,Lost-in-the-Middle 是 context rot 的一个特例,不是全貌。你可以通过把关键信息放在开头或结尾来缓解位置效应,但你无法通过调整位置来对抗注意力稀释、干扰项干涉和结构干扰。这些是更深层的退化源。

Maximum Effective Context Window

这些退化机制共同指向一个实用概念:Maximum Effective Context Window(MECW),即模型在特定任务上能维持可靠性能的实际 context 长度上限。

MECW 远小于标称窗口大小。Paulsen(2025)对真实世界任务的测试表明,部分前沿模型在输入仅约 100 tokens 时就开始出现任务失败,多数模型在 1,000 tokens 时已有明显的准确率退化,远低于它们宣称的上限。标称窗口不等于有效窗口,两者之间的差距可能是数量级的。

而且 MECW 不是一个固定数字。多步推理比单步检索对 context 质量更敏感,所以同一个模型在不同任务上的 MECW 可以差出几个数量级。context 里的信噪比在变化,噪声越多,MECW 越小。干扰项密度在变化,与目标相关但不正确的内容是最致命的噪声源。甚至内容的结构化程度也在起作用:结构干扰效应意味着组织良好的 context 未必比杂乱的 context 更友好。

Chroma 的实验使用的是极简任务:从文本中找到一个事实并回答一个问题。实际 agent 任务涉及多步推理、工具调用、状态追踪,复杂度远超 needle-in-a-haystack。合理的推断是:在真实 agent 场景中,MECW 比实验测得的还要小。

信道容量的视角

注意力稀释、干扰项干涉、结构干扰。三种机制共享一个底层结构。Shannon 的信道容量公式可以帮忙看清它:

C=Blog2(1+S/N)C = B \log_2(1 + S/N)

CC 是信道容量(单位时间内能可靠传输的最大信息量),BB 是带宽,S/NS/N 是信噪比。

把 context window 想象成一条信道。BB 对应窗口大小,即你能塞进多少 token。S/NS/N 对应 context 中信号 token 与噪声 token 的比率。CC 对应模型实际能从这个 context 中提取的有效信息量。

这个类比不是数学等价——context window 不是无记忆高斯信道,注意力机制不是线性解码器。但它捕捉到了 context rot 的结构性本质:

增大 BB 不能无限提高 CC,因为 S/NS/N 在同步下降。

每一轮 agent 循环往 context 里加入的东西(工具调用的原始输出、文件的完整内容、中间推理的碎片)大部分是噪声或弱信号。窗口在变大,但信噪比在恶化。Shannon 公式的 spirit 告诉我们:当 S/NS/N 趋向 0 时,无论 BB 多大,CC 都趋向 0。

这就是为什么”用更大的 context window 解决 context rot”是一个自我击败的策略。你加宽了管道,但泵入了更多的噪声。

也是为什么 Chroma 的三种退化机制在这个框架下显得自然:注意力稀释是 BB 增大时 S/NS/N 的被动下降;干扰项干涉是 NN 的主动增大(相关但错误的内容是最有效的噪声);结构干扰是信号被结构化噪声掩盖的特殊情况。


Context rot 能被”修复”吗?不是不可能,但主战场不在 harness 层。注意力机制的退化是模型架构的性质:怎么让 transformer 在长序列上维持均匀的注意力分配、怎么减轻 distractor 的干扰、怎么让结构化内容不”吸走”注意力——这些是模型研究者的课题,是 ch-01 里讲的那股力的范畴。从 Sparse Attention 到 Ring Attention 到各种长 context 架构创新,模型层面的进展一直在推高 MECW 的天花板。

但 harness 工程师面对的是当下已经部署的模型。在模型能力给定的约束下,harness 能做的是管理信噪比——决定什么进入 context、什么不进入、什么时候压缩、怎么压缩。这是信道工程,不是信道物理。

认清两层的分界,才不会在错误的层面用力。entropy 的故事从来都有两半:一半是无序在增长,另一半是你在约束内能做什么。当 context 在腐化的同时,agent 还在持续做决策、调用工具、产生输出——每一个被稀释的指令、每一次被干扰的检索,都可能让下一步偏离更远。退化不是静止的,它会流动。


延伸阅读

  • Chroma Research. (2025). Context Rot: How Increasing Input Tokens Impacts LLM Performance. — 本文的核心数据来源;18 个前沿模型的系统性实验,分离出注意力稀释、干扰项干涉、结构干扰三种机制
  • Liu, N.F. et al. (2024). Lost in the Middle: How Language Models Use Long Contexts. TACL. — 发现位置效应的经典论文;读完再读 Chroma 的实验,能看清 Lost-in-the-Middle 为什么只是 context rot 的一个切面
  • Paulsen. (2025). The Maximum Effective Context Window for Real World Tasks. — MECW 概念的提出者;真实任务上的测试表明标称窗口与有效窗口之间的差距可达数量级

概念与实体

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

  • Context Rot — 本文的主题:上下文随长度增长而退化的三种机制
  • Context Management — 文末指出 harness 能做的是管理信噪比,具体手段在这里
  • Context Compression — 对抗注意力稀释的工程手段之一,但压缩本身有信息损失的代价
  • Harness Engineering — 文中区分了”信道物理”(模型层)和”信道工程”(harness 层)两个战场
  • Chroma — 本文核心实验数据的来源机构
§ 04

错误级联

做一道数学题。

一个 agent 每步成功率 95%。连续 10 步。如果每步独立,总成功率 0.951060%0.95^{10} \approx 60\%

已经够让人警觉了——单步看起来很可靠的系统,十步之后只剩六成把握。但这个数字有一个前提。

真实世界里,这个数字比 60% 更低。有时低得多。

复利直觉

先把那个假设说清楚。0.95100.95^{10} 的计算暗含一个前提:每一步的成功概率互相独立。第三步是否成功,和第一步、第二步的结果无关。就像抛硬币,上一次正面朝上不影响下一次的概率。

在这个模型下,多步成功率是几何衰减:步数越多,成功率越低,但衰减速率是恒定的。每多一步,成功率乘以同一个系数。这就是复利的反面:复利让收益指数增长,几何衰减让可靠性指数收缩。

直觉上这已经够严酷了。95% 单步成功率,20 步之后只剩 0.952036%0.95^{20} \approx 36\%。50 步之后,0.95507.7%0.95^{50} \approx 7.7\%

但几何衰减是乐观估计。它是所有多步衰减模式中最温和的一种,因为它假设步与步之间没有任何信息传递。每一步面对的都是一个”干净的”问题,不受前序步骤的影响。

在真实的 agent 任务中,这个假设几乎从不成立。

不是概率相乘

独立假设的核心是:每一步面对的问题状态不受前序结果的污染。但在多步 agent 任务中,前一步的输出就是下一步的输入。步间不是独立的骰子——它们共享状态。

这种耦合通过至少三条通道破坏独立性。

接口污染。 一个代码修改 agent 在第一步改了函数签名。改错了,参数类型对了,但语义变了。第二步调用这个函数时,面对的是一个类型检查通过但行为错误的接口。第二步的 agent 没有任何信号表明这个接口有问题,它看起来完全合法。第二步的失败概率不再是独立的 5%,而是被第一步的错误抬高到了远超基线的水平。

测试遮蔽。 前一步引入了一个回归错误。后续步骤跑测试时,看到了失败。但 agent 分不清哪些失败是自己刚刚造成的、哪些是前一步遗留的。测试信号——本来是纠错的关键手段——被噪声淹没了。这不只是”更难成功”,而是”纠错机制本身被削弱了”。

上下文偏移。 在长时运行场景中,前序步骤的错误推理被写入了 context。后续步骤在这个被污染的 context 上推理。模型倾向于延续已有推理轨迹,而不是跳出来审视整条轨迹的正确性——具备扩展思考能力的新一代模型(如 o1、Claude extended thinking)在某些情况下能自发质疑先前推理,但这种能力并不稳定可靠,尤其在 context 被逐步污染的场景下。错误假设一旦进入 context,就像基因突变一样被复制到后续每一步。

三条通道,同一个效果:前一步的错误不只是让后一步多了一个独立的失败概率,而是改变了后一步面对的问题本身。

实证

理论推导说”比几何衰减更差”。差多少?

SWE-EVO (2025) 把代码修复从单 issue 扩展到了多步软件演进:同一个代码仓库上的连续修改,涉及多个 PR、跨文件依赖、递增的复杂度。结果很直接:任务涉及的 PR 数从易到难分别为 1.67、3.57、6.71、14.84,即使是最强的模型+框架组合也只解出了 25%,而 64% 的任务在所有组合下都无人解出。这些模型在单步修复任务(SWE-Bench Verified)上的成功率超过 70%。同一个模型家族,同一种代码修改能力,步数拉长之后表现断崖式下跌。

Beyond pass@1 (2026) 从另一个角度量化了这种超线性衰减。他们直接测量了步间错误的相关性,发现 ρ>0\rho > 0,即 agent 一旦走上错误路径,倾向于在错误中持续,而不是自发纠正。

模型短任务 pass@1几何衰减预测(长任务)实际(长任务)差距
Qwen3 30B75.8%~33%22.2%1.5x
Mistral Nemo28.6%12.1%2.4x

一种建模方式是:如果步间错误正相关(ρ>0\rho > 0),任务成功概率从独立假设下的 eϵTe^{-\epsilon T} 恶化为约 eϵTρϵ2T2/2e^{-\epsilon T - \rho \epsilon^2 T^2/2}——即关于步数 TT 的超指数衰减。具体的函数形式取决于建模假设,但定性结论是一致的:正相关把线性衰减推向了超线性。

ReliabilityBench (2026) 发现了一个反直觉的现象:在故障注入条件下,更复杂的 Reflexion 架构(反思后重试)反而比简单的 ReAct 退化更快,故障恢复率 67.3% vs 80.9%。机制是:反思层试图从错误的工具返回中提取”教训”,但这个教训本身就建立在错误数据上。用错误教训指导下一步,就是前面说的”上下文偏移”在架构层面的实例化。推理链越长,链上任意一环被扰动击穿后的放大效应越强。

这些测量基于特定时间点的特定模型版本——具体的数字会随模型迭代而变化。但数据指向的结构性结论是稳定的:多步 agent 任务的可靠性衰减是超线性的,根源在于步间错误正相关。这个结论不依赖于某一代模型的具体表现。

正反馈回路

错误级联不是一个孤立的过程。它和 context rot 形成了正反馈回路。

一步的错误污染了 context——错误的推理记录、错误的中间结果、错误的假设。被污染的 context 削弱了后续步骤的纠错能力,模型在噪声中推理,更容易犯错。更多的错误产生更多的 context 污染。更多的污染进一步削弱纠错。

这不是两个独立的退化过程碰巧同时发生。它们互相喂养。错误级联加速 context rot,context rot 加速错误级联。正反馈意味着一旦过了某个临界点,退化会自我加速,不需要外部扰动,系统自己就会越跑越偏。

GLM-4.5 Air 的数据是这个正反馈回路的直接指纹:短任务中只有 1% 的 episode 在第一个子任务前就终止,超长任务中这个比例升到 25%。早期终止率单调递增,说明前序步骤的累积错误不只是让后续步骤”更难成功”,而是让系统连”开始尝试”的能力都在丧失。

复杂度作为放大器

但级联的剧烈程度不是一个常数。它强烈依赖于步骤之间的耦合度。

Beyond pass@1 按任务领域做了分层测量,结果差异悬殊:

领域短任务成功率超长任务成功率衰减幅度
代码编辑 (SE)0.900.44-0.46
网络调研 (WR)0.800.63-0.17
文档处理 (DP)0.740.71-0.03

代码编辑的衰减是灾难性的,从 90% 掉到 44%,几乎腰斩。文档处理几乎不退化,从 74% 到 71%,差距在噪声范围内。

区别在哪?耦合度。

代码修改是严格依赖的多步任务。每一行改动都可能影响后续所有步骤的正确性。函数签名变了,调用方要跟着变;数据结构改了,所有读写这个结构的逻辑都要同步。一步的错误会沿着依赖链传播到每一个下游步骤。这正是接口污染和测试遮蔽的温床。

文档处理是弱依赖的。提取第三页的表格和提取第七页的段落之间几乎没有耦合。一个做错了,不影响另一个。步骤之间共享的状态极少,错误没有传播路径。

同样的模型,同样的步数,截然不同的衰减曲线。决定级联剧烈程度的不是步数本身,而是步骤之间的耦合度。步数只是给了级联发生的”机会”;耦合度决定了每次机会被”利用”的程度。

ReliabilityBench 的可靠性曲面从另一个维度印证了这一点:容错维度(R/λ\partial R / \partial \lambda)的退化梯度比鲁棒性维度(R/ϵ\partial R / \partial \epsilon)更陡。基础设施故障(超时、限流)比输入扰动(措辞变化)更容易触发级联,因为基础设施故障直接破坏了步骤之间的状态传递通道,是对耦合关系本身的攻击。


错误级联是默认方向——不需要你做错什么,只需要系统运行足够多的步骤、步骤之间存在足够强的耦合。

有没有办法对抗这个方向?物理学对这个问题有一个经典的思想实验:Maxwell’s Demon——一个能”看见”每个分子状态并做出精确干预的微型守护者。但 Maxwell 本人就知道,这个 demon 不是免费的。对抗熵增需要付出代价。代价的结构是什么?


延伸阅读

  • Beyond pass@1. (2026). A Reliability Science Framework for LLM Agent Systems. arXiv:2603.29231. — 直接测量步间错误相关性 ρ > 0,把”超线性衰减”从直觉变成了有数字的结论
  • SWE-EVO. (2025). Can LLM Agents Maintain a Clean Codebase? arXiv:2512.18470. — 把单 issue 修复拉长到多步软件演进,64% 的任务在所有模型-框架组合下无人解出
  • ReliabilityBench. (2026). Evaluating LLM Agent Reliability Under Production-Like Stress Conditions. arXiv:2601.06112. — 故障注入下 Reflexion 反而不如 ReAct 的反直觉数据,揭示”反思”可能给正反馈回路加速

概念与实体

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

  • Error Cascade — 本文的主题:多步任务中步间耦合导致的超线性可靠性衰减
  • Context Rot — 错误级联与 context rot 形成正反馈回路,互相喂养
  • Reliability Surface — ReliabilityBench 的可靠性曲面概念,量化容错与鲁棒性两个维度的退化梯度
  • Reliability Decay — 超线性衰减的宏观表现:可靠性随步数和耦合度加速下降
  • Agent Reliability Evaluation — 本文引用的三个基准测试属于这一评估体系
§ 05

Maxwell’s Demon

1867 年,James Clerk Maxwell 想象了一个小精灵。

这个精灵坐在容器中间一扇小门旁,能分辨气体分子的速度。快的放左边,慢的放右边。不需做功,热量自发从冷处流向热处。第二定律被打败了。

或者说,看起来是。

一百五十多年后,这个思想实验仍然是热力学和信息论交叉地带最锐利的思想工具之一。不是因为它”有趣”,而是因为它指向一个结构:信息与物理秩序之间的交换关系

而这个结构,是 harness 工程师每天在做的事情的精确描述。

Demon 的工作

先把 Maxwell 的设定说清楚。

一个绝热容器,中间有一面隔板,隔板上有一扇门。气体分子在两侧随机运动。Demon 坐在门旁,观察每个接近门的分子。如果左侧来了一个慢分子,开门放到右侧;如果右侧来了一个快分子,开门放到左侧。其他时候,门关着。

门旁的 demon 门旁的 demon

经过足够多的操作,左侧全是快分子(高温),右侧全是慢分子(低温)。一个均匀温度的系统被分成了冷热两半——熵降低了。

没有做功,没有消耗能量(门的质量忽略不计,开关门几乎不需要力)。第二定律说孤立系统的熵只能增加或不变。Demon 似乎违反了它。

这个悖论困扰了物理学界一百多年。

信息不是免费的

答案分两步到来。

1961 年,IBM 的 Rolf Landauer 提出了一个看似不起眼的命题:擦除1 bit 信息,至少产生 kTln2kT \ln 2 的热量。这不是工程限制,是物理定律。信息的销毁是不可逆的物理过程,必然伴随熵增。

1982 年,Charles Bennett 把 Landauer 的原理接回 Maxwell’s Demon。Demon 要分拣分子,就必须完成一个完整的信息处理循环:

  1. 测量:观察分子速度,获取信息
  2. 判断:根据速度决定开门还是关门
  3. 存储:记住已经做过的判断(否则无法持续操作)
  4. 擦除:当存储空间满了,必须清除旧记录才能继续工作

前三步可以设计成热力学可逆的——理论上不产生额外的熵。但第四步不行。Landauer 原理说得很清楚:擦除不可逆。每清除1 bit 记录,Demon 自身就至少向环境释放 kTln2kT \ln 2 的热量。

Demon 降低了容器内部的熵,但通过擦除信息增加了自身和环境的熵。总账算下来,第二定律毫发无损。

秩序不是凭空产生的。分拣的代价藏在信息处理的最后一步里。

前沿争议

Earman & Norton 等人长期质疑 Landauer-Bennett 解释的充分性,2025 年的新研究(arXiv:2503.18186)进一步论证测量环节本身(而非擦除)才是熵产生的关键步骤。这场争论尚未定论。但无论代价落在测量还是擦除上,核心结论不变:分拣信息不可能是免费的。 只是账单寄到哪一步的问题。

映射

Harness 工程师做的事情,和 Demon 做的事情,结构上是同一件事。这个对应不是比喻,是结构映射。

Demon 的世界Harness 工程师的世界
气体分子Token、工具输出、外部数据
分辨快慢Filtering、validation、routing
开关门选择性地向 context window 注入或拦截信息
存储记录Context window 本身
擦除旧记录Compaction、summarization

Demon 通过分拣分子来降低容器的热力学熵。Harness 工程师通过分拣信息来降低系统的信息熵,让 context window 保持高信号、低噪声,让 agent 的下一步行动尽可能确定和正确。

回到第一篇的框架:信息熵和热力学熵共享同一个数学骨架。在这个骨架上,Demon 的操作和 harness 工程师的操作占据的是同构的位置。

但同构意味着约束也同构。

分拣的代价

Landauer 原理在物理世界里的代价是热量。在 agent 系统里,代价的形式不同,但结构相同:每一种降低信息熵的操作都有不可消除的成本。

澄清一下:这里的映射是结构性的、信息论层面的,不是说 compaction 真的会发热。物理世界的代价是热耗散,agent 系统的代价是信息损失、计算消耗和复杂度增长。形式不同,结构同源。

Compaction 的代价是信息丢失。 压缩对话历史时,必然丢弃细节。Factory 的研究在 36,000 多条真实开发 session 消息上做了量化测试,发现一个刺眼的数字:所有压缩方案在 artifact tracking(文件变更追踪)上的得分只有 2.19 到 2.45(满分 5.0)。无论结构化摘要做得多精巧,压缩就是会丢东西。丢掉的信息如果后面需要,agent 就得重新获取,省下的 token 可能还不够付重新获取的账单。

Validation 的代价是延迟和 token。 每一次对工具输出的校验、对 LLM 回复的检查,都消耗算力和时间。校验越严格,代价越高。

Routing 的代价是复杂度。 把任务分发给不同的子系统或子 agent,需要维护路由逻辑、处理边界情况、管理状态同步。每多一层分拣,系统的认知负担就多一层。

这些代价不是实现不够好,它们是结构性的。正如 Demon 无法在不增加环境熵的前提下降低容器的熵,harness 工程师无法在不付出任何代价的前提下维护系统的秩序。

不存在免费的秩序维护。

控熵哲学

从桌面上的混乱开始,经过 Boltzmann 的微观状态计数、Shannon 的信息度量、temperature 参数的双重身份,到 Maxwell 的小精灵和它背后的信息代价——线索指向同一个结论。

熵增是默认方向。对抗熵增需要代价。代价不可消除,只能管理。

这就是控熵的全部哲学:不是追求零熵,而是在熵增约束下找到最优操作点。

零熵是幻觉。一个 agent 系统如果追求”永不出错""context 永不退化""信息永不丢失”,它付出的代价会迅速膨胀到无法承受——无限的 validation 层、无限的 context window、无限的冗余备份。这就像试图让桌面在使用过程中永远保持第一天的整齐:理论上可能,实践上你会把全部时间花在整理上,没有时间工作。

但放弃秩序也不行。一个不做任何信息分拣的 agent 系统——不压缩 context、不校验输出、不过滤噪声——会在熵增中迅速失去方向。Context rot 的研究已经量化了这一点:即使 context window 放得很大,堆积的信息本身就在降低模型的性能。

最优操作点在中间某处。它取决于任务特性、模型能力、可接受的失败率、可承受的延迟和成本。它不是一个固定的点,而是一个需要持续调整的平衡。

控熵不是一种技术,不是一个框架。它是一种设计思想:承认代价的存在,然后在约束中做选择。

Demon 不能消灭热力学第二定律。它能做的是理解代价在哪里,然后决定这笔账值不值得付。


如果控熵是哲学,那把这个哲学落到 agent 系统的全生命周期里(从 context 策展到错误恢复到长时运行),需要的就不再是一个 Demon 的直觉,而是一套系统的工程方法。


延伸阅读

  • Landauer, R. (1961). Irreversibility and Heat Generation in the Computing Process. IBM Journal of Research and Development, 5(3). — “擦除 1 bit 至少产生 kT ln 2 热量”——信息与物理之间的桥梁,整个 demon 悖论的解锁钥匙
  • Bennett, C.H. (1982). The Thermodynamics of Computation — A Review. International Journal of Theoretical Physics, 21(12). — 把 Landauer 原理接回 Maxwell’s Demon,完成了从测量到擦除的完整信息处理循环分析
  • Factory.ai. (2025). Evaluating Context Compression for AI Agents. — 36,000 条真实 session 上的压缩实验;artifact tracking 得分只有 2.19-2.45,量化了”分拣的代价”

概念与实体

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

  • Harness Engineering — 本文论证 harness 工程师与 Maxwell’s Demon 在结构上做的是同一件事:信息分拣
  • Context Compression — Demon 的”擦除”操作在 agent 系统中的对应:compaction 与 summarization
  • Context Management — Demon 的”开关门”操作:选择性地向 context window 注入或拦截信息
  • Guardrails — validation 和 routing 作为分拣机制的工程实现
  • Factory AI — 压缩代价的实证数据来源,36,000 条 session 的量化测试
§ 06

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

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

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

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

Shannon 第二定理

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

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

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

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

两种编码

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

维度Source coding(信源编码)Channel coding(信道编码)
核心操作去冗余 / 压缩加结构化冗余
Harness 对应Compaction, summarizationTesting, 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 — 级联信道的噪声复合:本文从信道编码角度解释超线性衰减的结构性原因