聊天频道
架构
聊天频道系统的技术架构。
架构
请求流程
┌──────────┐ Webhook ┌──────────────────────────────┐ insert ┌─────────────┐
│ 平台 │ ──────────────▶│ /api/channels/[provider]/ │ ──────────▶│ agent_tasks │
│(TG/DC/..)│ + secret │ webhook │ │ │
│ │◀──────────────│ 验证 → 查找频道 → │◀────────── │ space = │
│ ✅ 回复 │ Bot API │ 在默认空间创建任务 │ 返回 │ 默认空间 │
└──────────┘ └──────────────────────────────┘ └─────────────┘核心设计
- 用户级别 — 频道属于用户而非空间,每个频道有
defaultSpaceId用于创建任务 - 多态适配器 —
ChannelAdapter接口包含verify、registerWebhook、removeWebhook、parseMessage、reply。添加新平台 = 一个适配器文件 + 注册到 registry - 共享包 — 核心 schema、类型、适配器接口和所有适配器实现在
packages/share-domains/channels/,可跨应用复用 - Webhook 路由 — 每个频道有唯一的
webhookSecret,平台通过特定 header 发送 - 始终返回 200 — Webhook 处理器始终返回 200,防止平台重试
- 凭证仅服务端 — Bot Token 不会在 API 响应中暴露(VO 只返回用户名和状态)
添加新平台
- 在
packages/share-domains/channels/schema/chat-channels.ts的CHANNEL_PROVIDERS中添加平台名 - 创建
packages/share-domains/channels/logic/adapters/{provider}.ts实现ChannelAdapter - 在
packages/share-domains/channels/logic/registry.ts中注册 - 在 UI 组件的
PROVIDER_CONFIG中添加平台配置 - 在
content/docs/{lang}/chat-channels/{provider}.mdx中添加文档