BlastRadiusBench
收藏资源简介:
BlastRadiusBench是一个用于评估AI模型重构故障链能力的基准测试数据集。它包含多个场景,模拟了生产环境中的级联故障,提供遥测数据(如跟踪、指标、日志、Kubernetes事件)和服务依赖图,要求模型识别故障的起源、传播路径、根本原因和影响范围。
BlastRadiusBench is a benchmark dataset for evaluating the capability of AI models to reconstruct failure chains. It comprises multiple scenarios that simulate cascading failures in production environments, providing telemetry data such as traces, metrics, logs, and Kubernetes events, as well as service dependency graphs. This setup requires models to identify the origin, propagation paths, root causes, and impact scope of failures.
数据集概述
BlastRadiusBench 是一个用于评估前沿大语言模型(LLM)在分布式系统故障中推理因果链能力的开放基准测试。其核心任务是让模型从 traces、metrics、logs、k8s events 和服务依赖图中,识别出故障的根因服务、传播路径(有向的边)以及爆炸半径(受影响的受害者),并抵抗“最响警报”的误导。
核心评估指标
模型需生成 /workdir/failure_chain.json 文件,包含:
- origin_service: 最先失败的服务。
- propagation_path: 故障传播的有向边列表。
- root_cause: 根本故障原因。
- blast_radius: 受故障影响的下游服务列表。
主要奖励(二值化):
origin_service正确,且propagation_path中恢复的有向因果边数量达到场景阈值(默认 0.6)。
次要指标(仅打印,不影响评分):
- 爆炸半径重叠度。
- 根因关键词匹配(识别故障本身而非症状)。
- 反向因果计数:模型将下游受害者误判为上游服务的原因的边数,这是最典型的诊断错误。
运行机制
- 基于外部 Harbor 框架和 Terminal-Bench 任务格式运行,使用默认
terminus-2agent。 - 每个场景是一个沙盒化的 Docker 容器,挂载遥测数据到
/workdir,提供jq、grep、awk、python3等 CLI 工具。 - 模型通过 OpenRouter 进行切换,确保对比公平。
- 结果由 pytest grader 自动评分。
- 如果使用 Edge Delta 产品查询遥测数据,需使用 CQL(如
severity_text:"ERROR"、@latency_ms > 1000),沙盒中则直接 grep/jq 原始文件。
任务格式
每个场景位于 datasets/blastradiusbench/<scenario>/ 目录下,包含:
task.toml:任务配置文件。instruction.md:指令文件。environment/:Dockerfile 和工作目录数据。solution/solve.sh:标准答案脚本。tests/:评分器与隐藏的真实答案。
结构详情见 数据集 README。
难度等级与场景
共 10 个场景,前 3 个为合成微服务级联故障,后 7 个为真实生产事故的重构(服务名、日志签名等均为虚构替代,但故障类真实)。部分场景及难度:
| 场景 | 难度 | 原因 |
|---|---|---|
| shared-postgres-saturation | medium | 边缘网关警报最响但为最后受害者,级联扩散成树状。 |
| retry-storm-amplification | hard | 重试放大导致调用者负载飙升,真实起源为下游慢速服务,经典反向因果陷阱。 |
| noisy-neighbor-node | hard | 三个无关服务同时失败,唯一联系为共享节点,仅基础设施事件可见。 |
| fdb-tso-flink-cascade | hard | Flink 作业不健康警报为最后受害者,起源为上游四个跳的 TSO FDB 超时。 |
| backend-connectivity-cascade | hard | 边缘网关延迟/5xx 最响,真实起源为后端写分片容量丢失。 |
| shared-kafka-saturation | medium | 边缘网关流量激增,实为下游慢速消费者背压导致,反向因果陷阱。 |
| disk-pressure-noisy-neighbor | hard | 三个命名空间中无关服务同时被驱逐,唯一联系为共享节点,每个受害者均有干扰线索。 |
| shared-redis-eviction | medium | 被依赖服务 5xx 最响,起源因探针配置错误被 kubelet 杀死。 |
| memory-pressure-eviction-cascade | hard | 查询失败 5xx 最响,链始于节点驱逐某服务的 Pod。 |
| shared-dynamodb-throttle | medium | 重试放大使调用者看起来像震中,起源为被节流的 DynamoDB 内存存储。 |
排行榜(节选)
固定运行:17 个场景 × 17 个模型 × 3 次尝试 = 867 次实验。Harbor terminus-2 over OpenRouter,2026 年 6 月 30 日至 7 月 2 日。Pass 率为场景评分器的布尔判决。完整结果见 benchmark-results/。
| 模型 | 通过率 | easy | medium | hard |
|---|---|---|---|---|
| glm-5.2 | 63% | 100% | 83% | 53% |
| gpt-5.4 | 62% | 100% | 92% | 49% |
| gpt-5.5 | 59% | 100% | 100% | 42% |
| gemini-3.1-pro-preview | 55% | 100% | 64% | 49% |
| claude-sonnet-4.6 | 49% | 100% | 58% | 42% |
| claude-opus-4.8 | 48% | 100% | 75% | 34% |
| gemini-3.5-flash | 47% | 67% | 75% | 36% |
| deepseek-v4-flash | 47% | 100% | 83% | 31% |
| kimi-k2.5 | 46% | 100% | 75% | 31% |
| gpt-5.4-mini | 45% | 67% | 67% | 36% |
| gemini-3.1-flash-lite | 45% | 100% | 67% | 33% |
| kimi-k2-thinking | 42% | 67% | 50% | 37% |
| qwen3-235b-a22b-2507 | 41% | 67% | 50% | 36% |
| claude-haiku-4.5 | 27% | 100% | 17% | 25% |
| gpt-oss-120b | 25% | 33% | 17% | 28% |
| qwen3-32b | 20% | 33% | 17% | 19% |
| gpt-oss-20b | 6% | 0% | 25% | 0% |
场景生成方法
- 原始 3 个场景:对真实微服务应用(如 OpenTelemetry Astronomy Shop)进行故障注入。
- 其余 7 个场景:基于真实生产事故重构,服务名、日志签名等为虚构替代,但故障类型真实(如 FoundationDB/TSO 超时、OLAP 存储后端连接丢失、SQS 队列积压、节点 DiskPressure/MemoryPressure 驱逐、探针配置错误 CrashLoopBackOff、DynamoDB 写入节流)。
- 生成步骤:
- 在稳定负载下运行微服务演示。
- 固定每个服务的 git 提交,选择其中一个作为罪魁祸首并注入故障(如缩容 DB 连接池、添加无边界内存批处理、减少 co-located 任务的内存限制)。
- 记录级联发展过程(约 10-15 分钟遥测窗口,覆盖基线→爆发→升级)。
- 降采样至几 KB,保留被干扰掩盖的初期信号。
- 组装上下文:真实提交列表(罪魁祸首+干扰项)、部署事件(包含无干扰部署以惩罚“归咎于最近变更”)、功能标志变更(诱饵)。
- 手动标注
ground_truth.json(起源、有向边、根因+罪魁祸首 sha、爆炸半径),并将其排除在 agent 的容器之外。
构建自定义场景
使用工具生成模板,再替换真实遥测窗口数据:
bash uv run tools/generate_scenario.py my-scenario --services api,web,svc,db --origin svc --difficulty hard --distractors 4
许可协议
Apache-2.0。版权所有 Edge Delta, Inc。




