Signal
ZeroClaw 的 Signal 通道与正在运行的 signal-cli HTTP 守护进程通信。Signal 未提供官方机器人 API,因此 ZeroClaw 通过本地 HTTP 连接到 signal-cli,并由 signal-cli 负责管理 Signal 账户、设备密钥和消息传输。
当你已经通过 signal-cli 运行 Signal 账户,或者你可以在 ZeroClaw 旁边运行守护进程时,请使用此通道。如果你只安装了 Signal 桌面端或移动端应用,这本身是不够的;ZeroClaw 需要 HTTP 守护进程端点。
谁可以与代理通信
入站发送方会根据为绑定代理解析出的对等集合进行限制,该集合来自代理所属的 peer_groups 配置。匹配时会去除开头的 @,并对通道的原生发送方标识符执行不区分大小写的比对。空集合会拒绝所有人;包含 "*" 的集合会接受所有人;否则仅接受列出的外部对等方(以及对等代理)。这与网关配对(gateway.require_pairing)不同,后者验证的是 HTTP/WebSocket 客户端,而非聊天通道的发送方。
signal 的对等组将 channel 设置为 signal,在 external_peers 中列出允许的发送者(对于 signal,是 E.164 电话号码或 signal-cli 源标识符;["*"] 接受任何人),可选地为跨代理调度命名对等 agents,一个 ignore 屏蔽列表,以及一个 output_modality(mirror、voice 或 text)。字段参考请参阅 Peer Groups。
在何处设置:
你还可以在频道级别收窄流量:dm_only = true 会忽略群组;group_ids = ["<signal-group-id>"] 仅接受列出的群组,同时仍接受私信;ignore_attachments 和 ignore_stories 会在这些消息类型到达代理之前将其丢弃。
前置条件
- 在
signal-cli中已关联或注册的 Signal 账户。 - 一个正在运行的
signal-cliHTTP 守护进程,例如signal-cli daemon --http 127.0.0.1:8686。 - 启用
channel-signal功能的 ZeroClaw 构建。
除非你已将守护进程置于自己经过身份验证的网络边界之后,否则请将其绑定到 localhost。该守护进程能够以关联的 Signal 账户身份收发消息。
配置通道
account*
signal-cli 账户的 E.164 电话号码(例如 “+1234567890”)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.account 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.account 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.account <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__account=
approval_timeout_secs
对 always_ask 工具等待操作员批准的秒数,超时后自动拒绝。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.approval_timeout_secs 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.approval_timeout_secs 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.approval_timeout_secs <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__approval_timeout_secs=
dm_only
为 true 时,仅接受直接消息并忽略所有群组流量。与 group_ids 互斥(设置此项时将忽略 group_ids)。从旧版 group_id = "dm" 标记迁移而来。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.dm_only 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.dm_only 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.dm_only <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__dm_only=
excluded_tools
从此通道的工具规范中排除的工具。设置后,通过此通道响应时不会向模型公开这些工具。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.excluded_tools 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.excluded_tools 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.excluded_tools <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__excluded_tools=
group_ids
用于筛选消息的群组 ID。留空 = 接受所有消息(私聊和群组)。当非空时,仅接受来自所列群组的消息(私聊仍会被接受,除非 dm_only 将策略切换为仅私聊)。从旧版单数字段 group_id 迁移而来。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.group_ids 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.group_ids 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.group_ids <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__group_ids=
http_url*
signal-cli HTTP 守护进程的基础 URL(例如 "http://127.0.0.1:8686")。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.http_url 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.http_url 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.http_url <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__http_url=
ignore_attachments
跳过仅包含附件(无正文)的消息。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.ignore_attachments 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.ignore_attachments 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.ignore_attachments <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__ignore_attachments=
ignore_stories
跳过传入的快拍消息。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.ignore_stories 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.ignore_stories 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.ignore_stories <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__ignore_stories=
proxy_url
每个通道的代理 URL(http、https、socks5、socks5h)。仅为此通道覆盖全局 [proxy] 设置。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.proxy_url 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.proxy_url 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.proxy_url <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__proxy_url=
reply_min_interval_secs
每个(通道,接收方)出站节流下限(秒)。范围:0..=REPLY_MIN_INTERVAL_MAX_SECS(0 表示禁用)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.reply_min_interval_secs 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.reply_min_interval_secs 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.reply_min_interval_secs <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__reply_min_interval_secs=
reply_queue_depth_max
每个(channel, recipient)出站节流队列的深度。取值范围:0..=REPLY_QUEUE_DEPTH_CEILING。当 reply_min_interval_secs > 0 且此值为 0 时,节流封装器会使用 DEFAULT_REPLY_QUEUE_DEPTH(16)作为替代值。当队列已满时,最新的发送会被丢弃,并记录一条 WARN 日志。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/signal 并设置 channels.signal.<alias>.reply_queue_depth_max 字段。
zerocode
在 Config 窗格中,设置 channels.signal.<alias>.reply_queue_depth_max 字段。
zeroclaw config
zeroclaw config set channels.signal.<alias>.reply_queue_depth_max <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__signal__<alias>__reply_queue_depth_max=
通过该 agent 的 channels 列表将通道绑定到该 agent。
启动并检查
首先启动守护进程,然后启动 ZeroClaw 通道:
sh
signal-cli daemon --http 127.0.0.1:8686
zeroclaw channel start
使用 zeroclaw channel doctor 确认 ZeroClaw 能够加载已配置的通道。如果通道在运行时失败,请检查 http_url 是否指向守护进程、账户是否已在 signal-cli 中注册,以及构建是否包含 channel-signal。
常见困惑
signal-cli 项目主要以 CLI 工具而广为人知,但 ZeroClaw 需要使用其 HTTP 守护进程模式。如果你只安装了命令行二进制文件而从未启动守护进程,那么 ZeroClaw 将无法连接到任何服务。