fix(tier2): C1 trace 加 workdir 存在守卫(免 scaffold 前刷 FileNotFoundError)

008 实证:首轮 scaffold_init 之前会有早期 SSE 事件,此时工程 workdir 还没建 → trace 追加写刷
FileNotFoundError(best-effort 已吞、但刷屏)。加守卫:dirname 不存在即静默跳过(不抢先建目录、
免干扰 scaffold 的"已存在不覆盖"逻辑)。scaffold 后正常落 trace。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-24 12:57:14 +00:00
parent 3156a2a9db
commit c1bf28f15b

View File

@ -258,6 +258,11 @@ def _trace_sse_event(trace_path: Any, event: dict, elapsed_s: float, attempt: in
return
try:
import json as _json # noqa: PLC0415
import os as _os # noqa: PLC0415
# 工程 workdir 尚未建(scaffold_init 之前的早期事件)→ 静默跳过,不抢先建目录(免干扰 scaffold 的
# "已存在不覆盖" 逻辑),也免刷 FileNotFoundError(008 实证:首轮 scaffold 前会有这类早期事件)。
if not _os.path.isdir(_os.path.dirname(trace_path)):
return
rec = {"t": round(elapsed_s, 1), "attempt": attempt, **_compact_sse_event(event)}
with open(trace_path, "a", encoding="utf-8") as f:
f.write(_json.dumps(rec, ensure_ascii=False) + "\n")