Files
fengqun/docs/ACADEMIC_STANDARD_TEST_REPORT.zh-CN.md
T
gongzhiyongandOmX a4d771ede5 Define numeric swarm acceptance gates
Add a concrete 0-100 swarmness/compliance score, local large-scale stress, and 3000 TPM budget acceptance so the repo can say when it is a swarm by measured criteria instead of prose alone.

Constraint: user required Chinese docs, explicit scenarios, parameters, formulas, pass/fail lines, and git upload.

Rejected: prose-only PASS reports | they did not answer whether the system is a swarm with a concrete score.

Confidence: high

Scope-risk: moderate

Directive: keep production runtime claims separate from local minimal swarm acceptance scores.

Tested: py_compile swarm_minimal examples tests; unittest discover -s tests 45 tests; run_swarm_compliance_score.py; run_tpm_budget_acceptance.py; run_academic_standard_evaluation.py; git diff --check; docs/script secret-pattern scan.

Not-tested: live S07 and production Kubernetes/NewAPI provider-rate-limit stress were not rerun in this upload step.

Co-authored-by: OmX <omx@oh-my-codex.dev>
2026-05-17 18:19:24 +08:00

16 KiB
Raw Blame History

学术化标准测试报告

对象: swarm-minimal 最小蜂群原型 日期: 2026-05-17 范围: 本地确定性测试、蜂群六特征验收、传统 Agnet 对比、多轮共识、并发扩缩容、候选融合、互相质询、本机最大性能、3000 TPM 模型预算、模型 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 外部 GitHub 代码推理 真实连接 Azure PostgreSQL、Redis、Blob 和 NewAPI,对 fastapi/fastapi 固定 commit 跑 7 步代码推理链,并通过质量门、fallback 补救和多轮质量共识 examples/run_continuous_reasoning_acceptance.py
S08 模型 I/O 报告审计 验证报告包含场景、输入、输出、接手证据,且无明显真实密钥样式 tests/test_model_io_report_audit.py
S09 下一阶段边界最小验收 验证 SW-AQS-16 的 3/5/7 并发自主 claim、候选融合输出、反驳-修正-再投票共识 examples/run_next_boundary_acceptance.py
S10 蜂群六特征验收 验证去中心化、自组织、涌现性、鲁棒性、可扩展性、隐式协作六个一级指标 examples/run_swarm_characteristics_acceptance.py
L01 本机最大性能压力验收 使用本机全部逻辑 CPU 做本地多进程大规模任务 claim、执行和收敛压力测试 examples/run_large_scale_stress_acceptance.py
L02 3000 TPM 模型预算验收 在本地虚拟 token ledger 中验证 3000 TPM 量级下的并发 claim、预算预留、窗口不超额和收敛 examples/run_tpm_budget_acceptance.py
F01-F06 蜂群一级特征 把蜂群判定固定为六个核心特征,而不是泛泛的“多 Agent 能跑” tests/test_swarm_characteristics_acceptance.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

1.1 场景成功值总览

完整阈值见 AGENT_SWARM_INDICATOR_TEST_MATRIX.zh-CN.md。本报告中的 PASS 必须按下表判定:

ID 设计场景 成功值
S01 编译所有 Python 模块 退出码 0,无语法错误
S02 运行全部单元与确定性测试 当前 45 项测试全部通过,失败数 0
S03 连续推理链路 marker 检查 7/7 STEP 输出包含当前 marker 和 previous marker;断链样例必须失败
S04 MVP 依赖边界 “必须依赖 NATS/Cosmos”必须被判为 false
S05 最终收敛评分与质量门 拒答/角色边界输出分数为 0.12;最终 STEP-07 质量通过后 score 为 1.0
S06 失败注入 失败任务 status 为 failed,错误可查,失败信息素 <0,其他任务仍完成
S07 live 外部 FastAPI 代码链 7 个任务完成;14 项检查全 PASS;accepted_score >= 0.75;共识轮数 >=2
S08 模型 I/O 报告审计 场景、输入、输出、交接证据存在;明显密钥样式命中数 0
S09 并发 claim、候选融合、互相质询 3 项检查全 PASS;3/5/7 Agent 均无重复 claim;融合过滤低分噪声;质询共识至少 2 轮
S10 蜂群六特征 F01-F06 全部 PASS;任一特征失败则 S10 失败
L01 本机最大性能压力 默认使用全部逻辑 CPU;本轮最大性能实测 128 Agent、131072 任务、失败 0、重复 claim 0、8 个分片全部收敛
L02 3000 TPM 模型预算 8 个 Agent、60 个预算任务、每任务 50 token、总需求 3000 token;单分钟窗口 token <=3000;利用率 1.0;失败和重复 claim 都为 0

