多 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 系统:
- 异步消息:LLM 什么时候读完消息、什么时候完成推理,没有时间上界
- Crash failure:Agent 可能 pkill 自己、可能跑进死循环、可能工具调用超时
结论:多 Agent 系统不可能同时保证:
- Safety(安全):产出符合规格的软件
- Liveness(活性):总能达成共识并终止
- Fault Tolerance(容错):有 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 就同一个设计达成一致
- 可用性:每个 Agent 都能独立工作并产出代码
- 分区容错:Agent 之间的通信可能断开(上下文窗口限制、消息丢失)
大多数多 Agent 系统选择了 AP(可用性 + 分区容错,放弃强一致性),然后用 git merge、code review 等弱一致性机制做后处理。
作者的解决方案方向
- 编舞式编程(Choreographic Programming):用一种专门的"编排语言"描述多 Agent 之间的交互协议
- 结合博弈论:Agent 之间有利益冲突(设计选择偏好不同),需要博弈论框架
- 新编程语言:当前用 YAML/JSON 描述工作流不够,需要图灵完备的语言
- 配套论文在写:作者团队正在写一篇关于 choreographic language + game theory 的论文
分析
这篇文章的价值:
- 用严格的分布式系统理论框架分析多 Agent 协调问题,不是泛泛而谈
- 三个经典定理的应用都很精准,不是生搬硬套
- "prompt 误解 = 拜占庭节点"这个类比很精彩
- 对"等模型更聪明就好了"这个观点的反驳有数学支撑
局限性:
- 形式化模型比较理想化(实际多 Agent 系统有很多启发式手段绕过这些限制)
- "等几个月"的观点虽然理论上不对,但实际上模型能力提升确实大幅缓解了协调问题
- 论文还没发,编舞式编程方案的实际效果待验证
- 没有讨论实际系统(如 Claude Code + subagent、Hermes Agent 的 delegate_task)是怎么"不完美但够用"地解决这些问题的
与 Jay 的关联:
- OpenClaw 的 sessions_spawn / subagents:本质就是在做分布式协调,子 Agent 之间的上下文传递就是异步消息
- Hermes Agent 的 delegate_task:MAX_DEPTH=2 + 独立迭代预算,就是在做简单的容错和活性控制
- 实际教训:Jay 之前用多 sub-agent 做研究时遇到过协调问题(context overflow、重复工作),这正是 FLP/拜占庭问题的现实体现
评分
| 维度 | 评分 (1-10) | 说明 |
|---|---|---|
| 思想深度 | 9 | 用分布式系统理论框架分析 AI Agent,视角独特且严格 |
| 实用性 | 5 | 理论价值高,但实际可操作的建议少 |
| 创新性 | 8 | "prompt 误解 = 拜占庭" + FLP/拜占庭/CAP 三连 |
| 写作质量 | 8 | 清晰、有 humor、形式化但可读 |
| 与 Jay 的关联 | 7 | 直接解释了 Jay 用 sub-agent 时遇到的协调问题 |
| **总分** | **7.4** | 理论上极其精彩,实践上还需要等待作者的论文和工具 |