社交渠道
广播/社交动态集成。与聊天频道不同,这类集成有两个特点:消息通常是公开的,且代理通常充当发布者,而非双向响应者。
构建说明: 精简版默认构建不包含社交渠道。如需使用,请使用
--features channels-full(包含所有渠道)或特定的功能标志(例如--features channel-twitter)进行构建。预构建的二进制文件默认不包含这些渠道。完整的构建选项表请参阅 Channels → Overview。
Twitch
Twitch 聊天是基于 IRC 的轻量适配器。使用 --features channel-twitch 构建,或通过 --features channels-full 将其包含在内;精简的默认构建不包含它。
在 Twitch 别名下配置 enabled、bot_username、oauth_token 以及要加入的频道。mention_only 为可选项,默认为 false。最小实例如下:
[channels.twitch.default]
enabled = true
bot_username = "zeroclaw_bot"
oauth_token = "replace-with-twitch-token"
channels = ["zeroclaw_channel"]
mention_only = true
[peer_groups.twitch_default]
channel = "twitch.default"
external_peers = ["zeroclaw_user"]
- **身份验证:**使用机器人账户的 Twitch 用户访问令牌,并授予
chat:read和chat:edit权限。配置 Twitch CLI 后,以该账户登录并运行twitch token -u -s 'chat:read chat:edit'生成令牌,然后通过受保护的配置入口存储该令牌。如果省略所需的oauth:前缀,ZeroClaw 会去除该值的首尾空白并添加此前缀。 - 频道:
channels中的条目可以包含开头的#;如果缺少,ZeroClaw 会添加它,并将频道名称规范化为小写。 - **入站和出站:**频道消息会在同一频道中回复。
mention_only = true会忽略未提及bot_username的频道消息。如果 Twitch 将非频道 IRCPRIVMSG发送到机器人登录名,ZeroClaw 会回复该发送者;适配器不会配置单独的私信传输。 - **格式:**Twitch 回复使用纯文本,并会拆分以适应 IRC 帧。Markdown 格式不会保留。
- **速率限制:**该适配器会直接写入 IRC
PRIVMSG帧,并且没有 Twitch 专用的速率限制器或 HTTP429退避机制。请将代理的发帖频率控制在 Twitch Chat 的限制范围内,并在源头对突发式工作流进行限流。
Bluesky(AT 协议)
- 认证: Bluesky 应用密码(不是你的真实密码)。在设置中创建一个。
- 出站: 300 字符的帖子;更长的回复会自动分段。
- 协议: 通过
atrium-apicrate 实现的 AT 协议。
Nostr
入站发送方会根据为绑定代理解析出的对等集合进行限制,该集合来自代理所属的 peer_groups 配置。匹配时会去除开头的 @,并对通道的原生发送方标识符执行不区分大小写的比对。空集合会拒绝所有人;包含 "*" 的集合会接受所有人;否则仅接受列出的外部对等方(以及对等代理)。这与网关配对(gateway.require_pairing)不同,后者验证的是 HTTP/WebSocket 客户端,而非聊天通道的发送方。
nostr 的对等组将 channel 设置为 nostr,在 external_peers 中列出允许的发送者(对于 nostr,是发送者的十六进制公钥;["*"] 表示接受任何人),可选地为跨代理调度命名对等 agents,一个 ignore 阻止列表,以及一个 output_modality(mirror、voice 或 text)。字段参考请参阅 Peer Groups。
在何处设置:
- 身份验证: 原始私钥(
nsecbech32 或十六进制格式)。 - 入站消息: kind-1(文本)、kind-4(DM,NIP-04)和 kind-1059(礼品包装,NIP-17)。
- 出站: 相同类型。Zap 处理功能处于实验阶段。
- 中继: 代理会连接到所有列出的中继;使用 3–5 个以确保可靠性。如果省略
relays,ZeroClaw 将连接到一组内置的常用公共中继。
Twitter / X
入站发送方会根据为绑定代理解析出的对等集合进行限制,该集合来自代理所属的 peer_groups 配置。匹配时会去除开头的 @,并对通道的原生发送方标识符执行不区分大小写的比对。空集合会拒绝所有人;包含 "*" 的集合会接受所有人;否则仅接受列出的外部对等方(以及对等代理)。这与网关配对(gateway.require_pairing)不同,后者验证的是 HTTP/WebSocket 客户端,而非聊天通道的发送方。
twitter 的 peer group 将 channel 设置为 twitter,在 external_peers 中列出允许的发送者(对于 twitter,即 Twitter/X 的 @username;["*"] 接受任何人),可选地为跨 agent 分发命名 peer agents、设置 ignore 屏蔽列表,以及 output_modality(mirror、voice 或 text)。字段参考请参见 Peer Groups。
在何处设置:
- 鉴权: 仅支持 Twitter API v2 OAuth 2.0 Bearer Token。
- 入站: 通过 Filtered Stream 端点提及。
- **出站:**帖子、回复、主题。
- 注意: 免费层的速率限制非常严格,几乎无法正常使用。请据此规划预算。
- 认证: 采用带刷新令牌的 OAuth 2.0。可使用 script 类型的 Reddit 应用,通过
password或code流程生成令牌。 - 入站: 配置的 subreddit 中的新帖子和评论(当
subreddits为空时,则为机器人有权访问的所有 subreddit),以及对该代理自己帖子的回复。 - **出站:**帖子、评论、私信。
安全地运营社交媒体渠道
公共社交网络上的机器人会吸引对抗性输入。两个预防措施:
- 限制 agent 将响应的对象。 使用对等组(每个通道,见上文)来控制入站发送者:空对等集会拒绝所有人,
["*"]则接受任何人。Bluesky 没有对等组发送者字段;请改为在自治/工具层进行控制。 - 将自主级别保持在
Supervised或更低。 处于Full自主级别的面向公众的代理实际上等同于一个公开的 shell。对于面向公众的通道,应在全局工具策略配置中限制工具范围,而不要期望使用每通道的tools_allow(不存在这样的每通道字段)。
速率限制
不同频道的速率限制处理方式有所不同。Twitch 直接写入 IRC PRIVMSG 帧,且没有适配器专用的限流器。如果持续触发速率限制,请从源头降低代理的发布频率,而不要依赖按频道配置的流式传输参数(这些频道都不提供草稿更新间隔,其架构有意保持最小化)。