Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

社交渠道

广播/社交动态集成。与聊天频道不同,这类集成有两个特点:消息通常是公开的,且代理通常充当发布者,而非双向响应者。

构建说明: 精简版默认构建不包含社交渠道。如需使用,请使用 --features channels-full(包含所有渠道)或特定的功能标志(例如 --features channel-twitter)进行构建。预构建的二进制文件默认不包含这些渠道。完整的构建选项表请参阅 Channels → Overview

Twitch

Twitch 聊天是基于 IRC 的轻量适配器。使用 --features channel-twitch 构建,或通过 --features channels-full 将其包含在内;精简的默认构建不包含它。

在 Twitch 别名下配置 enabledbot_usernameoauth_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:readchat:edit 权限。配置 Twitch CLI 后,以该账户登录并运行 twitch token -u -s 'chat:read chat:edit' 生成令牌,然后通过受保护的配置入口存储该令牌。如果省略所需的 oauth: 前缀,ZeroClaw 会去除该值的首尾空白并添加此前缀。
  • 频道:channels 中的条目可以包含开头的 #;如果缺少,ZeroClaw 会添加它,并将频道名称规范化为小写。
  • **入站和出站:**频道消息会在同一频道中回复。mention_only = true 会忽略未提及 bot_username 的频道消息。如果 Twitch 将非频道 IRC PRIVMSG 发送到机器人登录名,ZeroClaw 会回复该发送者;适配器不会配置单独的私信传输。
  • **格式:**Twitch 回复使用纯文本,并会拆分以适应 IRC 帧。Markdown 格式不会保留。
  • **速率限制:**该适配器会直接写入 IRC PRIVMSG 帧,并且没有 Twitch 专用的速率限制器或 HTTP 429 退避机制。请将代理的发帖频率控制在 Twitch Chat 的限制范围内,并在源头对突发式工作流进行限流。

Bluesky(AT 协议)

  • 认证: Bluesky 应用密码(不是你的真实密码)。在设置中创建一个。
  • 出站: 300 字符的帖子;更长的回复会自动分段。
  • 协议: 通过 atrium-api crate 实现的 AT 协议。

Nostr

入站发送方会根据为绑定代理解析出的对等集合进行限制,该集合来自代理所属的 peer_groups 配置。匹配时会去除开头的 @,并对通道的原生发送方标识符执行不区分大小写的比对。集合会拒绝所有人;包含 "*" 的集合会接受所有人;否则仅接受列出的外部对等方(以及对等代理)。这与网关配对(gateway.require_pairing)不同,后者验证的是 HTTP/WebSocket 客户端,而非聊天通道的发送方。

nostr 的对等组将 channel 设置为 nostr,在 external_peers 中列出允许的发送者(对于 nostr,是发送者的十六进制公钥;["*"] 表示接受任何人),可选地为跨代理调度命名对等 agents,一个 ignore 阻止列表,以及一个 output_modalitymirrorvoicetext)。字段参考请参阅 Peer Groups

在何处设置:

网关仪表板

在 Web 仪表板中打开 /config/peer_groups

zerocode

Config 窗格中的 Peer groups 下。

  • 身份验证: 原始私钥(nsec bech32 或十六进制格式)。
  • 入站消息: 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_modalitymirrorvoicetext)。字段参考请参见 Peer Groups

在何处设置:

网关仪表板

在 Web 仪表板中打开 /config/peer_groups

zerocode

Config 窗格中的 Peer groups 下。

  • 鉴权: 仅支持 Twitter API v2 OAuth 2.0 Bearer Token。
  • 入站: 通过 Filtered Stream 端点提及。
  • **出站:**帖子、回复、主题。
  • 注意: 免费层的速率限制非常严格,几乎无法正常使用。请据此规划预算。

Reddit

  • 认证: 采用带刷新令牌的 OAuth 2.0。可使用 script 类型的 Reddit 应用,通过 passwordcode 流程生成令牌。
  • 入站: 配置的 subreddit 中的新帖子和评论(当 subreddits 为空时,则为机器人有权访问的所有 subreddit),以及对该代理自己帖子的回复。
  • **出站:**帖子、评论、私信。

安全地运营社交媒体渠道

公共社交网络上的机器人会吸引对抗性输入。两个预防措施:

  1. 限制 agent 将响应的对象。 使用对等组(每个通道,见上文)来控制入站发送者:空对等集会拒绝所有人,["*"] 则接受任何人。Bluesky 没有对等组发送者字段;请改为在自治/工具层进行控制。
  2. 将自主级别保持在 Supervised 或更低。 处于 Full 自主级别的面向公众的代理实际上等同于一个公开的 shell。对于面向公众的通道,应在全局工具策略配置中限制工具范围,而不要期望使用每通道的 tools_allow(不存在这样的每通道字段)。

速率限制

不同频道的速率限制处理方式有所不同。Twitch 直接写入 IRC PRIVMSG 帧,且没有适配器专用的限流器。如果持续触发速率限制,请从源头降低代理的发布频率,而不要依赖按频道配置的流式传输参数(这些频道都不提供草稿更新间隔,其架构有意保持最小化)。