在安卓手机上运行OpenClaw?当然可以,用Termux折腾OpenClaw安装QQ机器人的踩坑记录... 0 次阅读

前言

最近想在手机上跑一个 QQ 机器人,选了个看起来挺灵活的框架 OpenClaw。本以为按文档几分钟就能搞定,结果断断续续折腾了一晚上。这里记一下过程,给同样在 Termux 上折腾的人省点时间。

为什么选 OpenClaw

主要看中它支持多平台(QQ、微信、Telegram 等),还能接各种大模型。我想把智谱的免费模型 glm-4.7-flash 接上 QQ,手机上跑着省电。

第一个坑:插件找不到

装完 OpenClaw 后,配置文件里加了 openclaw-qqbot,结果启动报错:

1
plugins.allow: plugin not found: openclaw-qqbot

官方的安装命令跑了一遍,又说找不到 openclaw/dist/plugins-sdk/index_js/core。搜了一下,大概是版本不匹配——OpenClaw 核心和 QQ 插件各说各话。

第二个坑:Node.js 编译失败

升级 Node.js 到 v24 后,npm install -g openclaw@latest 直接挂掉,卡在 tree-sitter-bash 的编译上:

1
gyp: Undefined variable android_ndk_path in binding.gyp

这是 Termux 环境的老毛病了——Android 的 C 库(Bionic)和很多 npm 原生模块不对付。折腾半天无解,决定换路子。

终极方案:Ubuntu 容器

Termux 里有个 proot-distro 可以跑完整 Linux 发行版。既然原生环境不行,就在容器里装。

1
2
3
pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu

进到 Ubuntu 容器里,先装 Node.js 22(LTS 比较稳):

1
2
3
apt update && apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs

然后装 OpenClaw:

1
npm install -g openclaw@latest

这次编译顺利通过。终于有了 openclaw 命令。

配置向导:模型和 QQ 频道

运行 openclaw,按照提示选择:

· QuickStart(推荐)
· 认证提供方:Skip for now
· 默认模式:手动输入,填 zhipu/glm-4.7-flash
· 频道:QQ Bot (Official API)
· 搜索和技能:都跳过

注意这里模型名中间是点号 glm-4.7-flash,不是连字符。后来因为这个连字符又折腾了半天。

新问题:Gateway 不工作

配完启动,出现一个叫 Crestodian 的界面,提示 Gateway: not reachable。查了一下,原来直接运行 openclaw 启动的是一个轻量级客户端,必须先把 Gateway 服务跑起来。

手动开两个终端(或者在 tmux 里分屏):

1
2
3
4
5
# 终端1
openclaw gateway --port 18791

# 终端2
openclaw

这次代理连上了 Gateway,QQ 也显示 WebSocket 已连接。我在手机 QQ 上给机器人发消息,日志里能收到事件,但机器人不回复。

核心问题:智谱 API Key 没配

模型虽然选对了,但没给 API Key,OpenClaw 不知道去哪调用。

修改配置文件 ~/.openclaw/openclaw.json,在 models 里加上 apiKey:

1
2
3
4
5
"models": {
"zhipu/glm-4.7-flash": {
"apiKey": "你的智谱API密钥"
}
}

智谱的 API Key 去 open.bigmodel.cn 注册就有免费额度。

改完重启 Gateway 和代理,再发消息就能正常回复了。

一键启动的小脚本

每次手动开两个 tmux 窗格有点烦,写了个小脚本 start_openclaw.sh:

1
2
3
4
5
6
#!/bin/bash
proot-distro login ubuntu -- tmux kill-session -t openclaw 2>/dev/null
proot-distro login ubuntu -- tmux new-session -d -s openclaw "openclaw gateway --port 18791"
sleep 2
proot-distro login ubuntu -- tmux split-window -t openclaw -v "openclaw"
proot-distro login ubuntu -- tmux attach -t openclaw

之后要启动就 ./start_openclaw.sh,日志直接看到两个窗格。脱离 tmux 用 Ctrl+B D,完全退出就 proot-distro login ubuntu – tmux kill-session -t openclaw。

几个容易忽略的点

  1. 模型名:glm-4.7-flash 中间是点号,不是连字符。配错会报 Invalid input。
  2. 端口一致:Gateway 启动时用了 –port 18791,配置文件里的 gateway.port 也要改成一样,否则代理连不上。
  3. QQ 凭证:appId 和 clientSecret 填在 channels.qqbot 里,去 QQ 开放平台申请机器人。
  4. 不要用 openclaw gateway restart:Android 上不支持 systemd,直接 pkill -f openclaw 再启动就行。

最后的效果

现在手机 Termux 里跑着 Ubuntu 容器,容器里 tmux 挂着 OpenClaw。QQ 上给机器人发消息,它能调用智谱模型回复,速度还行,省电模式也能撑一整天。

如果你也遇到类似的编译问题或 Gateway 连不上,可以考虑直接上容器方案,省心。

上一篇 告别原生导航栏:微信小程序自定义导航栏完美适配方案
下一篇 个人开发工具之抖音直播录制工具:一款功能强大的Android直播录制应用
感谢您的支持!
微信赞赏码 微信赞赏
支付宝赞赏码 支付宝赞赏