☰
OpenClaw Windows部署指南:WSL2环境修复与Companion配置实战
2026/10/5 3:22:35 网站建设 项目流程

这篇标题为什么叫“纯干货...不是”?因为我自己在装 OpenClaw 的时候,一开始确实以为下载个包、点两下下一步就完事了,结果光环境就折腾了小半天。那句被搜索了无数次的报错——openclaw无法安全验证WSL2环境。请在PowerShell中运行 wsl --status——看起来像是一句简单的状态提示,实际上背后牵扯到 Windows 版本、WSL2 内核、虚拟机平台功能、Docker Desktop 联动等一系列问题。等我把整条路走通,又陆续试了 Ollama 本地模型、API 接入、Windows Companion 配置,踩过的坑足够写一整篇。

这篇东西就是给你“抄作业”用的。如果你打算在 Windows 上部署 OpenClaw,或者想搞清楚 WSL2 环境到底怎么修、Companion 怎么配、本地算力和 API 到底选哪个,那接下来这部分内容应该能帮你少走不少弯路。我会把排查思路和操作步骤一起给出来,不只是告诉你“敲什么命令”,还会说明为什么这么敲、背后发生了什么。

1. 那句“无法安全验证WSL2环境”的报错,究竟卡在哪

先说结论:你搜到的openclaw无法安全验证WSL2环境。请在PowerShell中运行 wsl --status,这个提示并没有骗你,它确实是在告诉你“当前系统里没有一个能被 OpenClaw 信任的 WSL2 环境”。但问题是它给的信息太暧昧了,新手看到之后只会本能地跑一条 wsl --status,然后发现命令不存在、或者显示一堆看不懂的状态,最后死循环。

1.1 OpenClaw为什么绕不开WSL2

OpenClaw 的安装脚本和运行环境深度依赖 Linux 子系统。原因很简单:这套 agent 框架在 Windows 上运行时,需要大量的 shell 工具、进程管理和文件系统操作,Windows 原生的 cmd 和 PowerShell 在兼容性上撑不住。与其做一层复杂的系统适配层,不如直接让它在 WSL2 里面跑——WSL2 不是一个模拟器,它是一个真正的轻量级虚拟机,运行完整的 Linux 内核,所以大部分为 Linux 写的依赖可以原封不动地装上。

我之前看到有人问“为什么不能直接做成 exe?”,其实也能做,但会牺牲很多东西。OpenClaw 的技能机制(skill)设计得很像插件系统,插件要调用 shell 命令、要访问 /usr/bin 下的工具,这些在纯 Windows 环境下限制太多。所以 WSL2 不是开发者的执念,而是这个框架的架构使然。你要想让 OpenClaw 稳定工作,就得先给它一个“合格的 Linux 环境”。

1.2 报错背后的三个常见原因

排查这句报错,我建议不要上来就重装 WSL,先按下面三个方向对号入座。80% 的情况跑不出这三个范围。

第一,WSL 功能根本没启用。很多人的电脑之前从来没装过任何 Linux 子系统,系统设置里“适用于 Linux 的 Windows 子系统”和“虚拟机平台”两个可选功能都是关闭的。这种情况下 wsl --status 会直接提示“未安装用于 Linux 的 Windows 子系统”,你看不到任何版本号,自然也就无从验证。

第二,WSL 有了,但版本是 1。WSL1 和 WSL2 是完全不同的实现,OpenClaw 要求的是 WSL2,因为 WSL1 不支持真正的 Linux 内核,很多系统调用会被翻译层吃掉,跑 agent 任务时行为会走样。wsl --status 的输出里如果显示“默认版本:1”,那环境验证就是过不去的。

第三,内核组件过期或缺失。Windows 10 的早期版本、或者很久没更新的系统,即使功能开了,也可能缺少新版 WSL 内核。这时候 wsl --status 会提示你更新内核,或者显示一堆 dll 错误。Win10 和 Win11 的 WSL 安装路径不太一样,Win11 走的是应用商店更新,Win10 需要手动下载内核更新包,这点要注意。

1.3 从零修复WSL2的完整操作

如果你现在被报错堵住,按下面这个顺序来,基本能一次性解决。全部操作需要管理员权限的 PowerShell。

wsl --status

先看当前状态。如果提示找不到命令,或者让你安装,继续往下走。

wsl --install

这个命令会开启所有需要的功能,并安装默认的 Ubuntu 发行版。执行完后务必重启电脑。我见过不少人不重启就继续装 OpenClaw,结果明明显示装成功了,环境验证还是各种报错,就是这个环节偷懒了。

重启之后,再次打开管理员 PowerShell,输入:

wsl --set-default-version 2

把默认 WSL 版本设为 2。如果这一步提示需要更新内核,那就去微软官方文档下载“WSL2 Linux 内核更新包”,装完之后重新执行上面的命令。

