Clawdbot 架構
深入了解 Clawdbot AI 助手架構。學習 Gateway-Agent 模型、WebSocket API、訊息流程和系統設計。
Clawdbot 架構概覽
Clawdbot 採用 Gateway-Agent 架構,將訊息傳輸和 AI 處理分離。這種設計實現了可擴展性、可靠性和多通道支援。
系統組件
閘道層
Clawdbot 閘道是中央協調器:
| 組件 | 職責 |
|---|---|
| 連線管理器 | 維護提供者連線 |
| 訊息路由器 | 將訊息路由到代理 |
| 會話管理器 | 管理對話狀態 |
| WebSocket 伺服器 | 公開類型化 API |
代理層
Clawdbot 代理處理 AI 處理:
| 組件 | 職責 |
|---|---|
| 執行時 | 執行代理邏輯 |
| 工具執行器 | 運行工具和技能 |
| 上下文管理器 | 管理對話上下文 |
| 回應產生器 | 產生 AI 回應 |
訊息流程
入站流程
Provider → Gateway → Router → Agent → Runtime- 提供者接收訊息
- 閘道標準化格式
- 路由器選擇目標代理
- 代理處理訊息
- 執行時產生回應
出站流程
Runtime → Agent → Gateway → Provider → User- 執行時產生回應
- 代理格式化訊息
- 閘道路由到提供者
- 提供者傳遞訊息
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 在多個層級維護狀態:
Global State
└── Agent State
└── Session State
└── Message State狀態持久化
| 狀態類型 | 儲存 | 生命週期 |
|---|---|---|
| 全域 | clawdbot.json | 永久 |
| 代理 | agents/<id>/ | 每個代理 |
| 會話 | sessions/<key>.jsonl | 直到過期 |
| 訊息 | 記憶體 | 每個請求 |
可擴展性
水平擴展
Clawdbot 支援水平擴展:
- 負載平衡器後面的多個閘道實例
- 共享會話儲存以保持一致性
- 無狀態訊息處理
資源限制
| 資源 | 預設 | 可配置 |
|---|---|---|
| 最大連線數 | 100 | 是 |
| 訊息緩衝區 | 1000 | 是 |
| 會話逾時 | 24 小時 | 是 |
安全模型
驗證
- API 金鑰驗證
- 基於令牌的 WebSocket 驗證
- 每個提供者的憑證
授權
- 工具級別權限
- 代理級別隔離
- 會話級別存取控制
後續步驟
- Clawdbot 閘道 - 閘道配置
- Clawdbot 概念 - 核心概念
- Clawdbot 工具 - 工具配置