Jetson + OpenClaw + 飞书机器人:构建一个让边缘设备成为 AI Agent 助手的远程交互系统

Jetson + OpenClaw + 飞书机器人:构建一个让边缘设备成为 AI Agent 助手的远程交互系统

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 22。

# 安装 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 服务端认证 token
  • gateway.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 

12. 验证 TUI 是否可用

如果配置正确,可以直接运行:

openclaw tui 

若成功,界面会显示已连接,并能直接与模型对话。

如果出现 token mismatch,基本就是 auth.tokenremote.token 不一致。


13. 配置飞书机器人

第一步:创建飞书应用

进入飞书开放平台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": [ "contact:user.employee_id:readonly", "offline_access","base:app:copy", "base:field:create", "base:field:delete", "base:field:read", "base:field:update", "base:record:create", "base:record:delete", "base:record:retrieve", "base:record:update", "base:table:create", "base:table:delete", "base:table:read", "base:table:update", "base:view:read", "base:view:write_only", "base:app:create", "base:app:update", "base:app:read", "board:whiteboard:node:create", "board:whiteboard:node:read", "calendar:calendar:read", "calendar:calendar.event:create", "calendar:calendar.event:delete", "calendar:calendar.event:read", "calendar:calendar.event:reply", "calendar:calendar.event:update", "calendar:calendar.free_busy:read", "contact:contact.base:readonly", "contact:user.base:readonly", "contact:user:search", "docs:document.comment:create", "docs:document.comment:read", "docs:document.comment:update", "docs:document.media:download", "docs:document:copy", "docx:document:create", "docx:document:readonly", "docx:document:write_only", "drive:drive.metadata:readonly", "drive:file:download", "drive:file:upload", "im:chat.members:read", "im:chat:read", "im:message", "im:message.group_msg:get_as_user", "im:message.p2p_msg:get_as_user", "im:message.send_as_user", "im:message:readonly", "search:docs:read", "search:message", "space:document:delete", "space:document:move", "space:document:retrieve", "task:comment:read", "task:comment:write", "task:task:read", "task:task:write", "task:task:writeonly", "task:tasklist:read", "task:tasklist:write", "wiki:node:copy", "wiki:node:create", "wiki:node:move", "wiki:node:read", "wiki:node:retrieve", "wiki:space:read", "wiki:space:retrieve", "wiki:space:write_only" ] } }

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

第三步:发布应用

到此就可以回来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

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


14. 常见坑总结

坑 1:Jetson 上 CMake 版本过低

会导致依赖编译失败。

坑 2:没有配置 pnpm PATH

会导致全局命令或 UI 构建异常。

坑 3:误以为需要单独安装 Feishu 插件

源码版已经内置,不需要重复安装。

坑 4:没有配置 gateway.remote.token

会导致 CLI 连接 Gateway 时出现 token mismatch。

坑 5:App ID / App Secret 使用了旧应用凭证

这是我这次飞书始终接不通的根因。

坑 6:飞书应用修改后未发布版本

会导致机器人看似配置好了,但实际不生效。


15. 最终效果

完成上述配置后,可以实现:

  • 在 Jetson 上运行 OpenClaw Gateway
  • 接入自己的模型 API
  • 在飞书群中 @机器人
  • 机器人调用本地 Agent 并返回回复

这为后续扩展提供了很好的基础,例如:

  • 远程查询 Jetson 状态
  • 执行自动化任务
  • 调用机器人系统接口
  • 通过飞书统一管理实验设备

16. 总结

这次在 Jetson 上部署 OpenClaw 并接入飞书机器人的过程,整体并不算复杂,但有几个坑非常容易卡住:

  • ARM 平台的依赖编译问题
  • pnpm 环境变量问题
  • Gateway token 机制

只要把这些关键点处理好,OpenClaw + 飞书这套链路其实是很顺的。

如果你也想在 Jetson 上搭一个可远程交互的本地 Agent,这套方案很值得尝试。


预告一下,下一期我将更新一下好用的Skills,让我们边缘设备更好的给我们干活!

Read more

【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路

【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路

