Agent 的共识与拜占庭容错
经典分布式系统 BFT 撞上随机的 LLM。2025-2026 年间出现了三个研究方向:CP-WBFT(arXiv:2511.10400)用一个置信度探针给每张票加权;DecentLLMs(arXiv:2507.14928)走无领导者路线,worker 并行提案、用几何中位数聚合;WBFT(arXiv:2505.05103)把加权投票和层级结构聚类(Hierarchical Structure Clustering)结合,把节点分成 Core 和 Edge。《Can AI Agents Agree?》(arXiv:2603.01213)给出的诚实经验结果是:即便只是标量一致,今天也很脆弱——单个欺骗性 agent 就能搞垮一个 Mixture-of-Agents。BFT 是必要的,但不充分。本课构建一个最小 BFT 协议,注入三种 agent 专属攻击(拜占庭谎言、谄媚从众、相关误差单一栽培),并测量每种共识变体如何应对。
类型: Learn + Build 语言: Python(标准库) 前置要求: Phase 16 · 07(心智社会与辩论)、Phase 16 · 13(共享内存) 预计时间: ~75 分钟
问题背景
你有 N 个 LLM agent,每个产出一个答案。它们意见不合。多数投票挑了错的那个,因为有两个 agent 相关(同一基础模型、同一训练数据、同一故障模式)。第三个 agent 碰巧以一种新颖方式出错——于是多数是个假多数。
现在加一个欺骗性 agent:它故意说谎。或者加一个谄媚 agent:它附和最后一个发言的人。在经典 BFT 里,假设是拜占庭节点占比 f < n/3、行为任意。2026 年的现实是:LLM 节点即便诚实也是随机的、跨模型相关的、还受彼此输出影响。你不能把它们当成独立的伯努利投票者。
经典 BFT(PBFT,1999)没错——它只是不完整。它处理任意的比特翻转。它处理不了「三个诚实 agent 共享了一个幻觉,因为它们共享训练数据」。本课从 PBFT 的基础出发,叠上三个 2025-2026 年的改造。
核心概念
经典 BFT 给了你什么
实用拜占庭容错(Castro & Liskov,OSDI 1999)容忍 f < n/3 个拜占庭节点。协议有三个阶段(pre-prepare、prepare、commit)和两个原语(签名消息、法定人数证书)。在 n >= 3f + 1 个诚实或恶意节点之间,就单个值达成一致。
这些保证很强,但假设:
- 故障独立。 拜占庭节点不协调。
- 诚实节点真的诚实。 诚实输出的正确性不在考虑范围;协议只对齐分歧。
- 问题有 ground-truth 答案。 就一个错误事实达成的共识也仍是共识。
LLM agent 违反这三条全部。两个跑同一基础模型的 agent 共享故障。一个「诚实」的 LLM 仍会幻觉。而在含糊的问题上,「真理」就是 agent 们定下的东西——没有外部 oracle。
三种 LLM 专属攻击
拜占庭谎言(Byzantine lie)。 一个 agent 输出一个故意错误的答案。如果 f < n/3,经典 BFT 能处理。
谄媚从众(Sycophantic conformity)。 一个 agent 投票前先读别人的答案,然后跟最后发言的人对齐。不恶意,但与嗓门最大的声音相关。经典 BFT 拦不住,因为这个 agent 通过了每一次签名检查。
相关误差单一栽培(Correlated-error monoculture)。 三个 agent 共享一个基础模型。它们幻想出同一个错误答案。多数是错的。经典 BFT 帮不上,因为这三个都「诚实地」一致。
2025-2026 年的应对
CP-WBFT(arXiv:2511.10400)—— 置信度探针加权 BFT。每个投票者给自己的答案附一个置信度探针(一个自报的概率,或一个独立校准模型的预测)。票权随置信度缩放。在完全图上报告 +85.71% 的 BFT 提升。缓解对象:谄媚从众(从众的 agent 对自己主动给出的立场往往置信度低)。
DecentLLMs(arXiv:2507.14928)—— 无领导者。worker agent 并行提案,evaluator agent 给提案打分,最终答案是打分后立场的几何中位数。在 f < n/2 时鲁棒。缓解对象:拜占庭谎言和相关误差(几何中位数对离群点鲁棒,会被拉向密集簇,而不是被模型偏置的平均值)。
WBFT(arXiv:2505.05103)—— 带层级结构聚类的加权 BFT。票权由响应质量加上一个从历史学到的信任分来分配。把 agent 聚成 Core 和 Edge;Core agent 必须先达成共识,Edge agent 跟随。缓解对象:可扩展性(Core 共识小而快)和部分地缓解单一栽培(Core 可以为多样性而选)。
经验研究:《Can AI Agents Agree?》(arXiv:2603.01213)
这篇论文跨多个前沿模型测量标量一致(LLM agent 就单个数值达成一致)。发现令人不适:
- 即便没有对手,LLM agent 在标量问题上的分歧率在许多基准上也高于 30%。
- 单个采用欺骗性人设的 agent 就能把 Mixture-of-Agents 共识从诚实基线拉偏 40 个百分点以上。
- 分歧率与模型多样性相关——异质集成比同质集成分歧更多(好处:误差不相关),但漂移也更慢(坏处:达成一致耗时更长)。
要点:BFT 给了你对齐输出的机器,但它不告诉你对齐后的输出是不是对的。要结合验证(Phase 16 · 08 角色专精)、多样性(Phase 16 · 15 辩论变体)、和 evaluator agent(Phase 16 · 24 基准)。
剥到最简的核心协议
LLM agent 的一轮最小 BFT:
1. 任务到达;每个 agent i 产出答案 a_i
2. 每个 agent 附上置信度探针 c_i,取值 [0, 1]
3. 聚合器从全部 n 个 agent 收集 (a_i, c_i)
4. 聚合器按语义簇分组(等价答案归一簇)
5. 聚合器为每个簇 C 计算权重:
w(C) = sum_{i in C} c_i
6. winner = 权重最大的簇,若 max > threshold * sum(c_i)
否则:重试或上报
7. 少数簇带溯源记录下来,供事后审计语义聚类这一步是 LLM 专属的转折。两个答案「这项研究报告了 4.2%」和「4.2% 提升」属于同一簇。朴素的字符串相等检查会漏掉它。生产里用一个便宜的 embedding 模型或显式归一化。
阈值调优
threshold 参数决定何时接受、何时重试。太低:你接受了弱多数。太高:你什么都不接受。经验范围:n=5-7 个 agent 时 0.5-0.67,n 更小时更高。低于阈值时,上报给人或换一个 agent 集成。
共识帮不上忙的地方
- 含糊问题。 如果问题没有 ground truth,共识就是一个意见。就这么称呼它。
- 复合问题。 「写代码并解释它」——两个答案。对每个独立投票。
- 对抗式多轮。 如果 agent 能观察之前的轮次并模仿(Du 2023 辩论),它们会开始不顾真理地互相附和。给轮数设界(通常 2-3)。
swarm-consensus-wave动手构建
code/main.py 实现:
AgentVoter—— 一段带 (answer, confidence) 的脚本化策略。MajorityVote—— 经典相对多数。CPWBFT—— 带语义聚类的置信度加权投票。DecentLLMs—— 对打分提案做几何中位数聚合。Scenario—— 在三种攻击模式下跑每个聚合器。
实现的攻击模式:
byzantine:一个 agent 高置信度地说谎。sycophancy:一个 agent 复制它看到的第一个答案,置信度也照抄。monoculture:三个 agent 以中等置信度共享一个错误答案(相关误差)。
运行:
python3 code/main.py预期输出:一张 (attack, aggregator) -> 最终答案的表,正确答案高亮。相对多数在单一栽培这一例上失败。CPWBFT 的置信度加权缓解谄媚。当单一栽培不足总体的一半时,DecentLLMs 的几何中位数会拉向诚实簇。
实际使用
outputs/skill-consensus-designer.md 为一个多 agent 集成设计共识协议:聚类方法、加权、阈值、以及对低于阈值轮次的上报策略。
拿去用
发布任何共识机制之前:
- 至少用上面的三种模式做攻击测试。 你的协议应该可预测地失败,而不是悄悄失败。
- 带溯源记录每个少数簇。 少数簇是你对相关误差的预警系统。
- 强制有界轮数。 没有「一直辩到达成一致」——那是在奖励谄媚。
- 把一致和正确分开。 共识输出交给一个 verifier;verifier 独立于集成。
- 监控一致率。 急剧上升意味着从众偏差;急剧下降意味着模型漂移。
练习
- 跑
code/main.py。确认相对多数在单一栽培攻击上失败,但当单一栽培置信度低于 0.7 时 CPWBFT 能部分缓解。 - 加第四种攻击模式:沉默弃权——一个 agent 拒绝回答(「我不知道」)。每个聚合器该如何对待弃权?实现你的选择。
- 把语义聚类从字符串归一化换成 embedding 相似度(用任意开源 embedding 模型)。谄媚攻击会怎样?
- 读 CP-WBFT(arXiv:2511.10400)。实现置信度探针校准步骤(一个独立校准模型核查每个 agent 自报的置信度)。测量在单一栽培场景上的准确率提升。
- 读《Can AI Agents Agree?》(arXiv:2603.01213)。复现一个简化的标量一致实验:三个 agent、一个标量问题、欺骗性人设 prompt。CPWBFT 或 DecentLLMs 抓得住它吗?
关键术语
| 术语 | 大家嘴上怎么说 | 它实际是什么意思 |
|---|---|---|
| BFT | 「拜占庭容错」 | Castro-Liskov 1999 协议,在 f < n/3 个任意故障下达成共识。 |
| Byzantine | 「任何坏行为」 | 一个能说谎、丢消息、悄悄失败的节点——除了安全崩溃以外什么都干。 |
| Confidence probe | 「你有多确定?」 | 附在一票上的自报或校准器预测的概率。 |
| Semantic clustering | 「同样的答案,不同的措辞」 | 在计票前把等价答案归组。 |
| Geometric median | 「鲁棒的中心」 | 使到各样本点距离之和最小的点。对离群点鲁棒,不像均值。 |
| Monoculture | 「同一个模型,同一批故障」 | agent 共享训练数据或基础模型时的相关误差。 |
| Sycophantic conformity | 「附和嗓门大的」 | 一个 agent 的票偏向最先/最响发言的人。 |
| Core/Edge | 「层级式 BFT」 | WBFT 的拆分:小的 Core 先达成共识,Edge 节点跟随。给延迟设界。 |
延伸阅读
- Castro & Liskov — Practical Byzantine Fault Tolerance (OSDI 1999) —— 基础
- CP-WBFT — Confidence-Probe Weighted BFT —— 按置信度给票加权
- DecentLLMs — leaderless multi-agent consensus —— 几何中位数聚合
- WBFT — Weighted BFT with Hierarchical Structure Clustering —— Core/Edge 拆分以给延迟设界
- Can AI Agents Agree? —— 标量一致的脆弱性与欺骗性人设攻击