安装 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 runShellScript安装完成之后页面如下:

但没有给 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 runShellScript出现如下内容就是配置完成:

就可以通过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=8766ShellScript然后重新创建/重建 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 SERVICEShellScript跳到安卓系统的无障碍界面,使用 Hermes Bridge 并授权。
在微信聊天窗口,/new新开启一个会话,之后重新连接。连接好之后
列出当前所有以 android_ 开头的可用工具,只列工具名称。ShellScript之后就可以正常操作手机APP了。
但是还有一个坑,就是要把后台耗电、自启动、关联启动、允许后台耗电都打开,还要从屏幕底部上划停顿 → 找到 Hermes Bridge 卡片 → 向下拉一下
让它出现一个 🔒 小锁。把它锁住。
至此应该是所有踩的坑都记录了,也操作APP成功。
