Skip to content

使用 OpenClaw 集成 GenStudio API

警告

本文基于 OpenClaw 2026.5.22 (a374c3) 的本地源码检查和实测结果整理。OpenClaw 的自定义 provider、reasoning、thinking 和 compat 字段行为可能随版本变化而调整;如果您使用其他版本,请先验证字段是否仍然生效。QClaw、EasyClaw、PicoClaw 等第三方封装或改版也可能没有暴露本文所需的 custom API provider 细粒度配置项,使用时可能遇到字段无法配置或行为不一致的问题。

本文介绍如何使用 OpenClaw CLI 将 GenStudio API 配置为 OpenClaw 的自定义模型提供商,并添加以下已验证模型:

  • kimi-k2.6
  • glm-5.1
  • minimax-m2.7
  • deepseek-v4-prodeepseek-v4-flash

如果您只需要添加其中一个模型,可以直接跳到对应小节。每个示例都使用独立 provider ID,便于复制、对照和排查;如果您熟悉 OpenClaw 配置,也可以把多个 OpenAI-compatible 模型合并到同一个 provider 下。若不想使用 CLI 或 GUI,也可以直接参考文末的完整配置片段,手动编辑 OpenClaw 配置文件。

警告

本文里会出现两种配置片段:用于 openclaw config patch --file 的 patch 文件使用 JSON5(参见 JSON5 官方项目),便于手写配置;文末用于手动编辑 ~/.openclaw/openclaw.json 的完整配置片段使用 JSON,便于直接合并到配置文件。

准备 API Key、Base URL 和 OpenClaw CLI

开始前,请确认您已经准备好以下信息:

  • GenStudio API Key。
  • 要使用的 API Base URL。
  • OpenClaw CLI,也就是 openclaw 命令。
  • 要添加的模型 ID。

获取 API Key

GenStudio 通用 LLM API

如果您使用 GenStudio 通用 LLM API,请创建以 sk- 开头的 API Key。详见 GenStudio API 快速集成

选择 Base URL

OpenClaw 配置中填写的是 Base URL,不是完整接口地址。

GenStudio 通用 LLM API

GenStudio 通用 LLM API:

  • OpenAI-compatible Base URL: https://cloud.infini-ai.com/maas/v1
  • Anthropic-compatible Base URL: https://cloud.infini-ai.com/maas

让 OpenClaw 读取 API Key

推荐把 API Key 放在运行 OpenClaw gateway 的环境变量中。选择正在使用的终端:

macOS、Linux、WSL 或 Git Bash

language-shell
export GENSTUDIO_API_KEY="sk-xxx"

Windows PowerShell

language-powershell
$env:GENSTUDIO_API_KEY = "sk-xxx"

Windows CMD

language-cmd
set GENSTUDIO_API_KEY=sk-xxx

本文后续示例使用 OpenClaw SecretRef 读取该变量。以下片段使用 JSON5

language-json5
apiKey: {
  source: "env",
  provider: "default",
  id: "GENSTUDIO_API_KEY"
}

这里的 apiKey 不是直接填写密钥,而是告诉 OpenClaw 去哪里取密钥:

  • source: "env" 表示从环境变量读取。
  • id: "GENSTUDIO_API_KEY" 是环境变量名。
  • provider: "default" 表示使用默认的密钥读取配置。这里使用 source: "env" 时,它会读取环境变量。

apiKey 里,provider 不是模型 provider ID,和后面各模型小节里的 provider ID 不是一回事。只有当您在 OpenClaw 的 secrets.providers 里配置了多个密钥读取配置时,才需要把它改成其他名字。

如果您的 OpenClaw 运行环境不会读取当前 shell 的环境变量,也可以把 apiKey 改成字符串。以下片段使用 JSON5

language-json5
apiKey: "sk-xxx"

检查 OpenClaw CLI

language-shell
openclaw --version
openclaw config file

如果系统提示找不到 openclaw 命令,请先安装或修复 OpenClaw CLI,再继续配置。

本文优先使用 CLI,因为它比在 GUI 里逐项查找配置更高效。

选择模型配置方案

不同模型家族在 OpenClaw 中需要不同的配置方式。先按下表选择要配置的模型;后面的每个模型小节都给出可直接复制的 patch 示例。

