CopilotKit Channels
为应用内 copilot 提供支持的同一个 Mastra Agent,也可以作为机器人运行在消息平台中。CopilotKit 的 Channels SDK 可将你的 Agent 连接到 Slack 和其他消息平台,并在频道中原生处理线程、Tool 调用、富交互消息和人在回路审批。
完整的平台设置请参阅 CopilotKit Channels 文档。本页介绍 Channels 如何与 Mastra Agent 协同工作。
工作原理工作原理的直接链接
你的 Mastra Agent 仍运行在原有部署位置,并通过 registerCopilotKit() 以 AG-UI 协议对外提供服务(参阅 CopilotKit 概览)。Channel 是一个使用 @copilotkit/channels 构建的独立长时运行进程:你可以为其接入一个或多个平台适配器,并将 Channel 指向你的 Agent。createChannel 接收适配器数组,因此单个进程可以同时服务多个平台。
安装包含所有适配器的完整 SDK:
- npm
- pnpm
- Yarn
- Bun
npm install @copilotkit/channels
pnpm add @copilotkit/channels
yarn add @copilotkit/channels
bun add @copilotkit/channels
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);如果平台没有对应功能,交互式卡片也能优雅降级。
SlackSlack的直接链接
Slack 快速入门会带你从零开始构建一个可以在频道中通过 @ 提及的机器人,然后添加交互式按钮卡片。Slack 通过 Socket Mode 运行,它会向 Slack 建立出站 WebSocket 连接,因此开发期间不需要公共 URL 或隧道。
在环境中设置 Slack 凭证:
SLACK_BOT_TOKEN:Bot User OAuth token(xoxb-...)SLACK_APP_TOKEN:具有connections:writescope 的应用级 token(xapp-...)
其他平台其他平台的直接链接
Channels SDK 并不局限于 Slack。Microsoft Teams 等其他平台也通过同一个 @copilotkit/channels API 运行:将相应适配器添加到 adapters 数组即可,其余 Agent 代码保持不变。当前支持的平台列表及各平台设置方法,请参阅 CopilotKit Channels 文档。
消息管道与架构消息管道与架构的直接链接
托管 Channel 有意将凭证分开管理;当 Mastra Agent 使用独立的模型 Key 和 Tool 时,这一点尤为重要:
- 由你保管 Agent 逻辑、模型凭证、Tool 和 Channel 进程。
- 由 CopilotKit Intelligence 管理平台凭证、消息投递、注册、运行状况和重连。
当用户向应用发送消息时,一个交互轮次就此开始。Intelligence 接收平台事件,再由网关将该轮次交给正在运行的 Channel 进程。Mastra Agent 运行并渲染回复,随后 Intelligence 将回复作为平台原生内容返回。平台凭证始终不会进入 Agent 进程;为满足数据驻留要求,企业版 Intelligence 还可自行托管。
默认情况下,交互操作保存在内存中,重启后会被重置。请为 Channel 配置持久化的操作和状态存储(Redis 或 Postgres),使按钮和各线程状态在重启后仍能保留,并可跨多个实例使用。