tao-shen Claude Opus 4.6 commited on
Commit
e3478dc
·
1 Parent(s): 306fbc6

fix: rebuild providers from scratch on each startup

Browse files

Prevents stale providers (e.g. openrouter with deleted key) from
persisting via dataset backup. Also removes hardcoded model list
from zhipu provider — let OpenClaw discover models dynamically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. scripts/sync_hf.py +8 -14
scripts/sync_hf.py CHANGED
@@ -451,18 +451,18 @@ class OpenClawFullSync:
451
  data.setdefault("agents", {}).setdefault("defaults", {}).setdefault("model", {})
452
  data.setdefault("session", {})["scope"] = "global"
453
 
454
- # OpenAI-compatible provider (OPENAI_API_KEY + optional OPENAI_BASE_URL)
455
- data.setdefault("models", {}).setdefault("providers", {})
 
456
  if OPENAI_API_KEY:
457
- data["models"]["providers"]["openai"] = {
458
  "baseUrl": OPENAI_BASE_URL,
459
  "apiKey": OPENAI_API_KEY,
460
  "api": "openai-completions",
461
  }
462
  print(f"[SYNC] Set OpenAI-compatible provider (baseUrl={OPENAI_BASE_URL})")
463
- # OpenRouter provider (optional)
464
  if OPENROUTER_API_KEY:
465
- data["models"]["providers"]["openrouter"] = {
466
  "baseUrl": "https://openrouter.ai/api/v1",
467
  "apiKey": OPENROUTER_API_KEY,
468
  "api": "openai-completions",
@@ -472,22 +472,16 @@ class OpenClawFullSync:
472
  ]
473
  }
474
  print("[SYNC] Set OpenRouter provider")
475
- # Zhipu AI provider (optional)
476
  if ZHIPU_API_KEY:
477
- data["models"]["providers"]["zhipu"] = {
478
  "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
479
  "apiKey": ZHIPU_API_KEY,
480
  "api": "openai-completions",
481
- "models": [
482
- {"id": "glm-4-flash", "name": "GLM-4 Flash"},
483
- {"id": "glm-4-plus", "name": "GLM-4 Plus"},
484
- {"id": "glm-4-long", "name": "GLM-4 Long"},
485
- ]
486
  }
487
  print("[SYNC] Set Zhipu AI provider")
488
- if not OPENAI_API_KEY and not OPENROUTER_API_KEY and not ZHIPU_API_KEY:
489
  print("[SYNC] WARNING: No API key set (OPENAI/OPENROUTER/ZHIPU), LLM features may not work")
490
- data["models"]["providers"].pop("gemini", None)
491
  data["agents"]["defaults"]["model"]["primary"] = OPENCLAW_DEFAULT_MODEL
492
 
493
  # Plugin whitelist (only load telegram + whatsapp to speed up startup)
 
451
  data.setdefault("agents", {}).setdefault("defaults", {}).setdefault("model", {})
452
  data.setdefault("session", {})["scope"] = "global"
453
 
454
+ # Build providers from scratch only include providers with active API keys.
455
+ # This ensures removed secrets don't leave stale providers from backup.
456
+ providers = {}
457
  if OPENAI_API_KEY:
458
+ providers["openai"] = {
459
  "baseUrl": OPENAI_BASE_URL,
460
  "apiKey": OPENAI_API_KEY,
461
  "api": "openai-completions",
462
  }
463
  print(f"[SYNC] Set OpenAI-compatible provider (baseUrl={OPENAI_BASE_URL})")
 
464
  if OPENROUTER_API_KEY:
465
+ providers["openrouter"] = {
466
  "baseUrl": "https://openrouter.ai/api/v1",
467
  "apiKey": OPENROUTER_API_KEY,
468
  "api": "openai-completions",
 
472
  ]
473
  }
474
  print("[SYNC] Set OpenRouter provider")
 
475
  if ZHIPU_API_KEY:
476
+ providers["zhipu"] = {
477
  "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
478
  "apiKey": ZHIPU_API_KEY,
479
  "api": "openai-completions",
 
 
 
 
 
480
  }
481
  print("[SYNC] Set Zhipu AI provider")
482
+ if not providers:
483
  print("[SYNC] WARNING: No API key set (OPENAI/OPENROUTER/ZHIPU), LLM features may not work")
484
+ data.setdefault("models", {})["providers"] = providers
485
  data["agents"]["defaults"]["model"]["primary"] = OPENCLAW_DEFAULT_MODEL
486
 
487
  # Plugin whitelist (only load telegram + whatsapp to speed up startup)