config: 新增 [run] mode 运行模式配置(cascade/doubao/deepseek)

- config.ini 全局生效,GUI 跟随配置,CLI --mode 参数可临时覆盖
- 必填项检查与首次配置对话框按模式过滤(仅豆包不要求 DeepSeek 配置,反之亦然)
- 模板/示例/README 同步更新,新增 2 个配置测试(共 35 个全部通过)
This commit is contained in:
yeuimu
2026-09-02 16:06:59 +08:00
parent 0033b7a4d2
commit 0ed5b9d9ff
6 changed files with 86 additions and 29 deletions
+7 -6
View File
@@ -22,9 +22,9 @@ def build_parser() -> argparse.ArgumentParser:
p.add_argument("-o", "--output", default=None, help="报表输出目录(默认为图片文件夹)")
p.add_argument("-c", "--config", default=None, help="配置文件路径(默认 config.ini)")
p.add_argument("--prompt", default=None, help="提示词文件路径(覆盖配置)")
p.add_argument("--mode", choices=["cascade", "doubao", "deepseek"], default="cascade",
help="检测模式cascade=豆包初筛+DeepSeek复检(默认),doubao=仅豆包,"
"deepseek=仅 DeepSeek 全量")
p.add_argument("--mode", choices=["cascade", "doubao", "deepseek"], default=None,
help="检测模式(默认取 config.ini [run] mode,未配置则 cascade):"
"cascade=豆包初筛+DeepSeek复检,doubao=仅豆包,deepseek=仅 DeepSeek 全量")
p.add_argument("--workers-ark", type=int, default=None, help="豆包并发数")
p.add_argument("--workers-ds", type=int, default=None, help="DeepSeek 并发数")
p.add_argument("--max-tokens", type=int, default=None,
@@ -47,8 +47,9 @@ def main(argv=None) -> int:
cfg.deepseek_workers = args.workers_ds
if args.max_tokens:
cfg.max_tokens = args.max_tokens
mode = args.mode or cfg.mode
missing = missing_fields(cfg)
missing = missing_fields(cfg, mode)
if missing:
print(f"配置不完整,请编辑 {DEFAULT_CONFIG} 填写以下必填项:")
for m in missing:
@@ -57,7 +58,7 @@ def main(argv=None) -> int:
try:
rows, summary = asyncio.run(run_detection(
args.folder, cfg, mode=args.mode, verify=not args.no_verify))
args.folder, cfg, mode=mode, verify=not args.no_verify))
except FileNotFoundError as e:
logger.error("路径或文件不存在:%s", e)
return 1
@@ -72,7 +73,7 @@ def main(argv=None) -> int:
try:
out_dir = args.output or args.folder
ts_dir = organize_output(rows, args.folder, out_dir)
xlsx = build_report(rows, str(ts_dir), {"mode": args.mode, **{
xlsx = build_report(rows, str(ts_dir), {"mode": mode, **{
k: summary.get(k) for k in ("ds_calls", "ds_peak_cost", "ds_idle_cost")}})
except Exception: # noqa: BLE001
logger.exception("输出组织/报表生成失败")