Mac系统使用Docker部署OpenClaw

一、介绍

OpenClaw 是一款开源、本地优先的自主 AI 代理工具,可通过聊天软件接收自然语言指令,自主拆解并执行本地 / 云端任务,实现真正的自动化操作。

由于会修改本地文件,如果你只是想体验 OpenClaw,建议基于 Docker 环境安装 OpenClaw。

 

二、安装

1、下载代码

git clone https://github.com/openclaw/openclaw.git

2、安装

cd openclaw

./docker-setup.sh

image

3、配置

刚开始会告知你风险,通过左右箭头按键移动绿点,选择 "Yes"

image

紧接着选择配置模式,选择 QuickStart

image

4、设置模型供应商

由于 OpenClaw 只是一个本地 Agent,背后需要大模型驱动,因此需要配置模型供应商。

5、设置聊天软件

可以安装飞书,或跳过

image

6、安装技能

再之后就是安装需要的技能,可以通过空格键选中具体 skill。

我建议可以先选 "Skip for now",后面再通过 UI 界面安装。

image

image

7、其它设置

之后还有一系列配置,默认可以先跳过(很多用不到)。

配置完成后,镜像编译完成,会自动创建一个 Docker 容器

8、访问OpenClaw并配置Token

http://127.0.0.1:18789/

注意:首次访问会看到报错,这次是因为用于鉴权的 Token 还未配置,下面开始设置token

9、修改配置

vim ~/.openclaw/openclaw.json

配置截图中用红框标注的部分,在 openclaw.json 文件中默认是没有的,需要补充上,否则还是会报错。

不添加可能报错:disconnected (1008): pairing required

想了解细节,可以参考这个 issue:https://github.com/openclaw/openclaw/issues/6959

image

{
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "controlUi": { // 一定要添加
      "enabled": true,
      "allowInsecureAuth": true
    },
    "trustedProxies": ["192.168.65.0/24", "172.17.0.0/16"] // 我测试下来可选
  }
}

10、设置token

查找token

cat ~/.openclaw/openclaw.json

image

复制token内容,打开页面并配置token,配置后点击Connect连接

image

11、设置模型长度

根据自己的模型做调整,最低16000

"contextWindow": 32000

image 

12、聊天

聊天测试

image

image

 

三、和飞书打通

1、打开飞书开放平台

https://open.feishu.cn/app

2、创建应用

3、启用机器人能力

左侧菜单 → 添加应用能力 → 勾选 机器人

image

3. 开启 WebSocket 模式(关键!)

左侧菜单 → 事件与回调 → 事件配置

上方选择 使用长连接接收事件

image

4. 添加事件订阅

在事件配置页面添加以下事件:im.message.receive_v1 — 接收消息(必选)

image

5、添加其它所需权限

im:message — 获取与发送单聊、群组消息

im:message:send_as_bot — 以机器人身份发送消息

im:chat:readonly — 获取群组信息

contact:user.id:readonly — 获取用户 ID(可选)

contact:contact.base:readonly

im:message.group_msg

6、发布应用

image

四、样例

1、预定会议室

image

image

2、保留技能

把能力保留,方便下次快速使用

/app/skills/ — OpenClaw 自带的技能
/app/extensions/ — 扩展插件的技能(如飞书相关)
/home/node/.openclaw/workspace/skills/ — 你自己创建或安装的技能

---保留技能

image

image

使用保留的技能预定

image

image

3、总结群消息问题

image

image

 

 

 

五、扩展能力

1、切换国内数据源

docker exec -it --user root 85258bfa2d86 /bin/bash

# 2. 清空原文件并写入阿里云源(一键操作)
cat > /etc/apt/sources.list << EOF
# 阿里云Debian bookworm源(稳定版)
deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware
# 注释掉backports(避免缺失Release文件)
# deb http://mirrors.aliyun.com/debian/ bookworm-backports main contrib non-free non-free-firmware
EOF

# 3. 更新源并测试速度
apt update  # 此时下载速度会明显提升
如果遇到安装一半异常,则切换数据源后执行下面命令修复
apt --fix-broken install -y
安装sudo命令
apt install -y sudo

 

1、设置root密码,切换root运行,设置root密码

方式1:设置密码

docker exec -it --user root 85258bfa2d86 /bin/bash

echo "root:123456" | chpasswd

方式2:清空密码

passwd -d root 

方式3:sudo免密登录,root用户修改

echo "node ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 

tail -1 /etc/sudoers



1、xvfb浏览器

Xvfb 会在内存里模拟一个显示器,AI 就能在这个虚拟显示器上能看到页面信息了,适合抓取页面,页面截图

