Files
Agentswarm/docs/benchmark/telemetry-architecture.md
T
Songhaoz666andClaude Opus 4.8 d487923646 benchmark: 落地决策层(τ/η/P)、质量(Q_quality)、通信遥测;关闭 #10 #23
四块互相交织的 benchmark 覆盖增量,统一提交:

1) 通信遥测(#23):orchestrator 路由 peer 消息时按 correlation_id 计请求/应答到
   SwarmRun.collaboration(内部状态,不进 Manager 事件流);collector 算 s_communication。
   治理计数由 run.approvals 派生(合规/总数)→ s_governance。

2) Q_quality 掩码归一(v2.1 裁定):metrics.quality_score 改为对 present 输入加权归一,
   非编码任务自动忽略 TestPassRate,全缺 → NaN(不伪造)。

3) 质量插桩 / Group B:新增 Pod 内代码测试沙箱(orchestrator/sandbox.py,环境清洗 +
   超时强杀 + 资源限额 + 路径越界校验,门控 ENABLE_QUALITY_EVAL)与 held-out fixture
   (benchmark/fixtures/);run 完成时用留出测试评分得 TestPassRate → Q_quality →
   collector 合成 reward。安全边界见 docs/integration/security-boundary.md §8.1。

4) 决策引擎 / Group A(#10,Option A score-at-pull):新增 orchestrator/decision_engine.py
   —— 信息素 τ(Redis 持久、(role,agent) 键控、冷启动 0.5、ρ 蒸发、夹紧、学习常开)+
   η 启发式评分 + ε-greedy 概率采样;每次 dispatch 产一条 DecisionTrace →
   SwarmRun.decisions;collector 算 tau/eta/p_decision。概率选择门控 ENABLE_ACO_DISPATCH
   (默认关,CI 用 ACO_SEED 固定)。

覆盖:单次 run 真实可算字段由 4 提升至最多 10/15(新增 communication/reward/tau/eta/
p_decision,外加 governance 有条件)。

测试:新增 test-sandbox / test-quality / test-decision-engine;扩充 collector/metrics 用例;
CI 纳入全部 benchmark 套件 + flag-on 的 ACO e2e。本地 11 项 gate 全绿。

诚实边界(未越界声称):
- Group A 为单边匹配(Option B 待 Group C);概率派发优于贪心未证;默认关闭。
- reward 的 CodeReview/UserAcceptance 未采集(掩码忽略);P_risk 为审批派生低估。
- s_gain/s_swarm/g_e/g_e_cost/benchmark 仍 NaN —— 需基线(#21/#13),本 PR 不动验收。

影响范围:Swarm(orchestrator + benchmark + docs + CI)。不改 Manager↔Swarm 事件契约
(遥测均为运行时内部状态);不影响 Client/计费/密钥/发布链路。新增 ENABLE_QUALITY_EVAL /
ENABLE_ACO_DISPATCH 两个开关,默认关闭。

Closes #10
Closes #23

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

3.1 KiB
Raw Blame History

Telemetry Architecture(数据采集架构)

状态:规划中(部分信号已发出,统一采集管道未接入)。

依据:Agent 蜂群指标量化与标准 v2.0 §8.2。配套:swarm-metrics-schema.md、event-schema、audit-trace。O(可观测性)分量来源于本文。

1. 数据来源矩阵(标准 §8.2)

指标类型 数据来源 推荐平台 本仓现状
任务完成 Task Logs、Handoff Logs Elasticsearch ✅ 任务状态 + 事件流(按 swarm_id);未汇入 ES
成本 / Token Runtime Metrics Prometheus 🟡 usage 已采集;Prometheus 指标可抓取
质量 CI/CD Results、Code Review 各 CI 平台 🟡 TestPassRate 已接入(fixture 留出测试 + 沙箱执行,ENABLE_QUALITY_EVAL 门控);CodeReview/UserAcceptance 仍缺
治理合规 Audit Logs OpenTelemetry 🟡 事件流可作审计源,未独立留存
通信 WebSocket Logs ClickHouse 🟡 连接事件有日志;peer 消息已按 correlation_id 内部计数(请求→应答率,存 SwarmRun.collaboration),尚未落 ClickHouse
基础设施 Infrastructure Metrics Prometheus 🔴 未接入(cpu/memory/Pod)

3. 本仓已发出的信号

信号 实现 去向
Prometheus 指标 ✅ 编排器 GET /metrics;Agent METRICS_PORT 可被 Prometheus 抓取(k8s/prometheus-config.yaml)
OpenTelemetry tracing 🟡 orchestrator/tracing.py(OTEL_EXPORTER_OTLP_ENDPOINT) 需配置 collector
事件流(lifecycle/DAG/handoff/usage) ✅ 按 swarm_id 持久化 + 回调 Redis + HM 回调;可导出 ClickHouse/ES(未接)
任务/用量/预算 ✅ /tasks、/metrics、budget.alert REST + 事件

4. 目标采集管道(草案)

Agent / Orchestrator
  ├─ Prometheus  ← /metrics(指标:任务、时长、并发、被拒/重复、reconnect…)
  ├─ OpenTelemetry → OTLP collector → trace 存储(task/agent/handoff span)
  └─ 事件流(event-schema) → 导出器 → ClickHouse / Elasticsearch(用于 benchmark 聚合与回放)
                                          ↑
                              SwarmMetricsCollector 读取并产出 SwarmMetrics

5. 缺口

项 状态
Prometheus 指标暴露 ✅ 已有(指标项可再补:消息成功率、恢复率、治理计数)
OTel trace 实际导出 🟡 模块在,collector/span 覆盖待完善
事件 → ClickHouse/ES 导出器 🔴 未实现
CI/CD、Git、基础设施指标接入 🔴 未实现
统一 SwarmMetricsCollector 落地 🔴 未实现(见 swarm-metrics-schema §0)
刷新可恢复 / 断线回补(前端) 🟡 /logs?cursor=(见 frontend-event-api)

6. 待对齐

  • 选定后端(ClickHouse / ES)与 schema、留存期(与 Audit Team)。
  • 指标命名规范与标签(swarm_id/agent_role/scenario)。
  • 导出器归属(本仓 exporter vs 平台统一采集)。