模型应使用的 API 协议要求程度选择原因
kimi-k2.6OpenAI Chat Completions-compatible本文配置必须需要把 Kimi 的 thinking.keep: "all" 发给上游,后续轮次才更容易接上 reasoning 上下文。
glm-5.1OpenAI Chat Completions-compatible本文配置必须需要发送 GLM/Z.AI 的 thinking 参数,并告诉 OpenClaw 按 Z.AI 格式处理 reasoning 内容。
minimax-m2.7Anthropic Messages-compatible优先推荐普通对话和工具调用优先走这条接口;默认设置 thinkingDefault: "low",但不把 reasoning 发到普通聊天渠道。
deepseek-v4-pro / deepseek-v4-flashOpenAI Chat Completions-compatible保守首选适合稳定对话和普通工具调用;自定义 provider 不支持完整保留思考上下文的长任务。

这些配置优先照顾日常使用:复制后能正常对话、能完成普通工具调用,并且不会默认把思考内容发到普通聊天渠道。对于已经验证可用的思考能力,本文会在对应模型小节中打开;对于 OpenClaw 2026.5.22 还不支持完整处理的场景,本文会直接说明限制。

这里的“保留思考上下文(preserved thinking)”指的是:有些 reasoning 模型会把“思考过程”和“最终回答”分开返回,例如返回 reasoning_content。如果配置正确,在多轮对话或工具调用后,模型下一轮还能继续用上前面那段推理上下文,而不是只看到最终回答。

本文按这些原则选择配置:

  • 不强行把所有模型统一到同一个 API 协议。哪个协议更稳,就为这个模型家族选哪个协议。
  • Kimi 和 GLM 开启保留思考上下文,因为对应请求参数和 OpenClaw 配置已经验证过。
  • MiniMax 使用本文已验证的 Anthropic-compatible 配置,默认设置 thinkingDefault: "low",并默认隐藏 reasoning 内容。
  • DeepSeek 使用保守配置:普通对话和普通工具调用可用,但不把它写成必须持续保留思考上下文的长任务配置。
  • 思考内容默认不发到普通聊天渠道。如果要展示思考过程,建议先在私有会话中测试。
  • 每个模型家族先使用独立 provider ID,便于复制、对照和排查。熟悉 OpenClaw 配置后,可以再合并同协议、同 Base URL、同鉴权方式的模型。

每次应用 patch 前,先 dry-run:

language-shell
openclaw config patch --file ./openclaw-model.patch.json5 --dry-run
openclaw config patch --file ./openclaw-model.patch.json5
openclaw config validate

添加 kimi-k2.6

创建 openclaw-kimi-k26.patch.json5JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,以便随请求发送 Kimi 的 thinking 参数并保留后续轮次所需上下文。

language-json5
{
  models: {
    mode: "merge",
    providers: {
      "genstudio-kimi": {
        api: "openai-completions",
        baseUrl: "https://cloud.infini-ai.com/maas/v1",
        apiKey: {
          source: "env",
          provider: "default",
          id: "GENSTUDIO_API_KEY"
        },
        models: [
          {
            id: "kimi-k2.6",
            name: "Kimi K2.6",
            reasoning: true,
            input: ["text", "image"],
            contextWindow: 262144,
            maxTokens: 131072,
            cost: {
              input: 0,
              output: 0,
              cacheRead: 0,
              cacheWrite: 0
            },
            params: {
              extra_body: {
                thinking: {
                  type: "enabled",
                  keep: "all"
                }
              }
            }
          }
        ]
      }
    }
  },
  agents: {
    defaults: {
      models: {
        "genstudio-kimi/kimi-k2.6": {
          alias: "Kimi K2.6"
        }
      }
    }
  }
}

这个配置的关键点:

  • 保留 params.extra_body.thinking。OpenClaw 发送请求时,会把这段字段一起发给 GenStudio。
  • thinking.keep: "all" 用来要求上游按 Kimi 协议保留可回放的思考上下文。
  • 不写 keep: "all" 时,模型仍可能完成当前轮回答;但下一轮对话或工具返回后,模型可能只能接上最终回答,而接不上前面的 reasoning。
  • 这和 OpenClaw 内置 Moonshot/Kimi 的做法一致:在 kimi-k2.6 且 thinking 已启用时,它也会写入 thinking.keep: "all"
  • id 保持 kimi-k2.6。OpenClaw 2026.5.22 已经认识这个模型 ID,使用它时,后续轮次更容易继续带上 Kimi 返回的 reasoning_content

