本文记录将 Hermes Agent 部署到腾讯云服务器,并通过飞书(Lark)实现手机远程对话的完整过程。适合想打造「移动端 AI 控制台」的开发者参考。
一、为什么要这么做?
我的 AI 助手 Hermes Agent 一直运行在本地 Mac 上,平时用终端对话没问题,但出门在外想用手机操作时就很麻烦——Mac 没有公网 IP,飞书的回调请求根本打不进来。
目标很明确:把手机变成随身 AI 控制台,随时随地通过飞书发消息就能让服务器执行任务。
技术架构也很简单:
二、环境准备:一台云服务器
我使用的是腾讯云轻量应用服务器,配置如下:
- 系统:OpenCloudOS 8(CentOS 兼容系)
- IP:
YOUR_SERVER_IP(在云服务商控制台查看) - 规格:2核 4G(够用了)
2.1 SSH 免密登录
本地生成 ed25519 密钥对,公钥上传到服务器的 ~/.ssh/authorized_keys,实现免密直连:
这一步是后续所有自动化操作的基础,省去了反复输密码的麻烦。
2.2 安装 Python 3.11
OpenCloudOS 8 默认带的 Python 3.6.8 太旧,Hermes 需要 3.11+。好在仓库里直接有:
2.3 安装 Node.js 22
Hermes 的浏览器工具依赖 Node.js,用国内 npmmirror 下载:
三、部署 Hermes Agent:被网络问题卡了三次
3.1 第一次卡点:GitHub 下不动
腾讯云国内节点访问 GitHub 经常超时,直接用 git clone 或 curl | bash 都失败了。我的解决方案是本地打包,SCP 上传:
3.2 第二次卡点:PyPI 也超时
服务器上装 Python 依赖时,pip install 反复超时。解决方式是使用阿里云 PyPI 镜像,通过环境变量注入:
小提示:uv 比 pip 快很多,而且支持通过环境变量临时指定镜像源,不用改全局配置。
3.3 创建虚拟环境与命令入口
验证安装:
四、配置 AI 模型:接入 Kimi
Hermes 支持多种模型,我选了 Moonshot 的 kimi-k2.6,国内访问速度快。
在 /root/.hermes/config.yaml 写入:
然后在 /root/.hermes/.env 放入 API Key:
五、接入飞书:核心环节
5.1 创建飞书应用
在飞书开放平台(open.feishu.cn)创建企业自建应用,拿到:
- App ID:
cli_xxxxxxxxxxxxxxxx(在应用凭证页面查看) - App Secret:
YOUR_APP_SECRET(在应用凭证页面查看)
这两个凭证是 Gateway 连接飞书的「钥匙」。
5.2 配置 Gateway
把凭证写入环境变量:
启动 Gateway:
5.3 第三次卡点:缺少飞书 SDK
启动后发现连接失败,日志提示缺少 lark_oapi。这是因为 Hermes 的飞书适配器依赖是可选的,需要单独安装:
装完重启 Gateway,日志出现:
飞书 WebSocket 连接成功。
六、一个隐蔽的坑:4100 个垃圾文件
飞书能连上了,发消息却报错:
排查后发现,问题出在本地 Mac 打包时带入了 AppleDouble 文件。macOS 的 tar 会给每个文件生成一个 ._xxx 的元数据文件,这些文件是二进制格式,不是 UTF-8 文本。
服务器上扫了一下,居然有 4100 个这样的垃圾文件:
删除后问题解决:
教训:从 Mac 打包源码到 Linux 服务器时,务必排除 ._*文件,或者用COPYFILE_DISABLE=1环境变量禁用。
七、授权机制:安全与便利的权衡
当 AI 要执行 curl、终端命令等操作时,Hermes 会弹出授权卡片,让用户在飞书里点「确认」或「取消」。
但第一次测试时,点击按钮报错。原因是飞书应用没有订阅「卡片操作事件」(card.action.trigger)。
7.1 临时方案:自动授权(YOLO Mode)
如果想先快速体验,可以开启自动授权模式,所有操作自动执行:
7.2 正式方案:订阅卡片事件
在飞书开放平台 → 事件与回调 → 添加事件订阅,勾选:
- 卡片操作事件(card.action.trigger)
然后关闭 YOLO Mode,重启 Gateway。现在每次涉及敏感操作时,飞书会推送卡片,点击后服务器才会执行,既安全又可控。
八、最终效果
现在在手机上打开飞书,找到机器人,发送:
「查询北京天气」
机器人会返回结果。如果涉及外部调用,会先发送确认卡片,点确认后继续执行。
整个链路:
九、关键配置汇总
服务器环境
/usr/local/bin/python3 | ||
/usr/local/node-v22.14.0-linux-x64/ | ||
/usr/local/lib/hermes-agent/ |
环境变量(/root/.hermes/.env)
模型配置(/root/.hermes/config.yaml)
十、写在最后
这次部署花了大约 2 小时,主要时间耗在解决网络问题(GitHub/PyPI 超时)和排查编码错误(AppleDouble 文件)上。
如果你也想搭建类似的「手机 AI 控制台」,建议:
- 提前准备国内镜像源,避免下载卡死
- Mac 传 Linux 时排除
._*文件 - 飞书应用记得开「卡片操作事件」权限
- 先用 YOLO Mode 验证通路,再切回手动授权
现在我的手机就是一个随身携带的 AI 终端,随时发消息就能让服务器干活。这大概就是「移动优先」的 AI 时代该有的样子。
本文技术栈:Hermes Agent / OpenCloudOS 8 / Python 3.11 / Node.js 22 / 飞书开放平台 / Moonshot Kimi
夜雨聆风