多网关部署
Hermes 支持同时运行多个网关进程——每个配置文件对应一个网关(包括默认、写入者、管理员、编码员和研究员)。每个网关都会建立与平台 API 的独立连接,为其对应配置文件的订阅者传递消息。
任务订阅还涵盖评审反馈。changes_requested 评审事件会以可操作的 review-BLOCK 通知形式发送。而使用 notify+wake 模式的订阅还会唤醒最初的聊天记录/线程/会话,以便控制器检查现有的卡片及当前运行状态;其中 notify 模式仅用于被动通知,wake 模式则仅用于唤醒操作。评审反馈绝不会创建、解除阻塞、重新排队或以其他方式修改任务状态。
单调度器模式
只有一个网关拥有看板调度器。该网关会保持 kanban.dispatch_in_gateway: true 的设置(为默认值),而其他所有网关则将其设置为 false。
重要性说明: 由于调度功能由单一网关掌控,因此多个网关不会同时尝试处理同一项任务。通知发送则由对应配置文件负责:每个网关仅会轮询其托管的平台适配器所关联的配置文件的订阅项。原子性事件处理机制可避免在多个监听进程之间出现重复通知的情况。
配置方式
在拥有调度权的网关上(通常为 default 配置文件),无需进行任何更改。对于其他所有配置文件的网关,则需在 ~/.hermes/config.yaml 文件中添加相应配置:
kanban:
dispatch_in_gateway: false
或者设置环境变量:HERMES_KANBAN_DISPATCH_IN_GATEWAY=false
各网关的功能
| 网关角色 | dispatch_in_gateway | 是否打开已订阅的看板数据库? | 分发器 | 通知器 |
|---|---|---|---|---|
| 默认角色(已确认分发锁的所有者) | true(默认值) | 是 | 是 | 该所有者对应的配置文件以及旧版未标记订阅的看板 |
| 编辑者、管理员、开发者等 | false | 若配置文件有订阅则打开 | 否 | 该网关所有者对应的配置文件 |
非分发型网关仍会为其自身的平台适配器(如 Telegram、Discord 等)传递消息。它们不会分发任务,也不会处理那些其配置文件未拥有任何订阅的看板。