应用配置:

language-shell
openclaw config patch --file ./openclaw-kimi-k26.patch.json5 --dry-run
openclaw config patch --file ./openclaw-kimi-k26.patch.json5
openclaw config validate

信息

写在 params.extra_body.thinking 里的字段会固定随每次请求发送。/think off 不会临时删除这些字段。如果您需要一个不启用 preserved thinking 的备用配置,请创建第二个模型或 provider。

添加 glm-5.1

创建 openclaw-glm-51.patch.json5JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,以便随请求发送 GLM/Z.AI thinking 参数并让 OpenClaw 按兼容格式处理返回内容。

language-json5
{
  models: {
    mode: "merge",
    providers: {
      "genstudio-glm": {
        api: "openai-completions",
        baseUrl: "https://cloud.infini-ai.com/maas/v1",
        apiKey: {
          source: "env",
          provider: "default",
          id: "GENSTUDIO_API_KEY"
        },
        models: [
          {
            id: "glm-5.1",
            name: "GLM 5.1",
            reasoning: true,
            input: ["text"],
            contextWindow: 200000,
            maxTokens: 65536,
            cost: {
              input: 0,
              output: 0,
              cacheRead: 0,
              cacheWrite: 0
            },
            compat: {
              thinkingFormat: "zai"
            },
            params: {
              extra_body: {
                thinking: {
                  type: "enabled",
                  clear_thinking: false
                },
                tool_stream: true
              }
            }
          }
        ]
      }
    }
  },
  agents: {
    defaults: {
      models: {
        "genstudio-glm/glm-5.1": {
          alias: "GLM 5.1"
        }
      },
      thinkingDefault: "low",
      reasoningDefault: "off"
    }
  }
}

这个配置的关键点:

  • 保留 params.extra_body.thinking。这些字段会随 OpenAI-compatible 请求发给 GenStudio。
  • 保留 compat.thinkingFormat: "zai"。没有它时,OpenClaw 2026.5.22 不会按 GLM/Z.AI 格式处理返回的 reasoning 内容,后续轮次可能接不上。
  • thinking.clear_thinking: false 的作用:请求上游不要在后续轮次清掉已有的思考上下文。
  • tool_stream: true 用于匹配我们验证过的 GLM 5.1 工具调用流式行为。

应用配置:

language-shell
openclaw config patch --file ./openclaw-glm-51.patch.json5 --dry-run
openclaw config patch --file ./openclaw-glm-51.patch.json5
openclaw config validate

警告

这两个字段管的是两件事:params.extra_body.thinking 发给上游,要求保留思考上下文;compat.thinkingFormat: "zai" 告诉 OpenClaw 怎么读取和带回返回的 reasoning 内容。少任一项,都可能影响 GLM preserved thinking。

添加 minimax-m2.7

创建 openclaw-minimax-m27.patch.json5JSON5 文件,便于手写配置)。我们需要选用 Anthropic Messages-compatible Base URL,以便和 OpenClaw 内置 Anthropic 路径处理原生 thinking block 的方式保持一致。

language-json5
{
  models: {
    mode: "merge",
    providers: {
      "genstudio-minimax": {
        api: "anthropic-messages",
        baseUrl: "https://cloud.infini-ai.com/maas",
        authHeader: true,
        apiKey: {
          source: "env",
          provider: "default",
          id: "GENSTUDIO_API_KEY"
        },
        models: [
          {
            id: "minimax-m2.7",
            name: "MiniMax M2.7",
            reasoning: true,
            input: ["text"],
            contextWindow: 204800,
            maxTokens: 131072,
            cost: {
              input: 0,
              output: 0,
              cacheRead: 0,
              cacheWrite: 0
            }
          }
        ]
      }
    }
  },
  agents: {
    defaults: {
      models: {
        "genstudio-minimax/minimax-m2.7": {
          alias: "MiniMax M2.7"
        }
      },
      thinkingDefault: "low",
      reasoningDefault: "off"
    }
  }
}

