多 Agent 软件开发是一个分布式系统问题(AGI 也救不了你)

> 一句话版本:一个分布式系统研究者用 FLP 不可能定理、拜占庭将军问题、CAP 定理三个经典结果证明:多 Agent 协作写代码本质上就是分布式共识问题,不管 AI 多聪明都逃不掉这些数学限制。

项目信息
来源https://kirancodes.me/posts/log-distributed-llms.html
作者Kiran(kirancodes.me)
身份程序验证(verification)研究者
类型博客文章(有配套论文在写)

核心内容

论文在反驳什么?

一种常见观点认为:"多 Agent 协调问题等几个月让模型更聪明就好了。"

作者的回应:分布式系统的数学限制不随模型能力改变。你让 Agent 变聪明 10 倍,共识问题还是共识问题。

形式化建模

自然语言 Prompt 的本质

$$\Phi(P) := \{ \phi \mid \phi \text{ 是程序} \land \phi \text{ 符合 prompt } P \}$$

关键洞察:自然语言本质上是不精确的,同一个 prompt 可以对应多个合法的程序实现。除非你把 prompt 写到代码级别的精确度(那就不是多 Agent 了,变成单 Agent)。

多 Agent 开发 = 共识问题

$$C(\phi_1, \cdots, \phi_n) := \exists \phi \in \Phi(P), \forall i, \phi_i \text{ refines } \phi$$

多个 Agent 并行产出代码组件 φ₁, ..., φₙ,它们必须就"同一个设计方向"达成一致。一个 Agent 选了 callback 风格的 API,另一个就必须围绕这个选择来设计——这就是共识。

三个经典不可能定理的应用

1. FLP 不可能定理 → 安全性 vs 活性 vs 容错

FLP(1985):在异步系统中,只要有 1 个节点可能 crash,就不存在确定性协议能在有限时间内保证所有非故障节点达成一致。

作者论证 FLP 的假设完全适用于多 Agent 系统:

结论:多 Agent 系统不可能同时保证:

实际观察:很多多 Agent 工作流中出现 Agent A 做了设计决策 → Agent B 回退 → A 又改回来 → 循环,这就是活性失败的体现。

进阶洞察:Chandra-Toueg 证明了如果有 failure detector(能检测其他节点是否存活),FLP 的限制可以突破。类比:给 Agent 一个 ps | grep claude 的工具检查其他 Agent 存活状态,理论上能改善共识能力。

2. 拜占庭将军问题 → Prompt 误解容忍度

拜占庭定理(1982):n 个节点中有 f 个拜占庭(任意行为)节点,只有当 n > 3f+1 时才能达成一致。

作者将"误读 prompt 的 Agent"类比为拜占庭节点:它不是故意搞破坏,但效果上和拜占庭节点一样——在按错误的协议行事。

结论:如果 n 个 Agent 中超过 (n-1)/3 个误解了 prompt,软件共识就不可能达成。这是一个硬上限,不会因为模型更聪明而改变。

3. CAP 定理 → 一致性 vs 可用性 vs 分区容错

CAP:分布式系统最多同时满足两个(一致性 C、可用性 A、分区容错 P)。

在多 Agent 场景:

大多数多 Agent 系统选择了 AP(可用性 + 分区容错,放弃强一致性),然后用 git merge、code review 等弱一致性机制做后处理。

作者的解决方案方向

分析

这篇文章的价值

局限性

与 Jay 的关联

评分

维度评分 (1-10)说明
思想深度9用分布式系统理论框架分析 AI Agent,视角独特且严格
实用性5理论价值高,但实际可操作的建议少
创新性8"prompt 误解 = 拜占庭" + FLP/拜占庭/CAP 三连
写作质量8清晰、有 humor、形式化但可读
与 Jay 的关联7直接解释了 Jay 用 sub-agent 时遇到的协调问题
**总分****7.4**理论上极其精彩,实践上还需要等待作者的论文和工具