> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # CopilotKit Channels 为应用内 copilot 提供支持的同一个 Mastra Agent,也可以作为机器人运行在消息平台中。CopilotKit 的 Channels SDK 可将你的 Agent 连接到 Slack 和其他消息平台,并在频道中原生处理线程、Tool 调用、富交互消息和人在回路审批。 > **信息:** 完整的平台设置请参阅 [CopilotKit Channels 文档](https://docs.copilotkit.ai/slack/mastra)。本页介绍 Channels 如何与 Mastra Agent 协同工作。 ## 工作原理 你的 Mastra Agent 仍运行在原有部署位置,并通过 `registerCopilotKit()` 以 AG-UI 协议对外提供服务(参阅 [CopilotKit 概览](https://mastra.zisheng.pro/guides/build-your-ui/copilotkit/overview))。Channel 是一个使用 `@copilotkit/channels` 构建的独立长时运行进程:你可以为其接入一个或多个平台适配器,并将 Channel 指向你的 Agent。`createChannel` 接收适配器数组,因此单个进程可以同时服务多个平台。 安装包含所有适配器的完整 SDK: **npm**: ```bash npm install @copilotkit/channels ``` **pnpm**: ```bash pnpm add @copilotkit/channels ``` **Yarn**: ```bash yarn add @copilotkit/channels ``` **Bun**: ```bash bun add @copilotkit/channels ``` ```typescript import { createChannel, Message, Section } from '@copilotkit/channels' import { slack } from '@copilotkit/channels/slack' import { mastraAgent } from './agent' // your AG-UI Mastra agent const channel = createChannel({ // Point the channel at your Mastra agent (an AbstractAgent, or a per-thread factory). agent: mastraAgent, adapters: [ slack({ botToken: process.env.SLACK_BOT_TOKEN!, appToken: process.env.SLACK_APP_TOKEN!, }), ], }) channel.onMention(async ({ thread }) => { await thread.runAgent() }) await channel.start() ``` Agent 接收标准 AG-UI 输入并发出标准 AG-UI 事件;平台机制由适配器封装,因此同一个 Mastra Agent 无需修改即可在各个 Channel 中运行。富消息使用 JSX 编写,并渲染为各平台的原生格式(例如 Slack 上的 Block Kit);如果平台没有对应功能,交互式卡片也能优雅降级。 ## Slack [Slack 快速入门](https://docs.copilotkit.ai/slack/mastra)会带你从零开始构建一个可以在频道中通过 `@` 提及的机器人,然后添加交互式按钮卡片。Slack 通过 Socket Mode 运行,它会向 Slack 建立出站 WebSocket 连接,因此开发期间不需要公共 URL 或隧道。 在环境中设置 Slack 凭证: - `SLACK_BOT_TOKEN`:Bot User OAuth token(`xoxb-...`) - `SLACK_APP_TOKEN`:具有 `connections:write` scope 的应用级 token(`xapp-...`) ## 其他平台 Channels SDK 并不局限于 Slack。Microsoft Teams 等其他平台也通过同一个 `@copilotkit/channels` API 运行:将相应适配器添加到 `adapters` 数组即可,其余 Agent 代码保持不变。当前支持的平台列表及各平台设置方法,请参阅 [CopilotKit Channels 文档](https://docs.copilotkit.ai/slack/mastra)。 ## 消息管道与架构 托管 Channel 有意将凭证分开管理;当 Mastra Agent 使用独立的模型 Key 和 Tool 时,这一点尤为重要: - **由你保管** Agent 逻辑、模型凭证、Tool 和 Channel 进程。 - **由 CopilotKit Intelligence 管理**平台凭证、消息投递、注册、运行状况和重连。 当用户向应用发送消息时,一个交互轮次就此开始。Intelligence 接收平台事件,再由网关将该轮次交给正在运行的 Channel 进程。Mastra Agent 运行并渲染回复,随后 Intelligence 将回复作为平台原生内容返回。平台凭证始终不会进入 Agent 进程;为满足数据驻留要求,企业版 Intelligence 还可自行托管。 > **备注:** 默认情况下,交互操作保存在内存中,重启后会被重置。请为 Channel 配置持久化的操作和状态存储(Redis 或 Postgres),使按钮和各线程状态在重启后仍能保留,并可跨多个实例使用。