这个配置的关键点:

  • 本文 MiniMax 配置采用已验证的 Anthropic-compatible 路径;普通对话和工具调用按本节配置使用即可。
  • 我们验证过的 Anthropic-compatible SSE 响应使用原生 thinking block,OpenClaw 可以按 Anthropic 路径处理。因此本文默认使用 thinkingDefault: "low"
  • reasoningDefault: "off" 只控制可见性:它让 reasoning 不进入普通聊天渠道,不会关闭模型侧 thinking。
  • 本文 MiniMax 配置只覆盖 Anthropic-compatible Base URL。请直接使用对应 Base URL,不要把本节 patch 改成 openai-completions 后继续套用。
  • authHeader: true 用于 Bearer Token 鉴权场景,也就是发送 Authorization: Bearer <apiKey>

应用配置:

language-shell
openclaw config patch --file ./openclaw-minimax-m27.patch.json5 --dry-run
openclaw config patch --file ./openclaw-minimax-m27.patch.json5
openclaw config validate

警告

如果您希望在聊天界面或消息渠道中显示 MiniMax 的 reasoning,再把 reasoningDefault 改成 "on""stream"。普通频道建议保持 "off",避免把思考内容发给不该看到的人。

添加 deepseek-v4-pro 或 deepseek-v4-flash

创建 openclaw-deepseek-v4.patch.json5JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,并采用保守默认值,以避开 Anthropic-compatible 路径在 OpenClaw 2026.5.22 中的已知不稳定点。

language-json5
{
  models: {
    mode: "merge",
    providers: {
      "genstudio-deepseek": {
        api: "openai-completions",
        baseUrl: "https://cloud.infini-ai.com/maas/v1",
        apiKey: {
          source: "env",
          provider: "default",
          id: "GENSTUDIO_API_KEY"
        },
        models: [
          {
            id: "deepseek-v4-pro",
            name: "DeepSeek V4 Pro",
            reasoning: false,
            input: ["text"],
            contextWindow: 1000000,
            maxTokens: 384000,
            cost: {
              input: 0,
              output: 0,
              cacheRead: 0,
              cacheWrite: 0
            },
            compat: {
              thinkingFormat: "deepseek",
              supportsStore: false,
              supportsDeveloperRole: false,
              supportsUsageInStreaming: true,
              supportsReasoningEffort: true,
              supportsStrictMode: false,
              maxTokensField: "max_tokens",
              unsupportedToolSchemaKeywords: ["anyOf", "oneOf"]
            }
          },
          {
            id: "deepseek-v4-flash",
            name: "DeepSeek V4 Flash",
            reasoning: false,
            input: ["text"],
            contextWindow: 1000000,
            maxTokens: 384000,
            cost: {
              input: 0,
              output: 0,
              cacheRead: 0,
              cacheWrite: 0
            },
            compat: {
              thinkingFormat: "deepseek",
              supportsStore: false,
              supportsDeveloperRole: false,
              supportsUsageInStreaming: true,
              supportsReasoningEffort: true,
              supportsStrictMode: false,
              maxTokensField: "max_tokens",
              unsupportedToolSchemaKeywords: ["anyOf", "oneOf"]
            }
          }
        ]
      }
    }
  },
  agents: {
    defaults: {
      models: {
        "genstudio-deepseek/deepseek-v4-pro": {
          alias: "DeepSeek V4 Pro"
        },
        "genstudio-deepseek/deepseek-v4-flash": {
          alias: "DeepSeek V4 Flash"
        }
      },
      thinkingDefault: "off",
      reasoningDefault: "off"
    }
  }
}

这个配置的关键点:

  • 为什么使用 OpenAI-compatible:这两个模型在 OpenClaw 2026.5.22 里会经过 DeepSeek V4 兼容判断,使用 OpenAI-compatible 更容易得到可预测行为。
  • 为什么说它是保守选择:使用自定义 provider 时,普通对话可以按本文配置使用;但如果任务会连续调用工具,并且依赖上一轮 reasoning 内容,这条路径不支持完整带回所需的思考上下文。
  • 为什么示例里 reasoning: false:避免默认开启一个在长多轮工具调用里还不够稳的行为。
  • 不推荐把 Anthropic-compatible DeepSeek V4 作为默认方案。我们验证到这条路在 thinking 校验、强制指定工具和流式工具调用上容易和 OpenClaw 2026.5.22 对不上。

应用配置:

