OpenClaw从入门到应用——频道:Signal

张开发
2026/4/13 16:56:19 15 分钟阅读

分享文章

OpenClaw从入门到应用——频道:Signal
通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》Quick setup (beginner)为机器人使用一个独立的 Signal 号码推荐。安装signal-cli如果使用 JVM 构建版需要 Java 环境。选择以下一种设置路径路径 A二维码链接执行signal-cli link -n OpenClaw然后用 Signal 扫描二维码。路径 B短信注册使用验证码 短信验证注册一个专用号码。配置 OpenClaw 并重启网关。发送第一条私信并批准配对openclaw pairing approve signal 配对码。最小配置示例theme{theme:{light:min-light,dark:min-dark}} { channels: { signal: { enabled: true, account: 15551234567, cliPath: signal-cli, dmPolicy: pairing, allowFrom: [15557654321], }, }, }字段参考字段描述account机器人电话号码E.164 格式15551234567cliPathsignal-cli的路径如果在PATH中可直接写signal-clidmPolicy私信访问策略推荐使用pairingallowFrom允许发送私信的电话号码或uuid:值列表What it is通过signal-cli而非嵌入式 libsignal实现的 Signal 通道。确定性路由回复总是返回到 Signal。私信共享代理的主会话群组是隔离的agent::signal:group:。Config writes默认情况下Signal 允许写入由/config set|unset触发的配置更新需要commands.config: true。禁用方法theme{theme:{light:min-light,dark:min-dark}} { channels: { signal: { configWrites: false }, }, }The number model (important)网关连接到一个Signal 设备即signal-cli账户。如果你在个人 Signal 账户上运行机器人它会忽略你自己的消息防循环保护。要实现“我给机器人发消息机器人回复”请使用一个独立的机器人号码。Setup path A: link existing Signal account (QR)安装signal-cliJVM 或原生构建版。链接机器人账户执行signal-cli link -n OpenClaw然后在 Signal 中扫描二维码。配置 Signal 并启动网关。示例theme{theme:{light:min-light,dark:min-dark}} { channels: { signal: { enabled: true, account: 15551234567, cliPath: signal-cli, dmPolicy: pairing, allowFrom: [15557654321], }, }, }Multi-account support多账户支持使用channels.signal.accounts支持每个账户独立配置以及可选的name。共享模式参见gateway/configuration。Setup path B: register dedicated bot number (SMS, Linux)当你需要一个专用机器人号码而不是链接现有 Signal 应用账户时使用此方法。获取一个可以接收短信的号码固定电话可使用语音验证。使用专用机器人号码避免账户/会话冲突。在网关主机上安装signal-clitheme{theme:{light:min-light,dark:min-dark}}VERSION$(curl-Ls-o/dev/null-w%{url_effective}https://github.com/AsamK/signal-cli/releases/latest|sed-es/^.*\/v//)curl-L-Ohttps://github.com/AsamK/signal-cli/releases/download/v${VERSION}/signal-cli-${VERSION}-Linux-native.tar.gzsudotarxfsignal-cli-${VERSION}-Linux-native.tar.gz-C/optsudoln-sf/opt/signal-cli /usr/local/bin/ signal-cli--version如果使用 JVM 构建版signal-cli-${VERSION}.tar.gz需要先安装 JRE 25。请保持signal-cli更新上游提示旧版本可能会因 Signal 服务器 API 变更而失效。注册并验证号码theme{theme:{light:min-light,dark:min-dark}}signal-cli-a号码register如果需要验证码打开https://signalcaptchas.org/registration/generate.html。完成验证码从“Open Signal”中复制signalcaptcha://...链接目标。尽可能在与浏览器会话相同的外部 IP 下运行命令。立即再次运行注册验证码令牌过期很快theme{theme:{light:min-light,dark:min-dark}}signal-cli-a号码register--captcha验证码链接signal-cli-a号码verify短信验证码配置 OpenClaw重启网关验证通道theme{theme:{light:min-light,dark:min-dark}}# 如果你将网关作为用户 systemd 服务运行systemctl--userrestart openclaw-gateway# 然后验证openclaw doctor openclaw channels status--probe配对私信发送者向机器人号码发送任意消息。在服务器上批准配对码openclaw pairing approve signal 配对码。将机器人号码保存为手机联系人以避免显示“未知联系人”。重要提示使用signal-cli注册电话号码账户可能会使该号码的主 Signal 应用会话失效。推荐使用专用机器人号码或者如果需要保留现有手机应用设置请使用二维码链接模式。上游参考signal-cliREADMEhttps://github.com/AsamK/signal-cli验证码流程https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha链接流程https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)External daemon mode (httpUrl)如果你想自己管理signal-cli例如慢 JVM 冷启动、容器初始化或共享 CPU可以单独运行守护进程并让 OpenClaw 指向它theme{theme:{light:min-light,dark:min-dark}} { channels: { signal: { httpUrl: http://127.0.0.1:8080, autoStart: false, }, }, }这将跳过自动派生进程以及 OpenClaw 内部的启动等待。对于自动派生时启动较慢的情况可以设置channels.signal.startupTimeoutMs。Access control (DMs groups)私信默认channels.signal.dmPolicy pairing。未知发送者会收到一个配对码消息会被忽略直到批准配对码 1 小时后过期。批准方式openclaw pairing list signalopenclaw pairing approve signal 配对码配对是 Signal 私信的默认令牌交换机制。详情Pairing仅 UUID 的发送者来自sourceUuid在channels.signal.allowFrom中存储为uuid:。群组channels.signal.groupPolicy open | allowlist | disabled。当设置为allowlist时channels.signal.groupAllowFrom控制谁可以在群组中触发机器人。channels.signal.groups[群组ID | *]可以通过requireMention、tools和toolsBySender覆盖群组行为。在多账户设置中使用channels.signal.accounts.账户名.groups进行每个账户的覆盖。运行时注意如果完全缺少channels.signal运行时在群组检查时会回退到groupPolicyallowlist即使设置了channels.defaults.groupPolicy。How it works (behavior)signal-cli作为守护进程运行网关通过 SSE 读取事件。入站消息被标准化为共享通道信封格式。回复总是路由回相同的号码或群组。Media limits出站文本被分块块大小为channels.signal.textChunkLimit默认 4000。可选换行分块设置channels.signal.chunkModenewline在长度分块之前按空行段落边界分割。支持附件从signal-cli获取 base64 数据。默认媒体大小限制channels.signal.mediaMaxMb默认 8 MB。使用channels.signal.ignoreAttachments跳过下载媒体。群组历史上下文使用channels.signal.historyLimit或channels.signal.accounts.*.historyLimit回退到messages.groupChat.historyLimit。设置为0禁用默认 50。Typing read receipts打字指示器OpenClaw 通过signal-cli sendTyping发送打字信号并在回复运行期间刷新。已读回执当channels.signal.sendReadReceipts为 true 时OpenClaw 会为允许的私信转发已读回执。Signal-cli 不暴露群组的已读回执。Reactions (message tool)使用message actionreactchannelsignal。目标发送者 E.164 或 UUID使用配对输出中的uuid:裸 UUID 也可用。messageId是你正在回复的消息的 Signal 时间戳。群组回复需要targetAuthor或targetAuthorUuid。示例message actionreact channelsignal targetuuid:123e4567-e89b-12d3-a456-426614174000 messageId1737630212345 emoji message actionreact channelsignal target15551234567 messageId1737630212345 emoji removetrue message actionreact channelsignal targetsignal:group:群组ID targetAuthoruuid:作者UUID messageId1737630212345 emoji✅配置channels.signal.actions.reactions启用/禁用回复操作默认 true。channels.signal.reactionLeveloff | ack | minimal | extensive。off/ack禁用代理回复消息工具react会报错。minimal/extensive启用代理回复并设置指导级别。每个账户的覆盖channels.signal.accounts..actions.reactions、channels.signal.accounts..reactionLevel。Delivery targets (CLI/cron)私信signal:15551234567或裸 E.164。UUID 私信uuid:UUID或裸 UUID。群组signal:group:群组ID。用户名username:用户名如果你的 Signal 账户支持。Troubleshooting首先执行以下排查步骤theme{theme:{light:min-light,dark:min-dark}}openclaw status openclaw gateway status openclaw logs--followopenclaw doctor openclaw channels status--probe如果需要确认私信配对状态theme{theme:{light:min-light,dark:min-dark}}openclaw pairing list signal常见故障守护进程可达但无回复检查账户/守护进程设置httpUrl、account和接收模式。私信被忽略发送者处于待配对批准状态。群组消息被忽略群组发送者/提及门控阻止了消息传递。编辑后配置验证错误运行openclaw doctor --fix。诊断中缺少 Signal确认channels.signal.enabled: true。额外检查theme{theme:{light:min-light,dark:min-dark}}openclaw pairing list signal pgrep-afsignal-cligrep-isignal/tmp/openclaw/openclaw-$(date%Y-%m-%d).log|tail-20排查流程参考/channels/troubleshooting。Security notessignal-cli在本地存储账户密钥通常在~/.local/share/signal-cli/data/。在服务器迁移或重建之前备份 Signal 账户状态。除非你明确需要更广泛的私信访问权限否则请保持channels.signal.dmPolicy: pairing。短信验证仅在注册或恢复流程中需要但丢失号码/账户的控制权可能会使重新注册复杂化。Configuration reference (Signal)完整配置Configuration提供者选项channels.signal.enabled启用/禁用通道启动。channels.signal.account机器人账户的 E.164 号码。channels.signal.cliPathsignal-cli的路径。channels.signal.httpUrl完整的守护进程 URL覆盖主机/端口。channels.signal.httpHost、channels.signal.httpPort守护进程绑定地址默认 127.0.0.1:8080。channels.signal.autoStart自动派生守护进程如果未设置httpUrl默认为 true。channels.signal.startupTimeoutMs启动等待超时时间毫秒上限 120000。channels.signal.receiveModeon-start | manual。channels.signal.ignoreAttachments跳过附件下载。channels.signal.ignoreStories忽略来自守护进程的故事消息。channels.signal.sendReadReceipts转发已读回执。channels.signal.dmPolicypairing | allowlist | open | disabled默认pairing。channels.signal.allowFrom私信允许列表E.164 或uuid:。open需要*。Signal 没有用户名使用电话号码/UUID ID。channels.signal.groupPolicyopen | allowlist | disabled默认allowlist。channels.signal.groupAllowFrom群组发送者允许列表。channels.signal.groups以 Signal 群组 ID或*为键的每个群组覆盖设置。支持的字段requireMention、tools、toolsBySender。channels.signal.accounts..groups多账户设置中每个账户的channels.signal.groups版本。channels.signal.historyLimit作为上下文包含的最大群组消息数0 禁用。channels.signal.dmHistoryLimit用户轮次中的私信历史限制。每个用户的覆盖channels.signal.dms[号码].historyLimit。channels.signal.textChunkLimit出站分块大小字符数。channels.signal.chunkModelength默认或newline在长度分块之前按空行段落边界分割。channels.signal.mediaMaxMb入站/出站媒体大小上限MB。相关全局选项agents.list[].groupChat.mentionPatternsSignal 不支持原生提及。messages.groupChat.mentionPatterns全局回退。messages.responsePrefix。

更多文章