消息渠道
OpenHuman 与你对话所使用的消息平台:传入消息进入智能体循环,发出回复和主动投递,以及每个渠道的凭据。
一个 频道 是 OpenHuman 用来……的消息平台 向你反馈 发送给你。这是一个……的镜像 集成:集成主要是代理……的数据源 从中读取 (你的收件箱、日历、CRM),而频道是一个双向对话界面。你在自己已经在用的平台上给代理发消息,代理也会在那里回复。
在底层,每个频道都实现一个小型 Rust 合约(一个 发送 用于外发消息的路径,以及一个 监听 用于入站消息的路径),因此同一个代理循环就能服务 Telegram、Discord、内置网页聊天以及十多个其他平台,而无需在核心中按平台分支。
频道的作用
每个频道做两件事:
入站:当消息到达时,频道会将其标准化为一个
ChannelMessage(发送者、回复目标、内容、可选线程 ID),并将其交给分发循环。分发会启动或恢复一次代理运行,为其限定工具范围,代理处理该请求。某些平台支持一个/models以及/model命令,用于切换该发送者会话所使用的模型;Telegram 还额外支持远程控制命令。
支持该功能的频道可以显示正在输入指示器,流式发送渐进式 草稿更新,发布 线程回复,并添加 表情反应。能力是按频道声明的,而不是默认假定的。
支持的频道
OpenHuman 提供 18 个频道提供器模块 (默认构建 16 个,另有 2 个隐藏在 Cargo 功能标志后面),其中 17 个是真实消息平台。剩下的那个 presentation,是网页聊天的内部响应渲染辅助工具,不是你要连接的平台。另一个独立的 cli 频道用于 openhuman-core 终端二进制程序。设置界面中显示了 7 个频道;其余的通过 config.toml.
Telegram
双向
Bot API 长轮询
通过 OpenHuman 连接(托管私信) 或 你自己的 BotFather 令牌
是
Discord
双向
网关
你自己的机器人令牌、OAuth 安装、 或 托管账号链接
是
Web
双向
应用内
内置,无需设置(本地)
是
iMessage
双向
macOS 信息(AppleScript)
仅本地,无需凭据(需要完全磁盘访问权限)
是
Lark / 飞书
双向
WebSocket 或 webhook
你自己的 app id + secret
是
钉钉
双向
流式模式 WebSocket
你自己的 client id + secret
是
元宝(Yuanbao)
双向
WebSocket
你自己的 AppID + AppSecret
是
Slack
双向
事件/socket
你自己的机器人令牌
config.toml
双向
Meta Cloud webhook
你自己的访问令牌
config.toml
IRC
双向
持久 socket
你自己的服务器/昵称
config.toml
信号
双向
signal-cli REST 事件
你自己已链接的 signal-cli 账号
config.toml
Mattermost
双向
WebSocket
你自己的机器人令牌
config.toml
双向
WebSocket
你自己的机器人凭据
config.toml
Linq
双向(SMS)
Webhook
你自己的 API 令牌
config.toml
电子邮件
双向
IMAP IDLE + SMTP
你自己的邮箱凭据
config.toml
WhatsApp 还有一个实验性的点对点变体,位于 whatsapp-web 功能标志之后。标记为“webhook”的频道会保持长连接在线,但通过 HTTP 推送接收入站消息,因此需要在提供方一侧配置一个可访问的 HTTPS 端点。
Telegram 是功能最完整的频道。它支持正在输入指示器和实时草稿更新,目前也是唯一接入按频道审批界面的频道,因此 提示级别的工具调用可以直接内联回复,而不是暂挂。Discord 添加了原生线程回复;Lark 也支持线程。Web 支持富文本,并且完全本地运行。
电子邮件值得特别一提:它是一个完全 原生、自托管的连接器,不经过任何第三方中介。入站邮件通过 IMAP 到达,并使用 IMAP IDLE 推送(新邮件在几秒内到达代理,连接会按照 RFC 约每 29 分钟刷新一次),回复则通过 SMTP 发出,完整支持附件/多部分消息,使用你在所配置任意服务商上的自己的地址发送。 allowed_senders 允许名单是入站安全闸门。请明确设置为你信任的地址。(在 config.toml 空列表表示全部拒绝,但 Connections 界面会将空字段默认设为 ["*"],这会允许 任何 发送者。因此,如果不希望陌生人通过电子邮件向你的代理发起提示,就不要把它留空。)
凭据模式
频道通过以下几种方式之一进行认证:
通过 OpenHuman 连接(托管):通过 OpenHuman 后端中介的一键式加密连接。目前这适用于 Telegram(直接向托管机器人发消息)和 Discord(链接你的账号或通过 OAuth 安装)。你的机器上不会保存任何令牌。
你自己的凭据:你提供机器人令牌、API 密钥/密钥对,或应用凭据。Telegram(BotFather 令牌)、Discord(机器人令牌)、Slack、WhatsApp、Lark/飞书、钉钉、元宝、Matrix、Signal、Mattermost、QQ、Linq、IRC 和 Email 都支持这种方式。控制权最大;你拥有平台账号、速率限制以及任何 webhook 端点。
本地,无需凭据: Web 聊天和 iMessage 完全不需要任何令牌。Web 在桌面应用内运行;iMessage 通过 AppleScript 桥接驱动本地 macOS 信息应用(需授予完全磁盘访问权限)。两者都会将消息保留在你的机器上。
针对任何模式提供的密钥都会通过 OpenHuman 的凭据层存储,并在静态时由 加密层保护。它们绝不会以明文写入 config.toml 用于由 UI 管理的频道。
在哪里连接频道
频道在以下位置设置: 连接 → 渠道 在左侧边栏中 — 不 在“设置”下,而不是在任何“Automation & Channels”菜单下(并不存在这样的菜单)。打开该选项卡,选择一个平台卡片,并按照其设置说明操作:
Discord — 选择 通过 OpenHuman 连接 (链接你的账号或通过 OAuth 安装机器人),或粘贴你自己的 Discord 机器人令牌。
Telegram — 向托管的 OpenHuman 机器人发送消息进行链接,或粘贴 BotFather 机器人令牌。
Slack 是以一个 应用 下的 Connections → OAuth (Composio),这样代理就能在 Slack 中读取并执行操作;它并未在 Channels 选项卡中设置为双向对话频道。
选择默认频道
打开 连接 → 渠道 来选择哪个频道是 活动路由:即 OpenHuman 用于主动、无收件人投递(cron、触发器、subconscious)的那个。默认值是应用内 Web 聊天,直到你更改它。设置新的默认值会立即生效,无需重启频道运行时,面板会显示当前哪个频道处于活动状态。入站消息始终会在它们到达的频道上得到回复,而不受默认路由影响。
另请参阅
集成:代理从中提取上下文的读取侧目录。
触发器:触发频道主动投递的实时事件。
潜意识循环:可以通过活动频道联系到你的后台循环。
隐私与安全:凭据所在的位置以及后端边界。
操作系统钥匙串与密钥存储:对频道密钥的静态保护。
最后更新于