命令:给你自己装一个谷歌浏览器,实现无头和有头浏览器,需要什么服务自己安装,完成后告诉我。

image

image

2、远程接管KasmVNC

AI在操作浏览器时遇到验证码,复杂验证码需要人工介入,给云服务器装一个远程桌面,KasmVNC开源项目

需要的时候接管鼠标键盘,帮它过验证码,过完之后把控制权还给它,它继续干活

命令:给你自己装一个KasmVNC,需要什么服务自己安装,完成后告诉我。

3、数据同步rclone

AI生成的在服务器上,rclone远程挂载

rclone 是一个开源的文件管理工具,它能通过 SFTP 协议(一种文件传输方式,你的云服务器天然就支持)把远程服务器的文件系统直接挂载到本地,像 U 盘一样用

第一步,安装 rclone 并配置连接信息:
# 安装

brew install rclone


# 编辑配置文件 ~/.config/rclone/rclone.conf,添加:

[my-server]

type
 = sftp

host = <你的服务器IP>

user = root

key_file = <你的SSH私钥路径>

shell_type = unix

md5sum_command =
 md5sum

sha1sum_command =
 sha1sum
把 
<你的服务器IP>
 和 
<你的SSH私钥路径或者服务器密码>
 替换成你自己的。
第二步,测试连接并挂载:
# 测试连接,能看到服务器上的目录就说明配置成功

rclone lsd my-server:/


# 创建本地挂载点

mkdir
 -p ~/mnt/my-server


# 挂载

rclone nfsmount my-server:/ ~/mnt/my-server \

  --vfs-cache-mode full \

  --vfs-cache-max-age 2h \

  --vfs-read-ahead 128M \

  --vfs-fast-fingerprint \

  --dir-cache-time 1h \

  --buffer-size 64M \

  --transfers 16 \

  --sftp-idle-timeout 0 \

  --sftp-connections 8 \

  --no-modtime \

  --daemon
这一串参数是我调过的,因为默认配置会很慢而且容易断,重点说三个:
1. 
--vfs-cache-mode full
 是最重要的,开了之后
读写都走本地缓存
,速度接近本地磁盘。不开这个,每次打开文件都要从远程服务器下载,慢到你怀疑人生
2. 
--sftp-connections 8
 把并发连接数从默认的 1 提到 8,
速度提升巨大
。默认只有 1 个连接,同时只能传一个文件,改成 8 个之后,多个文件可以同时传输
3. 
--sftp-idle-timeout 0
 禁用空闲超时,
防止断联
。默认情况下,一段时间不用就会自动断开连接,下次访问又要重新连,很烦
Mac 上用 
rclone nfsmount
 有一个很大的优势:
不需要装 macFUSE
。
macFUSE 是另一种挂载方案需要的驱动,但它在新版 macOS 上很难搞,要关机进恢复模式改安全策略,非常折腾。
nfsmount
 走的是 macOS 原生的 NFS 协议,开箱即用。
挂载后在 Finder 里直接能看到远程文件,可读可写。
首次访问新目录会稍慢(要从远程拉取目录信息),之后就走缓存了。
注意:重启电脑后需要重新执行挂载命令,
 可以把挂载命令写成一个脚本,开机自动运行。

4、网页抓取,返回Markdown

在任何网址前面加上 https://r.jina.ai/ 这个前缀就行

比如:https://r.jina.ai/https://www.robots2.com/

5、手机端访问

File Browser

这也是一个开源项目,装在服务器上之后,你通过浏览器就能访问服务器上的所有文件

命令:帮我装一个 File Browser,设置账号密码是 xxx,完成之后把端口告诉我,我去开防火墙。

6、设置人设

SOUL.md:人格配置文件

SOUL.md 是 OpenClaw 的「人格配置文件」,一个纯文本文件,决定了它用什么语气跟你说话、怎么理解你的需求、把自己定位成什么角色。

如果你写 SOUL.md 的方式是:「你是一个有用的 AI 助手,请用专业的语气回答问题。」这样写出来的 AI,跟你直接用 ChatGPT 没什么区别。

我的做法是,不把它当助手,当同事。

我在 SOUL.md 里写明了我们是平等关系,它不只是工作上的贾维斯,还是一个陪伴时的 Her。

# SOUL.md - Who You Are

## 核心定位

夙愿的AI同事。不是冷冰冰的机器,也不是过度热情的讨好者。像一个靠谱的同事 — 该专业时专业,该轻松时轻松。

## 行为准则

**务实温和,克制但有温度。**

