#!/usr/bin/env python3 """抽取智能体派发入口(阶段 F 第二部分)。 真实模型调用必须显式授权并显式给出 provider/model: .venv/bin/python .agent/skills/extract-chapter-knowledge/scripts/extract_via_dispatch.py 12 3 \ --provider catproxy-anthropic --model claude-opus-5 --thinking medium """ from __future__ import annotations import argparse import json import sys from pathlib import Path SCRIPT_DIR = Path(__file__).resolve().parent if str(SCRIPT_DIR) not in sys.path: sys.path.insert(0, str(SCRIPT_DIR)) from dispatch_extraction_bridge import run_extraction_via_dispatch # noqa: E402 REPO_ROOT = SCRIPT_DIR.parents[3] def main(argv: list[str] | None = None) -> int: parser = argparse.ArgumentParser(description="派发抽取智能体做章后知识抽取(知识链)") parser.add_argument("work_id", type=int) parser.add_argument("chapter_order", type=int) parser.add_argument("--provider", required=True) parser.add_argument("--model", required=True) parser.add_argument("--thinking", default=None) parser.add_argument("--run-id", default=None) args = parser.parse_args(argv) summary = run_extraction_via_dispatch( args.work_id, args.chapter_order, repo_root=REPO_ROOT, provider=args.provider, model=args.model, thinking=args.thinking, run_id=args.run_id, spec_dir=REPO_ROOT / "docs" / "write-chapter" / "artifacts", ) print(json.dumps( {k: v for k, v in summary.items() if k != "lesson"}, ensure_ascii=False, default=str, )) print(f"RUN_ID={summary['run_id']}") print("知识草稿已落库(草稿态);经经验确认通道 :8766 人审后才转正。") return 0 if __name__ == "__main__": raise SystemExit(main())