通道:概述
通道是 agent 进行通信的消息载体。一个 ZeroClaw 实例可以同时绑定多个通道:同一个 agent 无需运行独立的进程,即可在 Discord、Telegram、email 以及通过 REST 网关进行响应。
代理会列出它所响应的通道;有关通道如何附加到代理(以及对等组如何让共享通道上的代理相互寻址),请参阅代理。
通道是 zeroclaw-api 中 Channel trait 的实现。每个通道都在编译时通过特性进行门控,因此最小化构建仅包含你所需的通道。
ZeroClaw 的默认构建包含一个精简的频道包:ACP、webhook、电子邮件、Telegram、Discord 和文件系统。这些涵盖了本地/编辑器会话、网关入口,以及首次运行时常用的外部消息传递,同时无需编译所有捆绑的平台集成。标准分发产物会额外包含 Git、Matrix、Lark 和 WhatsApp Web;Android 产物因目标兼容性要求不包含 WhatsApp Web。对于需要历史上完整频道集合的源码安装,请运行 install.sh --source --preset full,使用 --features channels-full 进行构建,或使用单独的 channel-* 功能进行选择性构建:
sh
./install.sh --source --preset full
cargo build --features channels-full
cargo build --no-default-features --features agent-runtime,gateway,channel-slack
分类
聊天平台
实时消息传递,代理可以保持对话,通过推送或长轮询接收新消息的通知,并以机器人用户的身份进行回复。
| 通道 | 功能标志 | 专用指南 |
|---|---|---|
| Matrix | channel-matrix | Matrix |
| Telegram | channel-telegram | Telegram |
| Discord | channel-discord | Discord |
| Slack | channel-slack | Slack |
| Mattermost | channel-mattermost | Mattermost |
| LINE | channel-line | LINE |
| Nextcloud Talk | channel-nextcloud | Nextcloud Talk |
| Signal | channel-signal | Signal |
| Twitch | channel-twitch | Twitch |
| WhatsApp 云 API | channel-whatsapp-cloud | |
| WhatsApp Web | whatsapp-web | |
| WeCom (Bot Webhook / AI Bot WS) | channel-wecom, channel-wecom-ws | 其他聊天平台 |
| iMessage、WeChat 个人 iLink 机器人、DingTalk、Lark、QQ、IRC、Mochat、Notion | 按通道 | 其他聊天平台 |
社交与广播
一对多或公共提要集成。
| 通道 | 功能标志 | 协议 / 服务 |
|---|---|---|
| Bluesky | channel-bluesky | AT 协议 |
| Nostr | channel-nostr | NIP-01 中继 |
| Twitter / X | channel-twitter | API v2 |
channel-reddit | JSON API |
请参阅 社交渠道。
开发者平台
| 通道 | 功能标志 | 协议 / 服务 |
|---|---|---|
| Git | channel-git | 位于提供商抽象层后的 Git forge(GitHub、Gitea、Forgejo);对 issues、PR、CI 运行和 releases 的 REST 轮询,并按事件路由 |
请参阅 Git。
电子邮件
| 通道 | 功能标志 | 备注 |
|---|---|---|
| IMAP / SMTP | channel-email | 经典的基于轮询的收件箱 |
| Gmail Push | channel-email | Google Pub/Sub 推送通知:实时,无需轮询 |
请参阅 电子邮件。
语音与电话
| 通道 | 功能标志 | 服务 |
|---|---|---|
| ClawdTalk | channel-clawdtalk | Telnyx SIP 实时语音 |
| 语音通话 | channel-voice-call | Twilio / Telnyx / Plivo |
| 语音唤醒 | voice-wake | 本地唤醒词检测 |
| TTS | 始终编译时启用通道支持 | 出站语音合成(OpenAI、ElevenLabs、Google Cloud、Edge、Piper) |
请参阅 语音与电话。
Webhooks 与编程
| 通道 | 功能标志 | 形状 |
|---|---|---|
| Webhook | channel-webhook | 入站 HTTP → 代理 |
| 命令行界面 | 始终开启 | 本地标准输入/标准输出 |
| 网关 REST/WS | gateway(默认启用) | HTTP + WebSocket |
| ACP(代理客户端协议) | channel-acp-server | 基于 stdio 的 JSON-RPC 2.0:编辑器/IDE 会话 |
事件源
将事件输入代理循环或 SOP 引擎的仅输入传输。它们没有外向回复;每一个也是一个 SOP fan-in。
| 通道 | 功能标志 | 形状 |
|---|---|---|
| MQTT | channel-mqtt | Broker 消息 → agent 或 SOP |
| AMQP | channel-amqp | 经纪人交付 → 代理或 SOP |
| Filesystem | channel-filesystem | 路径变更 → agent 或 SOP |
参见 MQTT、AMQP 和 Filesystem。
配置
现代通道实例在 [channels.<type>.<alias>] 下配置,default 是常用的首个别名。可通过任意配置方式进行设置:
密钥(bot 令牌、API 密钥、密码)以加密形式存储;请通过网关、zerocode 或 zeroclaw config set(已掩码)进行设置,切勿使用明文。agent 上的 channels 条目将某个频道别名绑定到该 agent。各频道的字段名称各不相同;zeroclaw config schema 是权威的字段列表。在多个频道中反复出现的字段:
| 键 | 它的作用 |
|---|---|
enabled | 在不删除部分的情况下切换开/关 |
mention_only | 忽略未通过 @ 提及该机器人的消息(聊天平台) |
proxy_url | 单通道代理(http/https/socks5/socks5h);覆盖全局 [proxy] |
excluded_tools | 在此频道回答时对模型隐藏的工具 |
draft_update_interval_ms | 流式编辑频率(默认 500 毫秒) |
approval_timeout_secs | 对 always_ask 工具等待操作员批准的秒数,超时后自动拒绝 |
入站发送方通过对等组进行管控,而非通过每个通道的字段。
模型回退通知
channels.model_fallback_notice 控制同一模型提供方系列内切换到其他模型时的普通回退通知。默认值为 off。跨系列回退通知和安全防护通知在所有模式下都保持原有行为。
| 模式 | 已送达通知 |
|---|---|
off | 这不是普通的同系列模型回退通知 |
redacted | 用于提示回复由备用模型生成的通用通知,不包含提供商或模型标识符 |
detailed | 请求的和实际提供服务的提供商/模型标识符 |
该设置全局适用于所有使用共享通道编排器的通道。请为每个可以接收回复的受众选择模式,包括共享房间和公开通道。detailed 会将路由标识符暴露给这些受众;redacted 则在报告恢复情况时不包含这些标识符。不支持按通道单独覆盖。
该设置不控制网关 Web 聊天、ZeroCode 或 RPC 会话中的回退通知;这些会话使用代理回合路径,并保留其现有的详细通知,其中包含提供方和模型标识符。
通过 ZeroCode Config 或其他受支持的配置编辑器设置模式,或使用:
zeroclaw config set channels.model_fallback_notice redacted
编排器在投递回复时读取当前的实时配置,因此已发布的模式变更可能会影响正在进行中的轮次。仅保存文件不会更新正在运行的守护进程的实时配置。请使用配置生命周期中描述的现有配置发布和重新加载路径;独立 CLI 写入会在下一次加载或重新加载时生效。
这些提示仅会添加到出站投递内容中。已存储的助手历史记录保留的是不含提示的模型响应,因此后续轮次不会将这些投递元数据作为对话内容接收。在添加提示之前,归因必须能够识别出已成功回退到另一个不同模型的情况。同系列、同模型的配置档变更在当前归因记录中仍无法区分。
流媒体功能
通道声明它们支持的流式传输类型:有关能力矩阵以及 supports_draft_updates / supports_multi_message_streaming 的含义,请参阅 Providers → Streaming。
添加频道
实现新通道意味着在 crates/zeroclaw-channels/src/ 中添加一个实现 Channel trait 的文件。规范的参考是任何形态相似的现有通道:基于推送的 discord.rs、基于轮询的 email_channel.rs、基于 HTTP 驱动的 webhook.rs。