1. 项目概述与整体思路
1.1 OpenClaw是什么,为什么值得折腾
先说结论:OpenClaw是一个开源的AI代理(Agent)框架,你可以把它理解成一个24小时待命的数字助理——它不只是像ChatGPT那样在对话框里回答问题,而是真的能“动手办事”。你通过微信、飞书、Telegram或者它自带的Web管理面板给它发指令,它收到任务后调用大模型做规划和决策,再通过内置的Skill(技能)去执行具体动作,比如写小说、查资料、定时发消息、操作电脑文件、调用外部API,甚至可以接物联网设备的数据。
这次折腾的核心,是把OpenClaw部署到华为云的云服务器上,再从Mac、Linux、Windows 11三端分别接入使用。为什么推荐云上部署?因为这类常驻型代理最好跑在一台7x24小时在线的机器上,本地电脑一关机它就失联了。华为云在国内节点访问延迟低,新用户有免费试用额度,控制台逻辑清晰,安全组规则也好配,对新手相当友好。整个部署过程用我下面这套方案,服务器创建好之后,执行一条安装命令,核心环境2分钟左右就能拉起来,剩下的耗时基本都在等容器镜像下载和模型加载。
1.2 三种部署形态,按场景选就好
我在实际测试中把OpenClaw分别跑在云服务器、MacBook和Windows 11台式机上,三种形态各有适用场景:
- 云服务器部署:适合长期运行、需要接入微信/飞书做消息机器人、需要定时任务和无人值守的场景。推荐组合是“华为云ECS + Ubuntu 22.04 + Docker”。
- Mac本地部署:适合开发和调试Skill,因为本地改代码、看日志都方便。有Apple Silicon芯片的话,跑推理模型效率也不错。
- Linux/Win11部署:适合有本地算力、想接入Ollama等本地大模型的场景,不依赖云端的API Key。
我个人的建议是,如果你只是想体验OpenClaw,先在Win11或Mac上装一个,半小时内能跑起来;如果你是认真的想让它当“长期员工”,直接上华为云,一次配好后面省心。
1.3 为什么推荐华为云 + Docker这个组合
选择华为云主要是三个理由:一是国内访问不需要额外折腾网络,SSH连接和Web面板速度都很快;二是华为云的ECS控制台对新手很友好,选镜像、配安全组都是图形化操作,不用背一堆命令行;三是它的计费方式灵活,按需付费的实例跑OpenClaw这种轻量级代理完全够用,测试完可以随时释放。
为什么用Docker?OpenClaw的依赖不少——Node.js运行时、Python环境、各类Skill要的库、消息通道的SDK,直接用二进制部署很容易踩版本冲突的坑。Docker把这堆东西全封装进一个镜像里,一条命令启动,日志查看和数据卷挂载都统一了。后续想升级版本,拉个新镜像重启容器就行,不污染宿主机。更重要的是,不管底层是Ubuntu还是openEuler,只要有Docker,安装方式完全一致,这也让跨平台部署变得非常标准化。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的准备工作
2.1 云服务器选型与初始化
华为云ECS的配置我推荐“2核4G”起步,这是跑OpenClaw加一个轻量级模型网关的最低舒适配置。如果只做消息代理、不跑本地大模型,2核2G也能凑合,但内存会很紧张,Docker容器一多就容易OOM。操作系统镜像选Ubuntu 22.04 LTS,原因是Docker支持最好、社区资料多、遇到问题好搜解决方案。如果你用华为云自己的openEuler也行,但后续装依赖时有些包名不一样,新手不建议一上来就挑战。
购买时注意几个点:
- 地域选离你近的,比如你在华东就选上海一或上海二等节点,延迟低。
- 带宽按流量计费就行,OpenClaw本身流量不大,除非你要传大文件。
- 登录方式强烈建议用密钥对,不要用密码。密钥对登录更安全,而且之后SSH脚本化操作更方便。
- 安全组在购买时就要想好放行哪些端口,后面会详细说。
服务器买好后,先用SSH登录一次,更新一下系统软件源:
bash复制sudo apt update && sudo apt upgrade -y
这一步不是必须的,但建议做一下,毕竟刚开出来的系统镜像里的软件包可能不是最新的,把基础环境刷新一遍,后面装东西会少很多莫名其妙的依赖问题。
2.2 本地三端的环境依赖清单
本地端的需求其实很简单,核心是“能装Docker或者能跑Node.js”,OpenClaw官方对三种系统的支持情况如下:
- macOS:需要Docker Desktop,或者用Homebrew装Node.js 20+ 和 Git。
- Linux:需要Docker Engine,或者直接用Node.js 20+ 跑源码。如果是麒麟桌面系统、统信UOS这类基于Debian的发行版,装Docker的步骤和Ubuntu几乎一样。
- Windows 11:推荐两个方案,一是装WSL2(Windows Subsystem for Linux)然后在WSL里跑Docker;二是直接用Docker Desktop的Windows版,但要注意资源占用和Hyper-V的兼容性。
我实测下来,最省事的本地方案是:macOS用户装Docker Desktop,Windows用户开WSL2跑Docker Engine,Linux用户直接装Docker Engine。三端的连接方式我会在第4章详细写。
2.3 需要提前弄清楚的几个端口和目录
OpenClaw默认会使用几个关键端口,提前规划好能省掉后面一堆排查时间:
- 3000端口:OpenClaw的Control UI(Web管理面板),浏览器访问 http://服务器IP:3000 就能打开。
- 8080端口:部分Skill内置的HTTP服务端口,比如一些Webhook接收器。
- 1883端口:MQTT协议默认端口,如果你要接华为云IoT平台,这端口会用到。
数据目录方面,OpenClaw的数据(消息记录、Skill配置、密钥文件)默认存在数据目录里,Docker部署时要挂载成数据卷,否则容器一删全没了。这个目录建议放在 /opt/openclaw/data 或者任意你习惯的路径,关键是别放到系统盘根目录,避免扩容麻烦。
3. 华为云上2分钟快速部署
3.1 用安全组放行必要端口
好多人在华为云上部署完访问不了Web面板,90%的原因是安全组没放行端口。华为云控制台里进入“弹性云服务器”实例详情页,找到“安全组”选项卡,点击配置规则。你需要新增以下入方向规则:
| 端口 | 协议 | 用途 |
|---|---|---|
| 22 | TCP | SSH远程登录 |
| 3000 | TCP | OpenClaw Web管理面板 |
| 8080 | TCP | 部分Skill的HTTP服务 |
| 1883 | TCP | MQTT协议端口(可选) |
注意华为云的安全组默认是“拒绝所有入方向”,所以你不放行,端口就永远是墙着的。很多教程都默认你“已经配好了”,但实际上一半的问题都出在这。配置完最好在本地终端先测一下端口通不通:
bash复制nc -zv 你的服务器IP 3000
如果返回open,说明安全组没问题;如果超时,先回安全组检查规则,别急着查应用日志。
3.2 一条命令完成Docker环境初始化
服务器上还没有Docker的话,先用下面这段脚本装好。我在Ubuntu 22.04和openEuler上都实测过,几分钟内能完成:
bash复制curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
装完Docker后,重新登录一次SSH(或者执行 newgrp docker),让用户组权限生效。然后验证一下:
bash复制docker --version
docker compose version
看到版本号就说明Docker环境OK了。这里要提醒一句,get.docker.com这个脚本在某些网络环境下可能比较慢,如果你遇到下载超时,可以用华为云的镜像源替代,或者在华为云控制台直接选择“带Docker的镜像”创建服务器,一步到位。
3.3 部署OpenClaw的两种姿势
第一种是官方Docker Compose方式,需要先建一个docker-compose.yml文件:
yaml复制version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: always
ports:
- "3000:3000"
- "8080:8080"
volumes:
- /opt/openclaw/data:/app/data
environment:
- OPENCLAW_PORT=3000
- LOG_LEVEL=info
然后执行:
bash复制mkdir -p /opt/openclaw/data
docker compose up -d
第二种是一键脚本方案,这也是我标题里说“2分钟”的来源。OpenClaw官方提供了一条安装命令,会自动检测系统架构、拉取对应镜像、生成配置文件并启动容器:
bash复制curl -fsSL https://get.openclaw.sh | bash
脚本执行完,终端会输出Control UI的访问地址和管理Token。整个过程大概2分钟,其中大头的耗时是拉取镜像,如果你的服务器带宽是5Mbps,可能稍微慢一点,但一般不会超过5分钟。
3.4 验证部署是否成功
容器启动后,先看下容器状态:
bash复制docker ps
看到openclaw容器状态是Up就说明进程起来了。接着看日志:
bash复制docker logs -f openclaw
日志里出现类似“Control UI is running on port 3000”的提示,就说明Web面板已经就绪。然后浏览器访问 http://你的服务器IP:3000,首次打开会让你输入管理Token(在日志或初始化输出里找)。进入面板后,你就可以在网页上直接跟OpenClaw对话,或者配置后续的模型接入和消息通道。
到这里,云上部署就算完整走通了。接下来要做的,是让OpenClaw真正“能用起来”——配置一个大模型作为它的推理引擎。这是整个项目最核心的一步,我放到第5章单独讲。
4. Mac / Linux / Win11 三端安装详解
4.1 Mac端:本地调试最舒服的环境
Mac上安装OpenClaw有两条路,我推荐用Docker Desktop,因为它跟云端的运行环境完全一致,调试好了可以直接搬到服务器上。
先装Docker Desktop(从官网下载dmg安装),启动后确认Docker图标出现在菜单栏。然后在终端执行:
bash复制mkdir -p ~/openclaw/data
docker run -d --name openclaw \
-p 3000:3000 -p 8080:8080 \
-v ~/openclaw/data:/app/data \
--restart unless-stopped \
openclaw/openclaw:latest
如果你不想用Docker,也可以直接从源码跑。先确保装了Homebrew:
bash复制brew install node git
git clone https://github.com/openclaw/openclaw.git
cd openclaw
npm install
npm run setup
npm start
源码方式的好处是改代码即时生效,适合开发Skill时高频调试;缺点是依赖管理有点繁琐,node_modules装慢了很煎熬。我自己的习惯是:日常调试用源码跑,部署上线用Docker。
4.2 Linux端:从Ubuntu到麒麟系统都适用
Linux是OpenClaw的“主场”,支持最完整。Ubuntu/Debian系用户直接:
bash复制sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
然后重新登录,执行跟云端一模一样的一键脚本:
bash复制curl -fsSL https://get.openclaw.sh | bash
如果是麒麟桌面系统、统信UOS这类基于Debian的发行版,安装方式基本一致,只是包管理器可能用的是 apt 或者 apt-get,个别依赖如果缺失,先 sudo apt install -y curl ca-certificates 补上就行。
如果是openEuler这种基于RPM的发行版,Docker安装用:
bash复制sudo dnf install -y docker-ce
注意openEuler默认的软件源里可能没有docker-ce,需要先配置Docker官方仓库,或者使用华为云提供的容器镜像服务加速。这块踩坑的人不少,我的建议是直接看华为云ECS上“镜像选择”里有没有“Docker”预装镜像,能省掉这环节。
4.3 Win11端:WSL2是首选,别硬刚原生方案
Windows 11上用OpenClaw,我强烈推荐用WSL2,不要直接在Windows原生环境里跑。原因有两个:一是OpenClaw很多Skill依赖Linux下的工具链(Python、Lua、各种命令行工具),原生Windows兼容层总会出幺蛾子;二是Docker Desktop在Windows下走的是WSL2后端,反正都要装,不如直接一步到位。
安装步骤:
- 管理员身份打开PowerShell,执行:
powershell复制wsl --install
系统会自动装好WSL2和默认的Ubuntu发行版,装完重启电脑。
- 进入WSL终端(开始菜单搜“Ubuntu”打开),在里面执行Docker安装:
bash复制curl -fsSL https://get.docker.com | sh
sudo service docker start
sudo usermod -aG docker $USER
- 安装OpenClaw:
bash复制curl -fsSL https://get.openclaw.sh | bash
Windows端的访问路径是 http://localhost:3000,跟云端一样。唯一的区别是WSL2的网络默认走NAT模式,如果你要从局域网里的其他设备访问Win11上的OpenClaw,需要用端口转发:
powershell复制netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=你的WSL2IP
这个操作不是必须的,如果你只是本机使用,完全可以跳过。
4.4 三端部署完后的统一检查项
不管在哪个平台部署,装完后都建议按这个顺序做一次体检:
docker ps或ps aux | grep openclaw确认进程存活。- 看日志确认没有报错(重点看ERROR和FATAL级别日志)。
- 用浏览器访问管理面板,确认能加载出UI。
- 在面板里发送一条测试消息,确认模型能正常回复。
四个检查全过,你的OpenClaw就处于可用状态了。
5. 核心配置与使用技巧
5.1 模型接入:云端API还是本地模型
OpenClaw本身不内置大模型,它需要一个“推理后端”。当前最方便的方案是配置OpenAI兼容的API接口,DeepSeek、通义千问、智谱等国内厂商都提供这种接口,配置方式高度统一。
在OpenClaw的管理面板里,找到模型配置项,填写以下几项:
- API地址:比如DeepSeek的
https://api.deepseek.com/v1。 - 模型名称:比如
deepseek-chat。 - API Key:在对应平台申请。
配置完保存,然后发一条消息测试。如果你遇到 agent failed before reply: unknown model: deepseek 这类报错,九成是模型名称写错了——有些平台的模型标识是 deepseek-chat,有些是 deepseek-v3,还有可能是API地址末尾少了 /v1。这问题我第6章还会展开讲。
如果你想完全离线运行,可以接Ollama本地模型。在装有Ollama的机器上先拉取模型:
bash复制ollama pull qwen2.5:7b
然后在OpenClaw里把API地址配成 http://Ollama机器IP:11434/v1,模型名称填 qwen2.5:7b。实测下来,7B参数级别的模型做日常消息回复、简单的任务规划够用,但复杂逻辑推理还是云端大模型更靠谱。我的做法是:线上机器人用DeepSeek,本地调试用Ollama,两套配置切换着来。
5.2 Skill是什么,怎么快速上手写一个
Skill是OpenClaw最核心的扩展机制。你可以理解成给AI装上的“提词器 + 工具包”:每个Skill都包含一段YAML格式的配置(描述这个技能是什么、什么时候触发、需要哪些参数)和一段Lua脚本(真正执行动作的逻辑)。
最简单的概念示例,写一个“查系统时间”的Skill:
yaml复制name: current_time
description: 获取服务器当前时间
对应的Lua脚本:
lua复制local time = os.time()
local formatted = os.date("%Y-%m-%d %H:%M:%S", time)
return "当前服务器时间是: " .. formatted
把这两个文件放到 data/skills/current_time/ 目录下,重启容器,然后在对话里说“现在几点”,OpenClaw就会自动触发这个Skill。实际项目里,Skill可以做的事情远比这个复杂:定时去某个API拉数据、处理收到的文件、把消息转发到指定群、写一篇小说初稿然后格式化保存……我在二次开发OpenClaw时最常用的技巧是让Skill互相调用——一个Skill做数据采集,一个Skill做数据清洗,一个Skill做结果汇报,三个Skill串成一个完整的数据流水线。
5.3 接入微信、飞书这些消息通道
把OpenClaw接到微信、飞书上,是很多人部署它的核心动力。原理不复杂:OpenClaw通过各平台提供的机器人API或者Webhook能力,在消息平台和代理引擎之间建立一条双向通道。
以飞书为例:
- 在飞书开放平台创建企业自建应用,拿到App ID和App Secret。
- 启用“机器人”能力,并配置事件订阅——把OpenClaw的Webhook地址填到飞书的“事件订阅请求地址”里。
- 在OpenClaw的配置里填上飞书应用的App ID、App Secret,选择飞书作为消息通道。
- 重启容器,然后在飞书里给机器人发一条消息,它会通过OpenClaw转发给大模型处理后回复。
微信的接入方式类似,但现在个人微信的机器人方案都有被封号风险,我不建议在主力微信号上做,你可以用企业微信的客户联系功能来实现相对合规的对接,或者用一个小号在受控环境里测试。飞书和Telegram的机器人API相对开放,体验更好。
5.4 接华为云MQTT:让代理能听懂设备数据
OpenClaw的网络热词里有个“MQTT华为云三元组”,这是物联网场景。简单说,华为云IoT平台用三元组(产品ID、设备ID、设备密钥)来唯一标识一台设备,OpenClaw可以通过MQTT协议订阅设备上报的数据,再让大模型分析这些数据,实现“AI代理 + 物联网”的联动。
配一个MQTT接入的Skill,配置示例如下:
yaml复制name: mqtt_subscriber
description: 订阅华为云IoT平台设备数据
mqtt:
host: your-iot-mqtt.cn-north-4.myhuaweicloud.com
port: 1883
client_id: your_device_id_0
username: your_product_id
password: your_device_secret
topic: "devices/your_device_id_0/messages/up"
那这个Skill能干嘛?举一个实际的例子:我把一个温湿度传感器接入华为云IoT平台,OpenClaw订阅传感器数据主题,每5分钟拿一次最新温湿度,当温度超过某个阈值时,它会自动在飞书群里发一条告警消息,并附上一段大模型生成的“为什么温度会高”的分析。这个场景做出来之后,你会真实感受到Agent不像一个聊天机器人,而更像一个能主动干活的运维人员。
5.5 编写Skill接入任意HTTP API
很多刚接触OpenClaw的人都会问:怎么让我自己的业务系统跟它对接?答案就是通过HTTP API。OpenClaw的Skill里可以直接发起HTTP请求,把任意系统的接口包装成“技能”。
比如对接一个“查快递”的接口,写一个调用HTTP API的Skill:
yaml复制name: express_query
description: 查询快递物流信息
parameters:
tracking_number:
type: string
required: true
Lua脚本里用内置的HTTP模块发起GET请求,解析JSON响应后返回给模型。这里的关键是,你在YAML里写清楚参数说明,大模型就会自动从用户的自然语言里提取快递单号——这就是Agent “理解指令”和“调用工具”结合的标准范式。
6. 常见问题排查实录
6.1 Control UI 启动失败怎么办
报错关键词通常是 Control UI did not start 或 openclaw control ui did not start。这个问题的排查思路按优先级来:
- 端口被占用。先执行
netstat -tlnp | grep 3000看看3000端口是不是被别的进程占了,如果是,换一个端口或者杀掉占用进程。 - 容器内存不足。OpenClaw的Web面板和主进程共享内存,2G内存的机器在加载大模型后容易OOM,面板进程会被杀掉。用
docker stats看一下内存占用,长期超过80%就该升级配置了。 - 前端资源没加载出来。浏览器按F12打开开发者工具,看Console里有没有报错,最常见的是静态资源请求404,拉镜像版本不一致导致的缓存问题,重启容器一般能解决。
6.2 Agent Failed Before Reply: Unknown Model: Deepseek
这个报错可以排到“新手高频问题”第一名。字面意思是“模型不存在”,但实际上通常是三个原因:
- 模型名称拼写不对。各家平台的模型标识不完全一样,就算同一个厂商,不同版本的模型名也可能不同。去模型服务商的文档里查准确的模型标识,不要凭记忆填。
- API地址少了
/v1或/v1/chat/completions。OpenClaw对接的是OpenAI兼容接口,完整地址才是对的。 - 配置完没重启。模型配置保存后,需要重启容器或者重载配置才能生效。很多新手配完直接发消息,结果还是旧配置在跑。
排查时先到日志里看实际请求的地址和模型名:
bash复制docker logs openclaw 2>&1 | grep -i model
日志会把配置装载时的模型信息打出来,一眼就能看出问题在哪。
6.3 华为云服务器访问延迟高、面板打不开
如果你确认安全组配了、容器也起来了,但浏览器就是打不开面板,按这个顺序排查:
- 确认服务器防火墙。Ubuntu默认的ufw可能是开启的,执行
sudo ufw allow 3000放行端口。 - 确认你是用公网IP访问而不是内网IP。华为云的ECS有公网IP和内网IP之分,浏览器里必须填公网IP。
- 确认本地网络环境没有拦截。如果你在的公司或校园网络有严格的访问控制,可能连不上非标准端口。用手机热点试一下就能定位。
6.4 常用排查命令速查表
| 症状 | 首选命令 | 次要命令 |
|---|---|---|
| 容器起不来 | docker logs openclaw |
docker inspect openclaw |
| 端口不通 | nc -zv localhost 3000 |
netstat -tlnp |
| 模型报错 | 日志里搜 model |
docker exec -it openclaw env | grep MODEL |
| 数据丢失 | 检查数据卷挂载 | docker volume ls |
这个表格是我日常排查时最常用的几条命令,基本覆盖了90%的部署期问题。
6.5 几个值得记住的避坑心得
第一,密钥和Token管理要早做规划。OpenClaw的配置里会存API Key、各种Webhook密钥,这些信息都在数据目录里明文存储。我建议把数据目录单独挂载,并且定期备份到对象存储,防止服务器故障导致配置全丢。
第二,别急着升级版本。OpenClaw的社区很活跃,几乎每周都有更新,但新版本不一定稳。我的习惯是:稳定运行中的实例不主动升级;需要新特性时,先在一台测试机上验证没问题再上生产。你可能会在热词里看到“oec-turbo部署OpenClaw”之类的进阶方案,那些都是面向特定场景的优化,常规使用不需要追新。
第三,日志是最大的老师。OpenClaw的日志信息量很大,默认级别是info,前期调试时可以改成debug:
yaml复制environment:
- LOG_LEVEL=debug
看到debug级别的日志,你才能看清每个请求的完整链路——大模型返回了什么、Skill执行了什么、消息通道有没有报错。调试完记得改回info,否则日志量太大反而淹没了关键信息。
第四,关于“一键部署工具终身会员”这类商业推广信息,我建议直接过滤掉。OpenClaw是开源项目,官方安装脚本免费可用,任何宣称“付费会员解锁功能”的第三方产品都要非常谨慎,从可信渠道获取软件是最基本的安全底线。
7. 个人使用体验与后续扩展建议
我的实际体会是,OpenClaw真正的价值不在于它本身有多智能,而在于它把大模型和外部世界连了起来。以前我写一个自动化脚本,要用crontab定时、用curl调API、用一堆if-else处理逻辑——现在这些全可以交给OpenClaw的Skill体系来管理,AI理解自然语言指令,我来负责定义工具,分工方式完全变了。
前阵子我用OpenClaw搭了一个“每日行业简报”机器人:早上一上班,它自动抓取几个我常看的行业网站的更新,用大模型提炼要点,再把压缩后的摘要发到团队飞书群里。整个过程我只需要写了一个抓取网页的Skill和一段提示词配置,剩下的调度逻辑OpenClaw自己搞定。这个项目让我真正体会到“代理即基础设施”的感觉——它不是一个聊天玩具,而是一个可以长期挂机、自动运转的数字员工。
如果你已经把这套部署流程走通了,后续有几个方向值得继续折腾:
- 把OpenClaw接进企业微信,给团队做一个“AI知识助手”,内部文档丢给它,它能基于知识库回答问题。
- 在OpenClaw里加一个“定时任务”Skill,让它每天早上给你推送天气、日程和待办事项,体验一下什么叫“私人助理”。
- 用华为云的函数工作流配合OpenClaw的Webhook,实现按事件触发的自动化流程,比如对象存储有新文件时自动通知AI处理。
- 尝试让OpenClaw控制浏览器(通过Playwright类Skill),实现简单的网页自动化操作,比如定时签到、自动填写表单。
踩过几次坑之后我最深的感受是:这类AI代理框架的学习曲线不算陡,真正的门槛在于你对“它能做什么”的想象力。先把部署跑通,再围绕你自己的使用场景去一个个补Skill,你会发现自己越用越顺手。
