使用 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.6glm-5.1minimax-m2.7deepseek-v4-pro或deepseek-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
export GENSTUDIO_API_KEY="sk-xxx"Windows PowerShell
$env:GENSTUDIO_API_KEY = "sk-xxx"Windows CMD
set GENSTUDIO_API_KEY=sk-xxx本文后续示例使用 OpenClaw SecretRef 读取该变量。以下片段使用 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:
apiKey: "sk-xxx"检查 OpenClaw CLI
openclaw --version
openclaw config file如果系统提示找不到 openclaw 命令,请先安装或修复 OpenClaw CLI,再继续配置。
本文优先使用 CLI,因为它比在 GUI 里逐项查找配置更高效。
选择模型配置方案
不同模型家族在 OpenClaw 中需要不同的配置方式。先按下表选择要配置的模型;后面的每个模型小节都给出可直接复制的 patch 示例。
| 模型 | 应使用的 API 协议 | 要求程度 | 选择原因 |
|---|---|---|---|
kimi-k2.6 | OpenAI Chat Completions-compatible | 本文配置必须 | 需要把 Kimi 的 thinking.keep: "all" 发给上游,后续轮次才更容易接上 reasoning 上下文。 |
glm-5.1 | OpenAI Chat Completions-compatible | 本文配置必须 | 需要发送 GLM/Z.AI 的 thinking 参数,并告诉 OpenClaw 按 Z.AI 格式处理 reasoning 内容。 |
minimax-m2.7 | Anthropic Messages-compatible | 优先推荐 | 普通对话和工具调用优先走这条接口;默认设置 thinkingDefault: "low",但不把 reasoning 发到普通聊天渠道。 |
deepseek-v4-pro / deepseek-v4-flash | OpenAI 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:
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.json5(JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,以便随请求发送 Kimi 的 thinking 参数并保留后续轮次所需上下文。
{
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。
应用配置:
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.json5(JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,以便随请求发送 GLM/Z.AI thinking 参数并让 OpenClaw 按兼容格式处理返回内容。
{
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 工具调用流式行为。
应用配置:
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.json5(JSON5 文件,便于手写配置)。我们需要选用 Anthropic Messages-compatible Base URL,以便和 OpenClaw 内置 Anthropic 路径处理原生 thinking block 的方式保持一致。
{
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>。
应用配置:
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.json5(JSON5 文件,便于手写配置)。我们需要选用 OpenAI Chat Completions-compatible Base URL,并采用保守默认值,以避开 Anthropic-compatible 路径在 OpenClaw 2026.5.22 中的已知不稳定点。
{
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 对不上。
应用配置:
openclaw config patch --file ./openclaw-deepseek-v4.patch.json5 --dry-run
openclaw config patch --file ./openclaw-deepseek-v4.patch.json5
openclaw config validate更换默认模型
添加模型后,使用完整模型引用设置默认 agent 主模型:
openclaw models set genstudio-kimi/kimi-k2.6也可以直接设置配置项:
openclaw config set agents.defaults.model.primary "genstudio-kimi/kimi-k2.6"
openclaw config validate把命令中的模型引用替换为您实际要使用的模型:
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 无关。本文配置模型时通常不需要修改它。
openclaw config get tools.profile如果没有返回值,表示当前配置未显式设置该项;不影响本文模型配置。
如果您在可信环境中需要开放完整工具面,可以按需设置为 full:
openclaw config set tools.profile full
openclaw config validate如果只需要额外开放某个工具,优先使用更小范围的 tools.alsoAllow。
验证配置
先检查 OpenClaw 配置是否能通过校验,并确认默认模型已经指向本文添加的模型:
openclaw config file
openclaw config validate
openclaw config get agents.defaults.model.primary
openclaw models list再检查对应 provider 配置是否已经写入。按您实际配置的模型选择执行:
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 配置,继续检查:
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
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
$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 $bodyWindows 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
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
$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 $bodyWindows 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 主模型需要单独设置:
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.6、glm-5.1、minimax-m2.7 这类模型 ID 应保持上游提供的原始名称;OpenClaw 会根据模型 ID 决定部分兼容行为。
为什么示例使用 openclaw config patch --file?
因为这些模型配置包含多层嵌套字段,例如 models.providers、models[].compat、models[].params.extra_body 和 agents.defaults.models。使用 patch 文件更容易检查完整结构,也比在命令行里粘贴很长的 JSON 更不容易因为引号、逗号或 shell 转义出错。
如果您只修改一个简单字段,例如默认模型,也可以直接使用 openclaw config set:
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: false、thinkingDefault: "off" 和 reasoningDefault: "off"。普通对话和普通工具调用可以按本文配置使用。
如需私有测试 thinking,可以临时把某个模型的 reasoning 改为 true,并在私有会话中使用 /think high。测试结束后,建议恢复保守配置。
使用图形界面配置(可选)
OpenClaw GUI 也支持配置自定义 provider 和模型,但有些字段需要您自己搜索字段名填写,不一定有专门的开关或向导。
如果您使用 GUI,请在配置页面搜索或定位这些字段名:
models.providersbaseUrlapiKeyapiauthHeadermodelscompatparamsextra_bodyagents.defaults.model.primaryagents.defaults.thinkingDefaultagents.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。
下面是把本文四组模型都放进去的完整配置片段。它适合合并进已有配置文件,不建议直接覆盖整个文件;如果您的配置里已有 channels、plugins 或其他 agent 设置,请保留那些字段。
{
"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 的服务进程,让新配置生效。