OpenClaw 通过 signal-cli 对接 Signal,Gateway 通过 HTTP JSON-RPC + SSE 与 signal-cli 通信。Signal 以端对端加密著称,这个集成让你可以通过全球最安全的消息应用与 AI 助手对话。
前置条件
- Linux 服务器(Ubuntu 24 已验证)
- Java JRE 25+(JVM 版 signal-cli 需要)或使用 native 二进制
- 一个可接收短信的手机号(推荐使用专用号码)
- 浏览器(注册时可能需要完成 captcha)
两种接入方式
方式 A:链接现有 Signal 账号(QR 扫码)
优点:不需要额外号码。缺点:个人账号兼作 Bot 有局限性(Bot 会忽略你自己发的消息)。
bash
# 安装 signal-cli(native 版本)
VERSION=$(curl -Ls -o /dev/null -w %{url_effective} \
https://github.com/AsamK/signal-cli/releases/latest | sed 's/.*\/v//')
curl -L -O "https://github.com/AsamK/signal-cli/releases/download/v${VERSION}/signal-cli-${VERSION}-Linux-native.tar.gz"
sudo tar xf signal-cli-${VERSION}-Linux-native.tar.gz -C /opt
sudo ln -sf /opt/signal-cli /usr/local/bin/
# 链接账号(扫码)
signal-cli link -n "OpenClaw"
# 在 Signal App 中扫描输出的 QR 码方式 B:注册专用 Bot 号码(推荐)
bash
# 安装 signal-cli(同上)
# 注册号码
signal-cli -a +8613800138000 register
# 如果需要 captcha,先完成后复制链接:
# 访问 https://signalcaptchas.org/registration/generate.html
signal-cli -a +8613800138000 register --captcha "signalcaptcha://..."
# 输入短信验证码
signal-cli -a +8613800138000 verify 123456
# 启动 signal-cli HTTP daemon
signal-cli -a +8613800138000 daemon --http 127.0.0.1:8080OpenClaw 配置
json
{
"channels": {
"signal": {
"enabled": true,
"account": "+8613800138000",
"cliPath": "signal-cli",
"dmPolicy": "pairing",
"allowFrom": ["+8613900000001"]
}
}
}| 字段 | 说明 |
|---|---|
account | Bot 号码(E.164 格式) |
cliPath | signal-cli 路径(在 PATH 中填 signal-cli 即可) |
dmPolicy | DM 访问策略(推荐 pairing) |
allowFrom | 允许私信的号码列表 |
完成配对
bash
openclaw gateway restart
# 给 Bot 发一条 Signal 消息,Bot 回复配对码
openclaw pairing list signal
openclaw pairing approve signal CODEDM 访问控制
json
{
"channels": {
"signal": {
"dmPolicy": "allowlist",
"allowFrom": ["+8613800138001"]
}
}
}dmPolicy 可选值:
pairing(推荐):未知发件人收到配对码allowlist:只允许 allowFrom 名单中的号码open:允许所有人(谨慎使用)disabled:禁用私信
群组访问控制
json
{
"channels": {
"signal": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["+8613800138001"],
"groups": {
"*": { "requireMention": true }
}
}
}
}外部 daemon 模式
已有运行中的 signal-cli HTTP daemon:
json
{
"channels": {
"signal": {
"enabled": true,
"account": "+8613800138000",
"httpUrl": "http://127.0.0.1:8080"
}
}
}多账号配置
json
{
"channels": {
"signal": {
"accounts": {
"personal": {
"account": "+8613800138000",
"dmPolicy": "pairing"
},
"work": {
"account": "+8613900000001",
"dmPolicy": "allowlist",
"allowFrom": ["+8613900000002"]
}
}
}
}
}媒体和功能限制
- 图片上限约 6MB,文件上限约 100MB
- 不支持内联按钮(Signal 协议限制)
- 支持打字指示和已读回执
- 支持语音消息自动转录
重要:号码模型
- Gateway 连接到 signal-cli 账号(设备)
- 如果用个人 Signal 账号运行 Bot,它会忽略你自己发的消息(防止循环)
- 强烈推荐使用独立 Bot 号码,避免与个人使用冲突
- 保持 signal-cli 更新:Signal 服务器 API 会变化,旧版本可能失效
常见问题
signal-cli 不在 PATH?
json
{ "channels": { "signal": { "cliPath": "/opt/signal-cli/bin/signal-cli" } } }注册提示 captcha? 访问 https://signalcaptchas.org/registration/generate.html 完成后复制 signalcaptcha://... 链接。
连接失败? 运行 openclaw gateway restart 后查看日志,通常是 signal-cli 版本过旧导致。
原文:Signal - OpenClaw | 来源:OpenClaw 官方文档