From 467d9495f88b6745aa4560505864436f2a4a5d08 Mon Sep 17 00:00:00 2001 From: zizi Date: Mon, 13 Jul 2026 18:44:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=86=E6=9E=B6:=20B4-S4=E6=94=B6=E5=B0=BE?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=AE=A1=E6=A0=B8=E5=88=86=E9=A1=B5=E2=89=A4?= =?UTF-8?q?30=E5=8D=A1/=E6=89=B9(=E6=94=BE=E9=87=8F=E9=98=B2=E7=88=86,?= =?UTF-8?q?=E5=90=8C=E6=89=B9=E4=BA=92=E8=A7=81=E4=BF=9Dfamily=E6=A3=80?= =?UTF-8?q?=E5=87=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review-cards/scripts/review_cards.py | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/.claude/skills/review-cards/scripts/review_cards.py b/.claude/skills/review-cards/scripts/review_cards.py index 6da0dac..4f85acc 100644 --- a/.claude/skills/review-cards/scripts/review_cards.py +++ b/.claude/skills/review-cards/scripts/review_cards.py @@ -88,17 +88,22 @@ def review(work_id, batch, model, dry_run): if not rows: click.echo("无待审卡") return - cards_json = json.dumps([{"idx": i + 1, **r[1]} for i, r in enumerate(rows)], - ensure_ascii=False, indent=1) - all_reviews = {} - for role, desc in ROLES.items(): - content, usage = chat( - REVIEW_PROMPT.format(criteria=CRITERIA, n=len(rows), cards=cards_json), - model=model, system=SYSTEM_TMPL.format(role_desc=desc)) - data = extract_json(content) - all_reviews[role] = {int(r["idx"]): r for r in data.get("reviews", []) if r.get("idx")} - click.echo(f"[{role}] 评 {len(data.get('reviews', []))} 卡 " - f"(in={usage.get('prompt_tokens')}) 总评: {data.get('overall', '')[:80]}") + # 分页 ≤30 卡/批:放量后单调用塞全库必爆;同批互见保 family 检出 + PAGE = 30 + all_reviews = {role: {} for role in ROLES} + for p0 in range(0, len(rows), PAGE): + page = rows[p0:p0 + PAGE] + cards_json = json.dumps([{"idx": p0 + i + 1, **r[1]} for i, r in enumerate(page)], + ensure_ascii=False, indent=1) + for role, desc in ROLES.items(): + content, usage = chat( + REVIEW_PROMPT.format(criteria=CRITERIA, n=len(page), cards=cards_json), + model=model, system=SYSTEM_TMPL.format(role_desc=desc)) + data = extract_json(content) + all_reviews[role].update( + {int(r["idx"]): r for r in data.get("reviews", []) if r.get("idx")}) + click.echo(f"[{role}] 批{p0 // PAGE + 1} 评 {len(data.get('reviews', []))} 卡 " + f"(in={usage.get('prompt_tokens')}) 总评: {data.get('overall', '')[:80]}") # 汇总判定并写库(按序号匹配) stats = {"pass": 0, "revise": 0, "reject": 0} for i, (cid, payload) in enumerate(rows):