最后装一个发行版进去:

wsl --install -d Ubuntu-22.04

启动后初次会提示你创建 Linux 用户名和密码,这个账号后面会用得到,务必记好。创建完成之后,在 PowerShell 里再跑一次 wsl --status,看到“默认版本:2”以及 Ubuntu 的状态是“已安装”,环境这关就算过了。

提示:Windows 10 比较旧的话,建议先把系统更新跑完再搞 WSL2,否则容易遇到内核模块不匹配的问题。Win11 基本都是 out-of-box 支持。

2. 依赖准备:Git、Node.js、Docker Desktop的版本陷阱

WSL2 修好之后,很多人会直接冲去装 OpenClaw,结果又挂。因为 OpenClaw 的安装流程里还有几个前置依赖,你装是装了,但版本和配置不对,依旧白搭。我按踩坑率从高到低说。

2.1 Git和Node.js的版本选择

Git 的要求比较低,装上最新稳定版就行,没有什么值得纠结的。真正的问题是 Node.js。

OpenClaw 的部署脚本和运行时要求 Node.js 的版本不能太老,至少要 18 以上,建议直接装 20 LTS。你可能会想“那我装个最新的 23 不是更好么?”,不要,别追求最新。OpenClaw 的依赖生态里有不少原生模块,在最新 Node 版本上经常编译失败,反而 LTS 版本经过大量验证,跑得最稳。

装 Node.js 的时候有个细节:官网下载的安装包,安装向导里有一个“Add to PATH”的选项,一定记得勾上。很多人装完之后在 PowerShell 里敲 node -v 提示找不到命令,就是这里漏了。如果你已经装完但没勾,可以去系统环境变量里手动把C:\Program Files\nodejs\加进去。

2.2 Docker Desktop和WSL2的联动配置

如果你的部署路线是 Docker 方式,那 Docker Desktop 必然要装。但注意,Docker Desktop 版本迭代快,安装界面一直在变,核心设置却从没变过:安装完成后,打开 Settings → General,确认“Use the WSL 2 based engine”是勾选状态。

这一步是 Docker 和 WSL2 联动的开关,不勾上的话,Docker Desktop 会尝试用 Hyper-V,而 Hyper-V 和 WSL2 在某些机器上是冲突的,轻则 Docker 起不来,重则直接把 WSL2 搞崩。有博主提到“docker desktop 安装教程”里的各种老截图,其实都属于版本差异,你只要记住这个核心开关就行。

另外,在 Settings → Resources → WSL Integration 里,把 Ubuntu 发行版的开关也打开,确保 Docker 命令能在 WSL 内部被容器使用。这一步不设置,后面你进到 WSL 里执行 docker ps 就会报 context 错误,看起来像是 Docker 没装好,其实只是没做集成。

2.3 虚拟机方案:VMware里跑Ubuntu的取舍

WSL2 修不出来的机器,或者你就是想彻底隔离环境,有些人会转向 VMware 虚拟机里装 Ubuntu 再部署 OpenClaw。这套路不是不行,但你要清楚代价。

VMware 方案的好处是环境干净、不污染 Windows,卸载也彻底,删掉虚拟机文件就行。但代价是资源占用很高:一个 Ubuntu 虚拟机至少吃掉 2GB 内存,加上编译依赖时 CPU 满转,如果你的机器是 16GB 内存以下,跑起来会很吃力。还有个麻烦是文件共享:你 Windows 上的配置文件和虚拟机的文件系统之间有隔阂,配置 OpenClaw 时经常要在两种系统之间来回搬文件,多一层操作就多一层出错的可能。

如果你执意走 VMware,安装 Ubuntu 时建议选 22.04 或 24.04 LTS,内存给 4GB 以上,硬盘给 40GB,网络选 NAT 模式,这样拉取依赖时能正常上网。装好之后,在 Ubuntu 里用官方脚本安装 OpenClaw,反而比 Windows 路线少很多坑——因为 WSL2 那层验证逻辑根本不存在了。

3. 部署OpenClaw本体与Windows Companion配置

环境修好之后,才轮到真正的安装环节。这一部分我强烈建议你根据自己情况二选一:要么走 Docker 路线,要么走 npm / 源码路线。两条路各有优劣,往下看再决定。

3.1 Windows下的两条部署路线

先明确一个事实:OpenClaw 不是一个“双击下一步”的软件。你在 GitHub 仓库里看到的部署说明,本质上是引导你克隆代码、安装依赖、配置环境变量,最后启动一个服务。所以不管什么路线,你都要和终端打交道,这是躲不掉的。

