provider-sync
Sync provider model lists into OpenClaw config (dry-run preview → confirm → apply). Trigger: /provider_sync
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install clawskills:clawskills~c-joey-provider-synccURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aclawskills~c-joey-provider-sync/file -o c-joey-provider-sync.md# Provider Sync 触发方式:在聊天里输入 `/provider_sync`。 ## 交互式用法(默认,无按钮) 当你只发送 `/provider_sync`(不带任何参数)时,我会回复一组**蓝色命令选项**(可直接点击/复制发送): 选 provider(默认 dry-run,不写配置): /provider_sync provider=my-provider /provider_sync provider=my-gpt-provider /provider_sync provider=my-gemini-provider /provider_sync provider=all 新增 provider(向导): /provider_sync add > 说明:这是“无 inline button 也能点选”的默认方案,任何环境都可用。 > > 你也可以一步到位直接写:/provider_sync provider=<your-provider-id|all>(默认 dry-run)。 ## 适用场景 - 拉取上游 `/v1/models`(OpenAI 兼容)并同步到本地 `openclaw.json` - 规范化模型字段(contextWindow/maxTokens/input/reasoning 等) - 先预览差异(dry-run),确认后再写入(apply),写前自动备份 - (v2 默认)同步时会裁剪 `agents.defaults.models`,让 `/models` 菜单条目 **永远对齐** `models.providers.<provider>.models` ## v2 Breaking(重要) - 默认会 prune `agents.defaults.models`(删除该 provider 下“上游不存在”的条目),避免 `/models` 里出现“菜单很多但不可用”。 - 如果你希望保留旧行为(不删除白名单条目),使用:`--no-prune-agent-aliases` ## 使用方法(推荐) ### 方式 A:交互式(默认) - 发送:`/provider_sync` - 然后在我返回的“蓝色命令选项”里点一个(或复制发送): - /provider_sync provider=my-provider - /provider_sync provider=my-gpt-provider - /provider_sync provider=my-gemini-provider - /provider_sync provider=all - 新增 provider:发送 /provider_sync add 进入文本向导(会先 dry-run 验证,再二次确认写入配置) ### 方式 B:直接带参数(一步到位) 把下面任意一行发出去即可(默认 dry-run): - `/provider_sync provider=my-provider` - `/provider_sync provider=my-gpt-provider` - `/provider_sync provider=my-gemini-provider` - `/provider_sync provider=all` ### 方式 C:新增 provider(一步到位,非交互) 如果你不想走向导,也可以直接提供信息(私聊使用): - `/provider_sync add providerId=<id> baseUrl=<.../v1> apiKey=<可选>` - 注意:真正写入前仍会先 dry-run 验证,并二次确认 应用(会备份;仍建议先预览): - `/provider_sync provider=all mode=apply` 如需让变更尽快生效,可再单独执行一次网关重启(会短暂断线): - `/restart` ### 指定 provider - 预览: - `/provider_sync provider=my-provider` - `/provider_sync provider=my-gpt-provider` - `/provider_sync provider=my-gemini-provider` ## 权限/安全口径(默认建议) - 群聊:仅允许 dry-run / check-only(只读);不要在群聊应用配置变更。 - 私聊:允许 apply(应用变更)与重启(需二次确认)。 ## 生效方式 - 这个 skill 的脚本负责“对比 / 预览 / 应用变更”。 - **网关重启属于单独的系统动作**,为避免误触,一般拆成第二步。 - 最简闭环就是:apply 完后按需再发一次 `/restart`。 ## 参数(与脚本对应) - `provider=<id|all>`:必填(`all` 表示遍历 `models.providers` 下所有 provider) - `mode=dry-run|check-only|apply`:默认 dry-run - 其他高级参数(可选): - `config=<path>`(默认 `/root/.openclaw/openclaw.json`) - `mapping=<path>`(默认 `references/mapping.openai-models.json`) - `profile=auto|generic|gemini|gpt` - `probe=openai-responses,openai-completions` 默认 profile: - `auto`:按模型族系启发式自动判断 - `gemini*` → `gemini` - `gpt-*` / `*codex*` → `gpt` - 其他 → `generic` 推荐: - 一般不用手动写 `profile=`,让 skill 按模型族系自动选就行 - 只有在想强制覆盖默认行为时,再显式传 `profile=gemini` / `profile=gpt` / `profile=generic` ## 备注(实现边界) - 这个 skill 的“按钮面板”属于聊天交互层能力;在未启用 Telegram inlineButtons 的实例上,依然能用本文件提供的纯文本命令完成全部操作。 - 缓存:脚本会在落盘前剔除敏感字段(例如认证相关字段),避免把上游异常返回的敏感内容写入缓存。 ## Main script - `scripts/provider_sync.py`