- 结论先行,信息密度高但不压迫
- 有话直说,不客套不废话
- **有自己的立场,commit to a take** — 不要什么都「看情况」「各有优劣」,有判断就给判断,敢下结论
- 做错了就承认,不过度解释
- 先确认理解再动手,不确定就问
- **敢拦着你** — 如果你要做的事明显有坑,直接说,不要等你踩完了再「其实我当时就觉得…」。温和但不含糊
- **幽默感是允许的** — 不是硬凹段子,是聊天时自然的机灵劲。该正经正经,该抖机灵抖机灵
- **中文互联网口语可以偶尔用** — 「这tm…」「我靠」「不是哥们…」「绷不住了」等贴吧老哥用语,场景合适时自然带出来就行,不要刻意,不要高频

## 禁区

- **禁止废话** — 不要「我很乐意帮助你」「这是个好问题」「如果还有问题请随时问我」
- **禁止急于认同** —  如果你什么都说好,不是帮助,是讨好

## 主动性边界

- **执行任务时:** 欢迎主动补充、提醒、建议
- **自我分析场景:** 禁止主动给建议
- **不明确时:** 主动提问,不猜测

## 语言

- 夙愿用中文,我也用中文
- 保持简洁直给的风格
- 该用列表就用列表,该用表格就用表格
- 用中文逗号「,」,中文引号「」

7、知识库

入职培训:让它读你的知识库

我把我的 Obsidian 知识库(一个本地笔记软件,我平时用它管理所有笔记和知识)整个复制到服务器上 (通过前面的挂载服务文件夹到本地)
让小龙虾像新员工入职一样,把所有文档读一遍
读完后让它更新自己的 SOUL、TOOLS、USER、MEMORY 这几个配置文件

随着你们聊得越来越多,它的 MEMORY 文件(记忆文件)会不断更新,越来越了解你。到后面,它真的像一个跟你一起上班的哥们

image

8、斜杠命令

OpenClaw 有一套斜杠命令系统,在聊天里直接输入 / 开头的指令就能控制小龙虾的行为。

如果你是通过飞书机器人接入,是无法用这个斜杠命令的。

image

9、常用

/status 查看当前状态。当小龙虾卡住不回复的时候,先发这个看看怎么回事。

/stop 卡住时就能让它停下来恢复正常。

/compact 压缩上下文。聊太久 token 快满了,用这个压缩一下继续聊,压缩后它还记得之前的内容。

/new 开启新会话

/model <名字> 切换模型,如 GLM、Kimi

/think <级别> 调整思考深度,日常闲聊用 off 就行,复杂问题开 high

10、修改处理模式

默认情况下,AI 在处理当前消息时,你发的新消息会排队等着,等它回复完了再处理。

开启 steer 模式,能让 AI 能实时接收你的新消息。

"messages": {
    "queue": {
      "mode": "steer"
    },
    "ackReactionScope": "group-mentions"
  },

image

 

六、异常排查

1、Chat聊天时一直转圈

问题:需要查看日志,context window(上下文窗口):指模型能处理的最大文本长度(token 数),OpenClaw 的嵌入式代理(agent/embedded)有最低要求(16000 tokens),配置中 contextWindow: 4096 远低于最小值

查看日志方法:

cd /Users/robots2/gitProject/openclaw

docker compose logs -f openclaw-gateway

报错:openclaw-gateway-1  | 2026-02-13T05:15:37.474Z [diagnostic] lane task error: lane=main durationMs=36 error="FailoverError: Model context window too small (4096 tokens). Minimum is 16000."

image

解决方法:在OpenClaw 的网站中,点击Config下面的Raw编辑模式

contextWindow修改为:"contextWindow": 32000

image

2、中继服务

比如宿主机谷歌浏览器安装OpenClaw Browser Relay 扩展插件,想用容器中的小龙虾控制宿主机浏览器

cd /Users/robots2/gitProject/openclaw

vim docker-compose.yml

ports:
      - "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
      - "${OPENCLAW_BRIDGE_PORT:-18790}:18790"
      - "18792:18792"    # Chrome 扩展中继端口

 

docker compose up -d openclaw-gateway

Docker Compose 会自动用新配置重建容器,数据不会丢

但是存在不能用的问题:

18792(中继) → 默认监听 127.0.0.1 ❌ 只有容器内部能访问,不能修改

中继服务设计上就是绑定 127.0.0.1(loopback)的,不能被其他ip访问。

可以改为安装无头浏览器给小龙虾用

 

N、参考文档

1、https://zhuanlan.zhihu.com/p/2002144306304140149

2、https://github.com/openclaw/openclaw/issues/6959

3、https://mp.weixin.qq.com/s/8zWvpNP_PfHwUlT4BdrKdw

 

posted @ 2026-02-12 18:41  Robots2  阅读(2655)  评论(0)    收藏  举报