OpenClaw最近在AI自动化圈子里讨论度挺高。说实话我第一次听到这名字,以为是某个开源硬件项目,结果一查才知道,它是个能接大模型、跑自动化任务的智能体平台。简单理解:你把大模型接进去之后,它能帮你拆解任务、调用工具、读写文件、执行操作,相当于一个能干活的全家桶助理。本地部署中文版本,就是把整个环境装在你自己机器上,用中文界面、中文技能库和中文模型来跑自动化流程。这篇文章我会把从零到全面跑通的流程、踩过的坑、以及几个主流平台的部署姿势全部分享出来,适合想在自己电脑上跑一个私有智能体的人,也适合对OpenClaw感兴趣但被安装教程劝退的新手。我前后在Windows、Ubuntu和安卓上都跑过一遍,中间遇到不少坑,比如WSL环境验证失败、Node版本不兼容、模型接不上,这些都是很典型的入门障碍,网上教程往往一笔带过,我这次重点讲清楚。
1. 为什么要在本地跑一个中文版OpenClaw
1.1 本地部署解决的核心问题:隐私、成本和控制权
先聊一个很多人纠结的问题:既然OpenClaw可以走API方式接入大模型,为什么还要费劲在本地部署一套?
答案是四个字:控制权。本地部署意味着模型权重、对话记录、工具调用日志全部留在你的设备上。拿我实际跑的场景举例,我之前尝试用OpenClaw做网页内容自动摘要和文件分类整理,这些任务会涉及大量个人文档。如果走API方式,等于把这些内容送到外部服务器。虽然大平台都有自己的隐私承诺,但对自己的数据敏感的人来说,这个心理门槛始终过不去。本地部署之后,断网也能跑,不会因为某个半天服务繁忙就中断任务,这在连续批量处理文件时特别重要。
另外还有成本账。API按token计费,跑一次长任务可能烧掉几块钱,一天跑几十个自动化任务,一个月下来是笔不小的开销。本地模型虽然没有云端那么大参数,但胜在无限调用、响应稳定。你只要一次性搞定硬件和部署,后续就是电费的问题了。
还有一个经常被忽略的点:可定制性。本地部署之后,OpenClaw的代码、技能目录、提示词模板都是你的了。我后来就改过技能注册逻辑,让它更贴合我自己的文件处理习惯,这个自由度是API模式给不了的。
1.2 中文版和英文原版差在哪
很多人在英文原版上折腾半天,最后发现卡住自己的不是技术,而是语言和习惯。
所谓中文版,并不是简单把界面翻译一下就完事。它会包含三块核心内容:一是界面和交互层的本地化,控制台提示、配置向导、技能描述都变成了中文;二是内置技能库的汉化,社区里有人专门写了中文场景的Skill,比如中文文章摘要、中文邮件起草、表格数据整理;三是默认提示词模板针对中文大模型做了调优。
这第三点特别关键。OpenClaw本身是为英文模型场景设计的,默认的系统提示词和任务拆解格式,放到中文模型上会出现一种情况:模型能理解指令,但输出的内容一股翻译腔,格式也不够自然。中文版通常会把提示词重写一遍,让Qwen、DeepSeek、GLM这类中文模型的表现明显上一个台阶。我自己实测下来,同一台机器上跑同样的任务,中文版的输出质量比直接用英文原版套中文模型要自然很多,尤其是需要生成结构化内容的场景,差距一眼就能看出来。
1.3 部署方案选型:先想清楚你要在哪用
在动手安装之前,我建议你先想清楚自己会在什么环境下用OpenClaw,这会直接决定你走哪条部署路径。
| 使用场景 | 推荐平台 | 优势 | 短板 |
|---|---|---|---|
| 日常个人自动化、学习调试 | Windows + WSL2 | 环境和日常系统无缝切换、图形界面方便 | 启动链路相对长,占内存 |
| 7x24小服务、长期跑任务 | Ubuntu服务器 | 稳定、资源占用可控、方便systemd托管 | 初始配置全靠命令行 |
| 手机上试用、临时处理 | 安卓 + Termux | 随时随地可跑、便携 | 性能受限、大模型跑不动 |
| 机器人、仿真控制 | Ubuntu + ROS2 | 可以和Gazebo环境直接打通 | 环境复杂,前置依赖多 |
我个人的建议是:如果你只是尝鲜或者日常自己用,直接上Windows + WSL2就够了,这也是社区里维护最积极的路径。如果你打算把它变成一个小服务长期挂在后台,那Ubuntu会更省心。手机方案适合应急和演示,别指望它在小模型上跑出多惊艳的效果。
2. 部署前的准备工作:环境与依赖
2.1 硬件底线与系统要求
先把硬件门槛说清楚,免得有人装到一半发现带不动。
OpenClaw本身是一个运行框架,吃内存的能力远比吃CPU厉害。空载状态下,Node服务加基础进程大概会占用2GB左右内存,所以16GB内存是起步线,8GB内存的老机器跑起来会明显局促,尤其是同时开浏览器和编辑器的时候。
真正吃硬件的是你接入的本地大模型。以Qwen系列为例,qwen2.5:3b量化版大概需要3-4GB显存或等量内存,qwen2.5:7b量化版需要6-8GB。如果你的机器只有核显和共享内存,我建议老老实实用3B模型,别硬上7B,否则等一个任务可能要好几分钟。
磁盘方面,OpenClaw本体加依赖占500MB左右,模型文件是大头:3B模型约2GB,7B模型约4.7GB。如果你要多模型切换,建议预留20GB磁盘空间。系统要求上,Windows 10 21H2或Windows 11是WSL2的硬门槛,Ubuntu建议20.04以上,安卓至少Android 10。
2.2 Windows下WSL2环境配置
这是Windows用户踩坑最多的环节,网上那个高频问题——"OpenClaw无法安全验证WSL环境,请在PowerShell中运行wsl -- status"——就出在这里。
WSL2是Windows跑Linux子系统的底层环境,OpenClaw的服务端很多依赖在原生Windows下跑起来有兼容问题,社区标准做法是把它跑在WSL2的Linux环境里。安装其实是懒人式的,以管理员身份打开PowerShell:
wsl --install重启之后,Ubuntu会自动开始初始化安装,设置一个Linux用户名和密码就行。但这里有个细节:系统默认可能装的是WSL1,而不是WSL2。有些场景下OpenClaw对系统调用和网络栈有要求,WSL1会有兼容问题。所以装完第一件事就是确认版本:
wsl --status wsl --list --verbose如果发现版本还是1,手动切换:
wsl --set-version Ubuntu 2这个切换过程耗时可能较长,需要下载并应用WSL2内核,期间不要关窗口。另外还会遇到一种情况:BIOS里虚拟化功能(Intel VT-x或AMD-V)没有开启,后果就是WSL2完全无法启动。你需要在BIOS设置里找到Intel Virtualization Technology或SVM Mode,改成Enabled。
提示:如果你的系统是Windows 10且wsl --install不支持,可以手动启用"适用于Linux的Windows子系统"和"虚拟机平台"两个功能,然后下载WSL2内核更新包,再安装Ubuntu。这个流程稍麻烦,但能稳定解决老系统的安装问题。
2.3 Node.js与包管理器准备
OpenClaw的运行环境依赖Node.js,版本要求一般是18以上,推荐20 LTS或22 LTS。很多人的部署失败就是栽在这里,系统自带的Node版本太老,导致依赖安装到一半报错。
建议直接去Node.js官网下载LTS安装包,不要用系统自带的软件源版本。Windows下安装完记得在命令行里确认一下:
node -v npm -v如果能正确打印版本号,说明环境变量没问题。这里有个经验:Windows下安装Node时,安装向导里的"Add to PATH"选项一定要勾上,否则后面打开新的终端会提示找不到node命令。
包管理器方面,npm自带的够用,但如果你要装大量依赖,建议用pnpm:
npm install -g pnpmpnpm有一个优势是对磁盘空间的占用更低,而且安装速度快很多。OpenClaw的依赖数量不小,我实测pnpm比npm能省出接近一半的安装时间。
3. 核心实操:Windows环境完整部署中文版
3.1 获取OpenClaw并初始化
OpenClaw的获取方式有两种,一种是从源码构建,一种是包管理器直接安装。源码方式适合想改代码的人,包管理器方式适合只想用的人。
git clone https://github.com/openclaw/openclaw.git cd openclaw如果你有发布版本可用,更省事的方式是:
npm install -g openclaw我倾向推荐源码方式,因为OpenClaw迭代很快,源码仓库里的新技能和修复往往比发布包领先一个版本。但源码方式有个前提:你需要确保自己的代理和DNS配置正确,否则clone到一半会超时,这个在后面的问题排查部分我会细说。
进入仓库目录后安装依赖:
npm install或者用了pnpm的:
pnpm install安装过程可能会持续几分钟,中间会输出大量warning,不用惊慌,只要不出现ERR结尾的红色报错,一般都没问题。安装完成后执行初始化命令,它会生成配置文件并要求你选择模型接入方式:
npx openclaw init初始化过程是交互式的,会问你几个问题:模型提供方选什么、是否需要注册示例技能、确认数据目录位置。这个环节建议仔细看选项,尤其是模型提供方的选择,直接决定了后续配置方向。
3.2 接入本地模型:Ollama + Qwen跑起来
OpenClaw本身不带模型,它只是个壳。你要给它配一个"大脑"。本地部署的首选搭档是Ollama,它把模型下载、量化、调用都封装好了,非常省心。
先安装Ollama。Windows下可以直接下载安装包,WSL2里也可以用脚本装:
curl -fsSL https://ollama.com/install.sh | sh装完先拉取中文模型,这里我推荐qwen2.5系列:
ollama pull qwen2.5:3b如果你显存够大,7B版本效果更好:
ollama pull qwen2.5:7b拉模型的过程取决于网速,3B模型大概2GB,下载到一半如果中断了,重新执行pull会断点续传,不用从头再来。模型拉取完成后,启动Ollama服务:
ollama serve服务默认监听在127.0.0.1:11434,你可以单独测试一下它是否正常:
curl http://127.0.0.1:11434/api/generate -d '{"model":"qwen2.5:3b","prompt":"你好"}'如果返回了一段JSON字符串,说明模型服务是通的。现在回到OpenClaw的配置文件,把模型提供方指到Ollama。配置方式通常是环境变量:
export OPENCLAW_MODEL_PROVIDER=ollama export OPENCLAW_MODEL_NAME=qwen2.5:3b export OPENCLAW_OLLAMA_BASE_URL=http://127.0.0.1:11434然后启动OpenClaw:
openclaw start看到控制台输出"service started"之类的提示,说明核心链路已经通了。这时候你在对话框里输入一句"你好,介绍一下你能做什么",它会调用本地模型返回中文回复。整个链路是:文本进来,OpenClaw拆任务和选择技能,再把推理任务交给Qwen模型,最后把结果回流出来。
3.3 中文版的关键配置细节
模型通了以后,还有一个重要步骤就是让整个环境真正变成"中文版"。
首先检查配置文件里的语言选项,一般支持设置locale和默认语言。如果初始化的时候选了英文,可以在配置里改掉。其次是控制台编码问题,Windows下的WSL终端默认UTF-8,但原生PowerShell和CMD有可能会出现中文乱码。在Windows Terminal里右键设置,把默认编码改成UTF-8,或者在PowerShell里执行:
chcp 65001还有一个容易遗漏的点:时区设置。如果在WSL2里跑服务,系统时区默认可能不是东八区,这会导致OpenClaw的任务日志和定时任务与本地时间对不上。改时区:
sudo timedatectl set-timezone Asia/Shanghai最后是提示词模板。中文版的核心优势体现在这里。OpenClaw的技能目录里一般有prompts文件夹,存放各类任务的系统提示词。如果你想让模型输出更贴合中文场景,可以手动改一版,把一些英文思维的表述换成中文习惯的表达。我自己的经验是:对摘要类任务,在提示词里明确"以中文bullet point输出,每条不超过30字",输出质量会稳定很多。
3.4 技能注册与首轮任务测试
OpenClaw最让我喜欢的一点是它的技能系统。你可以把它理解成给智能体配工具箱,每个Skill解决一类具体问题。
技能目录通常在:
~/.openclaw/skills/里面每个子文件夹对应一个技能,每个技能下面会有SKILL.md描述文件和一个scripts目录存放脚本。想要让OpenClaw用上某个技能,不需要重新编译,改完描述文件后重启服务就能生效。这一个特性非常方便,我在调试技能的时候,一天能改几十次,每次改完重启服务就能验证,不用走编译流程。
为了让读者拿到一个可以直接跑通的任务,我举一个示例:创建一个"中文网页摘要"技能。先在技能目录下建文件夹:
mkdir -p ~/.openclaw/skills/web-summary/scripts写一个简单的摘要脚本(这里用Node):
const { execSync } = require('child_process'); const url = process.argv[2]; const html = execSync(`curl -s ${url}`, { encoding: 'utf-8' }); const text = html.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim(); console.log(text.substring(0, 2000));然后在SKILL.md里写明这个技能做什么、参数是什么:
--- name: web_summary description: 给定一个网页URL,抓取正文文本用于后续摘要 parameters: url: string, 需要抓取的网页地址 --- 执行步骤:调用scripts/fetch.js抓取正文,将文本交给模型进行中文摘要。重启OpenClaw之后,你直接发一句"帮我总结这个页面:https://example.com/article",它会自动匹配web_summary技能,抓取网页内容,然后让Qwen生成中文摘要。整个流程跑通之后,你会对OpenClaw的运行机制有一个很直观的理解:它不靠硬编码的if-else,而是靠模型理解意图,然后从技能库里挑适用的工具来执行。
4. 拓展部署:换平台也能跑
4.1 Ubuntu服务器部署:从交互式到服务化
如果你希望OpenClaw像一个真正的小服务一样在服务器上稳定运行,Ubuntu是首选平台。它的部署路径和Windows/WSL2大同小异,区别在于缺少图形界面之后,很多东西要靠命令行照顾。
首先在干净的系统上安装基础依赖:
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl build-essential安装Node.js时要用官方源或nvm,不要用apt自带的旧版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20然后照前面所述clone仓库、安装依赖、初始化。Ubuntu下的一个好处是Ollama的脚本安装很顺畅:
curl -fsSL https://ollama.com/install.sh | sh但是有个坑:默认情况下,Ollama在本机启动后可能没有自动设置成开机自启,而且它的环境变量在systemd托管下需要显式声明。如果后面通过systemd启动OpenClaw后无法连接模型,多半是环境变量没传递进去。
建议为OpenClaw配一个systemd服务,让它在后台稳定运行。在/etc/systemd/system/下创建openclaw.service:
[Unit] Description=OpenClaw Service After=network.target ollama.service [Service] User=yourname WorkingDirectory=/opt/openclaw Environment="OPENCLAW_MODEL_PROVIDER=ollama" Environment="OPENCLAW_MODEL_NAME=qwen2.5:3b" Environment="OPENCLAW_OLLAMA_BASE_URL=http://127.0.0.1:11434" ExecStart=/usr/bin/openclaw start Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw服务化之后,OpenClaw就跑进了后台,即使你退出SSH连接,它也会继续干活。我在服务器上这样跑了两个多月,除了升级版本之外没有手动重启过一次,稳定性相当不错。
4.2 安卓Termux部署:把智能体装进口袋
在手机上用OpenClaw,核心痛点不是手机性能不够,而是搭建体验和开发机差太远。如果只是为了应急处理点小任务,Termux是一个可用的方案。
Termux是安卓平台的开源终端模拟器,可以从F-Droid或GitHub发布页获取。安装后先更新源再装依赖:
pkg update && pkg upgrade pkg install nodejs git python之后的部署步骤基本沿着源码方式走,唯一需要注意的是Termux有私有目录权限限制,很多标准Linux下的目录结构在Termux里不适用。OpenClaw默认会去读~/.openclaw,这个在Termux里对应的是内部存储下的home目录,一般没有问题。
手机端要跑大模型就有点难了,我试过在Termux里装Ollama,过程相当折腾,而且高端安卓机也只能勉强跑3B级别的量化模型,速度会比较慢。更实际的做法是:手机端OpenClaw连接局域网里的电脑上运行的Ollama服务,让手机做前端控制,电脑做推理后端。配置时把OLLAMA_BASE_URL指向局域网IP即可。这样一来,你在外面也能用手机给家里的OpenClaw发任务。
4.3 接ROS2与Gazebo:机器人仿真场景
如果你关注机器人领域,会发现一个很有意思的组合:OpenClaw + ROS2 Humble + Gazebo。热词里那个"rosclaw openclaw ros2 humble gazebo"指向的正是这个方向。
简单理解,OpenClaw在机器人场景里扮演"大脑指挥官"的角色:它接收自然语言指令,拆解成机器人可执行的动作序列,然后通过ROS 2发布话题来控制仿真或实体机器人。Gazebo负责模拟物理环境,让机器人没上线之前先在虚拟世界里跑起来。
这个环境的搭建要比纯软件部署复杂一个量级。你需要先安装ROS 2 Humble和Gazebo:
sudo apt install ros-humble-desktop sudo apt install gazebo然后安装OpenClaw的ROS 2桥接技能,让OpenClaw可以订阅和发布ROS话题。举个例子:你给OpenClaw下达"把机器人移动到坐标(1.5, 2.0)",它会调用ROS技能包,将目标点封装成geometry_msgs/Twist消息发布到/cmd_vel话题上,Gazebo里的机器人就会开始移动。
这种组合虽然目前还是进阶玩法,但方向很有意思。相当于把上一代基于状态机的机器人调度逻辑,升级成了基于大模型理解的任务拆解方案。当然,这个方案的延迟和可靠性都还有不少优化空间,作为实验项目跑起来、跑通流程,本身就是很有价值的学习过程。
5. 常见问题与排查技巧实录
5.1 WSL环境验证失败的完整排查
这是Windows用户遇到最多的拦路虎。OpenClaw启动时可以检测WSL状态,有时候会直接提示"无法安全验证WSL环境,请在PowerShell中运行wsl -- status"。这个提示出现的原因有几种:
- WSL版本是1,不是2
- WSL内核损坏或未更新
- 虚拟化功能被BIOS禁用
- WSL服务没有启动
按顺序排查的话,第一步在PowerShell(管理员)中运行:
wsl --status输出里会告诉你默认版本和内核状态。如果显示"默认版本:1",就按照前面2.2节的方法切换到2。如果提示内核版本太旧,运行:
wsl --update更新完成后重启终端。如果运行wsl命令直接报错"无法启动",那大概率是BIOS虚拟化关了,重启进BIOS开启Intel VT-x或AMD-V。还有一个冷门原因:Hyper-V组件和第三方虚拟机共存时会冲突。如果你电脑上同时装了VMware或VirtualBox,有可能会互相踩。这种情况下,要么停用第三方虚拟机的服务,要么改用Hyper-V作为虚拟化底层。
这里有个实操心得:wsl --status的输出信息非常关键,建议留意它的完整内容,很多人只看报错的最后一行,忽略了前面关于版本和内核的提示,导致走弯路。
5.2 Node版本和依赖冲突
OpenClaw对Node版本有要求,常见的报错有:
- npm install时出现ERR! engine
- 启动时报SyntaxError,一般是某个语法在新版本才支持
排查逻辑很简单:先确认版本,再决定升级还是降级。用nvm管理Node版本是最省心的:
nvm install 20 nvm use 20如果项目明确支持Node 18,也可以用nvm装18试试。我个人建议固定一个方案,不要反复切换,因为切换大版本之后node_modules里的原生模块可能会重新编译,浪费时间。
安装依赖时如果遇到EACCES权限错误,通常是因为npm全局目录没有写入权限。解决方式是在用户目录下重建npm全局路径,不建议用sudo npm install这种暴力方案,容易搞坏目录权限。
5.3 模型接入失败和显存不足
OpenClaw本身没问题,但接不上模型,问题基本出在Ollama这环。先排查服务是否真的在运行:
curl http://127.0.0.1:11434/api/tags如果提示连接失败,说明Ollama没起来,或者监听地址不对。Ollama默认只监听127.0.0.1,如果你要让另一台机器(比如手机Termux)连过来,需要设置环境变量:
export OLLAMA_HOST=0.0.0.0然后重启Ollama。另外,如果你的机器有独立显卡但Ollama没识别到GPU,会出现模型响应很慢的情况。检查Ollama日志,确认是否走GPU推理。没有CUDA的话,3B模型靠CPU也能跑,但速度会大打折扣,长文本任务可能要等几分钟。
显存不足的典型报错是"out of memory"或者模型加载后立即被杀掉。解决思路是换更小的量化版本或者调低上下文窗口长度。Qwen系列有些版本自带4bit量化,比原版省一半显存。如果还不行,就得考虑把并发任务数限制一下,OpenClaw配置里一般有max_concurrency参数,把它调到1或2,可以有效防止多个任务同时挤占显存。
5.4 中文字符乱码与控制台问题
用中文环境最常见的问题就是:模型明明回复的是中文,控制台却显示一串奇怪的乱码。
这个问题的根源通常是Windows终端编码没有切到UTF-8。解决方案在前面提到过:chcp 65001切换代码页。不过在PowerShell里,这个切换只对当前会话有效,重启又恢复。想让默认编码持久生效,可以在注册表里把HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage的ACP改成65001,或者直接用Windows Terminal然后把配置文件里的默认编码设为UTF-8。
还有一种情况:不是终端编码问题,而是配置文件里写了不支持的字符导致OpenClaw解析出错。检查config文件,确认是UTF-8无BOM格式。有时候在Windows记事本里编辑yml文件会自动存成带BOM的UTF-8,可能会导致服务启动时报错。遇到这种情况,用VS Code打开文件另存为UTF-8即可。
5.5 服务启动慢与端口占用
OpenClaw启动慢,我遇到过两种原因:一是首次启动要编译大量原生模块,二是模型加载需要时间。如果是首次启动,耐心等几分钟是正常的。之后每次启动应该都会快很多,因为依赖已经被缓存了。
端口占用问题也很常见。OpenClaw默认会占用一个Web服务端口(一般是8080或3000),如果这个端口被别的服务占用了,启动会报EADDRINUSE。排查方式:
lsof -i:8080找到占用端口的进程,要么杀掉,要么在OpenClaw配置里换个端口。我实际遇到过Visual Studio Code的Live Server插件抢占了3000端口,导致OpenClaw一直起不来,折腾了好一会儿才定位到问题。
结尾:一些个人体会
部署OpenClaw这件事,看起来只是安装一个开源软件,但实际跑通之后,你会对"智能体"这个概念有完全不一样的理解。它不像一个网站或App那么简单,更像是在你电脑里养了一个执行力很强的助手,你需要教它怎么做,它就会一次比一次做得更好。
我个人在实际使用中的体会是:真正好用的永远是技能系统,不是模型本身。模型再聪明,如果缺少好的Skill来对接真实世界的工具,它也只是个会聊天的文本生成器。所以我建议每一个部署成功的人,花点时间研究怎么写自己的Skill,哪怕是很简单的一个脚本也好,这才是OpenClaw真正值得挖掘的地方。
另外有个小技巧分享给刚开始折腾的人:准备一个专门用来跑部署的虚拟机或旧电脑,别在主力工作机上反复实验。因为部署过程中会安装大量依赖、改动环境变量、启动各种服务,稍有不慎就会影响日常使用环境。我一开始是在主力机上跑的,装WSL2后被迫重启了好几次,之后改成一台闲置笔记本专门跑,一切都清净了。
如果你已经部署成功,建议下一步试试接上不同场景的Skill,比如定时任务、文件整理、网页抓取,让OpenClaw真正开始帮你处理事情。这个内容后续还可以这样扩展:给OpenClaw配一个Telegram或微信的接入通道,出门在外也能给它发指令。我在Ubuntu服务器上测试过这种组合,体验确实很有未来感。