1.2 验收合理性与反推闭环结论

本轮验收设计不是从已有测试反推“看起来通过”,而是先定义最终主张,再反推必要条件:

最终主张: 当前仓库满足最小蜂群 Agent 验收
必要条件: AQS 单 Agent 可靠 + SW-AQS 多 Agent 协作 + F01-F06 蜂群特征 + S07 外部代码 live 链路 + S08 安全审计
测试标准: 每个必要条件都必须有场景、阈值和失败判定

合理性判定:

检查项 是否满足 理由
指标是否对应目标 是 AQS 覆盖单 Agent 输出,SW-AQS 覆盖蜂群协作,F01-F06 覆盖六个蜂群特征
场景是否能反驳结论 是 任何一个六特征、S07 14 项检查、S08 审计或 S09 三项边界失败,都会让对应结论失败
阈值是否明确 是 使用 Q >= 0.72、duplicate_claims=0、round_count>=2、accepted_score>=0.75 等明确值
是否避免自证 基本满足 S07 使用外部 fastapi/fastapi 固定 commit,不拿本仓库源码当被测代码
是否覆盖生产级平台 否 Kubernetes worker、Manager / Agnet API、人类审批、长期压测和生产监控仍未纳入当前闭环

结论:在 swarm-minimal 最小原型范围内,验收设计和反推测试标准是逻辑闭环;在生产级无中心分布式 runtime 范围内,还不是闭环。

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 路由和上下文传递语义
RFC 2697 token bucket / rate policing L02 3000 TPM 虚拟 ledger 的限流思想来源
OpenAI rate limit 文档 使用 TPM/RPM 作为模型供应商吞吐预算维度的参考
Stigmergy / Ant System 信息素、环境痕迹、隐式协作和分布式强化的理论来源
Swarm Intelligence 体系 去中心化、自组织、涌现性、鲁棒性、可扩展性、隐式协作的概念来源
Puterman MDP Markov process / MDP 的严格边界,用来说明当前只是工程马尔可夫式状态机

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_next_boundary_acceptance.py
python3 -u -B examples/run_swarm_characteristics_acceptance.py
python3 -u -B examples/run_academic_standard_evaluation.py

完整标准矩阵还包含 S07 外部 GitHub live 代码场景、S08 模型 I/O 报告审计、S09 下一阶段边界最小验收和 S10 蜂群六特征验收:

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 45 个测试通过
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_next_boundary_acceptance.py PASS S09 三项检查通过:3/5/7 并发 claim、候选融合、反驳-修正-再投票
python3 -u -B examples/run_swarm_characteristics_acceptance.py PASS S10 六特征全部通过:去中心化、自组织、涌现性、鲁棒性、可扩展性、隐式协作
SWARM_STRESS_AGENTS_PER_PROCESS=16 SWARM_STRESS_TASKS_PER_PROCESS=16384 SWARM_STRESS_CPU_CYCLES=128 python3 -u -B examples/run_large_scale_stress_acceptance.py PASS L01 本机最大性能压力通过:8 逻辑核、8 进程、128 Agent、131072 任务、46.9689 秒、吞吐 2790.61 tasks/s、失败 0、重复 claim 0
python3 -u -B examples/run_tpm_budget_acceptance.py PASS L02 3000 TPM 模型预算通过:8 Agent、60 个任务、3000 token 单窗口打满、预算利用率 1.0、失败 0、重复 claim 0
python3 -u -B examples/run_swarm_compliance_score.py PASS 蜂群性数值评分通过:swarmness_score=100/100,minimal_compliance_score=100/100,等级为“极强本地最小蜂群合规”
python3 -u -B examples/run_academic_standard_evaluation.py PASS A01-A09 本地学术化门禁全部通过,检测到 examples/.env 可用于 live 测试
python3 -u -B examples/run_standard_scenario_acceptance.py PASS S01-S10 全部通过;S07 外部 FastAPI 代码场景完成 7 个 live 任务,14 个检查无失败,S08/S09/S10 通过

