作者:Bruce_xiaowei
OpenClaw 模型更换实战指南:从 DeepSeek 到 Kimi 再到 GLM-5 的真实记录
本文基于我在 macOS 上通过 Docker 部署 OpenClaw 的真实经历撰写,记录了多次更换模型的完整过程,包括遇到的坑和解决方案。无论你是想换用更新的模型,还是切换不同的提供商,这篇文章都能帮你少走弯路。
引言
OpenClaw 作为一个强大的 AI 智能体框架,支持多种模型提供商(如硅基流动、智谱官方、OpenAI 兼容等)。在实际使用中,我们可能因为模型性能、成本或新模型发布而需要更换默认模型。然而,直接修改配置往往不够,因为 OpenClaw 的模型管理涉及配置文件结构、权限、安全策略等多方面因素。本文将以我最近将默认模型从硅基流动的 DeepSeek-V3 切换为智谱 GLM-5 的过程为例,详细拆解每一步操作,并附上真实遇到问题的解决方法。
第一步:准备工作
在动手更换模型前,建议先确认当前环境,并做好备份。
1.1 查看当前版本和模型列表
进入容器(注意:以下命令均在宿主机执行,除非特别说明):- # 查看 OpenClaw 版本dockerexec openclaw openclaw --version
- dockerexec openclaw openclaw --version
- 2026.2.26
- # 列出当前可用的模型dockerexec openclaw openclaw models list
- dockerexec openclaw openclaw models list
- Model Input Ctx Local Auth Tags
- siliconflow/GLM-5 text 195k no no default,configured
- siliconflow/deepseek-ai/DeepSeek-V3 text 195k no no configured
- siliconflow/Pro/moonshotai/Kimi-K2.5 text 195k no no configured
复制代码 记录当前默认模型(通常是标记为 default 的那个):- dockerexec openclaw openclaw config get agents.defaults.model
复制代码- docker exec openclaw openclaw config get agents.defaults.model
- {
- "primary": "siliconflow/GLM-5"
- }
复制代码
1.2 备份配置文件
配置文件位于数据卷 openclaw-data 下的 /data/config.json。建议将其备份到宿主机:- docker run -it --rm -v openclaw-data:/data --entrypoint cat sgccr.ccs.tencentyun.com/openclaw/openclaw:latest /data/config.json > ~/openclaw-config-backup-$(date +%Y%m%d).json
复制代码 1.3 确保容器正常运行
如果容器当前未运行,先启动:- docker start openclaw
- docker logs openclaw --tail 20# 确认无错误
复制代码 第二步:获取新模型信息
无论你选择哪个新模型,都需要明确以下三点:
提供商 ID:例如 siliconflow(硅基流动)、zhipu(智谱官方)、openai 等。API 基础地址:例如硅基流动为 https://api.siliconflow.cn/v1,智谱官方为 https://open.bigmodel.cn/api/paas/v4。模型 ID:必须与提供商平台上的 ID 一致。例如硅基流动上 GLM-5 的 ID 为 GLM-5,智谱官方上可能为 glm-5。
查找方法:
如果是通过硅基流动使用,可登录 硅基流动控制台,在“模型广场”找到目标模型的 ID。如果是智谱官方,参考其文档或平台上的模型名称。
第三步:添加新模型到 OpenClaw
添加模型有两种方式:手动编辑配置或通过向导添加。根据我的经验,手动编辑更灵活,不易出错,尤其当你要将模型加入已有提供商时。
3.1 手动添加模型(推荐)
假设你要将 GLM-5 添加到现有的 siliconflow 提供商中(共用同一套 API 密钥和基础地址)。
进入容器(以 root 用户,便于后续修改权限):- dockerexec -it --user root openclaw sh
复制代码 查看当前 siliconflow 的配置(确认已有模型列表):- openclaw config get models.providers.siliconflow
复制代码 输出类似:- {{"id":"siliconflow/GLM-5","name":"GLM-5","api":"openai-completions","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":205000,"maxTokens":131072}]}
复制代码- 更新 models 数组,追加新模型。将原配置的 models 列表复制出来,加上新模型的对象,然后用 openclaw config set 写回。例如添加 GLM-5(注意模型 ID 为 siliconflow/GLM-5):
- openclaw config set'models.providers.siliconflow.models' --json '[
- {
- "id": "siliconflow/deepseek-ai/DeepSeek-V3",
- "name": "DeepSeek V3",
- "input": ["text"],
- "contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
- },
- {
- "id": "siliconflow/Qwen/Qwen2.5-72B-Instruct",
- "name": "Qwen 2.5 72B",
- "input": ["text"],
- "contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
- },
- {
- "id": "siliconflow/Pro/moonshotai/Kimi-K2.5",
- "name": "Kimi K2.5",
- "input": ["text", "image"],
- "contextWindow": 262000,
- "maxTokens": 262000,
- "api": "openai-completions"
- },
- {
- "id": "siliconflow/GLM-5",
- "name": "GLM-5",
- "input": ["text"],
- "contextWindow": 205000,
- "maxTokens": 131072,
- "api": "openai-completions"
- }
- ]'
复制代码 注意:这里的 contextWindow 和 maxTokens 可根据模型文档填写,即使不精确也不影响基本使用。
验证模型是否成功添加:应该能看到新模型出现,例如 siliconflow/GLM-5。
3.2 通过向导添加(适合新提供商)
如果你想添加一个全新的提供商(例如直接使用智谱官方 API),可以运行:按提示输入:
Token provider:选择 custom 或 OpenAI-compatible。Provider id:输入标识符,如 zhipu。Base URL:输入对应 API 地址。API Key:粘贴你的密钥。Default model:输入模型 ID(如 glm-5)。
添加后,模型会出现在列表中,但需要留意:新提供商的模型 ID 格式为 <provider-id>/<model-id>,例如 zhipu/glm-5。
第四步:切换默认模型
添加完成后,将默认模型指向新模型:- openclaw models set siliconflow/GLM-5 # 如果添加到了硅基流动# 或
- openclaw models set zhipu/glm-5 # 如果是独立提供商
复制代码 验证默认模型已更改:- openclaw config get agents.defaults.model
复制代码 应输出 { "primary": "siliconflow/GLM-5" } 或类似。
第五步:重启容器并测试
5.1 重启 OpenClaw
- exit# 退出容器docker restart openclaw
复制代码 5.2 查看启动日志,确认新模型加载
- docker logs openclaw --tail 20|grep"agent model"
复制代码 应显示 [gateway] agent model: siliconflow/GLM-5。
5.3 在 UI 中测试
打开浏览器访问 http://localhost:18789,进入 Chat 界面发送消息,观察是否正常回复。
第六步:常见问题与解决方案(真实踩坑记录)
6.1 更新模型后容器无法启动,报错 “non-loopback Control UI requires gateway.controlUi.allowedOrigins”
原因:新版 OpenClaw 加强了安全策略,当通过局域网 IP 访问时,需要明确配置允许的来源。
解决:- dockerexec -it openclaw openclaw config set gateway.controlUi.allowedOrigins '["http://localhost:18789", "http://127.0.0.1:18789", "http://你的局域网IP:18789"]' --json
- docker restart openclaw
复制代码 6.2 配置文件权限错误(EACCES)
现象:容器启动日志提示 EACCES: permission denied, open '/data/config.json'。
原因:之前以 root 用户修改过文件,导致文件所有者变为 root,而 OpenClaw 进程以 UID 10001 运行。
解决:- # 以 root 身份进入临时容器修复权限docker run -it --rm -v openclaw-data:/data --user root --entrypoint sh sgccr.ccs.tencentyun.com/openclaw/openclaw:latest -c "chown 10001:10001 /data/config.json && chmod 644 /data/config.json"
复制代码 然后重启原容器。
6.3 添加模型时提示 “Config validation failed: models.providers.siliconflow.models: expected array”
原因:手动设置时 JSON 格式不正确,或遗漏了 models 数组。
解决:严格按照已有配置的结构编写,确保 models 是数组,且每个元素包含必要字段(如 id、name、input、contextWindow、maxTokens)。
6.4 模型调用时返回 500 或 “API rate limit reached”
原因:
提供商账户余额不足或免费额度耗尽。API 密钥无效或权限不足。
解决:登录对应平台检查余额和密钥状态。更换有效密钥并更新配置:- dockerexec openclaw openclaw config set models.providers.siliconflow.apiKey "新密钥"docker restart openclaw
复制代码 6.5 升级 OpenClaw 时因 SSH 客户端缺失失败
现象:执行 openclaw update 报错 ssh: not found。
原因:某个依赖包通过 SSH 协议从 GitHub 拉取,容器内缺少 SSH 客户端。
解决:- dockerexec -it --user root openclaw shapt update &&aptinstall -y openssh-client git
- ssh-keyscan github.com >> ~/.ssh/known_hosts
- openclaw update
复制代码 更新后重启容器。
6.6 安全提醒:密钥泄露风险
在配置过程中,API 密钥可能通过命令行历史、日志或屏幕截图泄露。务必:
定期更换密钥。使用 openclaw config set 而非直接编辑 JSON 文件。备份后删除含密钥的终端历史。
结语
更换 OpenClaw 的默认模型并不复杂,但涉及配置文件、权限、安全策略等多个细节。通过本文的步骤,你应该能够顺利地将模型切换到心仪的新版本。记住,每一次操作前备份配置、操作后验证日志,是避免问题的关键。
如果你在更换模型时遇到其他未列出的问题,欢迎查阅官方文档或在社区中提问。祝你在 OpenClaw 的世界里玩得开心!
原文地址:https://blog.csdn.net/weixin_41905135/article/details/158461160 |