spotcheck_phase_tier_snapshot.py
1.55 KB
"""冻结重跑 spot check:验证修复后的 spawn 日志快照真能落盘 PHASE/TIER/MODEL。
对 reasoning-tier-allocation(本次吸收目标 skill)跑一次真实 spawn:
job_type=learn_apply(映射 verify/high),命令未 pin -m ⇒ 期望 MODEL:DEFAULT(unpinned)。
真实执行 _spawn_hermes_job(非存在性检查),读回调日志头部断言字段。
"""
import sys, time, pathlib
sys.path.insert(0, "/data/data/com.termux/files/home/wechat-viewer")
import app # noqa: E402
tid = app._spawn_hermes_job(
"learn_apply", "tier-probe",
["hermes", "chat", "-q", "只回复 OK", "-s", "reasoning-tier-allocation",
"--yolo", "-t", "terminal"],
timeout=90)
lf = pathlib.Path(app.HERMES_JOBS_DIR) / f"{tid}.log"
time.sleep(3)
head = lf.read_text()[:700] if lf.exists() else "<NO LOG>"
print("TID:", tid)
print("---- log head ----")
print(head)
print("------------------")
checks = [
("CMD 字段落盘", "\nCMD:" in "\n" + head),
("ENV_KEYS 字段落盘", "ENV_KEYS:" in head),
("TIMEOUT 字段落盘", "TIMEOUT:" in head),
("PHASE=verify(learn_apply 属验证阶段)", "PHASE:verify" in head),
("TIER_EXPECTED=high(验证阶段期望高档)", "TIER_EXPECTED:high" in head),
("MODEL 观测到未 pin 默认档", "MODEL:DEFAULT(unpinned)" in head),
("无 SNAPSHOT_ERROR", "SNAPSHOT_ERROR" not in head),
]
failed = [l for l, ok in checks if not ok]
for l, ok in checks:
print(("PASS " if ok else "FAIL ") + l)
print(f"\n{len(checks)-len(failed)}/{len(checks)} PASS")
raise SystemExit(1 if failed else 0)