1. 先搞清楚OpenClaw是个什么项目,再决定怎么装
在动手敲命令之前,我建议你先花两分钟弄清楚OpenClaw到底解决什么问题。这不是废话,因为我见过太多人装到一半发现方向错了——有人以为它是类似ChatGPT的聊天客户端,有人以为是纯粹的家用机器人控制软件,结果装完发现完全不是一回事。
OpenClaw本质上是一个模块化AI机器人控制框架,核心定位是"把大模型能力接到真实世界的执行端"。它允许你通过自然语言指令,让机器人完成抓取、导航、状态查询等物理操作,同时内置了一套技能(Skill)系统,用来把"LLM想做的事"翻译成"硬件能执行的命令"。它底层深度依赖ROS 2(机器人操作系统2),并且支持Gazebo仿真环境的无缝衔接,这也是为什么你在搜"rosclaw openclaw ros2 humble gazebo"时能看到大量相关内容。
那为什么标题里专门强调"Windows 安装与初始化"?因为OpenClaw的官方支持主线是Ubuntu,Windows属于社区持续适配的分支方向。Windows上跑它,本质上是跑在WSL 2里面,而不是直接原生跑在Windows内核上。这一点不理解透彻,后面所有报错你都会觉得莫名其妙。
适合谁来读这篇手册:
- 想在Windows笔记本上跑OpenClaw做机器人控制实验的开发者
- 搞ROS 2但不想装双系统、想用WSL 2过渡的初学者
- 想接入Ollama本地模型、用OpenClaw做个人AI助手原型的人
核心结论先放在这里:OpenClaw在Windows上不是"装不上",而是"安装路径跟你在Linux上习惯的完全不同"。这篇手册就围绕这条路径展开。
2. 环境准备:WSL 2和ROS 2 humble,一个都不能少
2.1 为什么必须用WSL 2,而不是Windows原生跑
OpenClaw依赖ROS 2的底层通信机制(DDS发现协议、节点生命周期管理),这些组件在Windows原生环境下的支持一直属于"能用但很别扭"的状态。尤其是当你以后要接Gazebo仿真、接真实硬件(通过串口或CAN总线),Windows原生环境的权限模型和驱动栈会给你制造大量麻烦。
我个人的建议是:如果你只是临时想体验OpenClaw,可以试试Windows原生;但只要你打算做任何正经的机器人控制实验,老老实实上WSL 2。WSL 2是一个轻量级虚拟机,Linux内核跑在Hyper-V虚拟化层上,对ROS 2生态的兼容性几乎和原生Ubuntu一致。而且WSL 2支持GPU直通(CUDA),后续如果你想用本地GPU跑视觉模型,这条路是通的。
安装WSL 2很简单,管理员权限打开PowerShell,执行:
wsl --install装完重启,默认会装好Ubuntu发行版。这里要注意一点:OpenClaw要求Ubuntu 22.04(jammy),如果你默认装的是Ubuntu 24.04,建议卸载重装指定版本,因为ROS 2 humble官方只支持22.04。
# 查看当前WSL发行版 wsl -l -v # 如果需要重装Ubuntu 22.04 wsl --install Ubuntu-22.04别嫌麻烦,这一步省了,后面编译依赖时你会遇到一堆"找不到依赖包"的报错,那时候再折腾更痛苦。
2.2 安装ROS 2 humble:两种方式,推荐鱼香ROS脚本
ROS 2 humble的安装方式,官方文档写得很详细,但你在Windows + WSL 2环境下,我推荐用鱼香ROS的一键安装脚本。原因很简单:它帮你处理了换源、依赖冲突、环境变量配置这一整套脏活累活。
进入WSL终端(在PowerShell里执行wsl即可),然后:
wget http://fishros.com/install -O fishros && . fishros脚本运行后,选择"安装ROS 2 humble(桌面版)"。如果你在Ubuntu 22.04上,它会自动帮你配好packages.ros.org源,装完大概需要15到20分钟,取决于你的网络。
装完记得验证:
source /opt/ros/humble/setup.bash ros2 --help能看到命令列表就说明ROS 2本体装好了。这里有个很容易被忽略的点:每次打开新的终端窗口,你都需要手动source /opt/ros/humble/setup.bash。为了避免每次手动敲,把它写进~/.bashrc:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc source ~/.bashrc2.3 额外依赖:Python、colcon、git,一个都不能少
OpenClaw构建时依赖colcon(ROS 2的编译工具)和一系列Python包。在WSL终端里执行:
sudo apt update sudo apt install -y python3-pip python3-colcon-common-extensions git pip3 install setuptools-ros2 vcstoolvcstool是后面拉取多仓库代码的关键工具,OpenClaw源码是按多个仓库组织的,少了它你没法一次性拉全。
这里插一句我踩过的坑:如果你在Windows上装了Python,又在WSL里装了Python,命令输入python时可能会串到Windows那边的解释器。在WSL里确认一下:
which python3如果输出路径带/mnt/c/,说明你调的是Windows的Python,必须改掉。用sudo apt install python3装WSL自己的Python,然后在~/.bashrc里把WSL的Python路径放到PATH最前面。
3. 拉取源码与编译:clone、vcs、colcon build全流程
3.1 从GitHub拉取OpenClaw主仓库
环境准备好了,下面进入正式安装。OpenClaw的主仓库(就是你在GitHub上搜openclaw能找到的那个)需要clone到WSL的home目录下,别放在/mnt/c/挂载目录里,那个跨文件系统IO性能极差,编译时你会痛哭流涕。
cd ~ git clone https://github.com/openclaw-ai/openclaw.git cd openclaw3.2 使用vcs导入子仓库依赖
OpenClaw不是单仓库,它把核心库、技能库、ROS集成包分在了多个repo里,通过根目录的.repos文件管理。执行:
vcs import < openclaw.repos这个命令会把所有依赖仓库拉取到src/目录下,包括:
openclaw_core:核心对话与任务编排引擎openclaw_skills:技能库(操作真实或仿真机器人手臂的原子动作)rosclaw:ROS 2集成层,提供OpenClaw与ROS节点之间的桥接
如果网络不好导致部分仓库拉取失败,可以重复执行这个命令,vcs会自动跳过已成功拉取的部分。
3.3 colcon build编译,注意设置CMake参数
OpenClaw的C++和Python混合构建,需要用colcon统一编译。在仓库根目录执行:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release--symlink-install是关键参数:Python代码以符号链接安装,这样你改了源码不需要重新编译。首次编译大概需要10到20分钟,期间会看到大量[Processing]输出,正常的。
编译完成后,source一下编译产物:
source install/setup.bash同样,这句也要写进~/.bashrc。验证一下是否安装成功:
claw --version如果输出版本号,说明OpenClaw核心安装成功。这里有个概念要区分清楚:claw命令行是OpenClaw的客户端入口,用于交互式对话、技能调用和管理配置;后面讲的openclaw serve才是启动后端服务。很多人把两者搞混,以为运行claw就启动了服务,其实不是。
3.4 编译中常见的两个问题及解决
问题一:ament_index相关报错。这通常是colcon环境没完全source,或者之前有旧的install目录残留。解决方式:
rm -rf build/ install/ log/ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release问题二:编译卡在99%不动。大概率是某个C++包的链接内存不足。WSL 2默认分配的内存不够时,你可以在%USERPROFILE%\.wslconfig文件里调大:
[wsl2] memory=8GB swap=8GB改完执行wsl --shutdown重启WSL再编译。
4. 初始化配置:companion、skill、config逐项击破
编译完只是拿到了一堆可执行文件,真正让OpenClaw跑起来的是初始化这一步。这一步的任务是:生成配置文件、注册技能、启动后端服务、连上推理模型。很多人卡在这里,我拆开讲。
4.1 初始化配置目录:claw config init
在WSL终端执行:
claw config init这会生成OpenClaw的用户配置目录,默认在~/.openclaw/。里面会生成:
config.yaml:核心配置文件,包含模型接入、服务端口、日志级别等profiles/:多配置文件目录,按场景区分(比如home_profile、lab_profile)skills/:用户自定义技能目录,放你自己的技能脚本
打开config.yaml,你需要重点关注这一段:
llm: provider: openai-compatible base_url: "http://127.0.0.1:11434/v1" model: "qwen2.5:7b" api_key: "ollama"这表示OpenClaw默认通过兼容OpenAI接口的本地模型服务来推理,地址指向Ollama的默认端口11434。如果你不配这一项,后面claw chat时会一直提示连不上模型服务。
4.2 配置Ollama本地模型服务(推荐方案)
关于模型推理,OpenClaw支持云厂商API,但我强烈建议你本地部署Ollama。原因有二:一是机器人控制指令的延迟敏感度很高,云端API动辄一两秒的往返延迟会让动作执行变得非常迟钝;二是OpenClaw会向模型发送大量环境感知数据(比如摄像头画面描述的文本、传感器状态),走云端数据量太离谱。
在WSL里安装Ollama:
curl -fsSL https://ollama.com/install.sh | sh ollama pull qwen2.5:7b因为OpenClaw是机器人控制场景,对中文指令识别和工具调用能力有要求,Qwen系列表现明显优于同尺寸Llama。7B版本在WSL的CPU环境下可以用,但如果你有NVIDIA GPU且配置了CUDA,建议上14B版本,工具调用成功率会明显提升。
拉取完成后,后台启动Ollama:
nohup ollama serve > /tmp/ollama.log 2>&1 &5. 高频报错排查:初始化失败、权限、网络一个都别放过
这一章全是实操里浓缩出来的东西。OpenClaw在Windows + WSL 2环境下,初始化阶段挂掉的概率相当高,但绝大多数坑是固定的,按下面几类排查基本能解决。
5.1 "error: start the windows daemon from a non-elevated terminal; shared clients"
这条报错信息如果你搜过,会发现它同时出现在许多其他项目的issue里(包括Docker、OpenClaw相关的Windows兼容层)。它的本质是:你在管理员权限的终端里启动了一个带有Windows守护进程的服务,而这个服务禁止在提权环境中运行。
OpenClaw的Windows Companion组件(用于监听Windows宿主机的文件系统和剪贴板事件)就会触发这个问题。处理方式很反直觉:换个非管理员权限的普通PowerShell窗口启动。如果你习惯用管理员终端做事,这里忍一下,单独开一个普通权限窗口给Companion用。
另外,这条报错里的"shared clients"部分,通常意味着上一轮残存的守护进程还占着同一个命名管道。这时打开任务管理器,找到所有Python或claw相关进程,结束后再启动。
5.2 "核心库初始化失败":既不是缺依赖也不是代码坏了
很多人在claw config init或rosclaw启动时遇到"core library initialization failed"之类的报错,就以为是编译出了问题,急着重新编译。其实在Windows环境下,九成是环境变量没带过来。
在WSL里,如果你是通过wsl命令从上一次的Shell历史进入的,可能没有正确加载ROS 2环境。手动执行一遍:
source /opt/ros/humble/setup.bash source ~/openclaw/install/setup.bash然后在同一终端窗口内再尝试启动。如果你发现每次开新终端都要手动source,检查一下~/.bashrc里是否真的写入了这两行,以及是否被注释掉了。
5.3 网络超时:外部模型API和GitHub资源拉取
Windows环境下,因为网络原因导致OpenClaw拉取模型或升级技能库超时,非常常见。如果你用的是国外模型API,超时基本是网络拓扑导致,不是OpenClaw的问题。建议在config.yaml里把请求超时调大:
llm: timeout: 120如果你需要拉取GitHub上额外的技能仓库,而直连经常失败,可以考虑配置代理,注意在WSL里配置的是Linux侧的代理环境变量(http_proxy/https_proxy),而不是Windows侧。因为WSL 2是独立网络栈,Windows代理并不会自动生效。
特别说明一下:wsl --shutdown之后重新进入,WSL的IP是变化的,如果你在WSL里启动了Ollama或其他服务,Windows侧访问时要用WSL新IP,或者直接把服务绑定到0.0.0.0。很多"今天能用明天不能用"的诡异问题,根源都在这里。
5.4 初始化时提示"磁盘必须经过初始化"或"逻辑磁盘管理器才能访问"
这条报错跟OpenClaw本身关系不大,但我在多个Windows用户安装时频繁见到,所以提一嘴。它发生在你挂了外接移动硬盘或第二块SSD,且磁盘处于RAW或未分配状态时。
打开"磁盘管理",找到对应磁盘,右键初始化(选GPT),然后新建简单卷并格式化。这里有个重要提醒:格式化会清空磁盘数据,操作前再三确认盘符。OpenClaw项目本身需要大量模型和仿真环境存储空间,很多人会外挂硬盘,结果系统把外挂盘的未初始化状态当作致命错误,导致安装脚本中断。
5.5 鱼眼标定initextrinsics外参初始化失败(ROS相关)
这个坑虽然属于OpenClaw的进阶场景,但既然你搜到了OpenClaw,大概率也对"给机器人接入视觉"有兴趣。initextrinsics是OpenCV鱼眼相机标定中初始化外参的函数,在OpenClaw的视觉标定流程中,如果相机标定板图片数量不足(少于3张有效角点图),就是会报"外参初始化失败"。
解决方式:
- 确保标定板在不同角度和距离下的图片不少于15张
- 图片要清晰,不能有运动模糊
- 如果镜头畸变极大,先用OpenCV的
fisheye::calibrate单独跑一遍,确认重投影误差低于0.1像素,再接入OpenClaw
6. Windows Companion:宿主机与WSL之间的桥梁配置
如果你只把OpenClaw装在WSL里,平时用终端对话、给机器人下指令,其实已经够用了。但OpenClaw有个Windows专属功能叫OpenClaw Windows Companion,它能在宿主机Windows上显示实时状态通知、文件操作提醒,并且把Windows侧的语音输入流转发给WSL里的OpenClaw核心。
Companion的安装方式在WSL外操作:
- 下载Windows安装包运行,它会装一个后台托盘程序
- 首次运行会要求填写WSL的IP和OpenClaw服务端口(默认8765)
- 如果显示无法连接,先回到WSL里确认
openclaw serve确实在跑,并且监听0.0.0.0而不是127.0.0.1
启动后端服务的方式:
openclaw serve --host 0.0.0.0 --port 8765这个命令相当于启动了OpenClaw的核心服务。建议用nohup或tmux让它常驻:
tmux new -d -s openclaw "openclaw serve --host 0.0.0.0 --port 8765"Companion配置完成后,你在Windows右下角能看到连接状态图标,语音输入时会实时显示识别内容。
一个普遍的误区:Companion只是一个桥接和通知工具,不是OpenClaw的Windows版本体。真正的控制逻辑、技能调度、ROS通信全都在WSL里。所以即便Companion连不上,也不代表你OpenClaw没装好,只是少了部分便利功能。
7. 三个初始化后的必要检查项
初始化完成不等于一切正常,下面三个检查项是我每次部署OpenClaw后必做的,能帮你快速定位"看起来正常但实际有问题"的情况。
7.1 技能注册表是否完整
执行:
claw skills list如果输出为空,多半是skills/目录下没有可加载的技能。OpenClaw从仓库拉下来的技能在src/openclaw_skills/里,你需要在配置里指定技能搜索路径:
skills: paths: ["~/openclaw/src/openclaw_skills", "~/.openclaw/skills"]7.2 模型服务连通性测试
在WSL终端里,独立于OpenClaw测一下模型服务是否可用:
curl http://127.0.0.1:11434/api/tags如果能返回JSON(里面是已拉取的模型列表),说明Ollama正常。如果连接拒绝,大概率是Ollama没启动或者绑定地址不对。可以把Ollama的OLLAMA_HOST设为0.0.0.0重新启动。
7.3 端到端对话测试
claw chat输入"你好,请介绍一下你现在能做什么"。如果返回内容正常,说明核心链路通了。接下来可以试一个和ROS集成的指令——但前提是你已经启动了rosclaw的桥接节点:
ros2 run rosclaw claw_node这个节点负责把OpenClaw的技能调用转换成ROS 2话题和服务,没有它,OpenClaw只能做纯文本对话,连不上仿真环境。在Gazebo里配合测试时(就是你搜到的ros2 humble gazebo场景),这个节点必须常驻。
8. 我自己验证过的推荐配置组合
如果你不想在自己机器上反复试错,直接照抄我的验证过的组合:
| 组件 | 推荐版本/配置 | 说明 |
|---|---|---|
| WSL 2 | Ubuntu 22.04 | OpenClaw官方测试基准 |
| ROS 2 humble | 桌面版完整安装 | Gazebo集成必需 |
| OpenClaw | 最新main分支 | 不建议用release tag,修复了多个Windows兼容问题 |
| 模型 | Qwen2.5 14B(有GPU) / 7B(无GPU) | 工具调用成功率高 |
| Ollama | 最新版 | 绑定0.0.0.0,超时设为120秒 |
| Python | WSL内3.10 | 不要用宿主机Python |
这个组合里,OpenClaw用main分支是为了确保Windows相关修复是最新的——尤其是那些涉及WSL网络栈变化的补丁,release版本往往滞后。
最后再说一个个人经验:在等待构建和拉取模型的时候,别去动网络配置,也别切换WSL发行版。OpenClaw、ROS 2、Ollama三个系统叠在一起,任何一个环节因为你的乱动而重启,排查成本都是半小时往上。一次装完,一次配好,后续维护就轻松得多。