宝塔 Docker 配置 Hermes 详细步骤,并且操控手机 APP

安装 Hermes

首先在宝塔的 Docker 界面中点“容器编排”,录入如下内容:

services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes-agent
restart: unless-stopped
volumes:
- /www/docker/hermes/data:/opt/data
ports:
- "8642:8642"
- "9119:9119"
environment:
- HERMES_DASHBOARD=1
- TZ=Asia/Shanghai
command: gateway run
ShellScript

安装完成之后页面如下:

但没有给 Hermes Dashboard 配登录鉴权,所以它出于安全原因拒绝启动。

所以需要将以下内容加入到YAML中:

environment:
  - HERMES_DASHBOARD=1
  - TZ=Asia/Shanghai
  - HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin
  - HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=你自己设置一个强密码
  - HERMES_DASHBOARD_BASIC_AUTH_SECRET=一串至少32字节的随机字符串
ShellScript

随机字符串可以在服务器上使用 openssl rand -base64 32 来生成。

所以完成YMAL应该是类似于(注意缩进):

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    volumes:
      - /www/docker/hermes/data:/opt/data
    ports:
      - "8642:8642"
      - "9119:9119"
    environment:
      - HERMES_DASHBOARD=1
      - TZ=Asia/Shanghai
      - HERMES_DASHBOARD_BASIC_AUTH_USERNAME=ssss
      - HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=xxxxxx
      - HERMES_DASHBOARD_BASIC_AUTH_SECRET=XXCROPvhq924WVlLGF12345
    command: gateway run
ShellScript

出现如下内容就是配置完成:

就可以通过IP:9119访问了,得到的页面如下:

如果需要操作安卓手机上面的APP文件,还需要安装一个 hermes-android 插件。需要进入到 Hermes 的 plugins 文件夹里面将内容复制进去。

刚安装好的 Hermes 没有 plugins 目录,自己创建一个,在界面的 Files 页面 Create 即可。

也可以直接在终端创建,如果在终端创建,需要知道 Hermes 的 data 目录保存在哪,运行:

docker inspect hermes-agent --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}'
ShellScript

能得到类似 /www/docker/hermes/data -> /opt/data 的结果,说明 plugins 目录创建在了 /www/docker/hermes/data/plugins 下面,将安卓插件文件夹复制过去即可。

hermes-android的仓库地址:https://github.com/raulvidis/hermes-android.git

配置模型

1.在终端执行 docker exec -it hermes-agent bash (此处hermes-agent是容器名称,如果你的容器不是这个名字,需要改成你自己的容器名称)

2.进入后,执行 hermes model

3.选择 Custom endpoint (self-hosted / VLLM / etc.)

4.输入 API BASE URL、API KEY、Model name

5.配置完成后,测试,hermes chat,随便问一句:你好,只回复OK,输出OK证明配置成功

执行过程中会看到:

这里选择第一个,让它自动检测即可。检测到之后,就可以选择你想要使用的模型了。

如果看到:Context length in tokens [leave blank for auto-detect]: 直接回车就行。

Display name [Api.xxx.xxx]:这步是输入名称,录入你能看懂的名称即可。

如果想删除刚才配置好的模型,再重新设置新的模型。可以 hermes model (hermes setup model)进入之后,找 Remove a saved custom provider 就可以。

连接微信

Hermes 连接微信挺方便,扫个码就行。进入容器 docker exec -it hermes-agent bash

之后运行:hermes gateway setup

在界面中找 weixin/wechat,选择之后会出现一个登录二维码,扫码之后出现:

4 个选项分别是:

  • Use DM pairing approval (recommended)
    私聊配对审批。有人第一次私聊时,需要经过配对/批准。官方推荐,最安全。
  • Allow all direct messages
    所有人都可以直接私聊它。最省事,但也最开放。
  • Only allow listed user IDs
    只允许白名单里的微信用户 ID。
  • Disable direct messages
    禁止私聊。

选第一项就行。

扫码之后如果微信这边显示暂时无法连接,重启一下。

第一次不是“微信扫码失败”,而是“微信账号配置已经保存,但正在运行的 Gateway 没有重新加载这份新配置”;后来执行了 hermes gateway restart,s6 管理的 Gateway 重新启动并加载了 Weixin 配置,所以微信才真正可用了。

中途如果看到类似:

它不是让你把这条命令发到微信里,而是让 Hermes 的管理员在服务器终端里执行这条命令。所以在应该到服务器里执行:

docker exec -it hermes-agent bash

