多网关部署

Hermes 支持并发运行多个网关进程——每个 profile 一个(default、writer、admin、coder、researcher)。每个网关打开自己到各平台 API 的连接,并为其 profile 的订阅者投递消息。

任务订阅同时覆盖评审反馈。changes_requested 评审事件会作为可执行的 review-BLOCK 通知投递。使用 notify+wake 的订阅还会唤醒最初发起的聊天/线程/会话,以便控制器检查既有卡片与当前运行;notify 仍保持纯被动,wake 仍保持纯唤醒。评审反馈绝不会创建、解除阻塞、重新排队或以其他方式改动任务。

单一调度器姿态

只有一个网关拥有看板调度器。拥有调度器的网关保持 kanban.dispatch_in_gateway: true(默认值);其余所有网关将其设为 false。

为何重要: 调度是单属主的,这样多个网关不会争抢着派发同一份工作。通知投递则改为按 profile 归属:每个网关只轮询它所托管平台适配器对应 profile 的订阅。原子事件认领机制防止了跨 watcher 进程的重复投递。

配置

在拥有调度器的网关上(通常是 default profile),无需改动。在其余每个 profile 网关上,向 ~/.hermes/config.yaml 添加:

kanban:
  dispatch_in_gateway: false

或设置环境变量:HERMES_KANBAN_DISPATCH_IN_GATEWAY=false

各网关的职责

网关角色dispatch_in_gateway是否打开已订阅看板数据库?调度器通知器
default(确认的调度锁属主)true(默认)是是自有 profile + 旧的未打标订阅
writer、admin、coder 等false是,当该 profile 有订阅时否该网关的自有 profile

非调度网关仍为自己的平台适配器(Telegram、Discord 等)投递消息。它们不派发任务,并会跳过没有其 profile 所拥有订阅的看板。