
最近 OpenClaw 社区里讨论得最多的就是怎么把默认模型换成 Claude Sonnet 4.6。我自己测试下来同样是跑一个多步骤的自动化任务Sonnet 4.6 在意图判断、工具调用和长上下文记忆上都有明显提升尤其是执行链一旦超过五六个步骤模型卡壳的概率比上一代低了不少。但切换过程远不是改个模型名那么简单很多人卡在 WSL 环境验证、老会话跳闪、安卓 Termux 权限这些地方。这篇东西不是官方文档的复读是我自己在 Windows、安卓手机和 ROS2 环境里实际折腾过的记录。从 Node.js 官网下载运行时并安装 OpenClaw、配置 Windows Companion、在 Termux 里装手机版、用 Ollama 跑本地算力到最后把模型切成 Claude Sonnet 4.6完整链路都走了一遍。如果你正准备做这件事或者切完以后遇到对话一直跳闪这类怪毛病这篇可以帮你少走不少弯路。1. 模型切换前先把 OpenClaw 的机制看清楚1.1 OpenClaw 的组件构成不是单数服务很多人以为 OpenClaw 就是一个聊天程序改个模型设置就能跑。其实它更像一个 Agent 运行时平台由几个相互独立又互相依赖的模块组成。最核心的部分是调度器。调度器负责接收用户请求把任务拆成“规划、调用工具、观察结果、再规划”的循环。它本身不做推理而是把每一轮决策交给底层模型完成这也是为什么模型切换会直接改变整套系统的行为风格。新模型判断能力更强调度器就能安排更激进的并行步骤模型太笨调度器就只能退化成一步一步地机械执行。第二层是沙箱执行环境。在 PC 上OpenClaw 会借助 WSL2 或者 Docker 提供独立的执行目录避免 Agent 直接操作宿主机文件时造成不可逆破坏。这就是为什么 Windows 上部署 OpenClaw 经常和 WSL 绑定在一起一旦 WSL 状态异常整个服务都启动不起来。我在实际部署中发现很多人不是不会改模型而是因为 WSL 那边没通过安全检查OpenClaw 压根就没起来。第三层是 Skill 插件系统。Skill 相当于给 Agent 预置的“工具能力包”比如读写文件、操作浏览器、调用 ROS2 话题、读写数据库等等。模型切换后Skill 本身不需要重新安装但模型理解 Skill 描述的能力决定了这些工具能不能被正确调用。同一个 Skill在不同模型下的表现差异非常明显这也是我坚持换模型而不是继续用默认模型的原因之一。简单说Skill 是“手”模型是“大脑”大脑换了手能做的事情上限也会不一样。1.2 为什么是 Claude Sonnet 4.6而不是“最新最大”OpenClaw 支持接入多种模型从 OpenAI、Anthropic 到本地 Ollama 模型都可以。有人会问既然是实用工具为什么不直接上效果最强、参数最大的模型实际操作下来Sonnet 4.6 的性价比和稳定性比较适合 Agent 场景。Agent 任务和单轮问答不一样。一次任务可能要连续调用十几个工具每一步都要重新阅读前面的上下文。Sonnet 4.6 在超长上下文上的保持能力更好不会因为历史消息太长就“忘掉”之前的变量名或文件路径。这种能力在排查日志、处理长配置文件、跨文件重构的时候特别关键。此外它的结构化输出更稳定。OpenClaw 这种 Agent 框架每一步都在解析模型返回的工具调用指令如果模型突然在 JSON 里多了一段废话整个任务链就可能直接中断。我对比过几次Sonnet 4.6 在这块的出错率明显更低。不是说你不能用自己的默认模型而是如果你频繁遇到“Agent 做到一半停止响应”模型推理能力很可能就是瓶颈。当然不同场景模型选择也不同。如果只是跑一些简单的文本摘要用本地小模型就够了没必要每次都调云端 API。但如果你要的是靠谱的多步自动化Claude Sonnet 4.6 目前是一个不错的平衡点。它既没有超大模型那么高的推理成本又在工具调用和上下文稳定性上明显优于入门级模型。1.3 配置加载优先级环境变量、配置文件与启动参数OpenClaw 的模型配置并不是单一入口。它支持的配置来源有三个层级理解优先级能避免“我明明改了为什么不生效”的困惑。配置来源示例优先级环境变量CC_ANTHROPIC_MODELclaude-sonnet-4-6最高配置文件~/.openclaw/config.json中的model字段中启动参数openclaw start --model claude-sonnet-4-6低启动参数常常会被命令覆盖掉所以排错时先看环境变量。环境变量会覆盖配置文件里的同名设置这就导致你改完config.json服务重启后却依然用旧模型。因为如果你在.env里已经写过CC_ANTHROPIC_MODEL配置文件里的model字段根本不会生效。提示改配置之前先检查.env、config.json、shell profile 三处是否都设置了相关变量避免环境变量“压过”配置文件。另一个容易忽略的细节是大小写。OpenClaw 的环境变量命名规则并不统一不同版本里可能同时存在CC_ANTHROPIC_MODEL、OPENCLAW_MODEL、CLAUDE_MODEL这类变量。如果你在较新版本上用了旧版本的变量名配置会被静默忽略日志里也不会报错。所以我建议先用 CLI 的config get命令确认当前使用的变量名再动手改配置。2. 部署环境盘点Windows、手机和 ROS2 的铺路过程2.1 Windows 主战场Node.js 安装与 Companion 联动Windows 上最常见的 OpenClaw 安装方式是从 Node.js 官网下载 Installer 安装包再用 npm 或 pnpm 部署。我建议直接安装 LTS 版本开发版虽然新但偶尔会和某些原生模块编译不兼容反而平添麻烦。安装完成之后在 PowerShell 里执行node -v和npm -v确认环境变量已经生效。接下来有两种方式装 OpenClaw一种是全局安装 CLI 工具另一种是直接克隆官方仓库后用npm install跑源码。我偏向用仓库方式因为源码更新时git pull比较方便而且能直接看到配置文件模板。很多人从 Node.js 官网装完环境就直接npm install -g结果后面要改配置文件时找不到默认位置最后还是回退到仓库方式重新部署。但 Windows 上有个绕不过去的点WSL。OpenClaw 很多执行步骤要落到 Linux 沙箱里如果你机器上没有安装任何 WSL 发行版启动时大概率会报 WSL 环境相关的错误。我一般会先执行wsl --install -d Ubuntu-22.04装一个发行版然后wsl --set-default-version 2确保默认版本是 WSL2。Windows Companion 是让我比较意外的设计。它本质上是一个托盘应用负责在 Windows 宿主机和 WSL 沙箱之间做文件同步、端口映射和剪贴板转发。配置时要注意Companion 的端口不能和 OpenClaw API 服务冲突。默认 API 端口是 8091我把 Companion 的同步端口单独设成 8092减少互相干扰。配置 Companion 的步骤不算复杂但有一个很容易漏掉的点安装完 Companion 后必须在 Windows 设置里给它“允许后台运行”的权限。否则你开机后托盘中虽然能看到图标实际文件同步服务根本没启动OpenClaw 里的 Skill 读取宿主机文件时会一直超时。2.2 安卓 Termux手机版 OpenClaw 的装法手机端部署 OpenClaw 不是官方主推的场景但确实有人这么干。我是在一台 8G 内存的安卓机上用 Termux 装的跑轻量任务没问题跑大模型就必须走 API否则本地推理能直接把手机热到降频。Termux 安装步骤大致如下先更新软件源然后安装 Node.js 和 git最后用 npm 全局安装 OpenClaw。pkg update pkg upgrade pkg install nodejs-lts git npm install -g openclaw/cli手机上最麻烦的是存储权限。Android 11 之后Termux 默认只能访问自己的私有目录。OpenClaw 的配置路径如果放在/sdcard下经常出现写入失败。我建议把OPENCLAW_HOME指到 Termux 私有目录export OPENCLAW_HOME$PREFIX/home/.openclaw装完以后用termux-wake-lock防止系统休眠杀掉后台进程。否则你切出去回个消息回来就发现 API 服务已经断了。手机端还有一个特点Termux 下的权限模型和普通 Linux 不同直接跑sudo是不行的所有依赖安装都通过 pkg 管理。如果看到编译报错多半是缺少 Python 编译链先pkg install python再重试。2.3 ROS2 Humble Gazeborosclaw 的点连接方式如果你做机器人方向可能会接触 rosclaw。它本质上是 OpenClaw 在 ROS2 环境下的适配层让 Agent 能通过 ROS2 话题和 Gazebo 模拟器交互。我实验的场景是 ROS2 Humble 配 Gazebo任务描述是让一个 Agent 控制仿真小车完成避障。rosclaw 安装时不能用 npm 直接装官方推荐用 apt 或源码编译。大致流程是先把 OpenClaw 核心跑起来再把 rosclaw 插件放进 Skill 目录然后在模型配置里声明机器人控制相关的描述。顺手给一段环境加载命令方便你在 ROS2 环境里调试source /opt/ros/humble/setup.bash export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp ros2 run rosclaw rosclaw_node --ros-args -p model:claude-sonnet-4-6这里要注意ROS2 环境里的模型切换和普通终端不太一样。rosclaw 节点启动时读取的是参数服务器上的model值如果你只在.env里改了节点不会自动感知必须显式通过--ros-args -p model:传入或重启节点。第一次踩这个坑时我花了半小时改.env结果 rosclaw 节点一直拿不到新模型后来才发现 ROS2 的参数机制会优先读 params 文件。2.4 Ollama 本地算力和 API 模式怎么选这个问题我经常看到OpenClaw 是不是只能通过接入 API 的方式使用算力当然不是。OpenClaw 可以直接对接 Ollama 拉起的本地模型配置方法也很简单只要把模型提供方改成 Ollama 的接口地址就行。CC_OLLAMA_HOSThttp://127.0.0.1:11434 CC_OLLAMA_MODELqwen2.5:14b本地模式和 API 模式各有优缺点我整理了一个对比表格项目API 模式Claude本地模式Ollama延迟受网络影响单步可能 2~5 秒本机推理快但受显卡限制模型能力强支持长上下文与多步工具调用要看显存和量化等级成本按 token 计费电费为主数据隐私会发送到云端完全本地典型落点复杂 Agent 任务简单文本处理如果你想切 Claude Sonnet 4.6那只能在 API 模式下工作因为它是 Anthropic 云端的模型Ollama 拉不下来。但如果你想省成本依然可以用 Ollama 跑些轻量任务两个模式在同一套 OpenClaw 里按会话切换并不会互相冲突。需要注意的是切换 Provider 后 Skill 权限会被重置因为不同 Provider 对文件读写的安全策略不同切回来时最好重新检查一遍 Skill 目录权限。3. 切换到 Claude Sonnet 4.6 的标准操作流程3.1 配置文件的正确改法字段、目录与备份切换模型的第一步不是改配置而是先搞清楚你的配置目录在哪。Windows 上通常是%USERPROFILE%\.openclaw\Linux 和 Termux 上则是~/.openclaw/。进到目录后主要关注两个文件.env和config.json。.env里最常见的一组配置是ANTHROPIC_API_KEYsk-ant-xxxxxxxx CC_ANTHROPIC_MODELclaude-sonnet-4-6CC_ANTHROPIC_MODEL就是模型标识符。不同版本的 OpenClaw 对模型名解析规则不完全一样老版本可能只接受claude-sonnet-4-6这种短横线格式新版本则直接放claude-sonnet-4.6也能自动转换。为了避免踩坑我建议不要凭感觉写先查一下当前版本支持的官方模型标识符。改配置前一定要备份。不要只备份.env文件要把整个.openclaw目录一起复制一次。因为这个目录里不仅存配置还存会话历史、Skill 权限记录和日志后面一旦遇到问题需要回滚没有备份就只能从头开始。我自己会把备份文件按日期命名比如.openclaw_20250213.tar.gz这样回滚时能清楚地知道恢复到哪一天的状态。3.2 用 cc switch 热切换再重启服务OpenClaw 提供了一些内置管理指令社区里用得比较多的切换方式就是cc switch。在终端里执行cc switch --model claude-sonnet-4-6这条命令会把当前默认模型更新到配置中心并通知运行中的服务实例热加载。但热加载只对新会话生效已经存在的历史会话仍然保留旧的模型上下文。所以切换完成后最好还是走一遍完整的重启流程保证所有会话都吃到新模型。我推荐的重启顺序是先停 API 服务再清理会话级缓存最后启动服务。不要只重启 UI 前端不管后端那样界面看着像换了模型实际调度核心还在用旧模型。openclaw stop openclaw cache clean --sessions openclaw start如果你是在 Windows Companion 场景下记得在系统托盘里同步重启 Companion否则 WSL 沙箱里的新进程可能无法和宿主机前端握手。这一步我失误过好多次总觉得重启 API 就够结果前端一直报连接失败后来才发现是 Companion 的端口映射旧进程还没释放。3.3 切换生效的验证手段与验收清单很多人改完配置就以为完事了结果第二天跑任务才发现还是旧模型。我一般按下面几步做验收。先看日志。启动 OpenClaw 后进入日志目录搜索模型标识符确认实际加载的是claude-sonnet-4-6而不是默认值。日志里通常会在调度器初始化的地方打印一行模型信息看到模型名出现在 dispatch 之前基本就说明加载成功了。再看运行状态。用 CLI 执行状态查询openclaw status状态输出里会有当前模型字段如果显示的还是旧模型说明配置覆盖关系出了问题回到 1.3 小节检查环境变量。最后跑一个真实任务。不要只发一句“你好”而是给一个多步骤任务比如“读取当前目录下的 README.md提取所有标题改成 JSON 输出保存到 result.json”。这类任务能直接考验工具调用链路如果模型没切换成功往往会在回调格式或者工具选择上露馅。我最后还习惯跑一次长上下文压力测试贴一段 8000 字的日志进去让 Agent 从中提取操作记录。这样能快速判断新模型在长文本下的记忆稳定性是否和宣传一致。如果模型在 8000 字之后开始重复调用同一个工具说明上下文管理可能还有问题需要检查max_tokens和context_window参数。4. 高频踩坑与排查实录4.1 WSL 环境无法安全验证错误信息逐行拆解Windows 用户最常看到的一个报错是openclaw 无法安全验证 SL2 环境。请在 PowerShell 中运行 wsl --status 解决报告的问题我第一次看到时以为 WSL 没安装结果wsl --list --verbose显示 Ubuntu 已经存在。后来才意识到这个报错不是“没装”而是“无法安全验证”。“安全验证”四个字才是关键OpenClaw 会检查 WSL 的当前发行版、登录用户和文件系统状态任何一项不符合预期都会触发这条提示。排查流程我建议按顺序走在 PowerShell 中运行wsl --status查看 WSL 内核版本、默认版本和发行版状态。如果内核版本过低执行wsl --update。执行wsl --set-default-version 2确保默认 WSL 版本为 2。进入发行版执行sudo apt update sudo apt upgrade把系统内组件更新到最新。最后重启 OpenClaw 服务。还有一个很容易被忽略的点WSL 发行版的默认登录用户必须是普通用户不能是 root。OpenClaw 在安全验证时会检查文件属主如果你之前为了省事把默认用户改成了 root大概率会验证失败。解决办法是执行wsl -d Ubuntu-22.04 -u yourname然后通过ubuntu config --default-user yourname恢复普通用户登录。如果上面都做完了还是报错还可以检查一下 Windows 上是否同时安装了旧版 WSL1 的发行版。WSL1 和 WSL2 混用时OpenClaw 的安全验证模块会扫描所有发行版只要有一个发行版状态异常它就会直接判定环境不可信。我遇到过一次这样的情况后来把旧系统迁移到 WSL2 并卸载重复发行版才彻底解决。4.2 切换模型后原对话不停跳闪的修复我在 Windows 上第一次用cc switch切完模型后遇到了一个奇怪现象打开之前的对话界面里的消息列表不断跳闪像一直在重新渲染CPU 占用直接顶满。这个问题不是偶发我后来在另一台机器上也复现了。原因出在会话历史缓存上。旧会话的上下文是用旧模型生成的切换模型后前端每隔几秒会重新向后端拉取一次消息列表后端在尝试用新模型重新解析旧上下文时发生了异常导致每次都返回部分状态前端就陷入了反复重绘。解决办法分两步。第一步清理该会话的本地缓存。OpenClaw 的会话缓存一般存在~/.openclaw/sessions/下每个会话对应一个 JSON 或 SQLite 文件。找到出问题的会话 ID删除后重新进入会话。第二步如果清理缓存还不行就要考虑是不是后端服务状态和前端不一致。把 OpenClaw 整个停掉清一遍临时目录再重新启动。我在实际操作中还会顺手重启一下 Windows Companion因为有些版本里前端资源由 Companion 托管不重启它就一直在用旧资源。注意真正常见的触发点是“切换后没有清会话缓存”而不是模型本身的问题。切换模型前建议先清理所有旧会话或者新建一个会话跑测试别在原对话上直接切。为什么跳闪只出现在旧对话上因为新会话本身没有历史上下文前端渲染逻辑不会走到“解析旧模型输出”的代码路径。旧对话则不同前端每次渲染都需要把旧消息重新解析一遍一旦解析器遇到无法识别的模型标记就会返回一个空状态于是界面不断刷新重试。理解了这个机制你就会明白直接rm -rf sessions有时候反而最干脆。4.3 算力疑问集中回答API 是唯一路子吗“OpenClaw 只能用接入 API 的方式使用算力吗”这个问题其实前面已经写了答案的一部分。这里再往深讲一点OpenClaw 设计上模型后端是插件化的不绑定某一家云服务。用 Ollama 部署本地算力时关键在于把模型提供方切到 Ollama Host。以下是实际可用的例子CC_PROVIDERollama CC_OLLAMA_HOSThttp://127.0.0.1:11434 CC_OLLAMA_MODELqwen2.5:14b这样 OpenClaw 完全可以在断网环境下跑简单的自动化任务。但要注意本地模型的工具调用能力普遍弱于云端模型尤其是需要生成复杂 JSON 指令时能严格按照 Schema 输出的本地模型并不多。如果你想在本地跑 Agent我建议选择专门微调过的工具调用模型而不是通用对话模型。至于 Claude Sonnet 4.6由于它是 Anthropic 的云服务模型本地无法直接加载。只能通过 API 方式接入这也是为什么不少人会误以为 OpenClaw“只能用 API”。准确说法是OpenClaw 支持本地和 API 两种方式但切换到 Claude Sonnet 4.6 这个具体模型时你必须走 API。另外API Key 的保存位置也要注意。很多人在.env里写了 key又把整个.openclaw目录打包传到别人机器上相当于把密钥直接送出去。我自己一般只在部署机本地保存 key日志和会话缓存目录单独排除到备份范围之外。4.4 手机端 Termux 部署的专属问题清单手机部署的坑我整理成清单式遇到哪个就照着排查。第一个坑是 Termux 后台被杀。前面提过用termux-wake-lock但很多 Android 定制系统会强制清理后台锁屏优化开得越激进OpenClaw 挂得越快。我最后的解法是进入系统设置把 Termux 设为“不受电池优化限制”同时在开发者选项里把“后台进程限制”改为不限制。第二个坑是 npm 全局安装时权限不足。Termux 下不要用 sudo直接用 pkg 管理的 Node.js再执行npm install -g。如果报 EACCES检查 Node.js 的路径是否正确通常不需要额外处理。第三个坑是 Node.js 版本太旧。有些 Termux 的软件源默认给的是低版本OpenClaw 新版本要求 Node 18 以上。安装时用nodejs-lts而不是nodejs可以规避大部分兼容问题。我在手机端还遇到过npm install拉到一半自动断开的情况后来换成镜像源之后稳定多了但镜像源的选择因网络环境而异这一点不建议照搬别人的配置。第四个坑是网络环境问题。手机切换 Wi-Fi 或移动网络后API 服务的连接池不会自动刷新表现为请求超时。重启服务就好不用反复检查 key。手机端跑 Agent 时如果出现“连接被重置”先看看是不是系统在后台切了网络而不是急着改配置。4.5 中文界面、Skill 权限和其他杂项坑最后汇总一些容易被忽略的杂项问题。“OpenClaw 中文版”这个说法我在各种社区看到过实际上项目源码本身就是英文所谓中文版其实是两个层面的意思一是界面语言可以通过OPENCLAW_LOCALEzh-CN切换为中文显示二是模型在回复内容上天然支持中文不依赖于界面语言。如果你找不到中文版安装包别浪费时间改环境变量即可。Skill 的问题也常见。很多人把 Skill 文件夹丢了但打开 Skill 管理面板发现是空的。这是因为 OpenClaw 会检查 Skill 目录的属主和权限如果 Skill 是从 Windows 复制到 WSL 的权限位可能变成 777 以外的值直接导致加载失败。处理办法是给目录设置正确权限chmod -R 755 ~/.openclaw/skills如果 Skill 里包含可执行脚本还要额外确认 Shell 脚本有x权限。否则 Agent 在调用时只会看到“文件不存在”非常迷惑。这个问题在 Windows 上不明显但只要你把 Skill 目录同步到 WSL 或 Termux 后就会冒出来。最后是关于日志级别的问题。排查模型相关故障时建议把日志级别调到 debug很多问题在 info 级别下根本看不出来。启动时加一个参数就能实现openclaw start --log-level debug看到类似DISPATCHER_STEP、TOOL_CALL_JSON的日志后重点看模型名是否出现在 dispatch 之前这一步能定位大半的模型切换失败问题。我见过太多人贴出 info 日志来问“为什么我的模型没换”实际上 debug 日志里早就写明了原因。最后分享一个我切模型时养成的习惯切换之前我会把 OpenClaw 的整个.openclaw目录压缩备份一次同时新建一个专门用于测试的会话绝不拿线上任务直接验证。等测试会话里的工具调用、长文本提取、JSON 输出全部稳定了才把默认模型正式切过去。这套流程虽然多花五分钟但它能帮你省掉后面排查的一整天。模型切换这事慢一点反而更快。