模型概念
Models CLI
凭证配置轮换、冷却时间,以及它们如何与 fallback 交互。
快速提供商概览和示例。
PI、Codex 和其他 agent loop 运行时。
模型配置键。
模型引用会选择提供商和模型。它们通常不会选择底层 Agent Runtimes。例如,openai/gpt-5.5 可以通过常规 OpenAI provider 路径运行,也可以通过 Codex app-server 运行时运行,具体取决于 agents.defaults.agentRuntime.id。在 Codex 运行时模式下,openai/gpt-* 引用并不意味着 API key 计费;凭证可以来自 Codex 账号或 openai-codex 凭证配置。请参阅 Agent Runtimes。
模型选择的工作方式
OpenClaw 按以下顺序选择模型:
主模型
agents.defaults.model.primary(或 agents.defaults.model)。
Fallback
agents.defaults.model.fallbacks(按顺序)。
提供商凭证故障转移
在移到下一个模型之前,凭证故障转移会先在提供商内部发生。
相关模型界面
agents.defaults.models是 OpenClaw 可用模型(以及别名)的 allowlist/目录。agents.defaults.imageModel仅在主模型无法接收图像时使用。agents.defaults.pdfModel由pdf工具使用。如果省略,该工具会回退到agents.defaults.imageModel,然后回退到解析后的会话/默认模型。agents.defaults.imageGenerationModel由共享的图像生成能力使用。如果省略,image_generate仍可推断由凭证支持的提供商默认值。它会先尝试当前默认提供商,然后按 provider-id 顺序尝试其余已注册的图像生成提供商。如果你设置了特定提供商/模型,也要配置该提供商的凭证/API key。agents.defaults.musicGenerationModel由共享的音乐生成能力使用。如果省略,music_generate仍可推断由凭证支持的提供商默认值。它会先尝试当前默认提供商,然后按 provider-id 顺序尝试其余已注册的音乐生成提供商。如果你设置了特定提供商/模型,也要配置该提供商的凭证/API key。agents.defaults.videoGenerationModel由共享的视频生成能力使用。如果省略,video_generate仍可推断由凭证支持的提供商默认值。它会先尝试当前默认提供商,然后按 provider-id 顺序尝试其余已注册的视频生成提供商。如果你设置了特定提供商/模型,也要配置该提供商的凭证/API key。- 每个 agent 的默认值可以通过
agents.list[].model加绑定来覆盖agents.defaults.model(参见多 agent 路由)。
选择来源和 fallback 行为
同一个 provider/model 可能有不同含义,具体取决于它的来源:
- 已配置默认值(
agents.defaults.model.primary和 agent 专属 primary)是常规起点,并使用agents.defaults.model.fallbacks。 - 自动 fallback 选择是临时恢复状态。它们会与
modelOverrideSource: "auto"一起存储,因此后续轮次可以继续使用 fallback 链,而无需先探测已知不可用的 primary。 - 用户会话选择是精确的。
/model、模型选择器、session_status(model=...)和sessions.patch会存储modelOverrideSource: "user";如果所选提供商/模型不可达,OpenClaw 会显式失败,而不是落到另一个已配置模型。 - Cron
--model/ payloadmodel是每个 job 的 primary。它仍会使用已配置的 fallback,除非该 job 提供显式 payloadfallbacks(严格 cron 运行可使用fallbacks: [])。 - CLI 默认模型和 allowlist 选择器会遵循
models.mode: "replace",列出显式的models.providers.*.models,而不是加载完整内置目录。 - Control UI 模型选择器会向 Gateway 网关请求其已配置的模型视图:存在
agents.defaults.models时使用它,否则使用显式models.providers.*.models加上有可用凭证的提供商。完整内置目录仅保留给显式浏览视图,例如带view: "all"的models.list或openclaw models list --all。
快速模型策略
- 将 primary 设置为你可用的最强最新一代模型。
- 对成本/延迟敏感任务和低风险聊天使用 fallback。
- 对启用了工具的 agent 或不受信任的输入,避免使用较旧/较弱的模型层级。
新手引导(推荐)
如果你不想手动编辑配置,请运行新手引导:
openclaw onboard
它可以为常见提供商设置模型 + 凭证,包括 OpenAI Code (Codex) subscription(OAuth)和 Anthropic(API key 或 Claude CLI)。
配置键(概览)
agents.defaults.model.primary和agents.defaults.model.fallbacksagents.defaults.imageModel.primary和agents.defaults.imageModel.fallbacksagents.defaults.pdfModel.primary和agents.defaults.pdfModel.fallbacksagents.defaults.imageGenerationModel.primary和agents.defaults.imageGenerationModel.fallbacksagents.defaults.videoGenerationModel.primary和agents.defaults.videoGenerationModel.fallbacksagents.defaults.models(allowlist + 别名 + 提供商参数)models.providers(写入models.json的自定义提供商)
安全编辑 allowlist
手动更新 agents.defaults.models 时使用增量写入:
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
覆盖保护规则
openclaw config set 会保护模型/提供商 map,避免意外覆盖。对 agents.defaults.models、models.providers 或 models.providers.<id>.models 的普通对象赋值,如果会移除现有条目,就会被拒绝。增量更改请使用 --merge;只有在提供的值应成为完整目标值时,才使用 --replace。
交互式提供商设置和 openclaw configure --section model 也会将提供商范围的选择合并到现有 allowlist 中,因此添加 Codex、Ollama 或其他提供商不会删除无关的模型条目。重新应用提供商凭证时,Configure 会保留现有的 agents.defaults.model.primary。显式默认值设置命令(例如 openclaw models auth login --provider <id> --set-default 和 openclaw models set <model>)仍会替换 agents.defaults.model.primary。
“Model is not allowed”(以及为什么回复会停止)
如果设置了 agents.defaults.models,它会成为 /model 和会话覆盖的 allowlist。当用户选择的模型不在该 allowlist 中时,OpenClaw 会返回:
Model "provider/model" is not allowed. Use /models to list providers, or /models <provider> to list models.
Add it with: openclaw config set agents.defaults.models '{"provider/model":{}}' --strict-json --merge
当被拒绝的命令包含运行时覆盖(例如 /model openai/gpt-5.5 --runtime codex)时,请先修复 allowlist,然后重试相同的 /model ... --runtime ... 命令。对于原生 Codex 执行,所选模型仍是 openai/gpt-5.5;codex 运行时会选择 harness,并单独使用 Codex 凭证。
对于本地/GGUF 模型,请在 allowlist 中存储完整的带提供商前缀引用,
例如 ollama/gemma4:26b、lmstudio/Gemma4-26b-a4-it-gguf,或
openclaw models list --provider <provider> 显示的精确 provider/model。
当 allowlist 处于启用状态时,仅使用本地文件名或显示名称是不够的。
allowlist 配置示例:
{
agent: {
model: { primary: "anthropic/claude-sonnet-4-6" },
models: {
"anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
"anthropic/claude-opus-4-6": { alias: "Opus" },
},
},
}
在聊天中切换模型(/model)
你可以在不重启的情况下为当前会话切换模型:
/model
/model list
/model 3
/model openai/gpt-5.4
/model status
选择器行为
/model(和/model list)是一个紧凑的编号选择器(模型系列 + 可用提供商)。- 在 Discord 上,
/model和/models会打开一个交互式选择器,其中包含提供商和模型下拉菜单以及 Submit 步骤。 - 在 Telegram 上,
/models选择器的选择仅限会话范围;它们不会更改openclaw.json中该 agent 的持久默认值。 /models add已弃用,现在会返回弃用消息,而不是从聊天中注册模型。/model <#>会从该选择器中选择。
持久化和实时切换
/model会立即持久化新的会话选择。- 如果 agent 空闲,下一次运行会立刻使用新模型。
- 如果运行已经处于活动状态,OpenClaw 会将实时切换标记为 pending,并且只会在干净的重试点重启到新模型。
- 如果工具活动或回复输出已经开始,pending 切换可能会保持排队状态,直到后续重试机会或下一轮用户输入。
- 用户选择的
/model引用对该会话是严格的:如果所选提供商/模型不可达,回复会显式失败,而不是悄悄从agents.defaults.model.fallbacks回答。这不同于已配置默认值和 cron job primary,它们仍可使用 fallback 链。 /model status是详细视图(凭证候选项,以及配置后显示的提供商 endpointbaseUrl+api模式)。
引用解析
- 模型引用通过按第一个
/拆分来解析。输入/model <ref>时请使用provider/model。 - 如果模型 ID 本身包含
/(OpenRouter 风格),则必须包含提供商前缀(示例:/model openrouter/moonshotai/kimi-k2)。 - 如果省略提供商,OpenClaw 会按以下顺序解析输入:
- 别名匹配
- 对该精确无前缀模型 id 的唯一已配置提供商匹配
- 已弃用的回退到已配置默认提供商 - 如果该提供商不再暴露已配置的默认模型,OpenClaw 会改为回退到第一个已配置 provider/model,以避免暴露过期的已移除提供商默认值。
完整命令行为/配置:Slash commands。
CLI 命令
openclaw models list
openclaw models status
openclaw models set <provider/model>
openclaw models set-image <provider/model>
openclaw models aliases list
openclaw models aliases add <alias> <provider/model>
openclaw models aliases remove <alias>
openclaw models fallbacks list
openclaw models fallbacks add <provider/model>
openclaw models fallbacks remove <provider/model>
openclaw models fallbacks clear
openclaw models image-fallbacks list
openclaw models image-fallbacks add <provider/model>
openclaw models image-fallbacks remove <provider/model>
openclaw models image-fallbacks clear
openclaw models(无子命令)是 models status 的快捷方式。
models list
默认显示已配置/认证可用的模型。常用标志:
--allboolean完整目录。在配置认证之前包含内置的、由提供商拥有的静态目录行,因此仅发现视图可以显示那些在你添加匹配的提供商凭证之前不可用的模型。
--localboolean仅本地提供商。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcHJvdmlkZXIgPGlk
" type="string">
按提供商 id 过滤,例如 moonshot。不接受交互式选择器中的显示标签。
--plainboolean每行一个模型。
--jsonboolean机器可读输出。
models status
显示解析后的主模型、回退模型、图像模型,以及已配置提供商的认证概览。它还会显示在认证存储中找到的配置文件的 OAuth 过期状态(默认在 24 小时内警告)。--plain 仅打印解析后的主模型。
认证和探测行为
- OAuth 状态始终显示(并包含在
--json输出中)。如果已配置的提供商没有凭证,models status会打印一个缺少认证部分。 - JSON 包含
auth.oauth(警告窗口 + 配置文件)和auth.providers(每个提供商的有效认证,包括环境变量支持的凭证)。auth.oauth仅表示认证存储配置文件健康状况;仅环境变量的提供商不会出现在这里。 - 使用
--check进行自动化(缺失/过期时退出1,即将过期时退出2)。 - 使用
--probe进行实时认证检查;探测行可以来自认证配置文件、环境变量凭证或models.json。 - 如果显式
auth.order.<provider>省略了已存储的配置文件,探测会报告excluded_by_auth_order,而不是尝试它。如果认证存在但无法为该提供商解析出可探测模型,探测会报告status: no_model。
示例(Claude CLI):
claude auth login
openclaw models status
扫描(OpenRouter 免费模型)
openclaw models scan 会检查 OpenRouter 的免费模型目录,并可选择探测模型的工具和图像支持。
--no-probeboolean跳过实时探测(仅元数据)。
"--min-params"--max-age-days"--provider"--max-candidates--set-defaultboolean将 agents.defaults.model.primary 设置为第一个选择项。
--set-imageboolean将 agents.defaults.imageModel.primary 设置为第一个图像选择项。
扫描结果按以下顺序排名:
- 图像支持
- 工具延迟
- 上下文大小
- 参数数量
输入:
- OpenRouter
/models列表(过滤:free) - 实时探测需要来自认证配置文件或
OPENROUTER_API_KEY的 OpenRouter API key(参见环境变量) - 可选过滤器:
--max-age-days、--min-params、--provider、--max-candidates - 请求/探测控制:
--timeout、--concurrency
当实时探测在 TTY 中运行时,你可以交互式选择回退模型。在非交互模式下,传入 --yes 以接受默认值。仅元数据结果只提供信息;--set-default 和 --set-image 需要实时探测,这样 OpenClaw 才不会配置无法使用的无 key OpenRouter 模型。
模型注册表(models.json)
models.providers 中的自定义提供商会写入智能体目录下的 models.json(默认 ~/.openclaw/agents/<agentId>/agent/models.json)。除非 models.mode 设置为 replace,否则默认会合并此文件。
合并模式优先级
匹配提供商 ID 的合并模式优先级:
- 智能体
models.json中已存在的非空baseUrl优先。 - 智能体
models.json中的非空apiKey仅在该提供商未由当前配置/认证配置文件上下文中的 SecretRef 管理时优先。 - 由 SecretRef 管理的提供商
apiKey值会从源标记刷新(环境变量引用使用ENV_VAR_NAME,file/exec 引用使用secretref-managed),而不是持久化解析后的密钥。 - 由 SecretRef 管理的提供商 header 值会从源标记刷新(环境变量引用使用
secretref-env:ENV_VAR_NAME,file/exec 引用使用secretref-managed)。 - 空的或缺失的智能体
apiKey/baseUrl会回退到配置models.providers。 - 其他提供商字段会从配置和规范化目录数据刷新。