最近在折腾OpenClaw本地部署的朋友应该都有同感:装好框架、跑通离线整合包只是第一步,真正让这个AI助手“有脑子”的关键,还是得把在线模型接进来。我本地部署OpenClaw大概三周,踩了不少坑,也把配置在线模型的完整路径摸清楚了。这篇文章就把我实际操作的配置方法、参数解析和排错经验一次讲透,不管是刚拿到龙虾包的新手,还是准备从本地小模型切到云端大模型的老手,都能直接用上。
先说清楚OpenClaw这套东西的逻辑:它本身是个Agent调度框架,负责管理记忆、工具调用、多技能协作,但真正做语义理解、生成回复的,是背后的大语言模型。本地部署只是让OpenClaw的壳跑在你自己的机器上,而模型本身可以走在线API。所以配置在线模型,本质上就是做两件事:告诉OpenClaw“该去连哪个模型服务商的哪个接口”,以及把手上的密钥、模型名、参数这些信息填对。
1. 为什么本地部署OpenClaw还要接在线模型
1.1 OpenClaw这类AI Agent框架的运作逻辑
OpenClaw本质上是一个人机交互的Agent框架,它负责把用户指令拆解成任务、调用工具、管理上下文记忆,再协调一个或多个大模型来实际完成生成。你可以把它理解成一个“调度中心”:OpenClaw自己不做复杂推理,它像项目经理一样,把活儿分配给手下的模型员工。
本地部署OpenClaw,指的是把框架本身安装在你自己的电脑或服务器上,数据、配置、消息记录都保留在本地。但“本地部署”不代表模型也必须跑在本地。实际上,绝大多数人部署OpenClaw之后,接的都是在线模型API,因为这才是性价比最高的组合:框架本地跑,模型云端跑。
1.2 本地模型与在线模型的取舍
我一开始也试过用ollama跑本地模型(比如qwen2.5 7B、deepseek-r1蒸馏版),后来还是切回了在线API。原因很现实:
- 本地模型对显存要求太高,7B模型量化后也要6-8GB显存,跑起来电脑基本干不了别的
- 小参数模型的指令遵循能力参差不齐,OpenClaw这种强工具调用的场景,模型一旦理解错意图,整个链路就断了
- 在线模型像deepseek-chat、minimax、qwen-plus这些,上下文窗口更大,工具调用能力也经过专门优化,配合Agent框架成功率会高很多
当然,本地模型也有它的价值——断网可用、数据不外传、隐私性好。所以很多人的做法是“在线为主、本地兜底”:日常对话和工具调用走在线大模型,特殊情况切到本地小模型应急。这篇讲的配置方法,两种方式都能覆盖。
2. 配置在线模型前的准备工作
2.1 确认OpenClaw版本与安装方式
不同安装方式,配置文件的路径和格式会有一点差异。目前主流的安装方式有三种,你属于哪种就按哪种找配置文件:
| 安装方式 | 配置文件位置 | 说明 |
|---|---|---|
| 官方脚本安装 | ~/.openclaw/config.yaml或$OPENCLAW_HOME/config.yaml | 最常规的部署方式 |
| Windows离线整合包 | 解压目录下的config.yaml或配置文件夹 | 一般整合包都会把配置项放到显眼位置 |
| 源码部署 | 你所clone仓库根目录下的config.example.yaml复制为config.yaml | 从GitHub main分支检出源码后自行配置 |
这里有个经验:不管哪种方式,改配置前先备份原文件。我吃过一次亏,改坏了配置文件导致OpenClaw启动失败,折腾了半天才发现是YAML缩进问题。
2.2 获取模型服务商的API Key
配置在线模型,必须在模型服务商那边拿到API Key。目前国内用户用得比较多的几家:
- DeepSeek开放平台:走OpenAI兼容接口,模型名是
deepseek-chat和deepseek-reasoner - 硅基流动(SiliconFlow):聚合了Qwen、GLM、DeepSeek等多个开源模型的API,一个Key用多家模型
- MiniMax:有自己的API体系,模型名通常是
MiniMax-M1之类的 - 阿里云百炼(DashScope):提供通义千问系列模型的API
- OpenAI官方:需要海外支付方式,国内访问稳定性也一般,但如果你有渠道,配置方式一样
注册、实名认证、充值——这是所有平台统一的流程。充值金额不用太多,个人测试的话充个几十块能用很久。API Key通常在平台的“API密钥”或“令牌管理”页面生成,生成后一定要立刻复制保存,很多平台只在创建时完整显示一次。
2.3 准备一个可用的模型名清单
配置之前,先确认你要用的模型ID。这个很容易搞错——你在平台网页聊天框里看到的名字,和API调用时用的model参数值,往往不是同一个。
以DeepSeek为例,网页版显示“DeepSeek Chat”,但API的model参数是deepseek-chat。硅基流动这边,你创建的是“Qwen/Qwen2.5-7B-Instruct”,那model参数就得写全这个带斜杠的名字。我建议你登录服务商的API文档页,把准备用的模型ID复制下来,后续配置时直接粘贴,不要手打。
另外还要确认两件事:一是这个API是否兼容OpenAI格式,二是模型是否支持工具调用(function calling)。OpenClaw这类Agent框架高度依赖工具调用能力,如果你配的模型不支持function calling,即使能对话,也无法完成查天气、发消息、操作浏览器这类复杂任务。
3. OpenClaw配置在线模型的完整流程
3.1 找到并打开配置文件
先找到你的配置文件。以最常见的脚本安装为例,在终端里执行:
# 查看openclaw配置目录 echo $OPENCLAW_HOME # 如果没有输出,一般默认在用户目录下 ls ~/.openclaw/Windows整合包用户通常不用这么麻烦,直接在安装目录下找config.yaml或者“配置”文件夹里的文件。打开方式用任何文本编辑器都行,但强烈建议用VS Code或者Notepad++,因为它们能高亮YAML语法,缩进问题一眼就能看出来。
3.2 配置模型提供商参数的两种方式
OpenClaw的配置有两种方式:全局配置文件和环境变量。我推荐优先用配置文件,因为更直观、可追溯。下面分别说。
先在配置文件里找到模型相关的段落,通常是llm或model开头。把默认配置改成下面这样:
llm: provider: deepseek model: deepseek-chat api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxx base_url: https://api.deepseek.com/v1 temperature: 0.7 max_tokens: 4096这里的参数含义拆开说:
provider:服务商标识,填deepseek、openai、siliconflow等,取决于你用的是哪家model:实际的模型ID,就是前面说的API模型名api_key:你从服务商平台复制的那串密钥base_url:API接口的根地址。这个参数很容易被忽略,但不填对一定连不上。OpenAI官方是https://api.openai.com/v1,DeepSeek是https://api.deepseek.com/v1,硅基流动是https://api.siliconflow.cn/v1temperature:回复的随机性,0到1之间,任务执行类场景建议设低一点(0.3-0.5),聊天陪伴类可以设0.7以上max_tokens:单次生成的最大token数,执行复杂任务时设大一点,4096起步比较稳妥
如果你用的是环境变量的方式,原理一样,只是把配置项写到了系统环境变量里。以DeepSeek为例:
export OPENCLAW_LLM_PROVIDER=deepseek export OPENCLAW_LLM_MODEL=deepseek-chat export OPENCLAW_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx export OPENCLAW_BASE_URL=https://api.deepseek.com/v1两种方式用哪种都行,但不要同时用。同时配置的话,OpenClaw会以环境变量优先,到时候改配置文件半天不生效,卡在这种问题上最冤枉。
3.3 配置OpenAI兼容接口的通用写法
如果你用的是硅基流动、MiniMax这类平台,或者想用One API这类中转网关,配置方式稍微变一下。很多这类平台都声明“兼容OpenAI接口格式”,所以provider一栏可以直接用openai,然后通过base_url指向对应的服务地址。
以硅基流动为例:
llm: provider: openai model: Qwen/Qwen2.5-72B-Instruct api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxx base_url: https://api.siliconflow.cn/v1这里的关键点是:只要服务商提供的是OpenAI兼容接口,provider填openai,base_url填服务商自己的地址,就能连上。这个技巧在OpenClaw社区里叫“OpenAI兼容模式”,几乎适用于所有主流模型平台。
配完之后,重启OpenClaw,让它重新读取配置。看到日志里出现类似Model loaded: Qwen/Qwen2.5-72B-Instruct via SiliconFlow这样的信息,就说明模型已经加载成功了。
3.4 用生产级配置模板一键替换
上面是最简配置,但我实际跑了一段时间后,发现生产环境还需要加一些参数来保证稳定性。这是我目前在用的完整配置模板,可以直接抄:
llm: provider: openai model: Qwen/Qwen2.5-72B-Instruct api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxx base_url: https://api.siliconflow.cn/v1 temperature: 0.4 max_tokens: 8192 top_p: 0.8 timeout: 120 max_retries: 3 agent: max_iterations: 10 memory_enabled: true参数说明:
timeout:请求超时时间(秒),在线模型处理长任务时容易超过默认值,设成120秒能显著降低超时率max_retries:失败自动重试次数,网络波动时很有用top_p:核采样参数,和temperature一起控制随机性,任务型场景一般0.8左右max_iterations:Agent单次任务的最大循环次数。这个值设太小,复杂任务做一半就被掐断;设太大又可能在死循环里浪费token。实测10次是个不错的平衡点
这套配置的好处是容错率高、不容易被打断,比较适合长时间挂着跑任务,比如微信机器人、定时巡检这类场景。
4. 模型切换与多模型协作实战
4.1 快速切换主模型:ccswitch/模型切换机制
OpenClaw社区里热词榜上有个“ccswitch切换模型”,很多朋友都在问。这实际上是OpenClaw内置的一个模型切换机制,通过命令或配置文件动态切换当前主模型,不需要重启服务。
我用的方式是配置文件切换,以编辑config.yaml的方式为主。具体操作:把llm段落下的模型字段改成目标模型,保存后执行热加载命令(不同版本命令略有差异,通常是openclaw reload或openclaw config reload),就能无缝切换。
如果你希望按时间段自动切换,还可以写一个简单脚本。比如白天用DeepSeek(执行任务效率高、性价比好),晚上用MiniMax-M1(聊天体验好、回复更自然)。用crontab定时调用openclaw config reload配合不同配置文件实现垂类场景切换,这个玩法在社区里很流行。
4.2 按技能分配不同模型
OpenClaw的Skill机制可以给不同技能绑定不同的模型,这个功能很多人没用上。配置方法是在技能配置里增加model字段:
skills: coding: model: deepseek-reasoner chat: model: MiniMax-M1 image: model: qwen-image-edit这样做的好处很明显:写代码的任务用推理强化模型,日常聊天用性价比高的模型,图像编辑的指令用专门的图像模型——分工明确,每个任务都跑在最合适的模型上,token消耗也会优化不少。
比如我自己的配置是:通用对话走deepseek-chat,代码分析走deepseek-reasoner,浏览器操作走qwen-max,整体跑下来稳定性和效果都挺好。
4.3 结合本地模型做离线兜底
在线模型依赖网络和API服务,万一服务商故障或者断网了,OpenClaw就只能干瞪眼。所以我推荐做一套“在线为主、本地兜底”的双模型机制:在线模型正常时全量功能跑在云端;在线模型失败时,OpenClaw把请求降级到本地ollama加载的小模型。
实现方式是在配置里增加fallback参数:
llm: provider: openai model: deepseek-chat api_key: sk-xxx base_url: https://api.deepseek.com/v1 fallback: provider: ollama model: qwen2.5:7b base_url: http://localhost:11434/v1这样配置之后,一旦在线API调用失败,OpenClaw会自动尝试本地模型,不会出现整个Agent直接罢工的情况。虽然本地模型的效果差一些,但至少能维持基础对话和简单指令查询,不至于完全瘫痪。
5. 常见问题与排查技巧实录
5.1 API连接失败、401鉴权错误
这类问题的报错信息一般是401 Unauthorized或AuthenticationError。排查思路从简单到复杂:
第一步,检查API Key是否复制完整。API Key通常以sk-开头,一长串字符,复制时很容易漏掉末尾几位。我建议把Key放到一个纯文本文件里,和配置里的值做一次字符级对比,肉眼核对很容易出错,用diff命令最稳。
第二步,确认base_url是否正确。很多人把https://api.deepseek.com这个裸地址填进去了,少了/v1后缀,就直接报404或者RouteNotFound。记住:绝大多数OpenAI兼容接口的完整地址是“根域名+/v1”。
第三步,确认服务商那边账户余额是否充足。很多平台欠费后不会明确提示“余额不足”,而是返回一个不痛不痒的鉴权错误。登录平台控制台看一眼余额,就能排除这个因素。
5.2 配置后不生效、一直走默认模型
这种情况通常有四个原因,按概率排序:
- 配置文件改错了位置。OpenClaw实际读取的配置文件和你想改的文件不是同一个。先用
openclaw config path这样的命令查看实际加载路径,再去改对应的文件 - 环境变量覆盖了配置文件。前面反复强调过:环境变量的优先级高于配置文件。如果你之前设置过
OPENCLAW_LLM_MODEL之类的环境变量,配置文件的修改会被覆盖 - YAML格式错误。OpenClaw用的配置文件是YAML格式,对缩进极其敏感。
llm:和provider:之间必须缩进两个空格,且同一层级的字段必须对齐。推荐用VS Code的YAML插件做格式校验,或者直接从官方文档复制模板改 - 改了配置忘了重启。配置文件要重启进程才能重新加载,热加载命令不一定所有版本都支持
5.3 微信等渠道触发服务端风控或会话残留
这部分是从OpenClaw微信插件使用中整理的高频问题。在使用微信接入OpenClaw时,可能会出现会话残留、消息丢失、被服务端短暂限制等情况。虽然不同接入方式的表现会有差异,但这类问题基本都指向同一个根因:短时间内请求频率过高或者某个会话上下文异常堆积。
我的处理经验是:
- 给Agent加一个冷却机制,两条消息之间至少间隔1-2秒,避免连续刷屏触发对方服务端的频控策略
- 开启会话超时清理,比如30分钟内无对话就自动清空上下文,防止上下文堆积导致异常
- 定期重启OpenClaw进程,长期挂机的进程容易积累异常状态
注意:如果你接的是第三方即时通讯渠道,一定要控制消息频率和长度,“高频大包”是触发限制的最常见原因。建议把OpenClaw的单条回复最大长度限制在1000字以内,既稳妥又不容易被截断。
5.4 模型回复格式异常、工具调用失效
如果你发现OpenClaw接了在线模型之后,工具调用经常失败(比如让它查天气,它却一本正经地编了一个天气),问题大概率出在模型选型上。
OpenClaw这类的Agent框架对模型的指令遵循能力和function calling能力要求非常高。如果你用的是偏对话优化的模型(比如某些基础版Chat模型),它可能不理解tool_calls这种结构化输出格式,导致工具链路断裂。
解决办法:优先选择服务商明确标注“支持function calling”的模型。DeepSeek的deepseek-chat、MiniMax的MiniMax-M1、通义千问的qwen-plus系列都是经过验证的,这些模型对Agent场景做了专门优化。如果你坚持要用某个不支持工具调用的模型,那只能把OpenClaw当作纯聊天机器人使用,技能类功能基本废掉。
5.5 请求超时和限流问题
在线API经常会遇到Timeout或者RateLimitError,尤其是高峰期。这类问题大多不是配置错误,而是服务商的负载策略。
我的实操建议:
- 配置重试机制,
max_retries设成3次,配合指数退避,能扛过大部分瞬时限流 - 降低请求频率,在OpenClaw的Agent配置里加请求间隔控制,避免短时间密集调用
- 换一个base_url,有些服务商提供多个接入点(比如国际站和国内站),切换接入点有时能绕开高峰期拥堵
- 多Key轮询,如果某个模型的调用量特别大,可以注册两个账号,配置里支持多Key轮询,压力分散后明显更稳定
5.6 常见故障速查表
| 故障现象 | 可能原因 | 解决动作 |
|---|---|---|
| 401 Unauthorized | API Key错误、账户欠费 | 重新复制Key,检查余额 |
| 404 RouteNotFound | base_url缺少/v1后缀 | 在根域名后补上/v1 |
| 模型加载失败 | model参数填错 | 从API文档复制标准模型ID |
| 配置不生效 | 环境变量覆盖了配置文件 | 检查`env |
| 工具调用失效 | 模型不支持function calling | 换支持工具调用的模型 |
| 请求超时 | 网络波动、服务商限流 | 加大timeout,配置重试 |
| 消息被吞/会话残留 | 频率过高、上下文物堆积 | 加冷却时间,开启会话清理 |
6. 配置完成后的验证方法与优化建议
6.1 三步验证配置是否生效
配置全部填好之后,别急着挂到生产环境,先用三步验证一下:
第一步,命令行测试。给OpenClaw发一条简单的指令,比如“你好,帮我确认一下你当前使用的模型名称和提供商”。如果它正确回复并且你看到MODEL已加载的日志,说明主链路通了。
第二步,工具调用测试。发一个需要调用工具的指令,比如“帮我查一下北京今天的天气”。如果它去调用了天气API并返回结构化结果,说明function calling功能正常。
第三步,长时间稳定性测试。连续跑一两个小时,观察日志里有没有频繁的报错、超时、重试。如果稳定,说明配置适合长期挂机;如果频繁报错,回到上一节的排查表逐项检查。
6.2 配置在线模型常见误区归纳
最后总结我这三周踩坑下来最有价值的心得:
- 不要盲目追求超大模型。在Agent场景里,模型的函数调用能力比参数量更重要。一个调用能力强的7B/14B模型,在任务完成率上可能比一个调用能力弱的70B模型好得多
- 不要忽略上下文长度。OpenClaw在和模型对话时会携带历史上下文,如果模型的最大上下文不够大,长对话后就会报错或者丢记忆。建议选至少32K及以上上下文版本的模型
- 不要把所有鸡蛋放在一个篮子里。至少常备两个不同服务商的Key,A家挂了切B家,不至于整个Agent瘫痪
- 定期清理日志和会话缓存。长期运行的OpenClaw会累积大量日志和会话文件,占用磁盘空间不说,还可能导致启动变慢
6.3 一份常备的在线模型配置速查
| 服务商 | base_url | 模型示例 | 特点 |
|---|---|---|---|
| DeepSeek | https://api.deepseek.com/v1 | deepseek-chat、deepseek-reasoner | 性价比高,Reasoner版推理强 |
| 硅基流动 | https://api.siliconflow.cn/v1 | Qwen/Qwen2.5-72B-Instruct | 模型全,一个Key用多家 |
| MiniMax | https://api.minimax.chat/v1 | MiniMax-M1 | 长上下文,聊天体验好 |
| 阿里云百炼 | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-plus、qwen-max | 稳定,国内访问快 |
这个表格里的信息是我实际验证过的。如果你用的是其他平台,原理一模一样——找到它的base_url和model参数,填进OpenClaw的llm配置段,就能接上。
配置在线模型这件事,说穿了就是填好“服务商地址、密钥、模型ID”这三个信息。很多人卡住,主要卡在base_url少了/v1、model参数填了网页显示名而不是API模型名、或者环境变量和配置冲突这几个点上。按照这篇文章的流程走一遍,大多数问题都能在十分钟内解决。我个人在实际操作中的体会是:OpenClaw这类框架的配置并不复杂,复杂的是要把“不同模型的特性”和“不同任务的诉求”匹配起来。多跑几轮、多看看日志,你会慢慢找到最适合自己的那套模型组合。