language-shell
openclaw config patch --file ./openclaw-deepseek-v4.patch.json5 --dry-run
openclaw config patch --file ./openclaw-deepseek-v4.patch.json5
openclaw config validate

更换默认模型

添加模型后,使用完整模型引用设置默认 agent 主模型:

language-shell
openclaw models set genstudio-kimi/kimi-k2.6

也可以直接设置配置项:

language-shell
openclaw config set agents.defaults.model.primary "genstudio-kimi/kimi-k2.6"
openclaw config validate

把命令中的模型引用替换为您实际要使用的模型:

language-text
Kimi K2.6: genstudio-kimi/kimi-k2.6
GLM 5.1: genstudio-glm/glm-5.1
MiniMax M2.7: genstudio-minimax/minimax-m2.7
DeepSeek V4 Pro: genstudio-deepseek/deepseek-v4-pro
DeepSeek V4 Flash: genstudio-deepseek/deepseek-v4-flash

如果 OpenClaw gateway 已经在运行,请在配置变更后重启 gateway 或重启承载 OpenClaw 的服务进程,让默认模型和 provider 配置重新加载。

可选:检查工具权限组

tools.profile 控制 OpenClaw agent 可用的工具集合,和模型 provider、API Key、Base URL 无关。本文配置模型时通常不需要修改它。

language-shell
openclaw config get tools.profile

如果没有返回值,表示当前配置未显式设置该项;不影响本文模型配置。

如果您在可信环境中需要开放完整工具面,可以按需设置为 full

language-shell
openclaw config set tools.profile full
openclaw config validate

如果只需要额外开放某个工具,优先使用更小范围的 tools.alsoAllow

验证配置

先检查 OpenClaw 配置是否能通过校验,并确认默认模型已经指向本文添加的模型:

language-shell
openclaw config file
openclaw config validate
openclaw config get agents.defaults.model.primary
openclaw models list

再检查对应 provider 配置是否已经写入。按您实际配置的模型选择执行:

language-shell
openclaw config get "models.providers.genstudio-kimi"
openclaw config get "models.providers.genstudio-glm"
openclaw config get "models.providers.genstudio-minimax"
openclaw config get "models.providers.genstudio-deepseek"

如需确认默认 agent 的 thinking/reasoning 配置,继续检查:

language-shell
openclaw config get agents.defaults.thinkingDefault
openclaw config get agents.defaults.reasoningDefault
openclaw config get agents.defaults.models

如果这些命令都能正常返回,说明 OpenClaw 已经识别 provider、模型和默认模型配置。若仍然不能正常对话,请按后面的排查问题逐项定位。

排查常见问题

Base URL 应该填到哪里?

OpenClaw 的 baseUrl 只填写基础地址:

  • OpenAI-compatible provider 不要追加 /chat/completions
  • Anthropic-compatible provider 不要追加 /v1/messages

为什么鉴权失败?

请检查:

  • API Key 是否复制完整。
  • API Key 前缀是否与当前接入方式匹配。
  • OpenClaw gateway 进程是否能读取 GENSTUDIO_API_KEY 环境变量。
  • Anthropic-compatible MiniMax 是否需要 authHeader: true

为什么 OpenClaw 仍然不能正常对话?

如果 openclaw config validate 已经通过,但 OpenClaw 仍然不能正常对话,请先在运行 OpenClaw gateway 的同一台机器上用 curl 做本地连通性测试。这些命令会绕过 OpenClaw,直接请求上游 API,用来判断问题是在 API Key、Base URL、模型 ID,还是 OpenClaw provider 配置。

如果 curl 能正常返回,但 OpenClaw 不能正常对话,请优先检查:

  • OpenClaw provider 的 baseUrl 是否是 Base URL,而不是完整接口 URL。
  • agents.defaults.model.primary 是否使用了 <provider-id>/<model-id> 格式。
  • provider ID 和模型 ID 是否与 patch 文件一致。
  • gateway 是否已经重启或重新加载配置。

请选择正在使用的终端。Windows PowerShell 中请使用 curl.exe,避免把命令解析为 PowerShell 的 curl 别名。

OpenAI-compatible 本地测试(GenStudio 通用 LLM API)

macOS、Linux、WSL 或 Git Bash
language-shell
curl --request POST \
  --url "https://cloud.infini-ai.com/maas/v1/chat/completions" \
  --header "Authorization: Bearer $GENSTUDIO_API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "kimi-k2.6",
    "messages": [{"role": "user", "content": "测试连接,请仅回复收到。"}],
    "max_tokens": 50
  }'

