openclaw通讯原理(2)
openclaw通信原理
·
6. 消息流转机制
6.1 完整入站消息流
6.2 完整出站消息流
6.3 会话路由键(Session Key)
OpenClaw 用结构化的 key 唯一标识一个会话:
sessionKey = "agent:{agentId}:{chatType}:{peerId}@{channelId}"
示例:
"agent:demo:direct:12345@whatsapp"
"agent:demo:group:group123@telegram"
"agent:assistant:thread:T001@slack"
6.4 回复队列管理
7. 通道插件体系
7.1 插件注册机制
7.2 账户生命周期
7.3 通道能力声明
type ChannelCapabilities = {
chatTypes: ("direct" | "group" | "channel" | "thread")[];
polls?: boolean; // 投票功能
reactions?: boolean; // 表情回应
edit?: boolean; // 编辑消息
threads?: boolean; // 线程回复
media?: boolean; // 媒体发送
nativeCommands?: boolean; // 原生命令(/start 等)
voice?: boolean; // 语音消息
}
// 示例:Telegram 能力
telegramCapabilities = {
chatTypes: ["direct", "group", "channel", "thread"],
media: true,
reactions: true,
polls: true,
nativeCommands: true,
edit: true,
threads: true // 超级群组话题
}
7.4 安全策略(DM Policy)
type ChannelSecurityDmPolicy = {
policy: "allow-all" | "allow-list" | "owner-only";
allowFrom?: string[]; // 白名单用户 ID
policyPath: string; // 配置文件路径
allowFromPath: string; // 白名单配置路径
normalizeEntry?: (raw: string) => string; // ID 归一化函数
}
8. 安全机制
8.1 传输层安全
8.2 设备认证流程
8.3 DM 安全策略
所有通道都支持配置谁可以给 AI 发送私信:
| 策略 | 含义 |
|---|---|
allow-all |
任何人都可以 DM |
allow-list |
仅白名单中的用户 |
owner-only |
仅账户所有者 |
9. 技术栈汇总
9.1 核心技术
| 层次 | 技术 | 用途 |
|---|---|---|
| 传输层 | ws v8.19.0 |
WebSocket 服务器和客户端 |
| HTTP 框架 | hono v4.12.7 |
Gateway HTTP 服务 |
| HTTP 框架 | express v5.2.1 |
备用 HTTP 服务 |
| 类型验证 | @sinclair/typebox v0.34.48 |
JSON Schema 类型安全 |
| 数据验证 | ajv v8.18.0 |
JSON Schema 验证 |
| CLI | commander |
命令行接口 |
| 环境变量 | dotenv |
配置管理 |
9.2 各平台 SDK
| 平台 | SDK | 版本 |
|---|---|---|
@whiskeysockets/baileys |
7.0.0-rc.9 | |
| Telegram | grammy + @grammyjs/runner |
1.41.1 |
| Discord | discord-api-types + @discordjs/voice |
最新 |
| Slack | @slack/bolt + @slack/web-api |
4.6.0 |
| 飞书 | @larksuiteoapi/node-sdk |
最新 |
| LINE | @line/bot-sdk |
最新 |
9.3 AI 和数据层
| 功能 | 技术 | 版本 |
|---|---|---|
| MCP 协议 | @modelcontextprotocol/sdk |
1.27.1 |
| 向量数据库 | @lancedb/lancedb |
0.26.2 |
| SQLite 向量 | sqlite-vec |
最新 |
| 媒体处理 | sharp |
0.34.5 |
| TTS | node-edge-tts |
最新 |
pdfjs-dist |
最新 | |
| Markdown | markdown-it |
最新 |
10. 关键文件索引
| 用途 | 文件路径 |
|---|---|
| 协议定义 | |
| 协议帧格式 | src/gateway/protocol/schema/frames.ts |
| 通道状态模式 | src/gateway/protocol/schema/channels.ts |
| 基础原语 | src/gateway/protocol/schema/primitives.ts |
| Gateway | |
| 服务器实现 | src/gateway/server.impl.ts |
| 聊天服务 | src/gateway/server-chat.ts |
| 通道服务 | src/gateway/server-channels.ts |
| 客户端连接 | src/gateway/client.ts |
| 通道框架 | |
| 插件合约 | src/channels/plugins/types.plugin.ts |
| 适配器类型 | src/channels/plugins/types.adapters.ts |
| 核心类型 | src/channels/plugins/types.core.ts |
| 消息处理 | |
| 消息分发 | src/auto-reply/dispatch.ts |
| 回复调度器 | src/auto-reply/reply/reply-dispatcher.ts |
| 打字指示器 | src/auto-reply/reply/typing.ts |
| 主通道实现 | extensions/whatsapp/src/channel.ts |
| 消息发送 | extensions/whatsapp/src/auto-reply/deliver-reply.ts |
| 账户管理 | extensions/whatsapp/src/accounts.ts |
| Telegram | |
| 主通道实现 | extensions/telegram/src/channel.ts |
| 出站适配器 | extensions/telegram/src/outbound-adapter.ts |
| 消息格式化 | extensions/telegram/src/format.ts |
| 配置 | |
| 主配置管理 | src/config/config.ts |
| 会话配置 | src/config/sessions.ts |
| 内部 SDK | src/plugin-sdk-internal/ |
| 入口 | |
| CLI 入口 | src/entry.ts |
| 库入口 | src/index.ts |
| NPM 命令 | openclaw.mjs |
附录:核心数据流总结
更多推荐
所有评论(0)