Initial commit

This commit is contained in:
2026-09-04 14:58:42 +08:00
commit 439cad87d9
4601 changed files with 29440 additions and 0 deletions
+97
View File
@@ -0,0 +1,97 @@
"""动态编译唯一命令行入口。"""
from __future__ import annotations
import argparse
import os
import sys
from pathlib import Path
from scripts.provider_router import parse_model_reference
from .pipeline import run_pipeline
from .scoring.agentrm import (
DEFAULT_BATCH_SIZE,
DEFAULT_CONCURRENCY,
DEFAULT_MAX_LENGTH,
DEFAULT_RM_API_URL,
DEFAULT_TIMEOUT,
)
def _provider_model(value: str) -> str:
try:
return parse_model_reference(value).value
except ValueError as exc:
raise argparse.ArgumentTypeError(str(exc)) from exc
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="python -m scripts.dynamic_compile.fast",
description="从一组 BenchFlow 历史轨迹生成一个动态编译候选 Skill。",
)
parser.add_argument("--traces", required=True, type=Path, help="BenchFlow 轨迹目录")
parser.add_argument("--skill", required=True, type=Path, help="含根 SKILL.md 的 Skill 包")
parser.add_argument("--score-output", type=Path, help="评分阶段产物目录")
parser.add_argument("--output", type=Path, help="分析与候选 Skill 产物目录")
parser.add_argument(
"--model",
required=True,
type=_provider_model,
help="所有外部模型调用使用的 provider/model",
)
parser.add_argument("--max-parallel", type=int, default=3)
parser.add_argument(
"--rm-api-url", default=os.environ.get("RM_API_URL", DEFAULT_RM_API_URL)
)
parser.add_argument(
"--rm-max-length",
type=int,
default=os.environ.get("RM_MAX_LENGTH", str(DEFAULT_MAX_LENGTH)),
)
parser.add_argument(
"--rm-timeout",
type=float,
default=os.environ.get("RM_TIMEOUT", str(DEFAULT_TIMEOUT)),
)
parser.add_argument(
"--rm-concurrency",
type=int,
default=os.environ.get("RM_CONCURRENCY", str(DEFAULT_CONCURRENCY)),
)
parser.add_argument(
"--rm-batch-size",
type=int,
default=os.environ.get("RM_BATCH_SIZE", str(DEFAULT_BATCH_SIZE)),
)
parser.add_argument(
"--force",
action="store_true",
help="复用有效评分/Map 缓存,强制重建 Reduce、Patch 和候选 Skill",
)
return parser
def main(argv: list[str] | None = None) -> int:
args = build_parser().parse_args(argv)
try:
result = run_pipeline(
args.traces,
args.skill,
score_output=args.score_output,
output=args.output,
model=args.model,
max_parallel=args.max_parallel,
rm_api_url=args.rm_api_url,
rm_max_length=args.rm_max_length,
rm_timeout=args.rm_timeout,
rm_concurrency=args.rm_concurrency,
rm_batch_size=args.rm_batch_size,
force=args.force,
)
except (OSError, RuntimeError, ValueError) as exc:
print(f"error: {exc}", file=sys.stderr)
return 2
print(result)
return 0