feat(evals): 留出集生成——风格 C、留出集改写导出;评测可模拟人工确认响应方式
- build.py / mutate.py:补风格 C(叙述型),由封存一侧的会话按封存说明实现;开发集风格 A / B 输出逐字节不变 - build.py:复述要求时去行首编号不再吃掉「2路服务器」这类内容数字 - export_rewrite.py:没有风格 A 稿时从未改写的风格 B 稿导出 - run_check.py:--modes 模拟清单页上人工确认的响应方式(C12 的人工确认点) - check-eval.md:第 3 步冻结点(a60d16e) 查标代码(server/src、prompts)自冻结后未改。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -186,6 +186,7 @@ async def main() -> None:
|
||||
ap.add_argument("--rules-only", action="store_true", help="只重跑规则检查,写回已有运行的 results.json")
|
||||
ap.add_argument("--no-direct", action="store_true", help="不做偏离栏直读(对比用)")
|
||||
ap.add_argument("--no-mismatch", action="store_true", help="不做响应错位判断(对比用)")
|
||||
ap.add_argument("--modes", help="人工确认后的响应方式,如 technical=implicit,commercial=implicit")
|
||||
args = ap.parse_args()
|
||||
d = OUT / args.bid
|
||||
manifest = json.loads((d / "manifest.json").read_text())
|
||||
@@ -246,6 +247,10 @@ async def main() -> None:
|
||||
decisions: dict[UUID, applicability.Decision] = {}
|
||||
if not args.no_modes:
|
||||
modes = response_mode.detect(gold.sentences(manifest["tender"]))
|
||||
for pair in filter(None, (args.modes or "").split(",")):
|
||||
cat, mode = pair.split("=") # 模拟清单页上人工确认 / 改过响应方式(C12 的人工确认点)
|
||||
m = modes[cat]
|
||||
modes[cat] = response_mode.Mode(cat, mode, "found", m.explicit, m.implicit)
|
||||
decisions = {i: applicability.decide(p, modes) for i, p in items.items()}
|
||||
items = {i: p for i, p in items.items() if decisions[i].match}
|
||||
results, stats = await match.run(ctx, uuid4(), items, docs, progress)
|
||||
|
||||
Reference in New Issue
Block a user