Files
Agentswarm/docs/TESTING.md
Songhaoz666andClaude Opus 4.8 a289495823 复审整改(PR #24):沙箱 fail-closed 隔离门控 + 可回放 DecisionTrace
回应 Fasthei 的 Request changes 两个阻塞项:

1) 安全 / fail-closed 沙箱隔离(原仅靠 ENABLE_QUALITY_EVAL + 运维约定):
   - 新增第二道显式确认 HEICODE_SANDBOX_ISOLATED(断言运行在隔离 Pod 内)。
   - sandbox.run_tests() 与 quality.evaluate_run_quality() 执行任何代码前调用
     assert_isolated(),未确认即抛 SandboxIsolationError——不写文件、不起子进程。
   - 启动期 assert_quality_eval_safe():ENABLE_QUALITY_EVAL 开但隔离未确认 → 拒绝启动
     (平台级硬失败,非运维口头约定)。
   - 文档(security-boundary §8.1/§9、CLAUDE.md)与测试同步:test-sandbox/test-quality
     先断言未确认时硬失败,再显式确认后继续。

2) #10 DecisionTrace 可回放(原仅存被选中任务的标量):
   - Decision 现记录完整重放上下文:整个候选集(每候选 tau/eta/weight/p_norm/dependents)、
     alpha/beta/epsilon、seed、free_slots、total_weight、explore_draw、select_pick、
     select_index、explored 分支。
   - 新增 DecisionEngine.replay_decision(trace):仅凭一条 trace(无 RNG/活体状态)复现被选任务;
     test-decision-engine 断言「重放==实选」跨 50 次决策(探索+利用)成立。
   - decision-engine.md §3.3 更新为可回放 DecisionTrace。

附:新增 docs/TESTING.md(reviewer 速查:依赖安装 + 每套测试命令,复审者此前因缺 fakeredis
未能跑到断言)。本地 11 项 gate 全绿。

影响范围:Swarm(orchestrator + 测试 + 文档)。不改 Manager↔Swarm 契约;新增开关
HEICODE_SANDBOX_ISOLATED(默认未设=拒绝执行)。仍非验收:gain/Benchmark_Agent 仍 NaN。

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

2.0 KiB
Raw Permalink Blame History

如何运行测试(reviewer 速查)

所有命令从仓库根(agent_swarm_v6/)执行。先装依赖(fakeredis 等都在 requirements 里—— 缺它会导致 REDIS_FAKE 用例跑不到断言):

pip install -r orchestrator/requirements.txt -r agent/requirements.txt

测试是 hermetic 的:内存存储(REDIS_FAKE=1),planner 离线,不需要模型 key。

全套(与 CI tests job 完全一致)

# 契约 / 工作流
REDIS_FAKE=1 python scripts/test-runtime-contract.py
REDIS_FAKE=1 python scripts/test-merge-smoke.py
REDIS_FAKE=1 python scripts/test-workflow-e2e.py
REDIS_FAKE=1 python scripts/test-contract-events.py

# benchmark 公式 / 采集 / 基线
REDIS_FAKE=1 python scripts/test-benchmark-metrics.py
REDIS_FAKE=1 python scripts/test-benchmark-collector.py
REDIS_FAKE=1 python scripts/test-baseline-comparison.py

# 代码沙箱(fail-closed 隔离 + 真实执行);脚本自行设置 HEICODE_SANDBOX_ISOLATED
python scripts/test-sandbox.py

# 质量插桩 Group B(脚本自行设置 REDIS_FAKE/ENABLE_QUALITY_EVAL/HEICODE_SANDBOX_ISOLATED)
python scripts/test-quality.py

# ACO 决策引擎 Group A(含可回放 DecisionTrace)
REDIS_FAKE=1 python scripts/test-decision-engine.py

# 同一 e2e,但走概率 ACO 派发(seed 固定,确定性)
REDIS_FAKE=1 ENABLE_ACO_DISPATCH=1 ACO_SEED=42 python scripts/test-workflow-e2e.py

安全说明:代码执行门控

test-sandbox.py / test-quality.py 会执行生成代码,因此需要 fail-closed 的隔离确认 HEICODE_SANDBOX_ISOLATED=1。这两个脚本自行设置该变量(并先断言未设置时硬失败),所以你直接 python scripts/test-*.py 即可;不要在非隔离环境对真实 orchestrator 设置该变量。详见 docs/integration/security-boundary.md §8.1。

约定:本仓任何新增/修改测试,都应在此文件与 PR 描述里给出可直接复制运行的命令(含依赖安装)。