OpenClaw 本地部署 LM Studio 全模型接入热切换教程
本文详细介绍了在Windows 11系统下将LMStudio本地模型接入OpenClaw的完整教程。重点讲解了OpenClaw独特的双配置机制:需要在openclaw.json文件中分别配置models.providers定义模型参数和agents.defaults.models注册模型到UI。文章提供了从查询LMStudio模型列表、编辑配置文件到验证配置的全流程指导,包含常见问题解答和配置示例
OpenClaw 本地部署 LM Studio 全模型接入热切换教程
系列:Windows AI 环境搭建
环境:Windows 11 · OpenClaw 2026.3.14 · LM Studio · Node.js v25 · pnpm v10

【OpenClaw 本地实战 Ep.2】零代码对接:使用交互式向导快速连接本地 LM Studio 用 CUDA GPU 推理
【OpenClaw 本地实战 Ep.1】抛弃 Ollama?转向 LM Studio!Windows 下用 NVIDIA 显卡搭建 OpenClaw 本地极速推理服务
前言
OpenClaw 支持接入自定义 OpenAI 兼容接口,LM Studio 本地跑的模型天然满足这个条件。但很多人配置完发现 UI 里的模型下拉只有一个选项,切换不了——这不是 Bug,而是 OpenClaw 的模型注册机制需要同时维护两处配置,少一处就不会出现在下拉里。
本文覆盖从零开始的完整接入流程,包含所有坑点。



一、核心概念:为什么要配两处
OpenClaw 的配置文件 ~/.openclaw/openclaw.json 里,模型相关有两个完全独立的字段:
| 字段 | 职责 |
|---|---|
models.providers.{providerId}.models |
定义模型参数(contextWindow、maxTokens、cost 等) |
agents.defaults.models |
决定哪些模型出现在 UI 下拉和 models list 里 |
两者缺一不可。 只配第一处,模型能被调用但不出现在 UI;只配第二处,模型会出现但缺少参数定义。
用 pnpm openclaw models list 验证时,Tags 列出现 configured 才说明两处都配好了:
Model Tags
custom-127-0-0-1-1234/openai/gpt-oss-20b default,configured,alias:gpt-oss-20b
二、查询 LM Studio 当前加载的模型
LM Studio 启动后默认监听 http://127.0.0.1:1234,通过标准 OpenAI 接口查询已加载模型列表:
curl http://127.0.0.1:1234/v1/models
返回示例:
{
"data": [
{ "id": "openai/gpt-oss-20b", "object": "model" },
{ "id": "google/gemma-3-27b", "object": "model" },
{ "id": "meta-llama-3.1-8b-instruct-128k", "object": "model" }
]
}
把所有 id 记录下来,后续配置要用到。
注意:
id字段必须与 LM Studio 返回的完全一致,包括大小写和斜杠。

三、配置 models.providers(定义模型参数)
打开配置文件:
notepad C:\Users\你的用户名\.openclaw\openclaw.json
找到 models.providers.custom-127-0-0-1-1234.models 数组,按以下格式为每个模型添加一条记录:
{
"id": "openai/gpt-oss-20b",
"name": "GPT-OSS 20B",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 32000,
"maxTokens": 8192
}
字段说明:
id:必须与 LM Studio/v1/models返回的 id 完全一致name:UI 中的显示名称,可自定义reasoning:是否为思维链模型,普通模型填falseinput:输入类型,纯文本模型填["text"],多模态填["text", "image"]cost:本地模型全填 0contextWindow:模型最大上下文长度maxTokens:单次最大输出 token 数
contextWindow 参考值:
| 模型类型 | 建议值 |
|---|---|
| 普通 7B/8B/9B | 32000 |
| 名字含 128k 的模型 | 131072 |
| 小型模型(2B 以下) | 8192 |
| GPT-2 系列 | 1024 |
坑点:embedding 模型(如
text-embedding-nomic-embed-text-v1.5)不能用于对话,不要加进来。

四、配置 agents.defaults.models(注册到 UI)
在同一个配置文件里,找到 agents.defaults.models 字段,为每个模型添加一条记录。
key 的格式是 {providerId}/{modelId},value 可以是空对象,也可以加 alias 设置别名:
"agents": {
"defaults": {
"model": {
"primary": "custom-127-0-0-1-1234/openai/gpt-oss-20b"
},
"models": {
"custom-127-0-0-1-1234/openai/gpt-oss-20b": { "alias": "gpt-oss-20b" },
"custom-127-0-0-1-1234/google/gemma-3-27b": {},
"custom-127-0-0-1-1234/meta-llama-3.1-8b-instruct-128k": {},
"custom-127-0-0-1-1234/neuraldaredevil-8b-abliterated": {}
},
"workspace": "C:\\Users\\你的用户名\\.openclaw\\workspace"
}
}
坑点:providerId 是
custom-127-0-0-1-1234(端口 1234 被编码进了 id),如果你改过 LM Studio 端口,providerId 会不同,注意对应。