Windows PowerShell
language-powershell
$body = @'
{
  "model": "kimi-k2.6",
  "messages": [{"role": "user", "content": "测试连接,请仅回复收到。"}],
  "max_tokens": 50
}
'@

curl.exe --request POST `
  --url "https://cloud.infini-ai.com/maas/v1/chat/completions" `
  --header "Authorization: Bearer $env:GENSTUDIO_API_KEY" `
  --header "Content-Type: application/json" `
  --data-raw $body

Windows CMD
language-cmd
curl.exe --request POST ^
  --url "https://cloud.infini-ai.com/maas/v1/chat/completions" ^
  --header "Authorization: Bearer %GENSTUDIO_API_KEY%" ^
  --header "Content-Type: application/json" ^
  --data-raw "{\"model\":\"kimi-k2.6\",\"messages\":[{\"role\":\"user\",\"content\":\"测试连接,请仅回复收到。\"}],\"max_tokens\":50}"

Anthropic-compatible 本地测试(GenStudio 通用 LLM API)

macOS、Linux、WSL 或 Git Bash
language-shell
curl --request POST \
  --url "https://cloud.infini-ai.com/maas/v1/messages" \
  --header "Authorization: Bearer $GENSTUDIO_API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "minimax-m2.7",
    "messages": [{"role": "user", "content": "测试连接,请仅回复收到。"}],
    "max_tokens": 50
  }'

Windows PowerShell
language-powershell
$body = @'
{
  "model": "minimax-m2.7",
  "messages": [{"role": "user", "content": "测试连接,请仅回复收到。"}],
  "max_tokens": 50
}
'@

curl.exe --request POST `
  --url "https://cloud.infini-ai.com/maas/v1/messages" `
  --header "Authorization: Bearer $env:GENSTUDIO_API_KEY" `
  --header "Content-Type: application/json" `
  --data-raw $body

Windows CMD
language-cmd
curl.exe --request POST ^
  --url "https://cloud.infini-ai.com/maas/v1/messages" ^
  --header "Authorization: Bearer %GENSTUDIO_API_KEY%" ^
  --header "Content-Type: application/json" ^
  --data-raw "{\"model\":\"minimax-m2.7\",\"messages\":[{\"role\":\"user\",\"content\":\"测试连接,请仅回复收到。\"}],\"max_tokens\":50}"

为什么模型添加了但默认模型没变?

添加 provider/model 只表示 OpenClaw 知道这个模型。默认 agent 主模型需要单独设置:

language-shell
openclaw config set agents.defaults.model.primary "genstudio-kimi/kimi-k2.6"

同一个 GenStudio API,为什么示例拆成多个 provider ID?

在 OpenClaw 配置里,provider ID 更像一个“配置分组名”,不一定等同于真实服务商名称。本文把不同模型家族拆成独立 provider ID,主要是为了让每个模型家族的协议、参数和注意事项更清楚。

拆开配置的好处:

  • 每个小节可以单独复制、测试和回滚。
  • Kimi、GLM、MiniMax 和 DeepSeek 的 reasoning 配置差异很大,拆开后不容易互相影响。
  • MiniMax 推荐使用 Anthropic-compatible 协议,和 Kimi、GLM、DeepSeek 的 OpenAI-compatible 示例不是同一种 provider 配置。
  • 排查问题时,默认模型引用和日志里会直接显示模型家族,便于定位是哪组 provider 配置在生效。

如果多个模型确实使用同一个 api、同一个 baseUrl、同一种鉴权方式,并且您熟悉 OpenClaw 配置,也可以把它们合并到一个 provider ID 下。例如,把 OpenAI-compatible 的 Kimi、GLM 和 DeepSeek 放进同一个 OpenAI-compatible provider。这样默认模型引用会变成类似 <provider-id>/kimi-k2.6

但不要为了“统一命名”去改模型 ID。kimi-k2.6glm-5.1minimax-m2.7 这类模型 ID 应保持上游提供的原始名称;OpenClaw 会根据模型 ID 决定部分兼容行为。

为什么示例使用 openclaw config patch --file?

