Vercel Chat SDK公開ベータ、Slack・Teams・Discord等を単一TypeScriptコードで横断
社内でエージェントを複数のチャット基盤へ載せるたびに、Slack・Discord・GitHub・Linear など API 差分の実装が重なる課題を前提として、メッセージング API の癖をアダプタ層に閉じ込め、アプリ側のハンドラをターゲット切り替えで保つ TypeScript 向けの Chat SDK が公開ベータとしてオープンソース提供に入った。AI SDK でモデル提供者を一本化したのと同型の抽象化として位置づけられ、単一コードベースから Slack、Microsoft Teams、Google Chat、Discord、Telegram、GitHub、Linear へのボット配信を想定する。
主な機能・特徴
- イベントルーティングとアプリロジックはコアの
Chat、接続先ごとの挙動はアダプタが担当。アダプタは環境変数から資格情報を自動検出し、Slack から Discord へ切り替える際はアダプタ差し替えで済む設計。 - ストリーミングはプラットフォームごとにネイティブ経路とフォールバック経路に分かれ、中間編集ごとに Markdown から各基盤向け表現への変換が走るため、Discord や Teams でストリーム完了まで太字用 Markdown がエスケープされずに見える事象を抑える。
Table()やカード・モーダル・ボタンを JSX で一度書き、未対応要素はフォールバック。単一プラットフォーム向けでも、チャンネル名・ユーザー名の正規化、エージェントが平文でメンションした相手への実通知、リンクプレビュー・参照投稿・画像をプロンプトへ取り込む処理、Slack 向け Markdown 変換(ネイティブ追記ストリーミング中も含む)をまとめて扱う。post()に AI SDK のstreamText結果のtextStreamをそのまま渡せる。スレッド購読・分散ロック・KV は Redis/ioredis に加え、本番向けに PostgreSQL の state アダプタ(初回接続で必要テーブル作成、TTL・分散ロック・キーprefix)が利用可能。- WhatsApp アダプタはメッセージ・リアクション・チャンク分割・既読・画像・音声・スタンプ・位置(Google Maps URL)などに対応し、カードは最大3件の返信ボタンへ落とし込み、不可なら整形テキストへフォールバック。
WhatsApp は 24 時間のメッセージングウィンドウがあり、その範囲内での応答に限られる。WhatsApp 用アダプタはメッセージ履歴の取得や編集・削除には未対応。SDK 全体は public beta のため、プラットフォーム別の制約はドキュメントで確認する。
コーディングエージェント向けの導入として npx skills add vercel/chat が案内されている。getting started、アダプタと state の設定、Next.js と Redis の Slack ボット、Nuxt の Discord、Hono の GitHub レビュー bot などのパターンは Chat SDK のドキュメントにまとまっている。