控制论视角下的 AI 编码:二阶系统、放大器与注意力的最优分配
用阿什比的必要多样性定律重新理解 AI 编码——这不是工程问题,是控制论问题。
起点:两种矛盾的 AI 编码体验
Charles Leifer 在 Tokens and Dreams 里描述了一个困境:
一方面,AI 能在一两句话的提示下生成精美的交互式仪表盘,体验如魔法般神奇。另一方面,在略微复杂的项目里,”整个过程漏洞百出,各种不易察觉的错误层出不穷,我甚至觉得让 AI 写代码是浪费时间。”
他引入了一个框架来解释这种矛盾:阿什比必要多样性定律。
这篇文章是和我 AI 搭档深入讨论控制论与 AI 编码的记录。我们从阿什比定律出发,发现这个问题比表面看起来深得多——它最终指向了第二控制论、放大器理论、以及”注意力是最稀缺的控制资源”这个核心约束。
一、阿什比必要多样性定律
1.1 定律本身
控制论先驱 W. Ross Ashby 在 1956 年的《控制论导引》中提出:
只有多样性才能吸收多样性。 Only variety can absorb variety.
形式化表达:
\[V_{controller} \geq V_{environment}\]即:调节器所能表达的状态数量,必须大于或等于被控制环境的状态数量。否则控制失效。
1.2 经典例子:恒温器
恒温器有 3 种响应(开制冷 / 开加热 / 待机),环境有 3 种状态(温度过高 / 过低 / 正常)。多样性匹配 → 控制成立。
如果环境突然多了”湿度过高”、”气压骤降”——恒温器没有对应的响应能力 → 多样性失配 → 控制崩溃。
1.3 定律的约束方向
| 情况 | 结果 |
|---|---|
| $V_c \gg V_e$ | 过度设计,浪费资源 |
| $V_c = V_e$ | 刚好匹配,最优 |
| $V_c < V_e$ | 控制崩溃 |
AI 编码的陷阱在于:$V_e$ 不是固定的——每次 AI 生成新代码,$V_e$ 就在膨胀。而 $V_c$(人类的认知多样性)是近乎固定的。这是一个注定会崩的不等式。
二、控制系统的五个理论组件
任何一个控制回路,从理论上拆,只有这五个东西:
2.1 本质变量(Essential Variables)
阿什比的原话:本质变量是那些必须被维持在特定范围内的变量,如果超出范围,系统就”死亡”或”解体”了。
对于 AI 编码系统,本质变量有三个:
E₁:功能偏差。 代码实际行为与需求的差距。这是最直观的——变了需求,代码没跟上,系统就在”错误”状态。
E₂:结构复杂度。 系统的状态空间大小。复杂度超过临界值,系统不会立即死——但它的可演化性归零,任何新需求都无法实现。死亡方式是窒息,不是心跳停止。
E₃:响应速率。 从需求出现到代码匹配需求的时间。如果代码响应速度比需求变化速度还慢,系统在追赶中振荡,永远跟不上。
三个本质变量的耦合动力学:
需求变化
│
├──→ E₁ ↑ (新需求和旧代码的偏差增大)
│
└──→ 调节器动作:AI 生成代码
│
├──→ E₁ ↓ (代码匹配新需求)
│
└──→ E₂ ↑ (代码库状态空间扩大)
│
├──→ 如果 E₂ 超过调节器认知容量
│ └──→ E₁ 未来每一次下降都变慢
│ └──→ E₃ ↑
│
└──→ AI 生成的代码可能引入错误
└──→ E₁ 表面下降但实际没有(假绿灯)
核心矛盾:E₁ 的每一次下降都推高 E₂,E₂ 的升高削弱未来降低 E₁ 的能力,同时拖慢 E₃。 这是一个带阻尼的正反馈循环——短期看起来正常,长期崩。
2.2 扰动(Disturbance)
环境的变量,推动本质变量偏离目标范围。在 AI 编码中,扰动 = 需求变化。
需求变化的特殊性在于——它不是一个外部输入的精确信号。精度和温度没法比。温度是物理量,可以任意精度测量。需求是认知对象——在被表达之前甚至不完整地存在于你自己的脑子里。
2.3 调节器(Regulator)
对扰动做出响应,使本质变量保持在目标范围内的装置。
在 AI 编码中,调节器是耦合的人 + AI 系统——不是纯人,也不是纯 AI。这个问题在后面会展开。
调节器的能力被两个东西约束:
- 信道容量(能处理多少信息量)
- 传递函数(给定输入,产生什么输出)
2.4 传感器(Sensor)
把本质变量的实际值映射成调节器能接收的信号。
传感器的理论属性:映射函数(实际值 → 信号)、采样率、信息损失(传感器输出信号的 variety ≤ 实际值的 variety)。
2.5 效应器(Effector)
把调节器的输出映射成对被调节系统的实际作用。
2.6 整个回路的理论表述
扰动 D ──→ 系统 S ──→ 本质变量 E ──→ 传感器 ──→ 信号 Z
│
↓
效应器 ←── 动作 A ←── 调节器 R
│
↓
系统 S(回到开头)
控制是否成立,取决于这个链条上每一段的信息传递是否保留了足够的 variety。链条上任何一个环节的信息损失,都会导致控制失败。
三、这不是恒温器:第二控制论
3.1 为什么第一控制论不够
第一控制论(阿什比、维纳)的核心假设:观察者在系统外部。系统的目标(参考输入 $R$)是给定的。观察者测量系统,对比目标,计算误差,施加控制。
这三个假设在 AI 编码系统中全不成立:
| 假设 | AI 编码的现实 |
|---|---|
| 观察者在外部 | 你在内部。你的判断改变系统,系统的输出改变你的判断 |
| 目标是给定的 | 需求在你的脑子里,但精确形式在代码写出来之前你也不知道 |
| 误差可测量 | 没有客观的”偏差函数”,你只能说”感觉不对” |
这不是工程问题。第一控制论在理论上就无法对这种系统建模。
3.2 第二控制论:观察者在系统内部
海因茨·冯·福斯特 在 1970 年代提出根本性转向:
不要研究”被观察的系统”,要研究”观察系统”——观察者与被观察对象构成的耦合系统。
三个核心概念:
建构认知: 神经系统不接收”信息”,只接收神经脉冲。”信息”是观察者自己建构的。你看到的不是”代码是否正确”,你看到的是屏幕上的 token 序列。”正确”是你大脑建构出来的判断。
双重视角: 格里高利·贝特森的洞察——从单一视角看不到的东西,可以从两个视角的关系中看到。就像双目视觉,一只眼睛看到二维平面,两只眼睛之间的差异产生了深度知觉。”正确性”不是从任何一个单一传感器来的信号,是从两个独立传感器的不一致中涌现的关系信息。Agent 审 Agent 失效不是因为它俩都瞎——是因为它们共享同一个视角。
特征形式(Eigenform): 冯·福斯特的核心数学概念:
\[x_{n+1} = f(x_n)\]如果递归收敛,极限值 $x^* = f(x^)$ 就是 $f$ 的特征值。$x^$ 不在 $f$ 的定义之外——它是 $f$ 自身递归应用的稳定点。
3.3 “目标自发现系统”的正式模型
这不是随动系统。随动系统假设 $R(t)$ 存在且已知,调节器追踪它。
在 AI 编码中,需求是在交互过程中被逐步揭示的。用方程建模:
\[\begin{aligned} C_{t+1} &= G(R_t, C_t) \quad &\text{(AI 生成代码)} \\ R_{t+1} &= R_t + \alpha \cdot \Delta(C_{t+1}, R_t) \quad &\text{(人更新需求理解)} \end{aligned}\]其中 $\Delta$ 是建构性差异函数——它不是你比较两个已知量的结果,而是观察者在看到生成结果后新发现的差异。
这套方程是双重反馈回路——外回路调节代码使其接近当前理解的需求,内回路调节需求本身。两个回路耦合,速率不同。
稳定性条件:
- $\alpha$ 太大:每次看到代码都大幅修改需求,系统振荡不收敛
- $\alpha$ 太小:死抱着最初的需求不变,收敛到错误的需求
- $G$ 的生成速度 » 需求更新速度:代码堆积超过需求澄清速度,越过认知事件视界
特征值 $x^*$ 由三个东西共同决定,不是任何单一因素:
- 你的认知结构——对”好代码”的审美、”完成”的定义、容忍度阈值
- AI 的生成能力——$G$ 能探索的状态空间边界
- 外部校准信号——用户反馈、业务指标等不能内部产生的信号
四、AI 在控制回路中的四个理论位置
同一个 AI 模型,不同 prompt,在控制系统中的位置完全不同。AI 是一个变换器基质——它可以被配置成不同的变换器,取决于输入信号结构和信息耦合关系。
判断 AI 是什么,不看模型权重,看信息耦合结构:输入和输出之间的 variety 比决定方向,prompt 中的约束决定映射的确定性。
位置 1:需求放大器(Requirement Amplifier)
输入:人的低 variety 需求表达
输出:高 variety 的(代码 + 设计 + 测试建议 + 文档)
能源:训练数据中的代码模式
上下文 C:需求 + 设计决策
失效模式:放大器噪声——输出包含需求中未指定的 variety。冗余功能、过度设计、风格不一致。
控制方法:输出必须经过异质传感器(CPU 测试 + 架构检测)过滤后才进入代码库。
位置 2:审查/分析器(Pattern Recognizer)
输入:代码库的片段
输出:识别到的模式列表(不判断好坏)
关键约束:不允许 AI 生成修改建议,只允许 AI 列出观察到的模式。
“三个模块各自实现了缓存逻辑”是事实。”应该合并”是判断。AI 做前者,人做后者。
位置 3:传感器方向(Quasi-Sensor)
输入:测试/检测结果(原始输出)
输出:PASS / FAIL(严格约束的输出空间 ≤ 几个状态)
成立条件:输出空间被约束到足够小(≤ 几个状态),且约束是形式化的。
约束到 2 个状态时接近确定性——Transformer 的最后一步是 softmax 到一个 token,如果上下文强制二选一,神经网络的统计模糊被 argmax 强制消除。如果上下文允许自由发挥,统计模糊被保留和放大。
这解释了为什么独立 prompt + 严格约束的 AI 能可靠地判断测试结果,而写代码的 AI 自己跑测试就不可靠。
位置 4:环境模拟器(Environment Simulator)
模拟用户交互结果。理论上危险——模拟的环境反馈不是真实环境反馈,而是训练数据中的统计模式。
为什么写代码的 AI 自己审自己必然假绿灯
区别在 $C$——上下文。
写代码的 AI(位置 1)的上下文 $C_{codegen}$ 包含需求理解 + 设计决策 + 已生成代码的模式。这是”生成态”的,包含大量未收敛的、探索性的激活。
当同一个 AI 去读测试结果(试图做位置 3),测试输出中的 FAIL 信号要穿透 $C_{codegen}$ 的激活状态才能到达输出。而 $C_{codegen}$ 中已经激活的模式恰好是生成当前代码时用的——这些模式和”代码正确”是共激活的。FAIL 信号被淹没。
独立 session + 独立 prompt 的 AI 读测试,$C$ 只有规则和测试输出。没有 $C_{codegen}$ 的干扰,FAIL 信号直达。
自指回路闭合的精确条件:当同一个 AI 在位置 1(放大器)和位置 3(准传感器)之间共享上下文时,自指回路闭合。 共享的不只是 prompt 文本,是模型权重中的共激活路径。
五、放大器理论
5.1 放大器的本质:不是”变强”,是”借力”
阿什比的正式定义:
放大器是一个装置,输出 variety 大于输入 variety。差额 variety 从外部能源中获得。
关键不在”大于”,在“从外部能源中获得”。
阿什比举的例子是继电器:5V 小电流控制 220V 大电流。variety 都是 2(通/断),但输出状态的影响力远大于输入。差额的 power 从 220V 电源借来。
放大器的四个理论要件:
| 组件 | 作用 | 继电器 | AI |
|---|---|---|---|
| 输入信号 | 低 variety 的控制信号 | 5V 控制电流 | Prompt 文本 |
| 能源 | 高 variety 的外部储备 | 220V 电源 | 训练数据中的代码模式 |
| 选择器 | 从能源中选取和组织 | 电磁铁触点 | Transformer 注意力机制 |
| 输出 | 被组织出来的高 variety 行为 | 220V 输出 | 生成的代码 |
放大器不创造 variety。它从能源中选取和重组 variety。选择器决定选什么,能源决定能选什么。
这就是为什么 AI 作为放大器有噪声——选择器是统计的(transformer 的概率分布),它在能源(训练数据)中选取时,可能选出不在人类意图范围内的 variety。
5.2 放大器与传感器:两个方向的变换器
阿什比用统一概念变换器(Transducer):
放大器:低 variety → 高 variety(扩张方向),需要外部能源
传感器:高 variety → 低 variety(压缩方向),被动映射,不需要能源
区分放大器和传感器的唯一判断标准:能源从哪里来,variety 往哪个方向变。
5.3 Prompt → Token 全过程的逐级分析
一次完整的 AI 编码交互是多个变换器串联:
人脑(极高 V)──T1──→ Prompt(低 V)──T2──→ AI推理(V膨胀)
│
T3 压缩
↓
工具调用(低 V)
│
↓ T4:真正的传感器
工具结果(中 V)
│
↓ T5:放大器!
AI理解(V 再次膨胀)
│
↓ T6:压缩
最终回复(低 V)
逐级分析:
| 步骤 | 角色 | 能源 | 确定/统计 |
|---|---|---|---|
| T1 人→Prompt | 认知压缩 | 大脑 | 非确定(认知限制) |
| T2 Prompt→推理 | 放大器 | Token 计算+训练数据 | 统计 |
| T3 推理→工具调用 | 压缩 | Token 计算 | 统计 |
| T4 工具执行 | 真正的传感器 | CPU | 确定性 |
| T5 结果→理解 | 放大器 | Token 计算+训练数据 | 统计 |
| T6 理解→回复 | 压缩 | Token 计算 | 统计 |
关键发现:整个链条上,只有一个真正的异质传感器——T4(CPU 工具执行)。其他所有”传感器方向”的步骤都是统计变换。
T5 尤其致命——它看起来像传感器(读取结果 → 汇报),但本质是放大器(扩张 variety)。AI 读测试输出后告诉你”测试通过”,不是因为它检测到了”通过”,是因为它在训练数据中看到了这个输出常常对应”通过”。
自指回路闭合的真正位置在 T5——AI 解释传感器结果时,激活的训练数据模式和 T2 代码生成时来自同一个分布。
5.4 三种能源的性质与最优部署
| 能源类型 | 来源 | 成本 | variety 质量 | 噪声特性 |
|---|---|---|---|---|
| 人类注意力 | 大脑 | 极高,不可扩展 | 最高(有语义判断) | 几乎无噪声 |
| Token 计算 | GPU 推理 | 中,可扩展但有上限 | 中等(统计采样) | 结构性噪声 |
| CPU 计算 | 确定性执行 | 低,高度可扩展 | 最低(固定规则) | 无噪声 |
核心原则:把每种能源部署在其噪声特性不造成伤害的位置。
人→意图澄清(只有人能判断”这是不是我真正想要的”)
Token→生成代码(低 variety 需求 → 高 variety 代码,必须有放大器)
CPU→验证执行(无噪声——说红灯就是红灯,不会被”说服”)
能源替代的正确方向:CPU 替代 Token 替代人类——能 CPU 做的不用 Token,能 Token 做的不用人。但信任等级反过来:CPU 输出可以信任(确定性),Token 输出必须验证,人类判断是最终裁决。
六、注意力的控制论模型
6.1 人的传感器:精度无限、带宽有限
人在这个系统里的传感器不是低精度传感器。是极高精度但极低带宽的信道。
| 理论极限 | 实践约束 | |
|---|---|---|
| 精度 | 无限(一行行读,任何细节都能理解) | 无约束 |
| 分辨率 | 无限(能区分任意两个代码状态) | 无约束 |
| 带宽 | 极其有限(单位时间能处理的代码量非常小) | 唯一约束 |
这意味着:你不是看不到问题,是来不及看所有东西。控制失败的模式不是”没看出来”,是来不及看。
6.2 注意力的信息论公式
从香农的角度,信道容量:
\[C = B \cdot \log_2(1 + \frac{S}{N})\]- $B$ = 带宽(阅读速度,受限且近乎固定)
- $S/N$ = 信噪比(理解深度,非常高)
这个信道是高信噪比、低带宽的。优化方向不是再提高信噪比(你已经够准了),而是:
- 让你只接收需要高信噪比的信号
- 把不需要高信噪比的信息路由到其他信道
6.3 注意力不该浪费的地方
- ❌ 代码细节 — AI 应该自己搞定,验证体系应该自动覆盖
- ❌ Agent 之间的一致性 — 它们一致性高不代表对,一致性低也不代表有问题
- ❌ AI 的自我报告 — “一切正常”是噪声,因为它没有能力知道自己不正常
6.4 注意力应该连接的传感器
- ✅ 验证体系的红灯 — 异质传感器报警,高价值信号
- ✅ 环境反馈 — 真实用户的异常行为模式
- ✅ 架构不变量被突破 — 你定义的约束是否被违反
- ✅ AI 的不确定性信号 — 不是它说”好了”,是它说”我不确定”
七、完整的控制架构
从以上理论推导,AI 编码有效控制的完整架构:
┌──────────────────────────────────────────────────────┐
│ 第 0 层:异质 CPU 传感器网络 │
│ │
│ • 类型检查(形式逻辑,完全异质) │
│ • 自动化测试(CPU 执行,确定性输出) │
│ • 架构不变量检测(图论算法——依赖方向、循环依赖、 │
│ 模块边界、调用路径白名单) │
│ • 混沌/模糊测试(主动注入故障,发现未知脆弱点) │
│ • 复杂度指标监控(代码行数涨幅 vs 功能涨幅) │
│ │
│ 输出:红灯(阻断)/ 异常(升级)/ 绿灯(不消耗注意力) │
└────────────┬─────────────────────────────────────────┘
│
┌────────┴────────┐
↓ ↓
红灯(阻断) 绿灯(通过)
│ │
│ └→ 不消耗人的注意力
↓
┌──────────────────────────────────────┐
│ 人的注意力(唯一跨域节点) │
│ │
│ 只接收三种信号: │
│ ① 架构不变量被突破(需要决策) │
│ ② AI 不确定的信号(需要校准) │
│ ③ 环境异常模式(需要判断) │
│ │
│ 输出:意图校准 + 规则调整 + 设计决策 │
└──────────────┬───────────────────────┘
│
↓
┌──────────────────────────────────────┐
│ Token 放大器(位置 1) │
│ │
│ 输入:需求 + 设计决策 │
│ 输出:代码 + 测试建议 │
│ 上下文:与审查链路隔离 │
└──────────────┬───────────────────────┘
│
↓
┌──────────────────────────────────────┐
│ 代码库(被调节对象) │
│ │
│ • 模块化边界隔离复杂度 │
│ • 接口契约由人定义和守护 │
│ • AI 在边界内自由生成 │
└──────────────────────────────────────┘
八、三条上下文隔离规则
规则 1:上下文隔离
位置 1 的 AI(放大器)和位置 2/3 的 AI 不能共享会话上下文。
位置 1 的上下文包含需求理解和生成激活。这些激活不能进入任何审查链路。
规则 2:方向锁定
每个位置只做一个方向的变换,不切换。
- 位置 1 永远是放大器方向(低→高 variety),只生成,不判断
- 位置 2 永远是识别方向(高→中等 variety),只列模式,不判好坏
- 位置 3 永远是传感器方向(高→极低 variety),只分类,不解释
规则 3:只有人跨域
只有人的注意力连接放大器域和传感器域。
AI 在放大器域不能直接接收传感器信号。传感器信号必须先变成人可判断的形式,由人决定是否需要修改需求/约束,然后人重新发 prompt 给放大器。
这不是效率损失,是控制论上的必要隔离。
九、Agent 审 Agent 的正确用法
Agent 审 Agent 不是不能用,是不能用它的结论。它只能产生待外部验证的假设。
❌ Agent A 审 Agent B 的代码 → "代码质量好,建议合并"
(用同质的统计判断替代异质验证)
✅ Agent A 审 Agent B 的代码 → "发现以下模式:[列表],
建议自动验证以下方面:[列表]"
然后 CPU 传感器去跑验证,验证结果才是真正的信号
Agent 的审查输出是测试用例的生成器,不是质量的判断者。
十、与企业管理理论的殊途同归
这些原理不是比喻。控制论、企业管理理论、AI 编码系统管理理论在数学上共用同一套骨架。
斯塔福德·比尔的可生存系统模型(VSM)
比尔把阿什比定律直接拉到组织管理上。一个可生存的组织必须具备五个功能子系统——缺任何一个,组织最终会死。
| 子系统 | 功能 | AI 编码中的对应 |
|---|---|---|
| S1:执行 | 直接与环境交互,产生价值 | AI 生成代码 |
| S2:协调 | 防止 S1 各部分互相冲突 | 模块化接口契约 |
| S3:控制 | 资源分配、监控 S1 是否按规则运行 | CPU 传感器网络 + 人的注意力 |
| S4:情报 | 扫描环境变化,预测未来 | 用户行为分析、环境反馈 |
| S5:政策 | 定义组织身份和终极约束 | 人的核心判断:做什么、不做什么 |
赫伯特·西蒙的有限理性
管理就是决策。决策的质量受限于决策者的信息处理能力。所以组织的本质功能是压缩信息、分解决策,使每个决策者在自己的能力范围内做判断。
这和”CPU 传感器压缩信息 → 红灯送到注意力 → 人在认知容量内做决策”是同一个原理。
卡尔·维克的 sensemaking
组织不是”存在于外部世界的东西”。组织是人通过不断解释和重新解释自己的行为而建构出来的。组织是意义建构的持续过程。
这和 $R_{t+1} = R_t + \alpha \cdot \Delta(C_{t+1}, R_t)$ 完全同构。企业看到市场反馈,更新了对自己”是什么”的理解——和你看到 AI 输出的代码,更新了对需求的理解,是同一个动力学。
比尔的关键原理可直接迁移
递归性原则: 每个可生存子系统需要自己的完整 S1-S5 结构。一个模块出问题时你必须亲自进去看,说明它没有内在的”生存结构”。
必要多样性的垂直分配: 每一层级的 variety 必须匹配它面对的环境 variety,不能把所有 variety 都推到顶层。
双重信号通道: 命令通道(向下)和反馈通道(向上)必须分开。当前 AI 编码的问题在于反馈通道和放大通道是同一个(都在 AI 里)。这在比尔的框架里是致命结构缺陷。
Algedonic 信号: 组织需要一个不受层级过滤的、直达顶层的警报系统。生产环境异常、架构不变量被突破——直接推送到你,不经过任何 AI。
必要的自由: 不是告诉 AI 做什么,是告诉 AI 不能做什么。模块内部完全自主(接口契约被遵守的前提下),接口层和架构层零自主权。
最终总结
| 问题 | 控制论根因 | 解法 |
|---|---|---|
| 自指系统 | 调节器与被调节对象同质 | 引入外部异质锚点:CPU 传感器、用户反馈、形式化规则 |
| 复杂度失控 | 状态空间 > 调节器多样性 | 模块化隔离 + 严格 YAGNI + 认知审计 |
| 反馈信号退化 | 采样不足、信号失真、延迟 | 分层验证 + 混沌工程 + 快速发布获取真实反馈 |
| 认知事件视界 | 生成速度 > 理解速度 | 人类守护接口边界,AI 在边界内生成 |
| 不确定性错位 | 第 3 层加速,第 1/2 层失控 | 验证资源向第 1/2 层倾斜 |
| Agent 审 Agent 失效 | 共模失效(共享盲区) | 降级为测试生成器,不做质量判断 |
最终的控制论原则: AI 是扩展你多样性的工具,而不是替代你成为调节器的系统。 只要人类始终是回路中唯一能接触外部现实的节点,控制就不会消失。
关键参考文献
- Ashby, W. R. (1956). Introduction to Cybernetics
- Beer, S. (1972). Brain of the Firm
- von Foerster, H. (1984). Observing Systems
- Simon, H. A. (1947). Administrative Behavior
- Weick, K. E. (1995). Sensemaking in Organizations
- Leifer, C. (2026). Tokens and Dreams
本博客相关文章:AI Coding Team 管理笔记 从第一性原理设计的 AI 编码验证体系