From f2b9301fa12996d8b0699d67aa7575823c6511bb Mon Sep 17 00:00:00 2001 From: Peter Zhang <18501667167@qq.com> Date: Tue, 2 Jun 2026 15:49:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20step1=20=E8=A6=86=E7=9B=96=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E9=87=8D=E8=AF=95=E4=BB=8E=201=20=E6=AC=A1=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=B0=E6=9C=80=E5=A4=9A=202=20=E6=AC=A1=20-=20Clos?= =?UTF-8?q?es=20#54?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首次重试修复完路径/格式问题后,如果覆盖率仍不达标,追加第二轮重试 以进一步补充缺失的功能单元,降低 QE Audit inadequate_ratio。 Co-Authored-By: Claude Opus 4.7 --- .../ir_generation_skill/step1_semantic_index.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/skills/ir_generation_skill/step1_semantic_index.py b/skills/ir_generation_skill/step1_semantic_index.py index 4e34b1a..15897a6 100644 --- a/skills/ir_generation_skill/step1_semantic_index.py +++ b/skills/ir_generation_skill/step1_semantic_index.py @@ -880,10 +880,14 @@ def run_ensemble_semantic_index(doc: dict) -> dict: if v: print(f" {k}: {len(v)} 个问题") - # Feedback retry: re-run with coverage feedback (one retry) - feedback = _build_coverage_feedback(gaps) - if feedback: - print(f"\n 覆盖反馈重试 (feedback长度={len(feedback)}字符)...", flush=True) + # Feedback retry: re-run with coverage feedback (up to 2 retries) + retry_count = 0 + while retry_count < 2: + feedback = _build_coverage_feedback(gaps) + if not feedback: + break + retry_count += 1 + print(f"\n 覆盖反馈重试 #{retry_count} (feedback长度={len(feedback)}字符)...", flush=True) try: retry_prompt = build_prompt(doc, feedback, all_paths) print(f" 重试 prompt 长度: {len(retry_prompt)} 字符", flush=True) @@ -892,17 +896,15 @@ def run_ensemble_semantic_index(doc: dict) -> dict: n_retry_concepts = len(retry_result.get("concepts", [])) print(f" 重试返回: {n_retry_concepts} 概念, {n_retry_units} 功能单元", flush=True) if n_retry_units > 0: - # Check which new sections were covered retry_sections = set() for fu in retry_result.get("function_units", []): for src in fu.get("sources", []): if src.get("section"): retry_sections.add(src["section"]) print(f" 重试新增 sections: {sorted(retry_sections)}", flush=True) - # Merge retry into results and re-validate semantic_indices.append(retry_result) merged = ensemble_merge(semantic_indices) - merged["ensemble_temperatures"] = list(temperatures) + ["feedback_retry"] + merged["ensemble_temperatures"] = list(temperatures) + [f"feedback_retry_{retry_count}"] passed, gaps = _quick_validate(merged, doc, all_paths) merged["validation_passed"] = passed merged["validation_gaps"] = { @@ -913,6 +915,7 @@ def run_ensemble_semantic_index(doc: dict) -> dict: print(f" 覆盖反馈重试失败: {e}", flush=True) import traceback traceback.print_exc() + break return merged -- 2.52.0