前言
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 |
安全注意事项
- 使用独立号码:不要用个人号码运行机器人,避免隐私泄露
- 限制允许列表:通过
allowFrom严格控制谁可以与 AI 对话 - 保护配置文件: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 白名单使用,确保通信安全可控。