Signal
Hermes 通过运行在 HTTP 模式下的 signal-cli daemon 接入 Signal。适配器通过 SSE 实时接收消息,并通过 JSON-RPC 发送回复。
前提条件
- signal-cli
- Java 17+
- 一个已安装 Signal 的手机号
第 1 步:关联 Signal 账号
signal-cli link -n "HermesAgent"
然后在手机的 Settings → Linked Devices 中扫码关联。
第 2 步:启动 signal-cli Daemon
signal-cli --account +1234567890 daemon --http 127.0.0.1:8080
验证:
curl http://127.0.0.1:8080/api/v1/check
第 3 步:配置 Hermes
交互式设置
hermes gateway setup
手动配置
SIGNAL_HTTP_URL=http://127.0.0.1:8080
SIGNAL_ACCOUNT=+1234567890
SIGNAL_ALLOWED_USERS=+1234567890,+0987654321
SIGNAL_GROUP_ALLOWED_USERS=groupId1,groupId2
SIGNAL_HOME_CHANNEL=+1234567890
访问控制
私聊
- 设置了
SIGNAL_ALLOWED_USERS时,仅这些用户可聊天 - 未设置时,未知用户会收到配对码
- 设置
SIGNAL_ALLOW_ALL_USERS=true时允许所有人
群组
| Configuration | Behavior |
|---|---|
| Not set (default) | 忽略所有群消息 |
| Set with group IDs | 仅监听列出的群组 |
Set to * | 监听所有群组 |
功能
- 支持双向图片、音频和文档附件
- 处理消息时会发送 typing indicator
- 日志中的手机号会自动脱敏
- 支持 “Note to Self” 场景
- SSE 连接掉线后会自动重连
故障排除
| Problem | Solution |
|---|---|
| 无法连接 signal-cli | 确认 daemon 已启动 |
| 收不到消息 | 检查 SIGNAL_ALLOWED_USERS 格式是否为 E.164 |
| signal-cli 不在 PATH 中 | 安装 signal-cli 并加入 PATH |
| 群消息被忽略 | 配置 SIGNAL_GROUP_ALLOWED_USERS |
| 重复消息 | 确认只运行了一个 signal-cli 实例 |
安全
- 务必配置访问控制
- 日志中手机号会自动脱敏
- 群支持建议默认关闭,除非确实需要
~/.local/share/signal-cli/中保存的是会话凭据,应像密码一样保护