从“坑王”到“虾王”:一个小白的手搓龙虾(OpenClaw)血泪史,附赠飞书撩妹机器人避坑终极指南
如何安全撸龙虾不掉坑
作者:一个被 AI 坑了三天但最终靠自己爬出来的靓仔
摘要:本文将用养猪(啊不,养龙虾)的朴素智慧,带你手把手在 Mac 上搭建属于你自己的 AI 大龙虾(OpenClaw),并让它成功撩到“会飞的书”(飞书机器人)。全程避坑指南,外行友好,代码可直接复制粘贴。
〇、 前言:当我以为我在吃火锅唱着歌…
事情是这样的:我想在本地电脑上养一只 AI 大龙虾(OpenClaw),让它帮我干活。AI 助手热情地给我推荐了一个“一键安装”的豪华套餐https://github.com/liam798/docker-openclawd,这是某个叫 liam 的大佬写的?(这发音,怎么听都有点像东北那旮沓夸姑娘“这娘们真带劲”里的“娘们”… 如果原作者看到这文章,别骂我,黑红也是红,再说我这不也算给您引流了嘛,精神损失费就当宣传费了哈)。
结果呢?好家伙,这“一键”下去,直接给我弹射到了坑底。当我费尽九牛一毛的力气,按照教程在容器里装好龙虾后,顺手就想搞一下飞书集成,心想“这还不简单?”。结果正吃着火锅唱着歌呢,原来装龙虾的整个箱子(Docker容器)都废了,无限重启,直接摆烂。
感情我轻轻地撩了一下“会飞的书”都不行啊?人家书都会飞就不能怪我撩它了,是它主动… 哦不,是我手贱。但问题总得解决,于是被坑了两三天的我,决定扔掉所有“一键脚本”,用自己的思路,从零开始,搭建一个干净、可控、美味的龙虾养殖场。
下面就是我的“安全撸虾指南”,保证你跟着做,绝对不掉坑(掉了我负责精神按摩)。
一、 核心思想:别信“一键”,信自己
经验一:不要安装网上的一键安装版,AI 推荐的也不好使。
这是我用血泪换来的教训。那些封装好的脚本,看似省事,实则黑盒。一旦出问题(比如飞书依赖缺失),你连它在哪挖的坑都不知道,只能对着日志干瞪眼,被绕得云里雾里。
正确姿势:用自己的思路,一步步来。过程干净、整洁、可控。你不懂代码?没关系!我下面要写的所有命令,你都可以直接复制粘贴,我会告诉你这行命令是干嘛的。咱们的思路就一个:先搞个干净的“养殖箱”(Docker容器),再把龙虾苗(OpenClaw)放进去,最后配置环境让它活蹦乱跳。
二、 搭建豪华龙虾养殖箱(Docker 镜像)
咱们不用别人的箱子,自己造一个,用料扎实,绝无甲醛。
2.1 创建项目目录和 Dockerfile
打开你的终端(Terminal),执行:
# 创建一个专属目录,所有操作都在这里面,清爽
mkdir openclaw-custom && cd openclaw-custom
在这个目录里,创建一个名为 Dockerfile 的文件(没有后缀)。用你喜欢的文本编辑器(比如 VSCode、nano 都行),把下面这一大段“养殖箱建造图纸”贴进去:
# 使用指定版本的Node.js 22.14.0 作为基础箱子
FROM node:22-bookworm-slim
# 设置箱子里的环境(时区、工作目录)
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Shanghai \
OPENCLAW_HOME=/home/node/.openclaw
# 关键一步:把软件源换成国内的(下载速度快,避免网络超时)
RUN set -e; \
# 检查并创建软件源列表文件
if [ ! -f /etc/apt/sources.list ]; then \
echo "创建 /etc/apt/sources.list 文件..."; \
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list; \
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list; \
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.txt; \
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list; \
else \
echo "替换现有 /etc/apt/sources.list 中的镜像源..."; \
sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list; \
sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list; \
fi; \
# 更新软件列表并安装一堆必要的工具(比如curl, git,还有让龙虾能控制你Mac软件的图形库)
apt-get update && apt-get install -y \
curl \
wget \
git \
procps \
libx11-6 \
libxext6 \
libxrender1 \
libxtst6 \
libxi6 \
libgl1-mesa-glx \
fonts-liberation \
fonts-noto-color-emoji \
nano \
vim \
&& rm -rf /var/lib/apt/lists/*
# !!! 超级大坑预警 !!!
# 很多教程让你在这里直接安装 openclaw,会碰到各种“找不到XXX包”的坑。
# 我们的策略是:先不装!等箱子造好了,我们以“管理员”身份进去再装。
# 所以下面这行是注释掉的,千万别解开!
# RUN npm install -g openclaw@latest
# 创建一个非root用户来运行龙虾(更安全),并设置工作目录
USER node
WORKDIR /home/node
# 提前创建好龙虾的“家”(配置目录)
RUN mkdir -p /home/node/.openclaw
# 设置一些环境变量
ENV PATH="/home/node/.npm-global/bin:${PATH}" \
NODE_ENV=production \
DISPLAY=host.docker.internal:0 # 这句是让容器里的程序能弹出窗口到你的Mac桌面
这段代码在干嘛:简单说,就是定制了一个基于 Node.js 的 Linux 小箱子,换上了清华的软件源(下载飞快),装好了基础工具,并且准备好了运行龙虾的账户和环境。但最关键的一步——安装龙虾本体,我们留到后面手动做,这是避坑的关键。
2.2 构建镜像
图纸画好了,开始施工:
# 在 openclaw-custom 目录下执行
# 这行命令会根据 Dockerfile 构建一个名为 openclaw-custom:node-22.14.0 的镜像
docker build -t openclaw-custom:node-22.14.0 .
喝杯水,等它构建完成。成功后,你的豪华养殖箱就造好了。
三、 投放龙虾苗并培育
箱子是空的,现在我们把龙虾苗放进去,并把它养大。
3.1 进入箱子,并以管理员身份安装龙虾
我们先运行一个临时容器进去看看:
# 运行一个临时容器并进入其bash终端
docker run -it --rm openclaw-custom:node-22.14.0 bash
进入后,终端提示符会变成类似 node@一长串ID:~$,说明你已经在容器内部了。输入 whoami 应该显示 node。然后退出(输入 exit)。
接下来是核心操作:我们以管理员 (root) 身份进入容器,全局安装龙虾。这样可以避免后续各种奇怪的权限问题导致插件装不上。
# 启动一个用于初始化、取名为 openclaw-init 的容器,并让它休眠(这样它不会退出)
docker run -d \
--name openclaw-init \
-p 18789:18789 \
-v $(pwd)/openclaw-data:/home/node/.openclaw \ # 把数据目录挂载出来,方便持久化
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=host.docker.internal:0 \
openclaw-custom:node-22.14.0 \
sleep infinity
# 以 root 身份进入这个容器
docker exec -u root -it openclaw-init bash
现在你在容器里是 root 用户了。执行最关键的一步:
# 全局安装 OpenClaw!美味的龙虾即将下锅。
npm install -g openclaw@latest
恭喜! 至此,一个纯净的、包含了所有核心依赖的龙虾养殖环境就准备好了。超级的美味往往只需要简单的食材,而简单的过程往往能避开最深的坑。
四、 初始化你的龙虾(配置向导)
保持在上一步的容器 (openclaw-init) 的 root 终端里,我们现在来初始化龙虾:
# 切换到 node 用户(安全起见)
su - node
# 开始初始化配置
openclaw onboard --install-daemon
耐心! 这里会启动一个交互式配置向导。你可以先看会儿“小绿片”(进度条),休息一下。
向导步骤很简单:
- 选择语言:当然是
中文。 - 安装模式:选
QuickStart快速开始。 - 配置AI模型:
- 模型提供商:选
deepseek(国内用,快且便宜)。 - 输入你的 DeepSeek API Key(去官网注册一个,新人有免费额度)。
- 模型提供商:选
- 选择技能:一路按回车,或者选
skip for now(暂时不配),后续都能加。 - 完成:向导结束,它会生成配置文件。
五、 启动正式龙虾服务容器
初始化完成后,我们就可以关掉这个“初始化容器”,启动一个正式的、长期运行的服务容器了。
# 在宿主机(你Mac本身的终端)里执行,不是在容器里!
# 先停止并删除初始化容器
docker stop openclaw-init && docker rm openclaw-init
# 启动正式的、持久化的龙虾服务容器
docker run -d \
--name openclaw-custom \ # 容器名字
--hostname openclaw-docker \ # 容器内部主机名
-p 18789:18789 \ # 把容器18789端口映射到你Mac的18789端口
-v ./openclaw-data:/home/node/.openclaw \ # 挂载数据,配置不丢
-v /tmp/.X11-unix:/tmp/.X11-unix \ # 允许图形界面
-e DISPLAY=host.docker.internal:0 \ # 同上
-e OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ # 允许本地用http访问,避免安全报错
-e TZ=Asia/Shanghai \ # 设置时区
--restart unless-stopped \ # 自动重启,除非你手动停止
--memory="8g" \ # 给它8G内存,吃饱好干活
--cpus="2.0" \ # 给2个CPU核心
openclaw-custom:node-22.14.0 \
openclaw gateway --bind lan --port 18789 # 启动网关服务
大功告成! 现在,在你的 Mac 浏览器里打开 http://localhost:18789,你应该能看到 OpenClaw 的控制界面了!
六、 填坑笔记与进阶操作
坑1:网关启动命令的“文字游戏”
AI 有时会告诉你用 --host 0.0.0.0,但新版本命令变了。正确命令是上面最后一行写的:openclaw gateway --bind lan --port 18789。记住,是 --bind lan,不是 --host。
坑2:登录需要“令牌”
打开 http://localhost:18789 可能只看到登录页。你需要一个令牌。在容器内执行 openclaw dashboard 会输出一个带 #token=xxx 的完整 URL。把整个 URL 复制到浏览器地址栏,回车,就能直接进去了。
坑3:关于“会飞的书”(飞书机器人)的终极避坑指南
这是重灾区,无数人在这里跌倒。请严格按照以下步骤,一步都别错:
-
在容器内启动配置向导:
docker exec -it openclaw-custom bash openclaw config然后选择:
Local->Channels->Configure/link->Feishu/Lark->China(国内版)。 -
扫码!扫码!扫码!
命令行会吐出一个二维码。拿出你的手机,用“飞书”APP(注意:是国内版飞书,不是“飞书海外版Lark”或“飞书商务版”)扫码。我之前用外区账号下的飞书扫码就没反应,坑死。 -
扫码后的奇迹
扫码后,飞书APP会引导你“创建一个机器人”。一路默认点下去,机器人就创建好了,并且自动和你的OpenClaw完成了关联!不用手动填AppID、AppSecret那些鬼东西。 -
去飞书后台补权限
创建成功后,去https://open.feishu.cn/找到你刚创建的应用。在“权限管理”页面,点击“批量导入”,把下面这坨权限JSON贴进去,然后“创建版本”并发布。{ "scopes": { "tenant": [ "aily:file:read", "aily:file:write", "application:application.app_message_stats.overview:readonly", "application:application:self_manage", "application:bot.menu:write", "cardkit:card:write", "contact:user.employee_id:readonly", "corehr:file:download", "docs:document.content:read", "event:ip_list", "im:chat", "im:chat.access_event.bot_p2p_chat:read", "im:chat.members:bot_access", "im:message", "im:message.group_at_msg:readonly", "im:message.group_msg", "im:message.p2p_msg:readonly", "im:message:readonly", "im:message:send_as_bot", "im:resource", "sheets:spreadsheet", "wiki:wiki:readonly" ], "user": [ "aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read" ] }} -
事件订阅
在飞书后台的“事件与回调”页面,事件订阅方式一定要选“长连接”(这是关键!)。然后添加im.message.receive_v1事件。保存。
做完这些,你的飞书机器人就应该能正常@和私聊了。别再去网上找那些复杂的配对命令了,用二维码创建的机器人,大部分情况下不需要手动配对!
七、 总结
撸龙虾(OpenClaw)这事儿,说难也难,说简单也简单。难在网上的信息鱼龙混杂,一步错步步错;简单在只要你抓住核心——自己从零开始,控制每一步——就能避开99%的坑。
- 拒绝黑盒:别用一键脚本,自己写 Dockerfile,心里有数。
- 权限干净:在纯净容器里用
root装核心包,一劳永逸。 - 配置从简:初始化向导能用就用,模型、技能都可以后续加。
- 飞书扫码:配置飞书就认准官方
openclaw config向导出来的二维码,其他野路子都忘掉。
现在,你可以愉快地享用你的私人 AI 龙虾大餐了。它就在你的 Mac 本地,安全、可控、还不用交月费。如果还有坑… 那一定不是我的攻略问题,是龙虾又更新了!不过按照这个“自己掌控”的思路,你也能轻松把它填上。
祝大家撸虾愉快,永不掉坑!如果这篇“血泪史”帮到了你,点个赞再走呗~ (精神按摩费就免了,哈哈)
更多推荐

所有评论(0)