因为这些模型配置包含多层嵌套字段,例如 models.providersmodels[].compatmodels[].params.extra_bodyagents.defaults.models。使用 patch 文件更容易检查完整结构,也比在命令行里粘贴很长的 JSON 更不容易因为引号、逗号或 shell 转义出错。

如果您只修改一个简单字段,例如默认模型,也可以直接使用 openclaw config set

language-shell
openclaw config set agents.defaults.model.primary "genstudio-kimi/kimi-k2.6"

为什么 /think off 后模型似乎仍在 thinking?

对于 Kimi 和 GLM 示例,写在 params.extra_body.thinking 里的字段会固定随每次请求发送。OpenClaw 的 /think off 会改变 agent 的 thinking level,但不会自动删除这些请求字段。

如果您需要能稳定切换 preserved thinking,建议创建两个模型配置:

  • 一个带 params.extra_body.thinking
  • 一个不带 params.extra_body.thinking

然后通过切换默认模型来切换行为。

为什么 Kimi 第一次发消息就触发 compacting,之后一直不回复?

如果聊天界面第一次发送消息后就显示 compacting,随后一直不回复,先检查 maxTokens。这个现象看起来像上下文压缩问题,但常见原因是 OpenClaw 按模型配置生成了过大的输出上限,上游接口无法接受或长时间不能正常返回。

不要把模型总上下文长度直接当成上游接口允许的最大输出长度。对于 kimi-k2.6,本文示例使用 131072 作为保守输出上限;如果上游实际限制更低,请按平台模型卡或错误信息继续调小。

为什么 DeepSeek 不默认开启 reasoning?

这不是说 DeepSeek V4 模型本身不能 reasoning。限制在于:如果任务必须完整保留 DeepSeek reasoning 并跨多轮工具调用回传 reasoning_content,这已经超出本文自定义 provider 配置的覆盖范围;截止 OpenClaw 2026.5.22 版本,这类能力主要依赖内置 deepseek provider 路径。普通对话能返回 reasoning,不等于这条路径已经支持完整多轮工具调用 reasoning 工作流。

因此,本文模板故意使用 reasoning: falsethinkingDefault: "off"reasoningDefault: "off"。普通对话和普通工具调用可以按本文配置使用。

如需私有测试 thinking,可以临时把某个模型的 reasoning 改为 true,并在私有会话中使用 /think high。测试结束后,建议恢复保守配置。

使用图形界面配置(可选)

OpenClaw GUI 也支持配置自定义 provider 和模型,但有些字段需要您自己搜索字段名填写,不一定有专门的开关或向导。

如果您使用 GUI,请在配置页面搜索或定位这些字段名:

  • models.providers
  • baseUrl
  • apiKey
  • api
  • authHeader
  • models
  • compat
  • params
  • extra_body
  • agents.defaults.model.primary
  • agents.defaults.thinkingDefault
  • agents.defaults.reasoningDefault

建议先参考本文的 CLI patch 示例,理解最终配置结构,再在 GUI 中填写相同字段。对于 Kimi、GLM、MiniMax 和 DeepSeek 这类 reasoning 配置,CLI 仍然是更清晰、更容易复查的首选方式。

附录:完整配置片段

如果您不想使用 OpenClaw CLI,也不想在 GUI 里逐项填写,可以手动编辑 OpenClaw 配置文件。默认路径通常是 ~/.openclaw/openclaw.json;如果您设置过 OPENCLAW_CONFIG_PATH,请编辑该变量指向的文件。

OpenClaw 可以读取 JSON5,但手动编辑 openclaw.json 时更容易遇到编辑器或检查工具的严格 JSON 校验。为减少这种干扰,下面的手动配置片段写成严格 JSON。

下面是把本文四组模型都放进去的完整配置片段。它适合合并进已有配置文件,不建议直接覆盖整个文件;如果您的配置里已有 channelsplugins 或其他 agent 设置,请保留那些字段。

