OpenClaw 系统架构详解

第10部分:组件协作流程

组件协作流程 展示了 OpenClaw 各个组件如何协同工作来处理消息和执行任务。

🔄 典型的消息处理流程

  1. 用户发送消息(WhatsApp/Telegram/Discord)
  2. Channel Plugin 接收消息
  3. Gateway 路由消息到正确的 Agent
  4. Agent Loop 开始执行
    • 加载会话历史
    • 加载 Skills
    • 组装上下文
  5. 调用 AI 模型推理
  6. AI 模型决定调用工具
  7. Tools 执行具体操作
  8. 返回结果给 AI 模型
  9. AI 模型生成最终回复
  10. Gateway 通过 Channel Plugin 发送回复
  11. 持久化会话状态

📧 邮件发送任务的实际流程

  1. 用户通过 Telegram 发送任务
  2. Telegram Channel Plugin 接收消息
  3. Gateway 路由到 main Agent
  4. Agent Loop 执行
    • 读取 SOUL.md、USER.md、MEMORY.md
    • 检测到 cold-email-outreach Skill
  5. AI 模型决定使用 exec 工具
  6. exec 工具运行 Python 脚本
    • 连接数据库
    • 查询待发送邮件
    • 通过 SMTP 发送邮件
    • 更新数据库状态
  7. 返回执行结果
  8. AI 模型生成回复
  9. 通过 Telegram 发送回复

🎯 关键设计原则

1. 单一真相源

2. 模块化和可扩展

3. 隔离性

4. 流式处理

5. 安全性

📊 数据流图

┌─────────────┐
│   用户      │
└──────┬──────┘
       │ 消息
       ↓
┌─────────────┐
│  Channel    │
│  Plugin     │
└──────┬──────┘
       │ 路由
       ↓
┌─────────────┐
│  Gateway    │
│  (WebSocket)│
└──────┬──────┘
       │ 分发
       ↓
┌─────────────┐
│  Agent      │
│  Loop       │
└──────┬──────┘
       │ 调用
       ↓
┌─────────────┐
│  Skills     │
│  + Tools    │
└──────┬──────┘
       │ 执行
       ↓
┌─────────────┐
│  Plugins    │
│  (Hooks)    │
└──────┬──────┘
       │ 结果
       ↓
┌─────────────┐
│  Model      │
│  Provider   │
└──────┬──────┘
       │ 推理
       ↓
┌─────────────┐
│  Session    │
│  Store      │
└──────┬──────┘
       │ 持久化
       ↓
┌─────────────┐
│  Memory     │
│  System     │
└─────────────┘