在去中心化重构之上落地 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>
60 lines
4.0 KiB
Markdown
60 lines
4.0 KiB
Markdown
# 基线运行器与基准套件(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(防回归)。
|