Docker 路线适合“不想污染系统环境”的人。在 WSL 的 Ubuntu 终端里,先确认 docker 可用,然后拉取镜像、按仓库里的 docker-compose 文件启动。这种方式最干净,升级也方便,镜像更新了重新 pull 一下就行。坏处是镜像通常比较大,几百 MB 到 1GB 都很正常,第一次拉取会等一会儿。

npm 路线适合“想直接看源码、改源码”的人。在 Ubuntu 终端里先克隆仓库,然后 npm install,安装依赖。这个过程非常久,尤其在网络不稳定的情况下,经常卡在上百个依赖包上。建议装个国内镜像源,但注意 OpenClaw 有些二进制依赖需要从 GitHub 拉取,光换 npm 源解决不了全部问题,必要时还得挂代理(这一步自己想办法,网络问题不同环境下差异太大)。

初次启动之后,OpenClaw 会在终端里输出一行日志地址,通常是类似http://localhost:3000的本地地址。用浏览器打开这个地址,如果能出现一个 Web 界面,说明核心部署成功。

注意:如果看到端口被占用,不要慌,这不是装错了,而是你机器上某个进程抢占了端口。要么改 OpenClaw 的端口配置,要么把占用端口的进程处理掉。查端口占用用netstat -ano | findstr :3000,结果里的 PID 去任务管理器里对应一下就知道是谁了。

3.2 Companion到底管什么,配置时注意什么

Windows Companion 是很多 Windows 用户绕不开的组件,热词里也有一票人在搜“openclaw windows companion 怎么配置”。这个组件说白了就是一个常驻在 Windows 任务栏的管理小工具,它的作用不是替代核心服务,而是帮你管理 OpenClaw 的本地实例——比如一键启动、停止、看日志、检查环境状态。

配置 Companion 时最容易出问题的点,是路径不对称。Companion 在 Windows 侧运行,但核心服务跑在 WSL2 里,两边文件系统是隔离的。你在 Companion 里填配置路径时,填的是 Windows 路径(如C:\appdata\openclaw),但 OpenClaw 实际读写的是 WSL 路径(如\\wsl$\Ubuntu\home\openclaw)。很多教程没讲清楚这个区别,导致纯填 C 盘路径后,Companion 一直报“找不到服务”。

我的做法是,部署时直接把数据和配置目录统一放在 WSL 环境内部,Windows 侧不由 Companion 直接管理,而是把 WSL 的快捷启动命令封装成一个批处理脚本,需要时点一下就能拉起服务。Companion 只用来做状态监控。如果你特别需要 Companion 参与管理,那就把配置路径明确写成 UNC 网络路径的格式,两边才能对上。

3.3 Ubuntu环境下的部署差异

如果你直接在 Ubuntu(虚拟机或纯 Linux 机器)上部署,省掉了 WSL2 验证的麻烦,其他步骤大体一样,但有几个命令级别的差异要留意。

Ubuntu 需要先确保自己有基本的编译工具链,因为 npm 安装原生模块时可能会现场编译。一般执行一下:

sudo apt update && sudo apt install -y build-essential python3

不装的话 npm install 过程中会在 node-gyp 阶段报错。报错信息里有 node-gyp 字样,十有八九就是缺这个。

另外,Ubuntu 上部署时,防火墙规则要检查一下 3000 端口是否对外开放。本地调试无所谓,但如果你想让同局域网的其他设备访问 Web 界面,就要注意 ufw 规则。

4. 验证部署、处理报错与干净卸载

装完之后别急着高兴,跑通一次完整功能才算真的装好。这一章我给你几个验证的思路,以及我最常碰到的几个坑的排查链路。最后聊卸载——虽然听起来像在泼冷水,但“怎么卸载 openclaw”确实是很多人搜得最多的关键词之一。

4.1 怎样才算真的装好了

我的标准很简单:不是“服务启动了”算装好,而是“能让 agent 执行完一个完整任务”才算。

启动服务之后,先进 Web 界面,找一个最简单的内置任务,比如让 agent 回答一个事实性问题,或者执行一条无害的 shell 命令(比如让它查看当前目录文件)。如果这个任务能正常跑完、输出结果,那说明核心链路是通的:前端 → 服务端 → 模型 → 工具调用,每个环节都没断。

还有一步别漏:检查日志输出。OpenClaw 运行日志里如果持续出现 4xx、5xx 状态码,或者 model 连接失败的报错,那说明环境是起来了,但模型接入有问题。这时候问题往往不在 OpenClaw 本身,而在你选的算力接入方式,这部分下一章专门讲。

4.2 常见的启动报错排查链路

我在部署和帮网友排查时,发现下面几个报错出现频率极高。

第一,启动时提示“module not found”。这是典型的依赖没装全。常见原因是用了npm install --production跳过了一些开发依赖,但 OpenClaw 的技能系统和编译脚本需要那些被跳过的包。解决方式很简单:删掉 node_modules 和 lock 文件,重新完整安装:

