OpenClaw Signal 渠道
通过 signal-cli 将 OpenClaw 连接到 Signal —— 这是一个第三方开源的 Signal 协议命令行客户端。此集成提供隐私优先的 AI 消息通信,支持完整的端到端加密。OpenClaw 通过 HTTP JSON-RPC 和 Server-Sent Events 与 signal-cli 守护进程通信,让你的 AI 助手可以在 Signal 上收发消息。机器人账号需要一个专用手机号。
Signal 支持的功能
文本消息
支持
媒体与文件
支持
消息反应
支持
消息线程
不支持
语音消息
不支持
群聊
支持
Signal 前置条件
- Signal 机器人账号的专用手机号(与个人号码分开)
- 服务器已安装 Java 运行时环境(JRE 25+)
- 已安装 signal-cli 并可在 PATH 中访问
- OpenClaw Gateway 已运行并配置
- 一个现有的 Signal 账号用于关联机器人(或进行新注册)
Signal 快速设置
安装 signal-cli
从官方 GitHub 仓库下载并安装 signal-cli。它需要 Java 25 或更高版本。在终端运行 'signal-cli --version' 验证安装是否成功。
关联或注册 Signal 账号
运行 'signal-cli link -n "OpenClaw"' 将 signal-cli 关联到现有 Signal 账号,然后从另一台设备扫描二维码。或者运行 'signal-cli -a +15551234567 register' 注册新账号。请使用专用号码 —— 在个人账号上运行会导致自发消息循环。
添加 Signal 渠道配置
在 ~/.openclaw/openclaw.json 中添加 Signal 渠道配置。将 'account' 字段设置为机器人的 E.164 格式手机号,并配置 dmPolicy(pairing、allowlist 或 open)来控制谁可以给你的助手发消息。
启动 Gateway 并发送测试消息
启动 Gateway 进程。OpenClaw 会自动启动 signal-cli 守护进程。从另一个 Signal 账号向机器人号码发送消息。如果使用默认的 pairing 策略,需通过 'openclaw pairing approve signal <code>' 审批发送者。
Signal 配置示例
{
"channels": {
"signal": {
"enabled": true,
"account": "+15551234567",
"dmPolicy": "pairing"
}
}
}Signal 深入了解
架构概述
Signal 账号设置
{
"channels": {
"signal": {
"account": "+15551234567",
"cliPath": "/usr/local/bin/signal-cli"
}
}
}外部守护进程模式
{
"channels": {
"signal": {
"account": "+15551234567",
"httpUrl": "http://127.0.0.1:8080/api/v1/rpc"
}
}
}私信策略
{
"channels": {
"signal": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567", "uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
}
}
}群聊管理
{
"channels": {
"signal": {
"groupPolicy": "open",
"historyLimit": 50
}
}
}隐私与端到端加密
表情回应
{
"channels": {
"signal": {
"reactionLevel": "minimal"
}
}
}媒体与附件
{
"channels": {
"signal": {
"mediaMaxMb": 8,
"ignoreAttachments": false
}
}
}输入指示器与已读回执
{
"channels": {
"signal": {
"sendReadReceipts": true
}
}
}文本分块与发送
{
"channels": {
"signal": {
"textChunkLimit": 4000,
"chunkMode": "newline"
}
}
}Signal 配置参考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 启用或禁用 Signal 渠道 |
| account | string | "" | 机器人的 E.164 格式手机号(例如 +15551234567)。必填 |
| cliPath | string | "signal-cli" | signal-cli 可执行文件的路径 |
| httpUrl | string | "" | 外部 signal-cli 守护进程的完整 URL。设置后将禁用自动启动 |
| httpHost | string | "127.0.0.1" | 自动启动的 signal-cli 守护进程绑定的主机地址 |
| httpPort | number | 8080 | 自动启动的 signal-cli 守护进程绑定的端口 |
| autoStart | boolean | true | 是否在 Gateway 启动时自动生成 signal-cli 守护进程 |
| startupTimeoutMs | number | 30000 | 等待 signal-cli 守护进程可用的最长时间(毫秒)。最大值 120000 |
| dmPolicy | string | "pairing" | 控制谁可以私信机器人。选项:pairing、allowlist、open、disabled |
| allowFrom | string[] | [] | 允许给机器人发消息的手机号(E.164 格式)或 uuid:<id> 标识符 |
| dmHistoryLimit | number | 50 | 每个对话中包含的最近私信消息数量,作为 AI 上下文 |
| groupPolicy | string | "disabled" | 群聊策略。选项:disabled、allowlist、open |
| groupAllowFrom | string[] | [] | 允许在群组中触发机器人的手机号或 UUID(groupPolicy 为 allowlist 时使用) |
| historyLimit | number | 50 | 包含的最大群消息数量,作为 AI 上下文。设为 0 禁用 |
| sendReadReceipts | boolean | false | 是否为已批准的私信联系人转发已读回执信号 |
| textChunkLimit | number | 4000 | 分块前每条出站消息的最大字符数 |
| chunkMode | string | "length" | 文本分块模式。选项:length(硬性拆分)、newline(段落感知) |
| mediaMaxMb | number | 8 | 入站/出站附件的最大媒体文件大小(兆字节) |
| ignoreAttachments | boolean | false | 跳过下载入站媒体附件 |
| ignoreStories | boolean | false | 完全忽略 Signal 动态事件 |
| receiveMode | string | "" | 消息接收模式。选项:on-start(启动时获取)、manual |
| configWrites | boolean | true | 允许 /config 命令在运行时修改渠道设置 |
| reactionLevel | string | "ack" | 机器人回应能力。选项:off、ack、minimal、extensive |
启用或禁用 Signal 渠道
机器人的 E.164 格式手机号(例如 +15551234567)。必填
signal-cli 可执行文件的路径
外部 signal-cli 守护进程的完整 URL。设置后将禁用自动启动
自动启动的 signal-cli 守护进程绑定的主机地址
自动启动的 signal-cli 守护进程绑定的端口
是否在 Gateway 启动时自动生成 signal-cli 守护进程
等待 signal-cli 守护进程可用的最长时间(毫秒)。最大值 120000
控制谁可以私信机器人。选项:pairing、allowlist、open、disabled
允许给机器人发消息的手机号(E.164 格式)或 uuid:<id> 标识符
每个对话中包含的最近私信消息数量,作为 AI 上下文
群聊策略。选项:disabled、allowlist、open
允许在群组中触发机器人的手机号或 UUID(groupPolicy 为 allowlist 时使用)
包含的最大群消息数量,作为 AI 上下文。设为 0 禁用
是否为已批准的私信联系人转发已读回执信号
分块前每条出站消息的最大字符数
文本分块模式。选项:length(硬性拆分)、newline(段落感知)
入站/出站附件的最大媒体文件大小(兆字节)
跳过下载入站媒体附件
完全忽略 Signal 动态事件
消息接收模式。选项:on-start(启动时获取)、manual
允许 /config 命令在运行时修改渠道设置
机器人回应能力。选项:off、ack、minimal、extensive
Signal 常见问题
Signal 故障排查
Java 未安装,或安装的版本太旧。signal-cli 需要 Java 25 或更高版本。
account 字段可能不正确,signal-cli 守护进程可能未运行,或发送者尚未通过配对审批。
发送者可能不在 allowFrom 列表中(使用 allowlist 策略时),或发送者的标识符格式不匹配。
groupPolicy 设为 'disabled'(默认值),或群组不在允许列表中。
signal-cli 守护进程未运行,URL 不正确,或防火墙阻止了连接。