如何配置HermesAgent网关,实现多平台接入的高级玩法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计839个文字,预计阅读时间需要4分钟。
若您已部署Hermes Agent核心服务,但尚未在飞书、企业微信、钉钉等平台中使用AI助手,可能问题是消息网关未正确配置。以下是实现多平台接入的多种网关配置方法:
一、通过交互式命令行配置网关
该方法利用hermes内置的setup向导,自动完成平台凭证录入与基础路由设置,适用于首次快速接入单个平台。
1、在已部署Hermes Agent的服务器终端中执行:hermes gateway setup。
2、在向导提示中选择目标平台,例如输入feishu、wechatwork或dingtalk。
3、依次输入该平台提供的App ID、App Secret及可选的User IDs(留空表示开放给所有用户)。
4、确认Domain字段为对应平台默认值(如feishu、wechatwork),Connection mode选择websocket以获得低延迟响应。
5、完成配置后,系统将自动生成gateway配置文件并重启相关服务进程。
二、手动编辑YAML配置文件接入
该方式适用于批量接入多个平台或需精细控制回调路径、超时策略与消息过滤规则的场景,配置文件位于config/gateway.yaml。
1、使用文本编辑器打开config/gateway.yaml。
2、在adapters:节点下新增对应平台区块,例如添加钉钉适配器:
3、填入app_key、app_secret、encrypt_key和verification_token四项必填凭证。
4、为每个平台指定独立的webhook_path(如/webhook/dingtalk),确保反向代理能正确分发请求。
5、保存文件后执行hermes gateway reload使配置生效。
三、使用Docker环境变量动态注入
该方法专为容器化部署设计,避免修改镜像内文件,支持运行时切换平台配置,适合CI/CD流水线集成。
1、启动容器时通过-e参数传入平台凭证,例如:-e GATEWAY_ADAPTER=dingtalk -e DINGTALK_APP_KEY=xxx。
2、确保环境变量命名与Hermes源码中gateway/adapters/dingtalk.py定义的加载键完全一致。
3、在docker-compose.yml中为gateway服务块添加对应environment字段,并映射宿主机端口至容器8000端口。
4、验证容器日志是否输出[INFO] Loaded DingTalk adapter with webhook_path=/webhook/dingtalk。
5、检查容器网络是否允许外部平台服务器访问该端口,必要时配置云防火墙规则。
四、基于Nginx反向代理实现多租户隔离
该方案用于同一套Hermes实例服务多个组织,通过子域名或路径前缀区分不同客户的消息流,保障会话数据物理隔离。
1、在Nginx配置中为每个客户创建独立server块,例如feishu.customer-a.example.com。
2、在location /段中添加proxy_set_header X-Platform feishu与X-Tenant customer-a头信息。
3、将请求转发至Hermes Gateway统一入口(如http://localhost:8000/gateway/proxy)。
4、修改gateway/run.py中请求解析逻辑,在get_platform_from_request()函数内读取上述header值。
5、根据X-Tenant值动态加载对应SQLite数据库文件(如hermes_state_customer_a.db)。
本文共计839个文字,预计阅读时间需要4分钟。
若您已部署Hermes Agent核心服务,但尚未在飞书、企业微信、钉钉等平台中使用AI助手,可能问题是消息网关未正确配置。以下是实现多平台接入的多种网关配置方法:
一、通过交互式命令行配置网关
该方法利用hermes内置的setup向导,自动完成平台凭证录入与基础路由设置,适用于首次快速接入单个平台。
1、在已部署Hermes Agent的服务器终端中执行:hermes gateway setup。
2、在向导提示中选择目标平台,例如输入feishu、wechatwork或dingtalk。
3、依次输入该平台提供的App ID、App Secret及可选的User IDs(留空表示开放给所有用户)。
4、确认Domain字段为对应平台默认值(如feishu、wechatwork),Connection mode选择websocket以获得低延迟响应。
5、完成配置后,系统将自动生成gateway配置文件并重启相关服务进程。
二、手动编辑YAML配置文件接入
该方式适用于批量接入多个平台或需精细控制回调路径、超时策略与消息过滤规则的场景,配置文件位于config/gateway.yaml。
1、使用文本编辑器打开config/gateway.yaml。
2、在adapters:节点下新增对应平台区块,例如添加钉钉适配器:
3、填入app_key、app_secret、encrypt_key和verification_token四项必填凭证。
4、为每个平台指定独立的webhook_path(如/webhook/dingtalk),确保反向代理能正确分发请求。
5、保存文件后执行hermes gateway reload使配置生效。
三、使用Docker环境变量动态注入
该方法专为容器化部署设计,避免修改镜像内文件,支持运行时切换平台配置,适合CI/CD流水线集成。
1、启动容器时通过-e参数传入平台凭证,例如:-e GATEWAY_ADAPTER=dingtalk -e DINGTALK_APP_KEY=xxx。
2、确保环境变量命名与Hermes源码中gateway/adapters/dingtalk.py定义的加载键完全一致。
3、在docker-compose.yml中为gateway服务块添加对应environment字段,并映射宿主机端口至容器8000端口。
4、验证容器日志是否输出[INFO] Loaded DingTalk adapter with webhook_path=/webhook/dingtalk。
5、检查容器网络是否允许外部平台服务器访问该端口,必要时配置云防火墙规则。
四、基于Nginx反向代理实现多租户隔离
该方案用于同一套Hermes实例服务多个组织,通过子域名或路径前缀区分不同客户的消息流,保障会话数据物理隔离。
1、在Nginx配置中为每个客户创建独立server块,例如feishu.customer-a.example.com。
2、在location /段中添加proxy_set_header X-Platform feishu与X-Tenant customer-a头信息。
3、将请求转发至Hermes Gateway统一入口(如http://localhost:8000/gateway/proxy)。
4、修改gateway/run.py中请求解析逻辑,在get_platform_from_request()函数内读取上述header值。
5、根据X-Tenant值动态加载对应SQLite数据库文件(如hermes_state_customer_a.db)。