最新 S07 外部 GitHub live 证据:

{
  "run_id": "9c7ccc6087c1435694a52efb12c32301",
  "target_repo": "fastapi/fastapi",
  "target_commit": "ecace740f3eaccb1aba152cf1de79477095c56f4",
  "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": 14,
  "quality_consensus_rounds": 2,
  "artifact_path": "swarm-runs/9c7ccc6087c1435694a52efb12c32301/result.json"
}

5. 达标判定

门禁 当前结论
本地学术化门禁 A01-A09 可通过
标准矩阵 S01-S10 已通过
标准矩阵 S07 live 外部 GitHub 代码推理 已通过
标准矩阵 S08 模型 I/O 报告审计 已通过
标准矩阵 S09 下一阶段边界最小验收 已通过
标准矩阵 S10 蜂群六特征验收 已通过
最小化标准化验收 已满足
生产级完整交付 未声称完成,仍需真实 Kubernetes runtime、平台 API、审批、真实模型限流和生产压测

结论:当前项目已经具备可执行的标准化测试,且本地确定性蜂群行为测试、真实 Azure/NewAPI live 集成测试、S09 下一阶段边界最小验收、S10 蜂群六特征验收、L01 本机最大性能压力和 L02 3000 TPM 模型预算验收均已通过。该结论限定在本仓库定义的最小蜂群标准矩阵内,不等同于真实 Kubernetes runtime 的大规模生产压测、真实模型供应商限流认证或第三方认证。

6. 算法清单

算法 / 机制 位置 说明
能力匹配任务 claim InMemorySwarmStore.claim_next Agnet 只领取能力匹配的 pending 任务
信息素排序 InMemorySwarmStore.claim_next pending 任务按 pheromone score 从高到低排序
正/负反馈更新 complete_task / fail_task 成功加分,失败扣分
最高分收敛 converge 在完成任务中选择最高 score 作为最终输出,但 S07 已在此之前增加质量门和多轮质量共识
输出质量评分 assess_output_quality / score_output 拒答、角色拒绝、目标漂移、交接断裂和缺少 FastAPI 技术语义会被扣分
重试与 fallback 补救 chat_with_fallback 当前模型输出不合格时先重试,再切换 fallback 模型接手当前步骤
多轮加权共识 ConsensusSwarm.run 按 agent weight 和 confidence 累积分数
分数蒸发 ConsensusSwarm._evaporate_scores 每轮按 evaporation 衰减历史候选分
并发自主 claim run_autonomous_until_converged 3/5/7 Agent 通过加锁 task pool 并发领取任务,验收无重复 claim
候选融合 fuse_candidate_outputs / converge_fused 多个有效候选输出按分数过滤、去重合并,保留 source candidate 证据
互相质询共识 QuestioningConsensusSwarm.run Agnet 先反驳,再修正,最后再投票接受
蜂群六特征验收 examples/run_swarm_characteristics_acceptance.py 把去中心化、自组织、涌现性、鲁棒性、可扩展性和隐式协作作为一级验收门
动态模型发现 discover_newapi_models 从 NewAPI 兼容端点发现模型
去重模型选择 select_distinct_models 多 Agnet 测试时选择不同模型
虚拟 TPM 预算账本 TokenMinuteLedger 多 Agent 并发任务先预留模型 token,保证任意模拟分钟不超过目标 TPM
加权蜂群合规评分 score_items F01-F06 占 60 分,S07/S08/S09 占 25 分,L01/L02 占 15 分,并使用硬上限防止核心蜂群特征失败时被外围证据补分

7. 马尔可夫过程结论

当前实现满足“工程意义上的马尔可夫式状态机”:

  • 如果把 tasks、pheromones、shared_state、observations、agent policy、共识轮次和 TPM 预算账本一起视为完整当前状态,则下一步 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 调用没有建模为随机变量。
  • 部分输出保留历史观测作为审计证据,这属于工程可追溯性,不是形式化随机过程。