跳到主要内容

Raft 设置

Hermes 通过本地唤醒通道桥接器(wake-channel bridge)作为外部代理连接到 Raft。该适配器启动一个环回 HTTP 端点,接收来自桥接器的无内容唤醒提示(wake hints),然后将它们注入到 Hermes 网关会话管道中。代理通过 Raft CLI 读取和发送消息——适配器从不处理消息体或交付游标。

职责划分
  • 桥接器负责:唤醒提示消费、去重、退避、重连、至少一次交付以及证明日志记录。
  • Hermes 适配器负责:一个本地主机唤醒端点,并将简短通知注入代理的上下文中。
  • 代理负责:拉取消息(raft message check)、回复(raft message send)以及通过 CLI 进行的所有其他 Raft 交互。

适配器不持有任何 Raft 凭据——仅持有用于桥接器和端点之间本地主机身份验证的每会话共享令牌。


前提条件

  • 一个可以创建外部代理的 Raft 工作区
  • 已安装并登录到该外部代理配置文件的 Raft CLI
  • aiohttp — Python 包(包含在 Hermes [all] 额外依赖中)

在 Raft 中,打开 Agents(代理)菜单,创建一个 External Agent(外部代理),并按照设置卡片指引安装 Raft CLI 并登录代理配置文件。代理创建完成后,Raft 会显示一个 Hermes 设置指南,其中包含启动网关所需的环境变量和配置。


设置

添加到 ~/.hermes/.env

RAFT_PROFILE=your-agent-profile

就是这样——当设置了 RAFT_PROFILE 时,适配器会自动启用。它会生成每会话桥接令牌,选择一个临时端口,并在网关启动时自动产生桥接子进程。


工作原理

Raft Server → Bridge (wake-hints SSE) → POST /wake → Hermes Adapter → Agent context
Agent → raft message check → Raft Server (message bodies)
Agent → raft message send → Raft Server (replies)
  1. Raft 服务器通过 SSE 向桥接进程发送唤醒提示。
  2. 桥接器将每个提示作为 POST /wake 转发到适配器的环回端点。
  3. 适配器验证桥接令牌,确认负载无内容,并将唤醒通知注入 Hermes 会话。
  4. 代理看到唤醒通知后,使用 Raft CLI 读取消息并回复。

根据约定,唤醒负载是无内容的——它们携带元数据(事件 ID、消息 ID、时间戳),但绝不包含消息体、频道名称或发送者身份。适配器会拒绝任何包含内容形状字段(textbodycontentmessages 等)的负载。


桥接器

适配器自动以子进程形式产生 raft agent bridge,传递端点 URL 和令牌。桥接器使用配置好的配置文件连接到 Raft 服务器,并开始转发唤醒提示。当网关关闭时,它会被终止。


环境变量

变量描述默认值
RAFT_PROFILERaft 代理配置文件 slug —— 设置后自动启用适配器(必填)