五、完整配置文件示例
以下是包含多个模型的完整 openclaw.json 关键部分:
{
"models": {
"mode": "merge",
"providers": {
"custom-127-0-0-1-1234": {
"baseUrl": "http://127.0.0.1:1234/v1",
"apiKey": "你的apikey",
"api": "openai-completions",
"models": [
{
"id": "openai/gpt-oss-20b",
"name": "GPT-OSS 20B",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 32000,
"maxTokens": 8192
},
{
"id": "google/gemma-3-27b",
"name": "Gemma 3 27B",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 32000,
"maxTokens": 8192
},
{
"id": "meta-llama-3.1-8b-instruct-128k",
"name": "Llama 3.1 8B 128K",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "custom-127-0-0-1-1234/openai/gpt-oss-20b"
},
"models": {
"custom-127-0-0-1-1234/openai/gpt-oss-20b": { "alias": "gpt-oss-20b" },
"custom-127-0-0-1-1234/google/gemma-3-27b": {},
"custom-127-0-0-1-1234/meta-llama-3.1-8b-instruct-128k": {}
},
"workspace": "C:\\Users\\你的用户名\\.openclaw\\workspace"
}
}
}
六、验证配置
保存配置文件后,重启 gateway:
pnpm openclaw gateway

新开终端验证模型列表:
pnpm openclaw models list
正确输出应该能看到所有配置的模型,Tags 列都有 configured:
Model Input Ctx Local Auth Tags
custom-127-0-0-1-1234/openai/gpt-oss-20b text 31k yes yes default,configured,alias:gpt-oss-20b
custom-127-0-0-1-1234/google/gemma-3-27b text 31k yes yes configured
custom-127-0-0-1-1234/meta-llama-3.1-8b... text 128k yes yes configured
如果某个模型没有 configured 标签,检查它是否在 agents.defaults.models 里漏掉了。
打开 Control UI(http://127.0.0.1:18789?token=你的token),进入代理 → Overview → Model Selection,下拉列表应出现所有模型,点击即可热切换。

七、以后新增模型的流程
LM Studio 加载了新模型后,只需编辑 openclaw.json 做两处追加,重启 gateway 即可:
第一处,在 models.providers.custom-127-0-0-1-1234.models 数组末尾追加:
{
"id": "新模型的id",
"name": "自定义显示名",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 32000,
"maxTokens": 8192
}
第二处,在 agents.defaults.models 对象里追加:
"custom-127-0-0-1-1234/新模型的id": {}
八、常见问题
Q:保存配置后 UI 下拉仍然只有一个模型?
A:先确认 agents.defaults.models 里是否真的加了新模型,用 pnpm openclaw models list 验证。如果 CLI 里也只有一个模型,说明配置文件没有正确保存,或者 gateway 没有重启。
Q:pnpm openclaw config set 命令设置数组类型报错 expected array, received string?
A:PowerShell 的引号问题,数组类型必须用转义引号写法:
pnpm openclaw config set 字段名 '[\"值1\",\"值2\"]'
直接编辑 openclaw.json 文件更可靠,避免这个问题。
Q:模型 id 里含有 @ 符号(如量化版本),能正常使用吗?
A:可以,@ 在 JSON key 里合法,正常配置即可:
"custom-127-0-0-1-1234/qwen3.5-9b@q4_k_m": {}
Q:LM Studio 重启后切换了加载的模型,OpenClaw 需要重新配置吗?
A:不需要,openclaw.json 里只是定义了模型的参数元数据,实际调用时发给 LM Studio 的是 model id,LM Studio 自己处理。只要模型 id 对应的模型在 LM Studio 里是加载状态,调用就能成功。
Q:切换模型后,OpenClaw 首轮对话为什么那么慢?
A:因为切换模型后,模型需要重新加载,首次加载完成过后,连续聊天就没有那么慢了,另外显卡参数也影响着模型体验。LM Studio 中设置的模型“最大等待时间”,也影响着间隔时长后的首轮对话速度(显存释放与模型重载)。
小结
| 步骤 | 操作 |
|---|---|
| 1 | curl http://127.0.0.1:1234/v1/models 获取所有模型 id |
| 2 | 在 models.providers.xxx.models 数组里为每个模型定义参数 |
| 3 | 在 agents.defaults.models 对象里为每个模型添加 "providerId/modelId": {} |
| 4 | 重启 gateway,models list 验证出现 configured 标签 |
| 5 | UI 下拉热切换 |
两处配置的分工记清楚,后续维护模型列表就很轻松了。
更多推荐

所有评论(0)