摘要:本文围绕学校 AI 数字人项目从 Sql Server 数据库替换至 KingbaseES 数据库的实践展开,涵盖迁移背景、两种数据库对比、替换实施步骤、应用效果展示、问题与解决措施等多方面内容,为教育领域类似项目提供了详实参考。 目录 1.背景与需求 2.两种数据库对比 2.1功能特性差异 2.2兼容性分析 3.替换实施步骤 3.1前期准备工作 3.2数据迁移过程 3.3系统测试与优化 4.应用效果展示 4.1性能提升表现 4.2稳定性与安全性增强 5.问题与解决措施 5.1迁移中遇到的问题 5.2解决方案与经验总结 5.3 三个KingbaseDTS经度代码案例及解释 6.总结与展望 6.

今日AI新鲜资讯(2026年3月11日)

今天是2026年3月11日,周三。AI领域热点持续发酵——“养龙虾”热潮催生“上门卸载”新生意,周鸿祎宣布推出360安全龙虾,英伟达版“龙虾”NemoClaw即将登场。以下是今日值得关注的重要资讯。 一、今日焦点:“养龙虾”热潮降温,安全与卸载成新关键词 第一批“养龙虾”的人开始花钱请人“上门卸载”。随着OpenClaw持续火爆,早期尝鲜者开始发现“养龙虾”并非想象中那么简单。据金十数据报道,第一批“养龙虾”的人,开始花钱请人“上门卸载”。这标志着“养龙虾”热潮从盲目跟风进入理性回调阶段。 国家互联网应急中心发布OpenClaw安全应用风险提示。前期由于OpenClaw智能体的不当安装和使用,已经出现了一些严重的安全风险。应急中心建议采取以下安全措施: * 强化网络控制,不将OpenClaw默认管理端口直接暴露在公网 * 对运行环境进行严格隔离,限制OpenClaw权限过高问题 * 加强凭证管理,避免在环境变量中明文存储密钥 * 建立完整的操作日志审计机制 * 严格管理插件来源,禁用自动更新功能 多地地方政府推出“养龙虾”便民措施。

全网首发!OpenClaw 云端部署喂饭级教程,零成本 30 分钟打造 7x24h AI 员工

全网首发!OpenClaw 云端部署喂饭级教程,零成本 30 分钟打造 7x24h AI 员工

↑阅读之前记得关注+星标⭐️,😄,每天才能第一时间接收到更新 Hello 大家好,我是鹿先森,祝大家新年快乐! 前两天聊 Kimi Claw 的文章突然爆火,没想到大家对 OpenClaw 的热情这么高!就连除夕夜 12 点,都有小伙伴在疯狂进群领取《OpenClaw 本地部署保姆级教程》,看群里的热烈反馈,大家都已经成功上手玩起来了! (没领到的朋友可以挪步之前的文章获取暗号) 但在和大家的交流中,我发现了一个普遍的痛点,本地部署响应太慢了,并且对配置有要求,有的朋友电脑是老款 Win7 插件都安装不上,有的朋友觉得电脑必须 24 小时开机才能用,太费电也不方便。 为了解决这个问题,我连夜爆肝出了这篇《OpenClaw 零成本云端部署喂饭级教程》,阅读大概需要10分钟,建议收藏慢慢看。 不需要你的电脑 24 小时开机,不需要高性能显卡,只需要一次性操作,把 OpenClaw 搬到云端,不仅稳定,而且完全免费!

【前沿解析】2026年3月29日:AI推理效率双重突破——谷歌TurboQuant内存压缩与RWKV-6开源重构大模型部署范式

当百万级上下文成为AI应用标配,当边缘设备渴求智能部署,内存墙与算力瓶颈正成为制约AI规模化落地的最后枷锁。2026年3月29日,两大技术突破同步到来:谷歌研究院发布TurboQuant算法,将KV缓存内存占用压缩6倍、速度提升8倍;RWKV开源基金会宣布RWKV-6 1.6B模型正式开源,线性复杂度架构打破Transformer二次方魔咒。这不仅是技术的双重突破,更是AI从实验室走向产业、从云端下沉到终端的范式革命。 引言:效率革命的双引擎——内存压缩与架构创新 2026年3月,AI行业迎来了标志性的效率拐点。在算力增长曲线趋缓、摩尔定律失效的背景下,通过算法优化提升现有硬件效能成为唯一可行路径。谷歌TurboQuant与RWKV-6开源,恰如效率革命的双引擎,从两个维度同时突破传统瓶颈: * TurboQuant:针对大模型推理最核心的内存瓶颈——KV缓存,通过PolarQuant坐标变换与QJL误差校正,实现3-bit量化下的零精度损失,实测内存占用降低83%、注意力计算速度提升8倍 * RWKV-6:基于线性复杂度的时间序列混合架构,在保持强大序列建模能