1. 背景
在 Jetson 上部署本地 OpenClaw,并通过飞书机器人进行远程交互,让闲置的边缘设备成为高级 AI 助手。整体目标如下:
- 在 Jetson 上运行 OpenClaw
- 接入自己的模型 API(使用阿里的 Coding Plan)
- 通过飞书群聊
@机器人或者私聊机器人直接调用本地 Agent
最终工作流:
Feishu Group -> Feishu Bot -> OpenClaw Gateway (Jetson) -> Agent -> LLM API -> 返回飞书消息
本文记录从源码部署 OpenClaw,到接通飞书机器人的完整过程,以及过程中踩到的几个关键坑。
2. 环境信息
Jetson 环境
uname -a # 输出 Linux agx229-desktop 5.10.216-tegra #1 SMP PREEMPT Tue Mar 4 01:35:16 PST 2025 aarch64 aarch64 aarch64 GNU/Linux
lsb_release -a # 输出 Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal
nvcc --version # 输出 Cuda compilation tools, release 11.4, V11.4.315
说明
当前平台为:
- Jetson ARM64
- Ubuntu 20.04
- CUDA 11.4
这点很重要,因为后续某些依赖在 ARM64 + Ubuntu 20.04 上会遇到额外兼容性问题。
3. 安装 Node.js 与 pnpm
OpenClaw 是一个 Node.js 项目,因此首先需要准备 Node 环境。
建议使用 Node 20。
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# 重新加载 shell 配置
source ~/.bashrc
# 如果使用 zsh
source ~/.zshrc
# 配置镜像加速下载(可选,建议中国用户使用)
nvm node_mirror https://npmmirror.com/mirrors/node/
nvm npm_mirror https://npmmirror.com/mirrors/npm/
# 安装并使用 Node.js 20
nvm install 20
nvm use 20
# 设为默认版本
nvm alias default 20
# 配置 npm 镜像加速
npm config set registry https://registry.npmmirror.com
# 验证安装
node --version
npm --version
还需要安装 pnpm:
npm install -g pnpm
安装后检查:
pnpm -v
4. 配置 pnpm 环境变量
这一步非常重要。
如果不配置 PNPM_HOME,后面可能出现这些问题:
pnpm link --global报错- OpenClaw 自动构建 UI 时提示找不到 pnpm
- 全局命令不可用
建议将下面内容加入 ~/.bashrc:
# pnpm
export PNPM_HOME="/home/agx229/.local/share/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end
保存后执行:
source ~/.bashrc
再验证:
echo $PNPM_HOME
which pnpm
5. 克隆 OpenClaw 源码
cd ~
git clone https://github.com/openclaw/openclaw.git
cd openclaw
6. 解决 Jetson 上 CMake 版本过低的问题
在 Jetson Ubuntu 20.04 上,系统自带的 CMake 往往版本较低。 而 OpenClaw 的某些依赖在编译时要求更高版本的 CMake。
我在安装过程中遇到的典型报错是:
CMake 3.19 or higher is required. You are running version 3.16.3
因此需要手动升级 CMake。
安装新版 CMake
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-linux-aarch64.sh
chmod +x cmake-3.31.6-linux-aarch64.sh
sudo ./cmake-3.31.6-linux-aarch64.sh --skip-license --prefix=/usr/local
检查版本:
/usr/local/bin/cmake --version
如果系统仍然找不到新版本,可临时加入 PATH:
export PATH=/usr/local/bin:$PATH
hash -r
cmake --version
必要时可以加入 ~/.bashrc。
7. 安装依赖并编译 OpenClaw
在项目目录执行:
cd ~/openclaw
pnpm install
pnpm build
如果安装过程中出现原生模块编译问题,优先检查:
- CMake 版本
- build-essential 是否安装
- pnpm 是否在 PATH 中
8. 配置模型 API
OpenClaw 通过 ~/.openclaw/openclaw.json 进行配置。
如果目录不存在,先创建:
mkdir -p ~/.openclaw
nano ~/.openclaw/openclaw.json
我使用阿里的 Coding Plan,个人体验觉得挺不错的,速度快,模型也多。这部分配置教程可以参考阿里官方的教程:大模型服务平台百炼控制台
9. 配置 Gateway Token
这是本文里一个非常关键的坑。
OpenClaw 的架构不是'CLI 直接调用模型',而是:
CLI / TUI / Logs -> Gateway -> Agent -> Model
所以 CLI 其实是 Gateway 的客户端。 既然是客户端连接服务端,就涉及认证。
为什么要加 token
如果只配置服务端 token,而没有配置客户端 token,就会出现:
unauthorized: gateway token mismatch
因此需要让 gateway 服务端 和 客户端连接配置 使用同一个 token。
通过 ~/.openclaw/openclaw.json 可知如下,推荐配置如下:
{
"gateway": {
"mode": "local",
"auth": {
"mode": "token",
"token": "Yours Token"
},
"remote": {
"token": "Yours Token"
}
}
}
解释
gateway.auth.token:Gateway 服务端认证 tokengateway.remote.token:CLI / TUI / logs 等客户端连接 Gateway 时使用的 token
这两个必须一致。
10. 启动 Gateway 服务
先安装 gateway service:
openclaw gateway install
然后启动:
systemctl --user start openclaw-gateway.service
检查状态:
openclaw gateway status
正常情况下会看到类似输出:
Runtime: running
RPC probe: ok
Listening: 127.0.0.1:18789
如果配置修改过,需要重启:
systemctl --user restart openclaw-gateway.service
11. 验证 TUI 是否可用
如果配置正确,可以直接运行:
openclaw tui
若成功,界面会显示已连接,并能直接与模型对话。

