首页 资讯 下载 教程 Skills 社群

OpenClaw 对接 Signal 加密通讯教程

前言

Signal 以其端到端加密和隐私保护著称。OpenClaw 通过 signal-cli 工具与 Signal 协议对接,让你在最安全的通讯平台上使用 AI 助手。

前置要求

  • 已安装并运行 OpenClaw
  • Java 运行环境(JRE 17 或更高版本)
  • 一个专用的手机号码用于注册 Signal
  • signal-cli 工具

安装 signal-cli

下载安装

# 下载最新版本的 signal-cli
SIGNAL_CLI_VERSION="0.13.0"
wget https://github.com/AsamK/signal-cli/releases/download/v${SIGNAL_CLI_VERSION}/signal-cli-${SIGNAL_CLI_VERSION}.tar.gz
tar xf signal-cli-${SIGNAL_CLI_VERSION}.tar.gz -C /opt/
ln -sf /opt/signal-cli-${SIGNAL_CLI_VERSION}/bin/signal-cli /usr/local/bin/signal-cli

验证 Java 环境

java -version
# 需要 Java 17+

注册 Signal 账号

使用专用号码注册(建议使用独立号码):

# 发送验证码
signal-cli -u +86xxxxxxxxxxx register
# 输入收到的验证码完成注册
signal-cli -u +86xxxxxxxxxxx verify 123456

启动 signal-cli 服务

OpenClaw 通过 HTTP JSON-RPC 和 SSE(Server-Sent Events)与 signal-cli 通信。启动 signal-cli 的 JSON-RPC 模式:

signal-cli -u +86xxxxxxxxxxx daemon --http --receive-mode=on-connection

默认监听 localhost:8080。可以通过 --http-port 参数修改端口:

signal-cli -u +86xxxxxxxxxxx daemon --http --http-port 7583

建议使用 systemd 管理 signal-cli 进程:

[Unit]
Description=signal-cli daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/signal-cli -u +86xxxxxxxxxxx daemon --http
Restart=always
User=signal

[Install]
WantedBy=multi-user.target

OpenClaw 频道配置

channels:
  - type: signal
    account: "+86xxxxxxxxxxx"
    cliPath: "http://localhost:8080"   # signal-cli JSON-RPC 地址
    dmPolicy: "paired"
    allowFrom:
      - "+86yyyyyyyyyyy"              # 允许的联系人号码

配置项说明

配置项 说明 可选值
account Signal 注册号码 带国际区号的手机号
cliPath signal-cli 服务地址 HTTP URL
dmPolicy 私聊策略 open / paired / off
allowFrom 允许通信的号码白名单 号码数组

私聊路由

Signal 的所有私聊消息会路由到 OpenClaw 的主会话(main session)进行统一处理。

群组隔离

每个 Signal 群组会自动创建独立的会话,群组之间的上下文互相隔离,确保对话不会交叉。

消息特性

文本分块

当 AI 回复内容过长时,OpenClaw 会自动将文本拆分为合适长度的多条消息依次发送。

媒体附件

Signal 频道支持收发多种类型的媒体文件:

  • 图片(JPEG、PNG、GIF)
  • 文档(PDF、Office 文件等)
  • 音频和视频
# 媒体附件自动处理,无需额外配置

输入指示器

OpenClaw 在处理消息时会向用户显示"正在输入"的状态指示,提供更自然的对话体验。

Emoji 回应

支持对收到的消息进行 emoji 回应,可配置收到消息时的确认回应:

signal:
  ackReaction: "🤔"  # 处理中的提示

消息投递目标

Signal 支持三种消息投递目标:

目标类型 格式 示例
私聊号码 手机号 +8613800138000
UUID Signal UUID a1b2c3d4-...
群组 群组 ID group.xxxx

安全注意事项

  1. 使用独立号码:不要用个人号码运行机器人,避免隐私泄露
  2. 限制允许列表:通过 allowFrom 严格控制谁可以与 AI 对话
  3. 保护配置文件:signal-cli 的密钥数据存储在 ~/.local/share/signal-cli/ 目录下,请妥善保护
# 确保密钥目录权限正确
chmod 700 ~/.local/share/signal-cli/

常见问题

signal-cli 启动失败

确认 Java 版本为 17 或更高,检查号码是否正确注册:

signal-cli -u +86xxxxxxxxxxx receive

消息收发延迟

SSE 连接可能因网络波动中断,检查 signal-cli 的日志输出,必要时重启 daemon 进程。

群组消息不响应

确认机器人号码已加入目标群组,且 groupPolicy 配置不为 off

总结

Signal 频道的对接依赖 signal-cli 作为中间桥梁,虽然配置步骤相对较多,但得益于 Signal 的端到端加密,这是目前最安全的 AI 助手通讯方案之一。建议搭配 allowFrom 白名单使用,确保通信安全可控。