这两天在社区里看到不少人问OpenClaw(老玩家还是习惯叫它Clawdbot)的部署问题,特别是2026年之后项目架构调整过一轮,网上很多教程还是老写法,照着抄很容易卡在环境上。我自己前前后后在不同机器上部署了七八遍,从Windows笔记本到Linux服务器都踩过一遍坑,这篇就把现在这套最稳的10分钟流程拆开来讲。
先说清楚这次分享能帮你解决什么:一是在Windows上通过WSL2把OpenClaw跑起来,二是接上本地Ollama模型让它真正开始干活,三是最常见的报错怎么救。适合那种刚接触Agent框架、想在本机搭一个能自动处理多步骤任务的AI助手的人。如果你已经看了GitHub仓库但被README里的术语绕晕,这篇就是帮你把流程捋直的。
1. 先搞清楚OpenClaw是什么,再决定要不要花这10分钟
1.1 一句话理解OpenClaw(Clawdbot)的定位
OpenClaw是一个开源自主代理框架,它做的事情通俗讲就是:让你本地的AI模型不再只停留在聊天框里,而是能够根据你的指令,自主规划步骤、调用工具、操作文件系统或者执行命令,最终完成一件具体的事。Clawdbot是早期项目名,OpenClaw是后来采用的正式标识,社区里两个叫法都有,指的都是这个东西。
这一点很重要:它不是一个聊天UI,也不只是一个模型封装库。它是一个Agent运行时环境,需要你把模型、技能(Skill)、执行权限这三样东西组合起来,才能发挥价值。也正因为这样,现在很多号称“AI自动化助手”的产品,底层思路都能看到它的影子——先让Agent理解目标,再拆解成子任务,然后按顺序调用工具执行。想搞懂这类架构,OpenClaw是很好的研究对象。
1.2 它的核心架构:Agent主程序怎么和模型、Skill协作
我用一张纸就能说明白它的工作方式。OpenClaw主程序负责两件事:管理对话上下文和调度工具。模型负责的是生成决策,比如判断下一步该做什么,以及生成具体动作参数。Skill则是你给Agent准备的工具箱,每个Skill里包含一段结构化指令加一个可执行脚本,Agent会根据任务需求主动去匹配和调用合适的Skill。
举个例子:你给OpenClaw一个任务“把下载目录里的压缩包全部解压并整理到对应文件夹”,它先由模型理解这个目标,然后自动匹配一个类似“解压归档”的Skill,调用该Skill附带的脚本去执行文件操作,再把执行结果反馈回上下文,继续进行下一步。这种“模型决策、Skill执行”的分工,就是它和普通聊天机器人的本质区别。
1.3 适合谁,不适合谁
先泼一盆冷水,再说推荐人群。如果你完全没碰过命令行,也不理解什么是环境变量、什么是npm,那这篇教程里的10分钟可能会变成一晚上。但我下面会把每一步的命令都写全,照着复制粘贴也能过。
适合三类人:一是正在研究本地Agent框架、想对比不同实现方案的技术爱好者;二是需要用私有化模型处理文件、批处理任务的效率工具控;三是有服务器资源、想把OpenClaw做成内网服务的同学。不适合的是:指望不装任何依赖、网页打开就能用的人——它再怎么封装,本质还是本地程序,依赖是躲不开的。
2. 环境准备:WSL2、Node.js这关不过,后面全白搭
2.1 为什么我推荐Windows用户走WSL2而不是直接裸装
很多第一次部署OpenClaw的人,在Windows上直接跑安装脚本,然后遇到一堆奇奇怪怪的路径报错。原因很简单:OpenClaw的官方脚本和依赖在Linux环境下测试最充分,而且它的很多子工具依赖bash、grep、curl这类Linux原生组件。虽然Windows 10以上的PowerShell也提供这些命令,但行为不完全一致,最稳妥的方式就是装一个真正的Linux环境。
WSL2就是Windows上的轻量虚拟机,专门干这个用的。它比传统虚拟机启动快、内存开销低,而且和Windows文件系统互通,文件放在D:\也能在WSL里直接访问。我说的10分钟能部署完,前提就是你走WSL2这条路。双系统我不推荐,太浪费时间;Docker Desktop我也见过有人用,但对新手来说多了一层镜像管理,没必要一开始就给自己上难度。
2.2 WSL2部署时的三条硬指标检查
开WSL之前,先确认三件事。
第一,Windows版本。Win10要19041以上,Win11基本都可以。版本太老,wsl --install这个命令都不存在。第二,虚拟化有没有开启。你可以在任务管理器里看“性能”标签页,找到CPU那一栏,看“虚拟化”是否是“已启用”。没启用就去BIOS开Intel VT-x或AMD-V。第三,内存和磁盘要够。OpenClaw本身不吃内存,但后面加载模型要占。Ollama跑7B模型至少要8GB内存,建议机器有16GB再玩得舒服。
2.3 最容易卡住的“无法验证SL2环境”问题怎么解
你在网上搜OpenClaw部署经验时,大概率会看到有人在问“无法安全验证SL2环境,请在PowerShell中运行wsl -- status”这类报错。这个问题我遇到过两次,都是同一个根源:系统没有默认设置WSL2为后端架构,或者WSL内核组件过期。
正确的处理方式分两步。第一步,在管理员PowerShell里执行:
wsl --status wsl --update执行wsl --status如果显示“默认版本:1”或者“WSL1”,那就说明还是老架构。必须执行wsl --set-default-version 2把它切到WSL2。
第二步,如果wsl --update报错或者更新后仍提示SL2环境无法验证,大概率是你系统的Windows Update没有安装那个“适用于WSL的Linux内核更新包”。这个包可以手动下载安装,微软官网搜“WSL2 Linux kernel update”就能找到。装完再重启终端执行一次wsl --status,一般就正常了。
还有一个容易被忽略的细节:有些环境里,你之前装过旧版WSL,残留的配置会干扰新版本。这时候把WSL整个卸载重装反而最快。命令是wsl --unregister加你的发行版名称,然后重新wsl --install。这种方法治标也治本,装完就是一个干净环境。
2.4 Node.js版本怎么选,装错了会有什么后果
OpenClaw的主程序是Node.js写的,所以Node环境必须装。但是版本有讲究,不是越新越好。根据我实测的经验,Node.js的LTS版本(比如20.x或22.x)是最稳的。那些标着“Current”的最新版本虽然功能多,但OpenClaw的部分依赖还没有完全适配,装完跑起来会报原生模块编译错误。
这里要强调一个反直觉的点:下载Node.js不要去官网找最新版,而要选LTS版本。推荐用nvm来管理版本,因为它允许你在不同项目之间切换Node版本,万一遇到兼容性问题可以快速回退。装nvm的命令很简单:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash装完执行nvm install --lts,再nvm use --lts。折腾完这些,环境底子就算打好了。
3. 十分钟部署主流程:拉代码、装依赖、接模型
3.1 获取源码并安装依赖
环境准备好后,进入正式部署。在WSL的终端里先建一个工作目录,然后直接克隆OpenClaw的仓库。
mkdir ~/openclaw && cd ~/openclaw git clone https://github.com/openclaw/openclaw.git .如果你的网络拉GitHub比较慢,可以用国内的镜像加速方案,但注意不要用任何代理工具,直接换源就行。GitHub仓库地址替换成对应的镜像域名,效果一样。
克隆完成后,执行依赖安装:
npm install这一步执行时间取决于网络,一般在两三分钟。npm install完成后,你会看到node_modules目录生成。如果在这个环节报了什么“node-gyp”相关错误,基本就是Node版本问题,回到上一章用nvm切换LTS版本再重试。
3.2 模型接入的两种方式:本地Ollama和API模式
OpenClaw本身不包含模型推理能力,它需要连接一个模型服务来获取决策能力。目前主流的有两条路线。
第一条是本地模型路线,用Ollama。Ollama是一个本地模型管理工具,可以很方便地拉取并运行开源模型,比如qwen2.5系列、Llama系列。OpenClaw通过Ollama暴露的本地HTTP接口,把推理请求发过去,由本地GPU或CPU算完再返回。这条路的好处是隐私好、无额外费用,缺点是模型小的话推理能力有限,模型大又吃配置。
第二条是API模式,也就是接第三方模型的在线API。这种方式响应快、模型能力更强,但需要申请API Key、产生费用。社区里常有人问“OpenClaw是不是只能用接入API的方式使用算力”,答案是否定的。API是可选方案,不是必选。Ollama本地推理这条路实测下来完全可用,只是你需要根据自己机器配置选对模型大小。
3.3 把qwen2.5-3b这类模型配进OpenClaw
我推荐新手第一次就用qwen2.5-3b这个规模的模型,原因有两个:它在中英文指令理解上表现均衡,而且8GB内存的机器就能跑,不会动不动就让你的部署“爆内存”。
先在WSL里装Ollama:
curl -fsSL https://ollama.com/install.sh | sh ollama pull qwen2.5:3b这里注意,模型名称是qwen2.5:3b,不要拼成3b不带冒号。拉取完成后测试一下:
ollama run qwen2.5:3b如果能在终端里正常对话,模型服务就没问题了。然后让OpenClaw知道这个模型的存在。进入OpenClaw的配置目录,一般是~/.openclaw/,找到主配置文件config.yaml,没有就新建一个。参考配置如下:
model: provider: ollama base_url: http://localhost:11434 model_name: qwen2.5:3b temperature: 0.2temperature设为0.2是为了让Agent执行任务时更收敛,不容易发散。如果你用的是API路线,这里的provider改成api对应的名称,再补充api_key字段即可。保存配置后,启动OpenClaw:
npm start看到类似“Agent is online”的日志,说明主程序已经连上模型了。
3.4 验证部署是否成功的三个标准
怎么样算部署成功?不是启动日志没有报错就算,我习惯按三个标准检查。
第一,模型连通性。在OpenClaw的交互界面里随便输入一句“hi”,如果模型有回复,说明主程序到模型的链路是通的。第二,工具调用能力。输入一个需要调用文件系统的指令,比如“列出当前目录的文件”,如果Agent正确执行了ls命令并返回结果,说明它的命令执行能力正常。第三,Skill发现能力。输入“你现在有哪些技能”,如果它返回了你配置的Skill列表,说明Skill加载机制正常。
这三个都通过,这台OpenClaw才算是真正跑起来了。我见过不少人只看了第一条就开始写任务,结果Agent一通操作猛如虎,但Skill调不动,最后任务根本没完成,这就是验证环节没做全。
4. 从部署到使用:用第一个Skill让OpenClaw真正干活
4.1 Skill是什么,为什么说它是OpenClaw的灵魂
只接好模型,OpenClaw充其量是一个有命令执行能力的聊天机器人。真正让它脱离“玩具”属性的,是Skill机制。你可以把Skill理解为“Agent的职业技能包”,每个Skill都告诉Agent:我在什么场景下可以被调用、需要什么参数、执行什么动作。
Skill一般是文件夹里的两个文件:一个SKILL.md描述指令,一个script.sh或.py执行脚本。模型读SKILL.md判断何时用这个技能,然后生成调用参数,接着系统去执行对应脚本,最后把结果交回给模型解读。没有Skill,Agent就像只有大脑没有手的人;有了Skill,它才能碰文件、跑命令、操作服务。
4.2 手写一个简单Skill:让OpenClaw整理目录
我不喜欢纸上谈兵,直接来一个能用的。在~/.openclaw/skills/下建一个目录folder-organizer,里面放两个文件。
先写SKILL.md:
# Skill: Folder Organizer ## Description Organizes files in a directory by their file extension into subfolders. ## When to Use - When the user asks to organize, sort, or clean up a folder - When files are mixed and need to be categorized by type ## Parameters - directory: path of the directory to organize (required) ## Example Input: organize ~/Downloads Action: Every file in ~/Downloads is moved into subfolders like images/, documents/, archives/再写执行脚本organize.sh:
#!/bin/bash directory="$1" cd "$directory" || exit 1 for file in *; do [ -f "$file" ] || continue ext="${file##*.}" [ -d "$ext" ] || mkdir -p "$ext" mv "$file" "$ext/" done echo "Organized files in $directory by extension"然后加一个执行权限:
chmod +x ~/.openclaw/skills/folder-organizer/organize.sh重启OpenClaw,输入“帮我整理一下~/Downloads目录”,它就会自己调用这个Skill开始干活。这个例子虽然简单,但整个链路是完整的:模型解析意图、匹配Skill、解析参数、执行脚本、反馈结果。
4.3 Skill触发机制和常见误区
新手最容易踩的误区有两个。
第一个误区是觉得Skill会被“自动加载”到所有任务里。其实不是,模型需要根据用户指令动态判断是否调用Skill,判断依据就是SKILL.md里的“When to Use”描述。如果描述写得含糊,模型就不知道什么时候该用它,Skill再强也白搭。所以写SKILL.md时,要把触发场景写具体。
第二个误区是让脚本做太多事情。Skill脚本最好只做单一且明确的事,参数也尽量简单。如果你让一个Skill既整理文件又发通知还重启服务,模型很容易在参数解析阶段出错,而且出错了你还不好排查。
4.4 第一次跑任务时的内存与超时调优
第一次用qwen2.5-3b跑任务,你可能会遇到Agent执行到一半就没动静了。这种情况往往不是坏了,而是模型推理和技能执行超时。
打开主配置文件,找到timeout相关的字段,把默认的30秒调大到120秒。Agent里每个步骤如果计划得太复杂,模型要考虑好几个来回才给出下一步指令,30秒确实不够用。另外,如果Ollama是跑在默认配置下,模型会常驻内存,和OpenClaw抢内存。你可以限制Ollama的并发数,在config.yaml里加:
ollama: num_parallel: 1 keep_alive: 5mnum_parallel设1是为了避免模型同时处理多个请求占满内存,keep_alive设5m是让模型在5分钟内不释放内存,避免反复加载。这些参数实测对低配机器帮助很大。
5. 从Windows到手机到ROS:三个方向的高频扩展玩法
5.1 Termux跑OpenClaw手机版
手机也想跑OpenClaw?这个需求确实存在,而且用Termux可以实现。Termux是安卓上的终端模拟器,可以让手机运行Linux环境常见命令。先劝一句:手机跑OpenClaw不适合接大模型,体验会很卡。更适合的场景是把它作为“远程控制终端”,连到你服务器上的OpenClaw实例。
手机端部署步骤浓缩一下:先去F-Droid或官方发布渠道安装Termux,然后执行pkg install nodejs-lts git curl安装基础环境。之后克隆OpenClaw仓库、npm install,再配置连接远程Ollama或API。配置里有个关键点:base_url要填你服务器内网地址或公网地址,不能填localhost,因为Ollama跑在别处。
我在手机上实测过,Termux跑OpenClaw主程序本身只有几十MB内存占用,运行没问题,但一旦加载模型就力不从心了。所以你想玩手机版,最好走API模式或者远程模式,别指望手机本地推理。
5.2 内网服务器私有化部署:把模型和Skill一起搬进去
如果你的需求是给团队内网提供一个可用的Agent服务,而不是单机自娱自乐,那就需要服务化部署。思路和本地基本一样,区别在几处。
第一,Ollama要常驻后台,并且要绑定可访问的网络地址,让局域网内其他设备都能调用。第二,OpenClaw的配置要改为host: 0.0.0.0,这样它就能接受来自局域网其他机器的请求。第三,Skill的权限要收紧。内网环境虽然相对安全,但Agent拥有命令执行能力本身就是风险,建议把directory、shell这类Skill限定在特定目录。
社区里有人问过“deepseek harness附带skill怎么部署到内网服务器”,其实本质就是把整个环境装到服务器上、模型换成deepseek系列、Skill目录整体复制过去即可。OpenClaw的Skill就是文件夹,复制不涉及编译,非常灵活。
5.3 ROS2场景:与Gazebo/Humble结合做机器人任务
再提一个相对硬核但很受关注的场景:把OpenClaw接入ROS2。社区里叫它rosclaw,本质上就是让Agent能理解和操作ROS2系统,配合Gazebo仿真环境做机器人任务规划。
这个玩法的基础环境是Ubuntu 22.04 + ROS2 Humble + Gazebo,OpenClaw通过Skill方式调用ROS2命令行工具(ros2 topic list、ros2 run等),让Agent完成简单的仿真任务,比如让机器人移动到指定坐标。
如果你不是做机器人开发的,这一节看看就好。但从架构角度看,它验证了一件事:只要Agent能通过Skill包装命令调用,任何领域工具都可以成为它的一部分。ROS2可以,脚本系统可以,工业控制软件也可以。
6. 部署过程中我最常被问到的报错与排查思路
6.1 常见报错及解决办法一览
我整理了一张表,基本都是微信群和论坛里反复出现的问题,按频率排序。
| 报错信息 | 根源 | 解决办法 |
|---|---|---|
wsl命令无法识别 | WSL未安装或路径异常 | 管理员PowerShell执行wsl --install |
| 无法安全验证SL2环境 | WSL内核更新包缺失或默认版本是1 | wsl --update,切换默认版本2 |
npm install报node-gyp错误 | Node版本不兼容 | 用nvm切到LTS版本,清空node_modules重装 |
ECONNREFUSED localhost:11434 | Ollama服务未启动或地址错误 | 检查ollama serve是否运行,确认端口 |
| Skill执行提示Permission denied | 脚本没有执行权限 | 对脚本执行chmod +x |
| 模型回复乱码或答非所问 | 模型体积过小或temperature过高 | 换大模型或把temperature降到0.2以下 |
这些报错都是环境层面的,解决完基本不会再犯。
6.2 证书与下载源报错的处理
还有一类报错跟证书有关,特别是企业内网环境。有次我在一台Windows机器上部署,npm install总是报certificate has expired或self-signed certificate错误,一开始以为是Node的问题,后来发现是内网代理把HTTPS流量做了内置证书替换,而本机没有安装这个证书。
这个场景下不要关闭证书校验,那是饮鸩止渴。正确做法是把公司证书导入到系统信任链,Windows下双击证书文件选“安装到本地机器”、选“受信任的根证书颁发机构”即可。WSL2里的Linux环境,再把证书.crt文件放到/usr/local/share/ca-certificates/,执行sudo update-ca-certificates。这样Docker、npm、curl这类工具就都能过证书校验了。
6.3 保持OpenClaw可用的一些小习惯
最后分享几个维持环境稳定的小习惯,都是踩坑换来的。
一是Ollama和OpenClaw的启动顺序要固定,先启动Ollama再启动OpenClaw,免得OpenClaw启动时检测模型服务失败,进入一种半瘫痪状态。二是每次改完config.yaml或Skill,不要图省事热更新,重启一次进程让配置彻底生效。三是定时ollama pull更新模型,同时npm update更新OpenClaw的依赖,版本太旧容易撞上已经修掉的bug。
我个人体会是,OpenClaw这套东西的部署门槛其实已经比早期低很多了,真正让新手崩溃的从来不是项目本身,而是环境叠加出的各种小问题。把WSL2和Node版本的底子打好,剩下的流程照着做,10分钟真能跑通。后续你想往深了玩,再慢慢啃Skill编写和模型调优也不迟。