> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/channels.md).

# 消息渠道

OpenHuman 与你交流的消息平台：传入智能体循环的入站分发、传出的回复和主动送达，以及按渠道划分的凭据。

一个 **频道** 是 OpenHuman 用来进行消息交流的平台 *回复你* 给你。这是一个……的镜像 [集成](/openhuman/zh/gong-neng/integrations.md)：集成主要是智能体 *读取的来源* (你的收件箱、日历、CRM），而频道是双向对话界面。你在自己已经在用的平台上向智能体发消息，智能体也在那里回复。

在底层，每个频道都实现一个小型 Rust 契约（一个 `发送` 用于外发消息的路径，以及一个 `监听` 用于入站消息的路径），因此同一个智能体循环就能服务 Telegram、Discord、内置网页聊天以及十几种其他渠道，而核心中无需按平台分支。

***

## 频道的作用

每个频道做两件事：

* **入站**：当消息到达时，频道会将其规范化为一个 `ChannelMessage` （发送者、回复目标、内容、可选线程 ID），并将其交给调度循环。调度会启动或恢复一次智能体运行，限定其工具范围，然后由智能体处理请求。一些平台支持 `/models` 和 `/model` 命令来为该发送者的会话切换模型；Telegram 还额外支持远程控制命令。
* **出站**：智能体的回复会通过同一频道发送回你的 `reply_target`，如果平台支持则会以线程形式发送。频道还可以 **主动地** （没有可回复的入站消息）当由 [触发器](/openhuman/zh/gong-neng/integrations/triggers.md) 或 cron 作业触发时。只有当频道声明了默认投递目标时，才会接收主动发送；没有默认目标的频道会被跳过，而不是发送到空收件人。

支持该功能的频道可以显示正在输入指示，流式传输渐进式 **草稿更新**，发布 **线程回复**，并添加 **表情反应**。能力是按频道声明的，而不是默认假定的。

***

## 支持的频道

OpenHuman 提供 **15 个频道提供方模块**：默认内置 14 个，另外还有位于 `whatsapp-web` Cargo 功能开关之后的 WhatsApp Web。除此之外，应用内的 **Web** 聊天是内置在桌面应用中的，而不是作为提供方模块；另外还有单独的 `cli` 频道用于 `openhuman-core` 终端二进制程序。设置界面中显示了七个频道；其余频道通过 `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` |
| **WhatsApp**    | 双向     | Meta Cloud webhook    | 你自己的访问令牌                                      | `config.toml` |
| **IRC**         | 双向     | 持久连接 socket           | 你自己的服务器/昵称                                    | `config.toml` |
| **信号**          | 双向     | signal-cli REST 事件    | 你自己已绑定的 signal-cli 账号                         | `config.toml` |
| **Mattermost**  | 双向     | WebSocket             | 你自己的机器人令牌                                     | `config.toml` |
| **QQ**          | 双向     | WebSocket             | 你自己的机器人凭据                                     | `config.toml` |
| **Linq**        | 双向（短信） | 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` allowlist 是入站安全门。请明确设置为你信任的地址。（在 `config.toml` 这里，空列表表示全部拒绝，但 Connections 界面会将空字段默认为 `["*"]`，这会允许 **任何** 发送者。所以如果不想让陌生人通过电子邮件唤起你的智能体，就不要留空。）

***

## 凭据模式

频道认证有几种方式：

* **通过 OpenHuman 连接（托管）**：通过 OpenHuman 后端中转的一键式加密连接。目前这适用于 Telegram（直接给托管机器人发消息）和 Discord（绑定你的账号或通过 OAuth 安装）。你的机器上不会保存任何令牌。
* **你自己的凭据**：你提供机器人令牌、API 密钥/密钥对，或应用凭据。Telegram（BotFather 令牌）、Discord（机器人令牌）、Slack、WhatsApp、Lark/飞书、钉钉、元宝、Signal、Mattermost、QQ、Linq、IRC 和 Email 都支持这种方式。控制权最大；平台账号、速率限制以及任何 webhook 端点都由你自己负责。
* **本地，无需凭据**： **Web** 聊天和 **iMessage** 完全不需要任何令牌。Web 在桌面应用内运行；iMessage 通过 AppleScript 桥接驱动本地 macOS 信息应用（需要授予完整磁盘访问权限）。两者都会把消息保留在你的机器上。

为任何模式提供的密钥都会通过 OpenHuman 的凭据层存储，并在静态时由 [加密层](/openhuman/zh/gong-neng/privacy-and-security.md)保护。它们绝不会以 `config.toml` 明文写入 UI 管理的频道。

***

## 在哪里连接频道

频道在以下位置设置： **Connections → Channels** 在左侧边栏中 — **不能** 位于 Settings 下，而不是任何“Automation & Channels”菜单下（实际上并不存在这样的菜单）。打开该标签页，选择一个平台卡片，并按照其设置卡操作：

* **Discord** — 选择 *通过 OpenHuman 连接* （绑定你的账号或通过 OAuth 安装机器人），或者粘贴你自己的 Discord 机器人令牌。
* **Telegram** — 给托管的 OpenHuman 机器人发消息以进行绑定，或者粘贴 BotFather 机器人令牌。

Slack 是以一个 **应用** 位于 **Connections → OAuth** （Composio），这样智能体就能在 Slack 中读取并执行操作；它并不是在 Channels 标签页中设置为回复型频道。

***

## 选择默认频道

打开 **Connections → Channels** 以选择哪个频道作为 **活动路由**：OpenHuman 用于主动、无收件人投递（cron、触发器）的那个。默认是应用内的 **Web** 聊天，直到你更改为止。设置新的默认值会立即生效，无需重启频道运行时，面板也会显示当前活动的是哪个频道。入站消息始终会在其到达的频道上得到回复，而不受默认路由影响。

***

## 另请参见

* [集成](/openhuman/zh/gong-neng/integrations.md)：智能体从中拉取上下文的读取侧目录。
* [触发器](/openhuman/zh/gong-neng/integrations/triggers.md)：触发主动频道投递的实时事件。
* [隐私与安全](/openhuman/zh/gong-neng/privacy-and-security.md)：凭据存放位置以及后端边界。
* [操作系统密钥环与秘密存储](/openhuman/zh/gong-neng/privacy-and-security/os-keyring-and-secret-storage.md)：频道密钥的静态保护。
