#!/bin/bash # 换算率标定批·全量采集脚本(2026-09-23) # 10 次采集顺序执行:7 个 OFAT 注入档直入口(n=100×双画像×两层,同 seed0 配对) # + 3 个花费序战役(k=60×双画像)。产物 = production/qa/conversion-calibration/ 下 # 各档 .log/.vjson + 合并 calibration.raw.jsonl(判定端 --from-raw 消费)。 set -u GODOT=/d/code/godot/Godot_v4.7.2-stable_win64_console.exe SLICE=/d/code/g-plan2-conversion-calibration/game QA=/d/code/g-plan2-conversion-calibration/production/qa/conversion-calibration mkdir -p "$QA" cd "$SLICE" || exit 1 run() { local name=$1; shift local t0=$(date +%s) "$GODOT" --headless --path . --script res://smoke/verifier_batch.gd -- "$@" > "$QA/$name.log" 2>&1 local rc=$? grep '^VJSON ' "$QA/$name.log" > "$QA/$name.vjson" local rows=$(wc -l < "$QA/$name.vjson") local errs=$(grep -cE 'SCRIPT ERROR|Parse Error' "$QA/$name.log") echo "[$(date +%H:%M:%S)] done $name rc=$rc rows=$rows errs=$errs $(( $(date +%s) - t0 ))s" } echo "=== 换算率标定采集开跑 $(date +%F' '%H:%M:%S) ===" run base n=100 levels=1,2 only=level seed0=8000 run hp3 n=100 levels=1,2 only=level seed0=8000 inject=max_hp:3 run hp6 n=100 levels=1,2 only=level seed0=8000 inject=max_hp:6 run atk1 n=100 levels=1,2 only=level seed0=8000 inject=atk:1 run atk2 n=100 levels=1,2 only=level seed0=8000 inject=atk:2 run ac1 n=100 levels=1,2 only=level seed0=8000 inject=armor_class:1 run ac2 n=100 levels=1,2 only=level seed0=8000 inject=armor_class:2 run camp_hp k=60 only=campaign seed0=8000 spend=hp_first run camp_atk k=60 only=campaign seed0=8000 spend=atk_first run camp_ac k=60 only=campaign seed0=8000 spend=armor_first cat "$QA"/base.vjson "$QA"/hp3.vjson "$QA"/hp6.vjson "$QA"/atk1.vjson "$QA"/atk2.vjson \ "$QA"/ac1.vjson "$QA"/ac2.vjson "$QA"/camp_hp.vjson "$QA"/camp_atk.vjson "$QA"/camp_ac.vjson \ | sed 's/^VJSON //' > "$QA/calibration.raw.jsonl" echo "=== 合并完成:$(wc -l < "$QA/calibration.raw.jsonl") 局 → $QA/calibration.raw.jsonl ==="