hermes pairing approve weixin 授权码

操作手机应用

虽然可以用微信和 Hermes 沟通,也把插件顺利放置到了 plugins 目录中,但此时手机上的 Hermes 也还是没有操作手机 APP 的能力,你让它给你打开某一个 APP,它会给你回复它没有远程操控 APP 的权限。其实是还需要在手机上安装一个叫作 Hermes Bridge companion 的 App。

在这里直接下载:https://github.com/raulvidis/hermes-android/releases/tag/latest-build?utm_source=chatgpt.com

安装好了APP之后,APP提供了一个权限码,然后需要和微信机器人建立连接

安装好之后先测试:hermes plugins list | grep -i android

服务器提示:hermes-android not enabled 0.4.1

执行:hermes plugins enable hermes-android

Plugin hermes-android enabled.

确认:hermes plugins list | grep -i android

hermes-android enabled 0.4.1

接下来给微信机器人发信息:连接我的安卓手机,配对码是 HXFLJB。
使用 android_setup 启动 Android relay,并告诉我服务器连接地址。机器人返回一个地址:

但我一直连接失败:

在这里也能看到,我之前的服务器地址是9119,但他不是Hermes Dashboard 的端口,不是 Android relay 端口,所以手机一直relay disconnected。

然后在容器配置文件里面增加端口:

ports:
- "8642:8642"
- "9119:9119"
- "8766:8766"
ShellScript

检查端口:docker ps --format "table {{.Names}}\t{{.Ports}}" | grep hermes-agent

0.0.0.0:8766->8766/tcp

确认8766端口映射没问题。

但就是一直连接不上IP:8766这个地址。

检查了服务器安全组合firewalld,都不是根本原因。最后和AI沟通,AI判断可能是容器内部识别了 127.0.0.1:8766,但容器外部没有识别。

验证:docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' hermes-agent

返回:172.20.0.2

继续:curl http://172.20.0.2:8766

返回:Connection refused

容器内部127.0.0.1:8766是通的,说明relay 只监听在容器自己的 localhost 上。

进一步检查:cat /proc/net/tcp /proc/net/tcp6 | grep ':223E'

看到:0100007F:223E

因此完全确认:Android relay 当前监听127.0.0.1:8766。

解决方案:

在 Docker Compose 的 environment: 里增加:

- ANDROID_RELAY_HOST=0.0.0.0
- ANDROID_RELAY_PORT=8766
ShellScript

然后重新创建/重建 Docker 容器。

重建后确认:docker exec -it hermes-agent bash -c 'echo $ANDROID_RELAY_HOST'

返回:0.0.0.0

至此,手机端连接成功。

连接成功之后,微信机器人还是不能操控我的手机,我的目的是让它访问某个APP,比如打开界面,之后点击某个按钮,来进行一些信息整理,但是它告诉我它没有那个权限:

很抱歉,当前 hermes-android 插件只提供了 `android_setup` 工具用于初始化 Android bridge relay,但**不包含控制手机的操作工具**

我尝试查找的这些工具都不可用:
- `android_tap` - 点击屏幕
- `android_launch` / `android_open_app` - 打开应用
- `android_screenshot` - 读取屏幕

**当前状态:**
-  Android relay 已启动(配对码 123456
-  无法执行手机控制操作(打开APP、点击、读取屏幕)

**可能的原因:**
1. hermes-android 插件功能尚未完整实现控制工具
2. 这些工具可能需要手机端成功连接后才会加载
3. 插件可能需要更新或配置

你需要我:
1. 检查官方文档确认 android 插件的完整功能?
2. 或者使用其他方式(如 adb)来完成这个任务?
ShellScript

让AI帮我查来查去,看代码、测试代码返回,发现是需要开启 Hermes-Bridge里面的 Accessibility Service 才可以。

ENABLE ACCESSIBILITY SERVICE
ShellScript

跳到安卓系统的无障碍界面,使用 Hermes Bridge 并授权。

在微信聊天窗口,/new新开启一个会话,之后重新连接。连接好之后

列出当前所有以 android_ 开头的可用工具,只列工具名称。
ShellScript

之后就可以正常操作手机APP了。

但是还有一个坑,就是要把后台耗电、自启动、关联启动、允许后台耗电都打开,还要从屏幕底部上划停顿 → 找到 Hermes Bridge 卡片 → 向下拉一下

让它出现一个 🔒 小锁。把它锁住。

至此应该是所有踩的坑都记录了,也操作APP成功。

点赞

当前页面评论已关闭。