vercel/chat

Universal chat layer for building bots and agents.

概述

Chat SDK 是 Vercel 提供的 TypeScript 库,允许开发者编写一个 bot 实现,并在多个聊天平台(Slack、Microsoft Teams、Google Chat、Discord、Telegram、GitHub、Linear、WhatsApp 等)上运行。核心包(chat)提供 bot 运行时,而独立的 adapter 包将通用 SDK 调用转换为各平台的 API。

核心概念

概念 含义 重要性
统一的机器人逻辑 你创建一个 Chat 实例,注册事件处理器(提及、消息、按钮点击等),SDK 会将来自任何连接平台的事件路由到对应处理逻辑。 一次编写,随处部署;减少在 Slack、Teams 等平台上的代码重复。
适配器 小型 npm 包(@chat-adapter/slack、@chat-adapter/teams 等),实现平台特定的 Webhook 处理和 API 调用。 通过安装/卸载对应适配器,可轻松添加或移除平台。
状态管理 SDK 默认无状态;你可以插入一个状态存储(例如通过 @chat-adapter/state-redis 使用 Redis)。 持久化会话上下文、用户偏好或任何自定义数据。
AI 流式传输 内置对 LLM 响应流式传输的支持,返回给聊天客户端(Slack 流式、Telegram 草稿预览等)。 当 bot 由语言模型驱动时,提供“正在输入…”的响应式体验。
富 UI JSX 基础的 卡片、模态框、斜杠命令、表情符号、文件上传和临时消息等,在各平台间抽象化。 无需学习每个平台的 UI 规范,即可构建交互式体验。
并发控制 处理同一线程中多个消息到达的辅助工具(突发、队列、防抖、丢弃)。 防止竞态条件和重复回复。

典型工作流程

  1. 创建项目 – npx create-chat-sdk@latest my-bot 生成一个包含可立即使用的 Chat 配置、Webhook 路由和示例 .env 的 Next.js 应用。
  2. 添加适配器 – npm i @chat-adapter/slack @chat-adapter/teams(或其他需要的适配器)。
  3. 编写机器人逻辑 – 导入 Chat,实例化,附加处理器如 bot.onNewMention 或 bot.onSubscribedMessage。
  4. 部署 – 将 Next.js 应用部署到 Vercel(或任何 Node 主机)。适配器暴露 HTTP 端点,Vercel 的无服务器函数可接收来自聊天平台的请求。
  5. 可选 AI 集成 – 安装 LLM(OpenAI、Claude 等),使用流式功能在生成过程中发送部分回复。

示例代码(来自 README)

import { Chat } from "chat";
import { createSlackAdapter } from "@chat-adapter/slack";
import { createRedisState } from "@chat-adapter/state-redis";

const bot = new Chat({
  userName: "mybot",
  adapters: { slack: createSlackAdapter() },
  state: createRedisState(),
});

bot.onNewMention(async (thread) => {
  await thread.subscribe();
  await thread.post("Hello! I'm listening to this thread.");
});

bot.onSubscribedMessage(async (thread, message) => {
  await thread.post(`You said: ${message.text}`);
});

一旦添加了对应适配器,相同的 bot 对象即可在 Teams、Discord 等平台上响应。

生态系统与可扩展性

  • 适配器目录(@chat-adapter/catalog) – 一个无依赖的已发布适配器列表,包含其功能和所需环境变量。适用于工具、CLI 或 UI 向导。
  • AI 编码代理技能 – Vercel 专用插件(npx skills add vercel/chat),教会 AI 助手(如 OpenAI Codex)SDK 的 API 表面,使其能自动生成或修改 bot 代码。
  • Vercel 插件 – 将 Chat SDK 技能与其他代理工具捆绑,便于在 Vercel 项目中添加 AI 辅助开发。

谁会使用它?

  • 需要在多个内部聊天工具上部署支持机器人,但不想维护多个代码库的产品团队。
  • 构建 AI 驱动的助手(如代码审查、知识库)的开发者,希望其可通过 Slack、Teams 或 Discord 访问。
  • 为拥有异构通信栈的客户交付聊天机器人解决方案的顾问。

文档与支持


以上所有信息均直接取自仓库的 README。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目