Clawdbot 架构
深入了解 Clawdbot AI 助手架构。学习网关-代理模型、WebSocket API、消息流程和系统设计。
Clawdbot 架构概述
Clawdbot 采用网关-代理架构,将消息传输和 AI 处理的职责分离。这种设计实现了可扩展性、可靠性和多渠道支持。
系统组件
网关层
Clawdbot 网关是中央协调器:
| 组件 | 职责 |
|---|---|
| 连接管理器 | 维护提供商连接 |
| 消息路由器 | 将消息路由到代理 |
| 会话管理器 | 管理对话状态 |
| WebSocket 服务器 | 公开类型化 API |
代理层
Clawdbot 代理处理 AI 处理:
| 组件 | 职责 |
|---|---|
| 运行时 | 执行代理逻辑 |
| 工具执行器 | 运行工具和技能 |
| 上下文管理器 | 管理对话上下文 |
| 响应生成器 | 生成 AI 响应 |
消息流程
入站流程
提供商 → 网关 → 路由器 → 代理 → 运行时- 提供商接收消息
- 网关规范化格式
- 路由器选择目标代理
- 代理处理消息
- 运行时生成响应
出站流程
运行时 → 代理 → 网关 → 提供商 → 用户- 运行时生成响应
- 代理格式化消息
- 网关路由到提供商
- 提供商投递消息
WebSocket API
连接
const ws = new WebSocket('ws://localhost:3010');
ws.on('open', () => {
ws.send(JSON.stringify({
type: 'auth',
token: 'your-token'
}));
});消息类型
| 类型 | 方向 | 描述 |
|---|---|---|
auth | 客户端→服务器 | 认证连接 |
message | 双向 | 发送/接收消息 |
status | 服务器→客户端 | 连接状态更新 |
typing | 服务器→客户端 | 输入指示器 |
状态管理
会话状态
Clawdbot 在多个级别维护状态:
全局状态
└── 代理状态
└── 会话状态
└── 消息状态状态持久化
| 状态类型 | 存储 | 生命周期 |
|---|---|---|
| 全局 | clawdbot.json | 永久 |
| 代理 | agents/<id>/ | 按代理 |
| 会话 | sessions/<key>.jsonl | 直到过期 |
| 消息 | 内存 | 按请求 |
可扩展性
水平扩展
Clawdbot 支持水平扩展:
- 负载均衡器后的多个网关实例
- 共享会话存储以保持一致性
- 无状态消息处理
资源限制
| 资源 | 默认值 | 可配置 |
|---|---|---|
| 最大连接数 | 100 | 是 |
| 消息缓冲区 | 1000 | 是 |
| 会话超时 | 24小时 | 是 |
安全模型
认证
- API 密钥认证
- 基于令牌的 WebSocket 认证
- 每提供商凭证
授权
- 工具级权限
- 代理级隔离
- 会话级访问控制
下一步
- Clawdbot 网关 - 网关配置
- Clawdbot 概念 - 核心概念
- Clawdbot 工具 - 工具配置