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=(默认 dry-run)。
适用场景
- - 拉取上游
/v1/models(OpenAI 兼容)并同步到本地 INLINECODE3 - 规范化模型字段(contextWindow/maxTokens/input/reasoning 等)
- 先预览差异(dry-run),确认后再写入(apply),写前自动备份
- (v2 默认)同步时会裁剪
agents.defaults.models,让 /models 菜单条目 永远对齐 INLINECODE6
v2 Breaking(重要)
- - 默认会 prune
agents.defaults.models(删除该 provider 下“上游不存在”的条目),避免 /models 里出现“菜单很多但不可用”。 - 如果你希望保留旧行为(不删除白名单条目),使用: INLINECODE9
使用方法(推荐)
方式 A:交互式(默认)
- - 发送: INLINECODE10
- 然后在我返回的“蓝色命令选项”里点一个(或复制发送):
- /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):
- - INLINECODE11
- INLINECODE12
- INLINECODE13
- INLINECODE14
方式 C:新增 provider(一步到位,非交互)
如果你不想走向导,也可以直接提供信息(私聊使用):
- 注意:真正写入前仍会先 dry-run 验证,并二次确认
应用(会备份;仍建议先预览):
如需让变更尽快生效,可再单独执行一次网关重启(会短暂断线):
指定 provider
-
/provider_sync provider=my-provider
-
/provider_sync provider=my-gpt-provider
- INLINECODE20
权限/安全口径(默认建议)
- - 群聊:仅允许 dry-run / check-only(只读);不要在群聊应用配置变更。
- 私聊:允许 apply(应用变更)与重启(需二次确认)。
生效方式
- - 这个 skill 的脚本负责“对比 / 预览 / 应用变更”。
- 网关重启属于单独的系统动作,为避免误触,一般拆成第二步。
- 最简闭环就是:apply 完后按需再发一次
/restart。
参数(与脚本对应)
- -
provider=<id|all>:必填(all 表示遍历 models.providers 下所有 provider) - INLINECODE25 :默认 dry-run
- 其他高级参数(可选):
-
config=<path>(默认
/root/.openclaw/openclaw.json)
-
mapping=<path>(默认
references/mapping.openai-models.json)
-
profile=auto|generic|gemini|gpt
- INLINECODE31
默认 profile:
-
gemini* →
gemini
-
gpt-* /
*codex* →
gpt
- 其他 → INLINECODE38
推荐:
- - 一般不用手动写
profile=,让 skill 按模型族系自动选就行 - 只有在想强制覆盖默认行为时,再显式传
profile=gemini / profile=gpt / INLINECODE42
备注(实现边界)
- - 这个 skill 的“按钮面板”属于聊天交互层能力;在未启用 Telegram inlineButtons 的实例上,依然能用本文件提供的纯文本命令完成全部操作。
- 缓存:脚本会在落盘前剔除敏感字段(例如认证相关字段),避免把上游异常返回的敏感内容写入缓存。
Main script
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=(默认 dry-run)。
适用场景
- - 拉取上游 /v1/models(OpenAI 兼容)并同步到本地 openclaw.json
- 规范化模型字段(contextWindow/maxTokens/input/reasoning 等)
- 先预览差异(dry-run),确认后再写入(apply),写前自动备份
- (v2 默认)同步时会裁剪 agents.defaults.models,让 /models 菜单条目 永远对齐 models.providers..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):
- - /providersync provider=my-provider
- /providersync provider=my-gpt-provider
- /providersync provider=my-gemini-provider
- /providersync provider=all
方式 C:新增 provider(一步到位,非交互)
如果你不想走向导,也可以直接提供信息(私聊使用):
- - /provider_sync add providerId= baseUrl=<.../v1> apiKey=<可选>
- 注意:真正写入前仍会先 dry-run 验证,并二次确认
应用(会备份;仍建议先预览):
- - /provider_sync provider=all mode=apply
如需让变更尽快生效,可再单独执行一次网关重启(会短暂断线):
指定 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=:必填(all 表示遍历 models.providers 下所有 provider)
- mode=dry-run|check-only|apply:默认 dry-run
- 其他高级参数(可选):
- config=
(默认 /root/.openclaw/openclaw.json)
- mapping=(默认 references/mapping.openai-models.json)
- profile=auto|generic|gemini|gpt
- probe=openai-responses,openai-completions
默认 profile:
- gemini* → gemini
- gpt- / codex* → gpt
- 其他 → generic
推荐:
- - 一般不用手动写 profile=,让 skill 按模型族系自动选就行
- 只有在想强制覆盖默认行为时,再显式传 profile=gemini / profile=gpt / profile=generic
备注(实现边界)
- - 这个 skill 的按钮面板属于聊天交互层能力;在未启用 Telegram inlineButtons 的实例上,依然能用本文件提供的纯文本命令完成全部操作。
- 缓存:脚本会在落盘前剔除敏感字段(例如认证相关字段),避免把上游异常返回的敏感内容写入缓存。
Main script
- - scripts/provider_sync.py