zcbot/scripts/diag_malformed_samples.py

30 lines
1.2 KiB
Python

"""拉 edit/write malformed 的原始损坏参数样本,判断是「两调用拼接」还是「截断」。"""
import os
import sys
from pathlib import Path
env = Path(__file__).resolve().parent.parent / ".env"
for line in env.read_text(encoding="utf-8").splitlines():
s = line.strip()
if s.startswith("ZCBOT_DB_URL=") and not s.startswith("#"):
os.environ["ZCBOT_DB_URL"] = s.split("=", 1)[1].strip()
from sqlalchemy import create_engine, text # noqa: E402
tool = sys.argv[1] if len(sys.argv) > 1 else "edit"
eng = create_engine(os.environ["ZCBOT_DB_URL"])
with eng.connect() as c:
rows = c.execute(text(
"select task_id, model_profile, units->>'err' err, "
"units->>'head' head, units->>'tail' tail "
"from usage_events "
"where kind='tool_malformed' and units->>'tool'=:t "
"and created_at >= now() - interval '7 days' "
"order by created_at desc limit 8"
), {"t": tool}).fetchall()
for i, (tid, mp, err, head, tail) in enumerate(rows, 1):
print(f"\n=== {i} task={str(tid)[:8]} model={mp} ===")
print(f" err : {err}")
print(f" head: {(head or '')[:220]}")
print(f" tail: {(tail or '')[-220:]}")