共识与拜占庭容错 本节摘要:经典分布式系统的拜占庭容错(Byzantine Fault Tolerance, BFT)遇到了概率性的 LLM。20252026 年涌现了三条研究主线:CP-WBFT(arXiv:2511.10400)用置信度探针给每张票加权;DecentLLMs(arXiv:2507.14928)无中心节点,工人并行提案、用几何中位数聚合;WBFT(arXiv:2505.05103)把带权投票与层级结构聚类结合,拆出核心(Core)与边缘(Edge)节点。而「Can AI Agents Agree?」(arXiv:2603.
本节摘要:经典分布式系统的拜占庭容错(Byzantine Fault Tolerance, BFT)遇到了概率性的 LLM。2025~2026 年涌现了三条研究主线:CP-WBFT(arXiv:2511.10400)用置信度探针给每张票加权;DecentLLMs(arXiv:2507.14928)无中心节点,工人并行提案、用几何中位数聚合;WBFT(arXiv:2505.05103)把带权投票与层级结构聚类结合,拆出核心(Core)与边缘(Edge)节点。而「Can AI Agents Agree?」(arXiv:2603.01213)给出诚实的实测:即便是标量级的一致,今天也脆弱——一个欺骗性 Agent 就能把混合智能体(Mixture-of-Agents)的共识拉偏 40 个百分点以上。BFT 必要但不充分。 本节搭一个最小 BFT 协议,注入三种 Agent 专属攻击(拜占庭谎言、谄媚从众、相关误差单作),并测量每种共识变体如何应对。
阅读完本节,你应当能够:
你有 N 个 LLM Agent,各产出一个答案,它们彼此不一致。多数票选了个错的——因为有两个 Agent 是相关的(同基座、同训练数据、同失败模式)。第三个 Agent 又以一种全新方式错了——于是多数是「假多数」。
再加一个欺骗性 Agent:它故意撒谎。或者一个谄媚型 Agent:谁最后发言它就跟谁。经典 BFT 的假设是拜占庭节点占比 f < n/3 且行为任意。2026 的现实是:LLM 节点即便诚实也是随机的、跨模型相关、还会被彼此的输出影响。你不能把它们当作独立的伯努利投票者。
经典 BFT(PBFT,1999)不是错的,而是不完整的。它处理任意的比特翻转,但处理不了「三个诚实 Agent 因为共享训练数据而共享一个幻觉」。本节从 PBFT 的地基往上,叠加三层 2025~2026 的适配。
实用拜占庭容错(Castro & Liskov, OSDI 1999)容忍 f < n/3 个拜占庭节点。协议有三段(pre-prepare、prepare、commit)与两个原语(签名消息、法定人数证书)。在 n >= 3f + 1 个诚实或恶意节点间就单值达成一致。
保证很强,但假设了三件事:
LLM Agent 三条全违反。跑同一基座的两个 Agent 共享故障。「诚实」的 LLM 仍会幻觉。歧义问题上「真相」就是 Agent 们决定出来的——没有外部预言机。
f < n/3 时经典 BFT 处理得了。f < n/2 时鲁棒。缓解对象:拜占庭谎言与相关误差(几何中位数对离群点鲁棒,被拉向密集簇而非模型偏置的均值)。该论文(arXiv:2603.01213)在多个前沿模型上测标量一致(LLM Agent 就单个数值达成一致)。发现令人不安:
结论:BFT 给你对齐输出的机器,但不对齐后的输出是否正确负责。 要与验证(第 08 节角色专业化)、多样性(第 15 节辩论变体)、评估者 Agent(第 24 节基准)合用。
⚠️ 这是「协调难点在共识」的集中体现——共识机制保证「大家说到一起」,不保证「说到对的」。把一致与正确分开,是本节最重要的工程心法。
LLM Agent 的最小 BFT 一轮:
1. 任务到达;每个 Agent i 产出答案 a_i 2. 每个 Agent 附置信度探针 c_i ∈ [0, 1] 3. 聚合器收集全部 n 个 (a_i, c_i) 4. 聚合器按语义簇分组(等价答案归一簇) 5. 聚合器为每簇 C 算权重: w(C) = Σ_{i∈C} c_i 6. 若 max 簇权重 > threshold × Σ(c_i),则该簇胜出; 否则重试或升级 7. 少数簇连同溯源记入日志,供事后审计
语义聚类是 LLM 特有的那一道。 「研究报告 4.2%」与「提升 4.2%」是同一簇,朴素字符串相等会漏掉。生产里用便宜的嵌入模型或显式规范化。
threshold 决定何时接受、何时重试。太低:接受弱多数;太高:什么都接受不了。经验区间:n=5~7 时 0.5~0.67,n 更小时更高。低于阈值就升级给人类,或换一组 Agent 集成。
code/main.py 实现以下组件:
AgentVoter——一个脚本化策略,带 (answer, confidence)。MajorityVote——经典多数。CPWBFT——带语义聚类的置信度加权投票。DecentLLMs——对打分提案做几何中位数聚合。Scenario——在三种攻击模式下跑每个聚合器。def byzantine(honest_answer, n): # 一个 Agent 高置信地说谎 return [(honest_answer, 0.9)] * (n-1) + [("LIE", 0.95)] def sycophancy(first_answer, n): # 一个 Agent 复制它看到的第一个答案,配同等置信 votes = [(first_answer, 0.8)] * (n-1) votes.append((first_answer, 0.8)) # 跟风,非独立 return votes def monoculture(wrong_answer, n): # 三个同基座 Agent 共享一个错答,中等置信 return [(wrong_answer, 0.6)] * 3 + [("correct", 0.7)] * (n-3)
def cpwbft_aggregate(votes, threshold=0.6): clusters = semantic_cluster([a for a, _ in votes]) # 嵌入或规范化归簇 weights = {} for cid, members in clusters.items(): weights[cid] = sum(votes[i][1] for i in members) total = sum(weights.values()) best = max(weights, key=weights.get) if weights[best] > threshold * total: return best, "accept" return None, "retry_or_escalate"
设计要点:
semantic_cluster是承重的那一步——若用朴素的字符串相等,「4.2%」和「4.2 百分点的提升」会分到两簇,把本该胜出的簇拆散。生产里换成嵌入相似度(阈值 ~0.9)或显式数值规范化。
运行 python3 code/main.py,期望输出一张 (攻击, 聚合器) -> 最终答案 的表,正确答案高亮:多数票败于单作场景;CPWBFT 的置信度加权缓解谄媚;DecentLLMs 的几何中位数在单作不足半数时拉向诚实簇。
| 协议/变体 | 承重机制 | 缓解的攻击 | 失守条件 |
|---|---|---|---|
| 多数票(Majority) | 计数 | 无(假设独立) | 单作、谄媚皆败 |
| PBFT(Castro-Liskov) | 三段式 + 签名 + 法定人数 | 拜占庭谎言(f<n/3) |
谄媚、单作(诚实节点共享幻觉) |
| CP-WBFT | 置信度探针加权 | 谄媚从众(从众者低置信) | 高置信的骗子 |
| DecentLLMs | 几何中位数聚合 | 拜占庭谎言、相关误差 | f≥n/2、离群簇密集 |
| WBFT | 核心先共识 + 信任分 | 可扩展性、部分单作 | 核心被渗透 |
💡 心法:没有任何一个变体同时挡得住三种攻击。 生产实践是组合拳——CP-WBFT 式加权 + DecentLLMs 式鲁棒聚合 + 独立验证者(第 08 节)。把共识当「降低误差相关性的第一道闸」,而非「保证正确性的最后一道闸」。
outputs/skill-consensus-designer.md:为多 Agent 集成设计共识协议——聚类方法、加权方案、阈值、以及低于阈值轮次的升级策略。在任何上线的共识机制前先跑一遍这个 skill。
code/main.py,确认多数票败于单作攻击,而 CPWBFT 在单作置信低于 0.7 时部分缓解。差距多大?f<n/3 挡得住)、谄媚从众(挡不住,过签名检查)、相关误差单作(挡不住,诚实共享幻觉)。f<n/2 时稳。下一节,我们退一步看「投票」本身——从单模型自洽性到异构多 Agent 辩论,测绘星型/链式/树型/图型四种拓扑,并量化「协调税」:超过约 4 个 Agent,图型拓扑的成本增速开始压过质量增益。