Files
Agentswarm/docs/benchmark/baseline-runners.md
T
Songhaoz666andClaude Opus 4.8 baa67350e6 benchmark Group C:基线运行器 + 统一 BenchmarkRunRecord + 报告/回放(Closes #21)
在去中心化重构之上落地 benchmark 对比管线:5 个系统(single/strong/chain/sub_agent/swarm)
跑同一任务集、同一执行后端,产出统一 BenchmarkRunRecord → 评估器算 G_E/G_E,c → 报告 + 回放。

- benchmark/runners/:backend(Offline 确定性 / OpenAI 真实)+ base + 5 个 runner。各 runner
  用 held-out fixture 测试在 Group B 沙箱里评分得 TestPassRate(权威,非自评)。
- benchmark/tasksets/:统一任务集 + 加载器(coding-set-1,1 个 fixture)。
- benchmark/reports/、benchmark/replay/:G_E/G_E,c/coverage/confidence + 归档。
- benchmark/baselines/comparison.py:BenchmarkRunRecord 的 CodeReview/UserAcceptance 改为
  Optional(掩码归一,未采集即 None,规则 #9)。
- scripts/run-benchmark-suite.py harness + scripts/test-benchmark-runners.py。

与去中心化重构对齐:swarm runner 拓扑已**重指向去中心化流程**(种子→自选→自主分解→竞争→
同伴交叉评审→收敛,calls=6/review=1),非旧 Master「分解→派发→单评审」。仍用同一离线后端
建模以保证公平对比(驱动活体编排器会换后端→记录不可比;活体全流程由 test-workflow-e2e 验证)。

沙箱适配:runner 评分走 fail-closed 沙箱(#24),故 test + CI 步骤设 HEICODE_SANDBOX_ISOLATED=1
(仅 CI/隔离 Pod)。

影响范围:agent_swarm(benchmark 层 + 测试 + docs + CI)。不碰 orchestrator 编排逻辑、
不改 Manager↔Swarm 契约、不影响 Client/计费/密钥/审计/发布链路。

诚实边界:
- **离线后端只验证管线**:所有系统拿同一参考解 → quality 相同 → G_E=0、swarm_valid=False,
  刻意不显示蜂群优势(反造假)。真实 G_E>0 需 --backend openai + 足量冻结任务集 + 多次运行。
- 故 Closes #21(运行器 + 统一记录已落地并产出合规非 NaN 记录);Refs #20(仅 1/5 场景)、
  Refs #22(评估器/报告/回放已建,但 Quality 仅 TestPassRate,CodeReview/UserAcceptance 缺)、
  Refs #13(验收 EPIC,需真实 run 证明 Swarm>baselines,未满足)。

Closes #21
Refs #20
Refs #22
Refs #13

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 17:44:34 +08:00

4.0 KiB
Raw Blame History

基线运行器与基准套件(Benchmark Group C · #21/#22)

把「swarm vs 基线」从纸面公式变成可运行的管线:统一任务集 → 5 个系统各跑一遍 → 统一 BenchmarkRunRecord → 评估器算 G_E/G_E,c → 报告 + 回放归档。本文是 Group C 的唯一入口。

1. 管线

benchmark/tasksets/<id>  ──┐
                           ├─ runners.run_all(taskset, backend) ──► {system: BenchmarkRunRecord}
共享 ExecutionBackend ──────┘            │(5 系统同后端同任务集,仅拓扑不同)
                                         ▼
            reports.build_report ──► G_E / G_E,c / coverage / confidence / swarm_valid
                                         ▼
            replay.save_archive ──► records.json / report.json / report.md / meta.json

入口:scripts/run-benchmark-suite.py --taskset coding-set-1 [--backend offline|openai]。

2. 五个系统(标准 §9.1,仅拓扑不同)

system 文件 拓扑(公平:同后端同任务集) n_agent
single runners/single.py 1 次生成,无评审 1
strong runners/strong.py 1 次生成,更强/更贵后端(×0.95 最难超) 1
chain runners/chain.py 串行 impl→test→doc,无协作/评审 3
sub runners/sub_agent.py 主管分解 + 3 子агент,无对等/评审(×0.90 最近邻) 4
swarm runners/swarm.py 去中心化:种子 → 自选 + 自主分解 → 专家执行 → 同伴交叉评审 → 收敛 → 综合(calls=6, review=1) 3

swarm 拓扑已对齐去中心化重构(播种/自选/自主分解/竞争/交叉评审/收敛,见 docs/swarm/decentralized-rework-plan.md),非旧 Master「分解→派发→单评审」。仍用同一离线后端建模以保证公平对比;驱动活体编排器会换后端→记录不可比,故另计(见 runners/swarm.py 说明),活体全流程由 scripts/test-workflow-e2e.py 验证。

每个系统的产出物用 fixture 留出测试在 Group B 沙箱里评分得 TestPassRate(权威,非自评)。

3. 执行后端(公平网关,runners/backend.py)

  • OfflineBackend(默认):确定性、无 key、无网络。回显 fixture 的 reference_solution/,按调用数计名义成本。对所有系统完全相同 → 管线可验证,但不可能也不应显示蜂群质量优势(防造假)。
  • OpenAIBackend:真实 OpenAI 兼容生成(需 OPENAI_API_KEY),产出真实文件 + token/成本。真实 G_E 由它产生。

4. 当前能得到什么 / 不能得到什么

能(Offline,CI 每次跑):完整管线、5 份非 NaN 记录、G_E/G_E,c/coverage/confidence、回放归档、Markdown 报告。

不能(诚实):

  • Offline G_E=0、swarm_valid=False——同一参考解,无差异。这是正确的反造假结果,不是 bug。
  • 真实 G_E>0 需 --backend openai + 足量冻结任务集(当前仅 1 个示例任务)+ 多次运行求方差(当前 confidence=none/low)。
  • CodeReview/UserAcceptance 未采集(掩码忽略)。
  • 完整 Benchmark_Agent 需活体 swarm run 的 SwarmMetrics(S_swarm/Reward/Observability,来自 Group A/B 的 collector)与本套件 G_E 的合成——报告里标为 NOT AVAILABLE,不猜数。

5. 与验收(#13/Issue #2)的关系

本套件是 #13 验收的必要管线,但本身不构成验收。验收要求:真实后端、冻结任务集、多次运行、 对全部 A–D 满足 G_E>0 且 G_E,c>0、并能排除「靠堆 Agent/Token 变强」。在拿到这些真实结果前, 不得关闭 Issue #2/#13,不得宣称 Agent Swarm 正式验收通过。

6. 测试

  • scripts/test-benchmark-runners.py:5 runner 产出有效记录、offline 质量一致(G_E=0 反造假)、 报告/coverage/confidence、回放归档(hermetic)。
  • scripts/run-benchmark-suite.py:CI offline smoke gate(防回归)。