rm -rf node_modules package-lock.json npm install

第二,启动后 Web 界面一直转圈不出内容。大概率是前端资源没构建完整。npm 方式部署的话,执行一次构建命令(通常是npm run build或仓库文档里指定的 build 命令),然后再重启服务。

第三,Agent 任务执行到一半就挂。这种情况通常和技能(skill)有关。某个 skill 要调用的外部工具不存在,比如调用了 ffmpeg,但系统里没装。修法有两个:安装对应工具,或者去 skill 的配置文件里把该项禁用。想定位是哪个 skill 出的问题,就看日志里最后一个成功步骤和失败步骤之间的差值,卡在哪一步往往就是哪个 skill 在调用外部程序。

4.3 卸载重装时需要删干净的内容

开源项目的卸载通常没有“一键清理”,你得知道它的文件布局。

停止服务之后,先删全局命令行工具(如果是 npm 装的):

npm uninstall -g @openclaw/cli

然后删除数据和配置目录。OpenClaw 的数据一般在两个地方:一个是用户主目录下的.openclaw文件夹,另一个是 Docker 路线下 Docker 容器里挂载的卷。Windows 上的话,还有%APPDATA%\openclaw这种可能。建议全盘搜索一下“openclaw”命名相关的目录,逐个确认后删除。如果用过 Docker 路线,记得执行docker compose down -v,-v 参数能把匿名卷一起删掉,不然重新部署时会读到残留数据,行为莫名其妙。

给一个建议:删数据之前,如果里面有你觉得有价值的 agent 配置或自定义 skill,先备份到一个独立目录。因为卸载后想恢复,没有任何官方云同步,数据就是纯本地的,删了就真没了。

5. 算力接入:本地Ollama模型还是API接口

最后聊一个非常多人纠结的问题,也是我安装过程中最后一个大坑:**应用到底用本地算力还是 API?**热词里那个“openclaw只能用接入api的方式使用算力吗”的问题,我可以直接回答:不是。你可以用 API,也可以用 Ollama 这类本地推理框架接开源模型,OpenClaw 对两者都有支持。

5.1 Ollama部署与qwen2.5-3b关联

本地模型的方案,我用的是 Ollama 加上 Qwen2.5 3B,这套组合在配置时比较顺。

先装 Ollama,Windows 版直接装完,它会自动跑一个后台服务,默认监听在http://localhost:11434。接着拉取模型:

ollama pull qwen2.5:3b

然后进 OpenClaw 的配置界面,把模型提供方从默认的 API 改成 Ollama,填入 API 地址http://localhost:11434,模型名填qwen2.5:3b,保存后它俩就关联上了。这个关联的过程本质上就是让 OpenClaw 把 LLM 请求发到本地端口,由 Ollama 托管的模型来响应。

这里有个关键:Ollama 只能用一个端口服务所有模型,所以如果你同一个 Ollama 实例里拉了多个模型,请在 OpenClaw 侧正确指定你要用的那个模型名。填错了会报 404 或模型 not found,很多人以为适配失败,其实就是名字没对上。

5.2 API接入方式和适用场景

API 方式的配置也很简单:在模型配置里选“API 模式”,填入服务商提供的 API Key 和对应的模型标识。好处显而易见——不用本地有高性能显卡,模型能力上限取决于你选择的 API 档位,复杂任务处理得更稳,适合跑正经业务、长文档分析、代码生成这类对模型质量要求高的任务。

坏处也要说清楚:按 token 计费,跑多轮对话和长文档时费用走得很快;数据隐私依赖服务商政策,一些本地文件内容会被发送到远程。另外,API 服务商偶尔抽风,如果你跑长时间任务时经常断连,建议在 OpenClaw 侧开启自动重试机制,并做好任务日志导出的习惯。

5.3 据我实测的选型建议

如果你只是体验 OpenClaw 的 agent 流程、跑跑入门任务,或者对数据隐私比较敏感,本地 Ollama 方案最合适。qwen2.5 3B 这种小模型虽然复杂指令理解能力一般,但处理“调用技能、执行工具、按步骤完成小任务”这类结构化流程足够用,而且零成本、离线可用。

如果你需要它写长代码、总结长文档、做复杂推理,或者你把它当成生产力工具来部署,那API 方案是必要的。本地小模型在这些任务上的表现差距很明显,强行用本地模型反而会让你觉得“OpenClaw 是不是有问题”,其实只是模型本身能力上限在那儿。

我个人的实际使用是两手都接:日常流程走 Ollama,遇到复杂任务临时切到 API。OpenClaw 支持多个模型配置切换,这个安排灵活性很高。你部署完之后,建议也试一下两套配置来回切换,感受一下同一个 agent 在不同算力下的表现差异。这不算折腾,这反而是真正理解 OpenClaw 工作方式的过程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询