Files
Agentswarm/docs/benchmark/baseline-comparison.md
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

74 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Baseline Comparison(基线对比)
> 状态:**规划中(方法已定义,基线运行器未落地)**。
>
> 依据:**Agent 蜂群指标量化与标准 v2.0 §9.1**。配套:[`emergence-evaluation.md`](./emergence-evaluation.md)、[`cost-normalized-gain.md`](./cost-normalized-gain.md)、[`swarm-benchmark-protocol.md`](./swarm-benchmark-protocol.md)。
## 1. 基线与实验组(标准 §9.1)
| 组 | 系统 | 说明 | 参考系数 |
|---|---|---|---|
| Baseline A | Single Agent | 单 Agent 直接完成(最小基准) | ×0.75 |
| Baseline B | Chain Agent | 串行链式编排(无蜂群协作/评审) | ×0.85 |
| Baseline C | Sub-Agent | 主从结构委派(无对等协作/评审循环) | ×0.90 |
| Baseline D | Strong Agent | 高能力单体(更大模型/更长上下文) | ×0.95 |
| Experimental | **Swarm Agent**(本仓) | 分解→派发→协作→评审/重做→汇总 | — |
### 1.1 参考系数的含义(暂定值 · 待量化 · 暂不接入公式)
> ⚠️ **状态:暂定 / 仅元数据**。×0.75/0.85/0.90/0.95 为人为设定的强度先验,标准**未给计算方法**;**不参与任何公式**(仅在 `compare(...)` 结果中作 `base_coefficient` 上报)。**待后续实测量化**(如 `系数 = Q_baseline/Q_reference`,按场景标定)后再决定是否接入。
参考系数(Single 0.75 < Chain 0.85 < Sub 0.90 < Strong 0.95)表示**各基线的相对能力强度**——把四类基线按「越接近满能力」排序:Single 最弱(约 0.75),Strong 最强(约 0.95)。其用意是:
- **打败越强的基线越有价值**。对 Strong(0.95)取得的质量增益,比对 Single(0.75)取得同样增益更能证明涌现——因为强基线的「上行空间」更小(headroom ≈ `1 − 系数`)。
- 因此它本质是一个**难度 / 可信度因子**:用于在跨基线汇总时给「战胜强基线」的增益更高权重,防止「我们赢了单 Agent」被当作强涌现证据。
可能的数学接入方式(**标准 v2.x 未指定,待裁定**):
- 难度加权增益:`weighted_G_E = (Q_swarm − Q_base) × 系数`(战胜强基线权重更高);或
- headroom 归一化:`G_E_norm = (Q_swarm − Q_base) / (1 − 系数)`(放大对强基线的增益);或
- 期望基线缩放:`Q_base_expected = 系数 × Q_reference`。
**当前实现**:系数仅作为 `compare(...)` 结果里的 `base_coefficient` **元数据上报,不参与任何公式**(`G_E`/`G_E,c` 用原始 `Q_base`)。代码常量见 `benchmark/metrics.py:BASE_COEFFICIENTS`。
## 2. 统一采集指标(标准 §10)
所有组在**同一任务集**上运行,统一采集:`Completion`、`Quality`、`Cost`、`Time`、`Robustness`。
由此得到每组 `Q_*`(质量,口径见 emergence-evaluation §3)与 `C_*`(成本,见 cost-normalized-gain §3)。
## 3. 对比方法
1. **同一任务集 / 同一场景**(Coding / Refactoring / Architecture / DevOps / Bug Fix)。
2. **同等约束**:相同模型网关、相同预算上限口径(避免实验组单独放宽)。
3. 每组多次运行,报告均值与方差。
4. 输出:
- `G_E = Q_swarm − Q_base`(对 A/B/C/D 各算一次)。
- `G_E,c = (Q_swarm/C_swarm)/(Q_base/C_base)`。
- 成立判定:对**全部** A/B/C/D 满足 `G_E > 0` 且 `G_E,c > 1`。
## 4. 公平性约束(防止虚高)
- 实验组不得使用基线没有的额外资源/预算/工具(除「蜂群协作与评审」本身)。
- 成本必须计入**多 Agent + 评审重做**的累计(天然反映在按 `swarm_id` 聚合的 `usage`,见 cost-normalized-gain §3)。
- 报告需同时给出 `G_E` 与 `G_E,c`;只报 `G_E` 不足以验收。
## 5. 实现状态
| 组件 | 位置 | 状态 |
|---|---|---|
| 基线运行器 A–D + Swarm | `benchmark/runners/`(single/strong/chain/sub_agent/swarm + base/backend) | 🟡 已实现(管线);真实数值需模型 key |
| 共享执行后端(公平网关) | `benchmark/runners/backend.py`(Offline + OpenAI) | 🟡 Offline 已实现(确定性、无偏);OpenAI 需 `OPENAI_API_KEY` |
| 统一任务集 / 数据集 | `benchmark/tasksets/`(`coding-set-1`) | 🟡 1 个示例任务集;其余场景待建 |
| 指标采集(评分) | held-out fixture + 沙箱(Group B)→ runner | 🟡 TestPassRate 真实;CodeReview/UserAcceptance 掩码缺 |
| 对比 + 报告 + 回放 | `benchmark/reports/`、`benchmark/replay/`、`baselines/comparison.py` | ✅ 已实现 |
| 显著性(多 run 方差) | — | 🔴 未实现(confidence 现按 run 数标注) |
> ⚠️ **Offline 后端为管线验证**:所有系统拿到同一参考解 → quality 相同 → **G_E=0、swarm_valid=False**,
> **刻意不显示蜂群优势**(防造假)。真实 `G_E>0` 需 `--backend openai` + 足量冻结任务集 + 多次运行。
> 入口:`scripts/run-benchmark-suite.py`;说明见 [`baseline-runners.md`](./baseline-runners.md)。
## 6. 待对齐
- 四类基线的标准实现边界(尤其 Strong / Chain / Sub-Agent)。
- 统一任务集与场景数据集。
- 运行次数、方差/显著性门槛与公平性约束的强制方式。