Extend the Agent standard matrix with a report-audit scenario so model input, output, handoff, and secret-safety evidence are tested instead of remaining narrative-only. Constraint: The user requested another test pass and expanded Agent/swarm testing scenarios under docs/. Rejected: Treating the model I/O report as untested documentation | it would leave the handoff and input/output evidence unguarded. Confidence: high Scope-risk: moderate Directive: Keep model I/O reports under docs/ and redact secret-shaped values during export. Tested: .venv/bin/python -u -B examples/run_standard_scenario_acceptance.py; .venv/bin/python -B -m unittest discover -s tests; .venv/bin/python -B -m py_compile swarm_minimal/*.py examples/*.py tests/*.py; .venv/bin/python -u -B examples/run_academic_standard_evaluation.py; git diff --check; docs secret-pattern scan. Not-tested: Large-scale concurrent 3/5/7 worker load and external browser rendering were not run. Co-authored-by: OmX <omx@oh-my-codex.dev>
8.3 KiB
学术化标准测试报告
对象: swarm-minimal 最小蜂群原型
日期: 2026-05-16
范围: 本地确定性测试、蜂群行为验收、传统 Agnet 对比、多轮共识、模型 I/O 报告审计、马尔可夫过程适配性判断
1. 已实现的场景测试
| ID | 场景 | 测试目的 | 证据入口 |
|---|---|---|---|
| S01 | 静态编译 | 所有 Python 模块可编译,无语法错误 | python3 -B -m py_compile swarm_minimal/*.py examples/*.py tests/*.py |
| S02 | 单元回归 | 内存蜂群闭环、Azure 资源边界、配置脱敏、NewAPI mock 行为 | python3 -B -m unittest discover -s tests |
| S03 | 连续推理链路 | 每一步必须承接上一步 marker,断链必须失败 | tests/test_standard_scenarios.py |
| S04 | 依赖边界 | MVP 不把 NATS/Cosmos 当成必需依赖 | tests/test_standard_scenarios.py |
| S05 | 最终收敛评分 | 最终 STEP-07 输出必须优于中间步骤 | tests/test_standard_scenarios.py |
| S06 | 失败注入 | 失败任务要标记失败、产生负信息素,其他任务仍可收敛 | tests/test_standard_scenarios.py |
| S07 | live Azure/NewAPI 连续推理 | 真实连接 Azure PostgreSQL、Redis、Blob 和 NewAPI,跑 7 步连续推理链 | examples/run_continuous_reasoning_acceptance.py |
| S08 | 模型 I/O 报告审计 | 验证报告包含场景、输入、输出、接手证据,且无明显真实密钥样式 | tests/test_model_io_report_audit.py |
| B01 | 单 Agnet 故障隔离 | 一个 Agnet 崩溃不导致整体失败 | tests/test_swarm_behavior_academic.py |
| B02 | 群体涌现 | 多个弱局部信号通过共享状态聚合成更强整体结果 | tests/test_swarm_behavior_academic.py |
| B03 | 信息素间接协作 | 信息素影响任务 claim 顺序并形成正反馈 | tests/test_swarm_behavior_academic.py |
| B04 | handoff 连续性 | active agent、目标 agent、payload 在交接中保留 | tests/test_swarm_behavior_academic.py |
| C01-C04 | 传统 Agnet 对比 | 和单路线/FIFO/无共享状态/无上下文 handoff 的基线比较 | examples/run_swarm_vs_traditional_benchmark.py |
| M01-M03 | 马尔可夫过程适配性 | 判断当前实现是马尔可夫式状态机,但不是严格 MDP | tests/test_markov_process_properties.py |
2. 测试标准来源
本项目没有使用“某一个 Agnet 认证标准”,因为行业目前还没有统一答案。当前采用 AGENT_SWARM_QUALITY_STANDARD.zh-CN.md 中定义的 AQS / SW-AQS v1:以行业 Agent 风险框架为参考,配置本项目自己的 Agent 和蜂群 Agent 质量标准。
| 来源 | 本项目采用方式 |
|---|---|
| NIST AI RMF 1.0 | Govern / Map / Measure / Manage 的 Agent 风险管理结构 |
| NIST AI 600-1 | 生成式 AI 的幻觉、隐私、信息安全、组件集成、预部署测试和事件披露 |
| OWASP LLM Top 10 | prompt injection、敏感信息泄露、过度代理、不安全输出处理、过度信任 |
| OWASP Agentic Skills Top 10 | Agent 技能/工具执行层的权限、隔离、审计、运行时安全 |
| MITRE ATLAS | AI 攻击/误用视角下的失败、越权、诱导和异常场景 |
| OpenTelemetry | Agent 过程的 traces、metrics、logs、events 和 artifact 证据 |
| LangGraph handoff 参考 | transfer_to_<agent>、active-agent 路由和上下文传递语义 |
| 蜂群模式归纳标准 | 去中心化、自组织、局部感知、间接协作、涌现、鲁棒性和收敛 |
| Markov property 定义 | 给定当前状态后,未来状态不再依赖历史路径 |
py_compile 和 unittest 只作为证据采集工具,不作为最终质量标准本身。完整链接在 swarm_minimal/academic_evaluation.py 的 ACADEMIC_STANDARD_SOURCES 中维护。
3. 测试过程
本地确定性验收按以下顺序执行:
python3 -B -m py_compile swarm_minimal/*.py examples/*.py tests/*.py
python3 -B -m unittest discover -s tests
python3 -u -B examples/run_swarm_behavior_acceptance.py
python3 -u -B examples/run_swarm_vs_traditional_benchmark.py
python3 -u -B examples/run_consensus_convergence_acceptance.py
python3 -u -B examples/run_academic_standard_evaluation.py
完整标准矩阵还包含 S07 live 场景和 S08 模型 I/O 报告审计:
python3 -u -B examples/run_standard_scenario_acceptance.py
S07 需要本地被 git 忽略的 .env,其中包含 Azure PostgreSQL、Redis、Blob 和 NewAPI 测试凭据。脚本优先读取项目根目录 .env,没有时读取 examples/.env。没有可用 .env 时,本地确定性门禁可以通过,但完整标准化验收不能判定为通过。
4. 本轮实际执行结果
| 命令 | 本轮结果 | 说明 |
|---|---|---|
python3 -B -m py_compile swarm_minimal/*.py examples/*.py tests/*.py |
PASS | 无输出,表示所有模块编译通过 |
python3 -B -m unittest discover -s tests |
PASS | 28 个测试通过 |
python3 -B -m unittest tests.test_markov_process_properties |
PASS | 3 个马尔可夫适配性测试通过 |
python3 -B -m unittest tests.test_model_io_report_audit |
PASS | 2 个模型 I/O 报告审计测试通过 |
python3 -u -B examples/run_swarm_behavior_acceptance.py |
PASS | B01-B04 全部通过 |
python3 -u -B examples/run_swarm_vs_traditional_benchmark.py |
PASS | 蜂群总归一化分 0.9175,传统基线 0.1958,ratio 4.69 |
python3 -u -B examples/run_consensus_convergence_acceptance.py |
PASS | 2 轮收敛,接受 lease_based_pg_queue |
python3 -u -B examples/run_academic_standard_evaluation.py |
PASS | A01-A05 本地学术化门禁全部通过,检测到 examples/.env 可用于 live 测试 |
python3 -u -B examples/run_standard_scenario_acceptance.py |
PASS | S01-S08 全部通过;S07 完成 7 个 live 任务,12 个检查无失败,S08 报告审计通过 |
最新 S07 live 证据:
{
"run_id": "04c641d170fe4ea7aa3d882d9df37cca",
"completed_tasks": 7,
"accepted_score": 1.0,
"selected_models": [
"deepseek-v4-flash",
"claude-haiku-4-5-20251001",
"claude-sonnet-4-6"
],
"failed_checks": [],
"check_count": 12,
"artifact_path": "swarm-runs/04c641d170fe4ea7aa3d882d9df37cca/result.json"
}
5. 达标判定
| 门禁 | 当前结论 |
|---|---|
| 本地学术化门禁 A01-A05 | 可通过 |
| 标准矩阵 S01-S06 | 可通过 |
| 标准矩阵 S07 live Azure/NewAPI | 已通过 |
| 标准矩阵 S08 模型 I/O 报告审计 | 已通过 |
| 生产级标准化验收 | 当前最小标准已满足 |
结论:当前项目已经具备可执行的标准化测试,且本地确定性蜂群行为测试与真实 Azure/NewAPI live 集成测试均已通过。该结论限定在本仓库定义的最小蜂群标准矩阵内,不等同于大规模生产压测或第三方认证。
6. 算法清单
| 算法 / 机制 | 位置 | 说明 |
|---|---|---|
| 能力匹配任务 claim | InMemorySwarmStore.claim_next |
Agnet 只领取能力匹配的 pending 任务 |
| 信息素排序 | InMemorySwarmStore.claim_next |
pending 任务按 pheromone score 从高到低排序 |
| 正/负反馈更新 | complete_task / fail_task |
成功加分,失败扣分 |
| 最高分收敛 | converge |
在完成任务中选择最高 score 作为最终输出 |
| 多轮加权共识 | ConsensusSwarm.run |
按 agent weight 和 confidence 累积分数 |
| 分数蒸发 | ConsensusSwarm._evaporate_scores |
每轮按 evaporation 衰减历史候选分 |
| 动态模型发现 | discover_newapi_models |
从 NewAPI 兼容端点发现模型 |
| 去重模型选择 | select_distinct_models |
多 Agnet 测试时选择不同模型 |
7. 马尔可夫过程结论
当前实现满足“工程意义上的马尔可夫式状态机”:
- 如果把
tasks、pheromones、shared_state、observations、agent policy 和共识轮次一起视为完整当前状态,则下一步 claim、score 更新和收敛选择只依赖当前状态。 - 新增测试
tests/test_markov_process_properties.py验证了等价当前任务/信息素状态下,不同历史路径会得到相同 claim 与 score 更新。
但它不满足严格数学意义的 Markov process / Markov Decision Process:
- 没有定义状态转移概率核
P(s_next | s_current)。 - 没有正式 action space、reward function 和策略优化目标。
- UUID、时间戳、外部 NewAPI/LLM 调用没有建模为随机变量。
- 部分输出保留历史观测作为审计证据,这属于工程可追溯性,不是形式化随机过程。