分布式系统诊断的基准测试
DistDebug-Bench
当分布式系统发生故障时,你的 agent 能找到导致故障的代码吗?
DistDebug-Bench 为 agent 提供来自 11 个生产分布式系统的 120 个真实故障。故障暴露的位置与成因相距很远,而报告、日志和堆栈跟踪只显示了实际发生情况的一部分。
排行榜
| 模型 | 代码块覆盖率 95% CI | 代码块精确率 | 每次运行的 Token 数 |
|---|---|---|---|
| GPT-6 Astra | 72.6 [65.7, 79.3] | 46.0 | 130K |
| Claude Opus 5.5 | 71.8 [65.2, 78.2] | 49.0 | 149K |
| GPT-5.5 | 70.0 [63.1, 76.7] | 37.3 | 474K |
| GPT-5.4 | 66.6 [59.7, 73.4] | 41.6 | 687K |
| GPT-5.3-Codex | 63.2 [55.9, 70.4] | 42.7 | 417K |
该基准测试
找到成因。用代码说明。
每个事件都是生产系统问题跟踪器中一个真实且已关闭的 bug,最常见的是逻辑、并发或错误处理方面的缺陷。agent 会拿到报告、其日志或堆栈跟踪,以及修复前的仓库,并且必须指出导致故障的代码块。大多数编码基准测试评的是补丁;DistDebug-Bench 评的是诊断本身,对照人工标注的因果代码。
11 个系统,120 个事件
| 系统 | 它是什么 | 语言 | 事件数 |
|---|---|---|---|
| Ray | AI 计算引擎 | Python, C++ | 21 |
| Elasticsearch | 搜索与分析引擎 | Java | 19 |
| ZooKeeper | 协调服务 | Java | 18 |
| TiKV | 事务型键值存储 | Rust | 11 |
| HDFS | 分布式文件系统 | Java | 10 |
| Kubernetes | 容器编排 | Go | 10 |
| etcd | 一致性键值存储 | Go | 8 |
| Kafka | 事件流平台 | Java, Scala | 8 |
| Ignite 3 | 分布式数据库 | Java | 7 |
| HBase | 宽列存储 | Java | 5 |
| Ignite | 内存数据库 | Java | 3 |
这些事件为何困难
68% 的报告从未点出作为成因的方法
63% 没有来自项目内部可用的堆栈跟踪
46% 需要不止一个代码块才能说明
5 行是标注代码块的行数中位数,因此答案必须精确
agent 的不足之处。
代码块覆盖率是指诊断所触及的标注根因代码块所占的比例;代码块精确率是指它指出的代码中属于成因部分所占的比例。
定位差距
找到文件只是开始:在这些配置中,当 agent 必须找出因果代码块时,覆盖率会下降 13–22 个百分点。
- Mini-SWE-Agent: GPT-6 AstraMini-SWE-Agent 86.1 72.6 13.5 pp gap
Mini-SWE-Agent: GPT-6 AstraMini-SWE-Agent
- Mini-SWE-Agent: Claude Opus 5.5Mini-SWE-Agent 84.5 71.8 12.7 pp gap
Mini-SWE-Agent: Claude Opus 5.5Mini-SWE-Agent
- Mini-SWE-Agent: GPT-5.5Mini-SWE-Agent 86.2 70.0 16.2 pp gap
Mini-SWE-Agent: GPT-5.5Mini-SWE-Agent
- Mini-SWE-Agent: GPT-5.4Mini-SWE-Agent 81.0 66.6 14.4 pp gap
Mini-SWE-Agent: GPT-5.4Mini-SWE-Agent
- Mini-SWE-Agent: 5.3-CodexMini-SWE-Agent 79.9 63.2 16.7 pp gap
Mini-SWE-Agent: 5.3-CodexMini-SWE-Agent
- Mini-SWE-Agent: MiMo v2.5 ProMini-SWE-Agent 80.5 62.0 18.5 pp gap
Mini-SWE-Agent: MiMo v2.5 ProMini-SWE-Agent
- Mini-SWE-Agent: Kimi K2.6Mini-SWE-Agent 79.2 62.0 17.2 pp gap
Mini-SWE-Agent: Kimi K2.6Mini-SWE-Agent
- Mini-SWE-Agent: MiMo v2.5Mini-SWE-Agent 79.7 61.1 18.6 pp gap
Mini-SWE-Agent: MiMo v2.5Mini-SWE-Agent
- Mini-SWE-Agent: 5.2-CodexMini-SWE-Agent 76.7 59.5 17.2 pp gap
Mini-SWE-Agent: 5.2-CodexMini-SWE-Agent
- Mini-SWE-Agent: DeepSeek V4 FlashMini-SWE-Agent 77.4 59.2 18.2 pp gap
Mini-SWE-Agent: DeepSeek V4 FlashMini-SWE-Agent
- Mini-SWE-Agent: HY3Mini-SWE-Agent 74.1 54.8 19.3 pp gap
Mini-SWE-Agent: HY3Mini-SWE-Agent
- Mini-SWE-Agent: Gemini 3.5Mini-SWE-Agent 67.7 50.8 16.9 pp gap
Mini-SWE-Agent: Gemini 3.5Mini-SWE-Agent
- Mini-SWE-Agent: o4-miniMini-SWE-Agent 64.2 42.1 22.1 pp gap
Mini-SWE-Agent: o4-miniMini-SWE-Agent
- Codex CLI: 5.2-CodexCodex CLI 65.7 49.9 15.8 pp gap
Codex CLI: 5.2-CodexCodex CLI
- Codex CLI: o4-miniCodex CLI 56.5 35.9 20.6 pp gap
Codex CLI: o4-miniCodex CLI
- OpenCode: 5.2-CodexOpenCode 69.4 51.4 18.0 pp 差距
OpenCode: 5.2-CodexOpenCode
- OpenCode: o4-miniOpenCode 55.0 35.1 19.9 pp 差距
OpenCode: o4-miniOpenCode
报告证据
当没有指向代码的线索时,覆盖率急剧下降。
代码块覆盖率
- 指出了因果方法无内部堆栈跟踪 · n=16 94.8%
指出了因果方法无内部堆栈跟踪 · n=16
- 未指出因果代码无内部堆栈跟踪 · n=42 65.6%
未指出因果代码无内部堆栈跟踪 · n=42
- 未指出因果代码跨组件崩溃点 · n=7 61.9%
未指出因果代码跨组件崩溃点 · n=7
多次运行间的一致性
没有直接代码线索的报告在多次运行间表现出更大的波动。
当报告未指出因果代码时,运行间波动为 4.3 倍
代码块覆盖率的波动(标准差,pp)
- 指出了因果方法 · n=16 1.5 pp
指出了因果方法 · n=16
- 未指出因果代码 · n=42 6.4 pp
未指出因果代码 · n=42
越过不稳定阈值的事件
- 指出了因果方法 · n=16 6.2% (1/16)
指出了因果方法 · n=16
- 未指出因果代码 · n=42 16.7% (7/42)
未指出因果代码 · n=42
均值对每个事件的三次运行取平均,并对 120 个事件等权处理;须线为 95% 事件自助法置信区间。
使用 DistDebug-Bench
试运行一个事件。提交完整运行结果。
试运行一个事件
按照论文中的协议,在 ZooKeeper-2845 上运行 Mini-SWE-Agent。在基准代码检出目录下,运行器会在有缺陷的 ZooKeeper 修订版本处准备一个匿名化工作区,在沙箱中运行智能体,然后评分器应用论文中的评估器。需要 Python 3.10+、带 bubblewrap 的 Linux,以及已配置的模型 API 密钥。
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[agent]"
# Set OPENAI_API_KEY in your environment.
python -m distdebug_bench.run \
--config configs/mini-swe-agent/gpt-5.4.yaml \
--bug zookeeper-2845 --runs 1
python -m distdebug_bench.score \
results/mini-swe-agent-gpt-5.4 --attempts 1
configs/mini-swe-agent/ 中为论文中的每个模型都有一个配置。运行时会调用你所配置的模型提供商。
每次尝试都会写出 trajectory.json、diagnosis.json 和 diagnosis_scores.json。要评估其他智能体,让它写出前两个文件即可。
提交完整结果
在全部 120 个事件上运行你的智能体,每个事件尝试三次,并发送其诊断和轨迹。在将每个提交列入排行榜之前,我们会用官方评估器对其重新评分。
- 01 / 运行全部 120 个事件,每个事件三次独立尝试,仅提供报告、其证据以及修复前的仓库。任意智能体或运行框架。
- 02 / 提交每次尝试的 diagnosis.json 和完整轨迹,外加模型、运行框架、设置以及 token 用量或成本。
- 03 / 评分采用论文中的协议:每个事件前三次通过 schema 校验的尝试计入,泄漏防护会丢弃被标记的尝试。
指南涵盖本地泄漏检查、打包一次运行以及 diagnosis.json 的 schema。
引用
DistDebug-Bench: Can LLM Agents Diagnose Bugs in Distributed Systems? Jiang et al., NeurIPS 2026. 论文 ↗ · GitHub ↗ · 数据集 ↗ · 轨迹 ↗
@inproceedings{jiang2026distdebugbench,
title = {{DistDebug-Bench}: Can {LLM} Agents
Diagnose Bugs in Distributed Systems?},
author = {Jiang, Yuxuan and Liu, Chenglin and
Rose, John and Miller, Mason and
Thavamani, Ruthesh and Wu, Juntao and
Huang, Yinwei and Xu, Jiahao and Huang, Peng},
booktitle = {Advances in Neural Information
Processing Systems (NeurIPS)},
year = {2026}
}