Files
mcm-26-b/scripts/save_official_rl_summary.py
2026-09-11 16:56:39 +08:00

37 lines
1.2 KiB
Python

"""从 Tee 输出的 CLI 文本中提取末尾 JSON,落盘为 summary.json。
官方演练目录由 run 命令产生 cli-output.txt(前面可能有 CUDA 警告),
本脚本只提取最后一个完整 JSON 对象,并核对 adjacent 的官方 result.json。
"""
import argparse
import json
from pathlib import Path
def extract(text: str) -> dict:
start = text.rfind("\n{")
if start < 0:
raise ValueError("未找到 JSON 对象")
return json.loads(text[start + 1:])
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("folder", type=Path)
args = parser.parse_args()
folder = args.folder
summary = extract((folder / "cli-output.txt").read_text(encoding="utf-8"))
(folder / "summary.json").write_text(
json.dumps(summary, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print(json.dumps({
"folder": str(folder), "completed": summary["completed"],
"virtual_time_s": summary["virtual_time_s"],
"cleared_channels": summary["cleared_channels"],
"total_requests": summary["total_requests"],
}, ensure_ascii=False))
return 0
if __name__ == "__main__":
raise SystemExit(main())