Files
2026-09-04 14:58:42 +08:00

59 lines
1.8 KiB
Python

"""完整编译流水线的唯一命令行入口。"""
from __future__ import annotations
import argparse
import sys
from scripts.provider_router import parse_model_reference
from .pipeline import run_pipeline
def _model_reference(value: str) -> str:
try:
return parse_model_reference(value).value
except ValueError as exc:
raise argparse.ArgumentTypeError(str(exc)) from exc
def _parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="python -m scripts.compile_pipeline",
description="Run static compilation, Fast optimization, and Deep iteration for one SkillsBench task.",
)
parser.add_argument("--harness", required=True, choices=("opencode", "claude-code", "claude"))
parser.add_argument(
"--model", required=True, type=_model_reference,
help="Target model used by BenchFlow, in provider/model format.",
)
parser.add_argument(
"--external-model", required=True, type=_model_reference,
help="Model used for static planning, Fast analysis, and Deep analysis.",
)
parser.add_argument(
"--task", required=True,
help="SkillsBench task name or a path below data/skills-bench/tasks.",
)
parser.add_argument(
"--run-dir",
help="Run directory below results/compile-pipeline; reuse it to resume an interrupted run.",
)
return parser
def main(argv: list[str] | None = None) -> int:
args = _parser().parse_args(argv)
try:
final_skill = run_pipeline(
harness=args.harness, model=args.model, external_model=args.external_model,
task=args.task, run_dir=args.run_dir,
)
except (OSError, RuntimeError, ValueError) as exc:
print(f"error: {exc}", file=sys.stderr)
return 2
print(final_skill)
return 0
raise SystemExit(main())