OpenClaw 实践
前言
OpenClaw在国内被称作龙虾,使用OpenClaw俗称养龙虾。大部分问题都可以在官方文档找到,这里只是记载下没有的部分。
模型
模型是必备的,我自己选择的是本地模型,使用llama.cpp来运行各种模型,brew可以安装。目前主要试用了QWen2.5和QWen3.5,2.5的无法调用工具,3.5的才可以,以下是如何运行模型的操作:
llama-server -m ~/models/Qwen3.5-9B-Q4_K_M.gguf --host 0.0.0.0 --port 8099
配置
龙虾配置是选择自定义的,URL配置如http://192.168.1.4:8099/v1,一定要加v1,协议的话选择ChatGPT的。
龙虾配置
PS: 龙虾安装完成后,可能会显示该命令不存在,需要在命令行运行:
export PATH="$(npm prefix -g)/bin:$PATH"
龙虾的相关文件在.openclaw目录下,属于隐藏文件,配置文件在.openclaw/openclaw.json。
局域网访问
修改.openclaw/openclaw.json中的gateway的bind为lan模式,即可局域网内访问,但是存在一些问题。
HTTPS配置
不配置无法访问,这里使用Nginx反向代理的方式,使用自签名。
创建证书
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/openclaw.key -out /etc/ssl/certs/openclaw.crt
Nginx配置,创建配置文件/etc/nginx/sites-enabled/openclaw,配置如下:
server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/ssl/certs/openclaw.crt;
ssl_certificate_key /etc/ssl/private/openclaw.key;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
另外需要在主配置文件(/etc/nginx/nginx.conf)添加导入设置
http {
include mime.types;
default_type application/octet-stream;
include /etc/nginx/sites-enabled/*; # 添加这句
重启Nginx
sudo systemctl start nginx
跨域访问
修改.openclaw/openclaw.json中的gateway,增加如下:
"controlUi": {
"allowedOrigins": [
"https://192.168.1.8",
"http://127.0.0.1:18789",
"http://localhost:18789"
]
}
设置完成后重启网管openclaw gateway restart
配对问题
本来openclaw devices *命令下面有一系列的管理配对的操作,但是在局域网访问时,这个命令总是报错,所以这里使用手动魔改的方式解决。
~/.openclaw/devices/pending.json这个配置文件里面是当前没有配对的设备信息。
~/.openclaw/devices/paired.json这个配置文件里面是当前已经配对的设备信息,如果为空的话,在本地网页打开下,可能本地也需要配对,不过本地配对的命令是可用。我因为是在Linux手机上安装的龙虾,是在远程操作打开浏览器的,使用了如下命令:
DISPLAY=:0 firefox http://127.0.0.1:18789/#token=输入自己的token &
配对成功后,~/.openclaw/devices/paired.json大概会增加类似的信息。以下为Linux版配置,这个是手机端访问后的配对信息,用于参考。
"deviceId": {
"deviceId": “deviceId",
"publicKey": "publicKey",
"platform": "Linux x86_64",
"clientId": "openclaw-control-ui",
"clientMode": "webchat",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"approvedScopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": “token”,
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1773574278595
}
},
"createdAtMs": 1773574278594,
"approvedAtMs": 1773574278594
}
参照上面那个,新增一个自己局域网访问电脑的配置。这里是我自己的Mac配置:
"deviceId": {
"deviceId": "deviceId",
"publicKey": "publicKey",
"platform": "MacIntel",
"clientId": "openclaw-control-ui",
"clientMode": "webchat",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"approvedScopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "token",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1773574278595
}
},
"createdAtMs": 1773574278594,
"approvedAtMs": 1773574278594
}
这个需要拷贝到~/.openclaw/devices/paired.json,然后重启网管。
使用感受
目前使用的本地模型,主要是尝试了下简单的查询类的任务,可以完成一些,但是有点慢。比如查询天气,这个是可以的。另外也可以播放音乐,不过存在只能播放一小段的问题,不知道是什么原因,音乐播放程序是个命令行版的,我是在PinePhone Pro手机上部署的,使用的GTK的界面,在上面开发界面并不算简单,用龙虾来操作命令行的程序,这点倒是一种启发。
另外我手机上的Chromium浏览器因为缺少某个库的链接,所以不能使用。只有Firefox可以用,比如我让龙虾打开的B站,然后播放某首歌曲,龙虾只是打开了Firefox,也打开了网站,但是并没有进行到最后一步,这点可能是受限我本地的模型不支持图片分析吧。总之给我的感觉,你想使用一个强大的龙虾,就需要给他配置各种技能,但是大部分技能都需要付费。如果确实做点什么或许还能接受,但是纯粹的自己体验的话,确实有点烧钱。