ProductReadyProductReady
聊天频道

架构

聊天频道系统的技术架构。

架构

请求流程

┌──────────┐    Webhook     ┌──────────────────────────────┐    insert    ┌─────────────┐
│  平台    │ ──────────────▶│ /api/channels/[provider]/     │ ──────────▶│ agent_tasks  │
│(TG/DC/..)│  + secret      │           webhook             │             │             │
│          │◀──────────────│  验证 → 查找频道 →             │◀────────── │  space =     │
│ ✅ 回复   │   Bot API     │  在默认空间创建任务            │   返回      │  默认空间    │
└──────────┘               └──────────────────────────────┘             └─────────────┘

核心设计

  • 用户级别 — 频道属于用户而非空间,每个频道有 defaultSpaceId 用于创建任务
  • 多态适配器ChannelAdapter 接口包含 verifyregisterWebhookremoveWebhookparseMessagereply。添加新平台 = 一个适配器文件 + 注册到 registry
  • 共享包 — 核心 schema、类型、适配器接口和所有适配器实现在 packages/share-domains/channels/,可跨应用复用
  • Webhook 路由 — 每个频道有唯一的 webhookSecret,平台通过特定 header 发送
  • 始终返回 200 — Webhook 处理器始终返回 200,防止平台重试
  • 凭证仅服务端 — Bot Token 不会在 API 响应中暴露(VO 只返回用户名和状态)

添加新平台

  1. packages/share-domains/channels/schema/chat-channels.tsCHANNEL_PROVIDERS 中添加平台名
  2. 创建 packages/share-domains/channels/logic/adapters/{provider}.ts 实现 ChannelAdapter
  3. packages/share-domains/channels/logic/registry.ts 中注册
  4. 在 UI 组件的 PROVIDER_CONFIG 中添加平台配置
  5. content/docs/{lang}/chat-channels/{provider}.mdx 中添加文档

On this page