language-json
{
  "models": {
    "mode": "merge",
    "providers": {
      "genstudio-kimi": {
        "api": "openai-completions",
        "baseUrl": "https://cloud.infini-ai.com/maas/v1",
        "apiKey": {
          "source": "env",
          "provider": "default",
          "id": "GENSTUDIO_API_KEY"
        },
        "models": [
          {
            "id": "kimi-k2.6",
            "name": "Kimi K2.6",
            "reasoning": true,
            "input": [
              "text",
              "image"
            ],
            "contextWindow": 262144,
            "maxTokens": 131072,
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "params": {
              "extra_body": {
                "thinking": {
                  "type": "enabled",
                  "keep": "all"
                }
              }
            }
          }
        ]
      },
      "genstudio-glm": {
        "api": "openai-completions",
        "baseUrl": "https://cloud.infini-ai.com/maas/v1",
        "apiKey": {
          "source": "env",
          "provider": "default",
          "id": "GENSTUDIO_API_KEY"
        },
        "models": [
          {
            "id": "glm-5.1",
            "name": "GLM 5.1",
            "reasoning": true,
            "input": [
              "text"
            ],
            "contextWindow": 200000,
            "maxTokens": 65536,
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "compat": {
              "thinkingFormat": "zai"
            },
            "params": {
              "extra_body": {
                "thinking": {
                  "type": "enabled",
                  "clear_thinking": false
                },
                "tool_stream": true
              }
            }
          }
        ]
      },
      "genstudio-minimax": {
        "api": "anthropic-messages",
        "baseUrl": "https://cloud.infini-ai.com/maas",
        "authHeader": true,
        "apiKey": {
          "source": "env",
          "provider": "default",
          "id": "GENSTUDIO_API_KEY"
        },
        "models": [
          {
            "id": "minimax-m2.7",
            "name": "MiniMax M2.7",
            "reasoning": true,
            "input": [
              "text"
            ],
            "contextWindow": 204800,
            "maxTokens": 131072,
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            }
          }
        ]
      },
      "genstudio-deepseek": {
        "api": "openai-completions",
        "baseUrl": "https://cloud.infini-ai.com/maas/v1",
        "apiKey": {
          "source": "env",
          "provider": "default",
          "id": "GENSTUDIO_API_KEY"
        },
        "models": [
          {
            "id": "deepseek-v4-pro",
            "name": "DeepSeek V4 Pro",
            "reasoning": false,
            "input": [
              "text"
            ],
            "contextWindow": 1000000,
            "maxTokens": 384000,
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "compat": {
              "thinkingFormat": "deepseek",
              "supportsStore": false,
              "supportsDeveloperRole": false,
              "supportsUsageInStreaming": true,
              "supportsReasoningEffort": true,
              "supportsStrictMode": false,
              "maxTokensField": "max_tokens",
              "unsupportedToolSchemaKeywords": [
                "anyOf",
                "oneOf"
              ]
            }
          },
          {
            "id": "deepseek-v4-flash",
            "name": "DeepSeek V4 Flash",
            "reasoning": false,
            "input": [
              "text"
            ],
            "contextWindow": 1000000,
            "maxTokens": 384000,
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "compat": {
              "thinkingFormat": "deepseek",
              "supportsStore": false,
              "supportsDeveloperRole": false,
              "supportsUsageInStreaming": true,
              "supportsReasoningEffort": true,
              "supportsStrictMode": false,
              "maxTokensField": "max_tokens",
              "unsupportedToolSchemaKeywords": [
                "anyOf",
                "oneOf"
              ]
            }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "genstudio-kimi/kimi-k2.6"
      },
      "models": {
        "genstudio-kimi/kimi-k2.6": {
          "alias": "Kimi K2.6"
        },
        "genstudio-glm/glm-5.1": {
          "alias": "GLM 5.1"
        },
        "genstudio-minimax/minimax-m2.7": {
          "alias": "MiniMax M2.7"
        },
        "genstudio-deepseek/deepseek-v4-pro": {
          "alias": "DeepSeek V4 Pro"
        },
        "genstudio-deepseek/deepseek-v4-flash": {
          "alias": "DeepSeek V4 Flash"
        }
      },
      "thinkingDefault": "low",
      "reasoningDefault": "off"
    }
  }
}

使用这段配置时,请按实际情况做两处替换:

  • 如果不想使用环境变量,把每个 apiKey 对象改成实际 API Key 字符串。
  • 如果要把 DeepSeek 设为默认模型,请同时把 agents.defaults.model.primary 改成完整配置片段里对应的 DeepSeek 模型引用,并把 agents.defaults.thinkingDefault 改成 "off"

保存配置后,请重启 OpenClaw gateway 或承载 OpenClaw 的服务进程,让新配置生效。

相关文档