feat: add failure-aware preflight and Qwen review

This commit is contained in:
CoolBoy
2026-08-10 21:44:42 +08:00
parent 5e47d9e695
commit 3d15f60284
21 changed files with 2672 additions and 21 deletions

View File

@@ -11,6 +11,7 @@ DEFAULT_KEY_PATH = Path("KEY.md")
DEFAULT_KEYS_PATH = Path("KEYS.md")
MODULE_DIR = Path(__file__).resolve().parent
MODELSCOPE_TOKEN_ENV_NAMES = ("MODELSCOPE_API_TOKEN", "MODELSCOPE_TOKEN")
DASHSCOPE_KEY_NAMES = ("MODELHUB_QWEN_API_KEY", "DASHSCOPE_API_KEY", "dashscope")
def _token_sort_key(key: str) -> tuple[int, str]:
@@ -56,6 +57,20 @@ def load_modelhub_tokens(values: dict[str, str]) -> list[str]:
return [token for _, token in tokens]
def ensure_dashscope_key(*paths: Path) -> bool:
"""Load only the Qwen credential from repository-local dotenv files."""
if os.getenv("MODELHUB_QWEN_API_KEY") or os.getenv("DASHSCOPE_API_KEY"):
return True
candidates = paths or (Path(".env"), MODULE_DIR.parent / ".env")
values = load_key_files(*candidates)
for key in DASHSCOPE_KEY_NAMES:
value = str(values.get(key) or "").strip().strip('"').strip("'")
if value:
os.environ["MODELHUB_QWEN_API_KEY"] = value
return True
return False
def _split_token_list(value: str | None) -> list[str]:
if not value:
return []
@@ -74,6 +89,7 @@ def _add_token(tokens: list[str], token: str | None) -> None:
def ensure_tokens(args: argparse.Namespace) -> None:
ensure_dashscope_key()
primary_key_path = Path(getattr(args, "key_path", DEFAULT_KEY_PATH))
supplemental_key_path = primary_key_path.with_name(DEFAULT_KEYS_PATH.name)
if not primary_key_path.exists():