如果出现 token mismatch,基本就是 auth.token 和 remote.token 不一致。
12. 配置飞书机器人
第一步:创建飞书应用
进入飞书开放平台 https://open.feishu.cn/?lang=zh-CN,创建一个企业自建应用。

第二步:启用机器人能力
在应用后台启用机器人。



第三步:配置权限
在左侧目录树选择'开发配置 > 权限管理',单击'批量导入/导出权限'按钮。

加入如下内容:
{
"scopes": {
"tenant": [
"contact:contact.base:readonly",
"docx:document:readonly",
"im:chat:read",
"im:chat:update",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message.pins:read",
"im:message.pins:write_only",
"im:message.reactions:read",
"im:message.reactions:write_only",
"im:message:readonly",
"im:message:recall",
"im:message:send_as_bot",
"im:message:send_multi_users",
"im:message:send_sys_msg",
"im:message:update",
"im:resource",
"application:application:self_manage",
"cardkit:card:write",
"cardkit:card:read"
],
"user": [

在弹窗中确认权限无误后,单击'申请开通'按钮,完成操作。

第四步:发布应用




到此就可以回来 Jetson 去连接我们的飞书机器人了。
第五步:配置 Feishu Channel
运行:
openclaw channels add
选择:
Feishu / Lark
然后输入:
- App ID
- App Secret

具体过程可以选项可以参考我的


到此就基本完成了 OpenClaw 与飞书机器人的连接了,但是要实现聊天还得再继续配置。
第六步:重启 Gateway
openclaw gateway restart
第七步:配置事件与回调
选择:
使用长连接接收事件

然后添加事件:
im.message.receive_v1
这是机器人接收消息所必需的事件。


继续配置回调

添加回调

第八步:发布应用版本
这一步非常关键。(这里参考第三步)
很多时候飞书应用配置改了但机器人无效,就是因为没有发布版本。
进入:
版本管理与发布
创建版本并发布。
第九步:配置私聊飞书机器人
在飞书 APP 中找到开发者小助手

之后给机器人发送任何信息

将 Pairing code 复制然后在 Jetson 终端输入
openclaw pairing approve feishu NHMC7CRG

到此,基本就实现了在飞书中直接召唤我们边缘设备干活了,回到飞书,与我们小助手聊天即可。

13. 常见坑总结
坑 1:Jetson 上 CMake 版本过低
会导致依赖编译失败。
坑 2:没有配置 pnpm PATH
会导致全局命令或 UI 构建异常。
坑 3:误以为需要单独安装 Feishu 插件
源码版已经内置,不需要重复安装。
坑 4:没有配置 gateway.remote.token
会导致 CLI 连接 Gateway 时出现 token mismatch。
坑 5:App ID / App Secret 使用了旧应用凭证
这是我这次飞书始终接不通的根因。
坑 6:飞书应用修改后未发布版本
会导致机器人看似配置好了,但实际不生效。
14. 最终效果
完成上述配置后,可以实现:
- 在 Jetson 上运行 OpenClaw Gateway
- 接入自己的模型 API
- 在飞书群中
@机器人 - 机器人调用本地 Agent 并返回回复
这为后续扩展提供了很好的基础,例如:
- 远程查询 Jetson 状态
- 执行自动化任务
- 调用机器人系统接口
- 通过飞书统一管理实验设备
15. 总结
这次在 Jetson 上部署 OpenClaw 并接入飞书机器人的过程,整体并不算复杂,但有几个坑非常容易卡住:
- ARM 平台的依赖编译问题
- pnpm 环境变量问题
- Gateway token 机制
只要把这些关键点处理好,OpenClaw + 飞书这套链路其实是很顺的。


