首页 教程 分类 Skills下载 关于
ZH EN JA KO
频道对接

OpenClaw同时连接多个聊天频道教程

· 16 分钟

前言

OpenClaw 最强大的特性之一,就是能够同时连接多个聊天平台。你可以让同一个 AI 助手同时出现在 WhatsApp、Telegram、Discord、Slack、Matrix 等平台上,并为每个频道设置不同的模型、人设和行为方式。

本教程将全面介绍多频道配置的方法和最佳实践。

多频道架构概览

OpenClaw 的多频道架构如下:

                    ┌─────────────┐
                    │  OpenClaw   │
                    │   Gateway   │
                    │  :18789     │
                    └──────┬──────┘
                           │
          ┌────────────────┼────────────────┐
          │                │                │
    ┌─────┴─────┐   ┌─────┴─────┐   ┌─────┴─────┐
    │ WhatsApp  │   │ Telegram  │   │  Discord  │
    │  Channel  │   │  Channel  │   │  Channel  │
    └───────────┘   └───────────┘   └───────────┘

每个频道独立运行,共享同一个 Gateway 服务,但可以有独立的配置。

基础多频道配置

编辑 ~/.config/openclaw/openclaw.json5,在 channels 中添加多个频道:

{
  // 全局模型设置(作为各频道的默认值)
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // WhatsApp 频道
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      responseMode: "all"
    },

    // Telegram 频道
    telegram: {
      enabled: true,
      botToken: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
      responseMode: "mention"
    },

    // Discord 频道
    discord: {
      enabled: true,
      botToken: "MTIzNDU2Nzg5MDEy.xxxxx.xxxxx",
      responseMode: "mention",
      allowedServers: ["1234567890"]
    },

    // Matrix 频道
    matrix: {
      enabled: true,
      homeserverUrl: "https://matrix.org",
      userId: "@openclaw-bot:matrix.org",
      accessToken: "syt_xxxxx",
      responseMode: "mention"
    },

    // Slack 频道
    slack: {
      enabled: true,
      botToken: "xoxb-xxxxx",
      appToken: "xapp-xxxxx",
      responseMode: "mention"
    }
  }
}

频道独立设置

每个频道可以覆盖全局配置,实现独立的模型、人设和语言设置。

为不同频道指定不同模型

{
  // 全局默认模型
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // Telegram 使用默认的 Claude 模型
    telegram: {
      enabled: true,
      botToken: "your-telegram-token"
    },

    // Discord 使用 Ollama 本地模型(节省成本)
    discord: {
      enabled: true,
      botToken: "your-discord-token",
      model: {
        provider: "ollama",
        name: "llama3.1:70b",
        baseUrl: "http://localhost:11434"
      }
    },

    // WhatsApp 使用 OpenAI GPT-4o
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      model: {
        provider: "openai",
        name: "gpt-4o",
        apiKey: "sk-xxxxx"
      }
    }
  }
}

为不同频道设置不同人设

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "your-telegram-token",
      persona: {
        name: "小助手",
        systemPrompt: "你是一个友好的中文AI助手,语气轻松活泼,适当使用表情符号。"
      }
    },

    slack: {
      enabled: true,
      botToken: "your-slack-token",
      appToken: "your-app-token",
      persona: {
        name: "TechBot",
        systemPrompt: "You are a professional technical assistant. Respond in English. Be concise and precise. Focus on code and technical solutions."
      }
    },

    discord: {
      enabled: true,
      botToken: "your-discord-token",
      persona: {
        name: "游戏顾问",
        systemPrompt: "你是一个游戏领域的专家,熟悉各种游戏攻略和资讯。回答时可以用轻松幽默的语气。"
      }
    }
  }
}

频道配置项一览

以下是各频道可独立配置的项目:

配置项 说明 示例
model AI 模型设置 覆盖全局模型
persona 人设和系统提示 不同频道不同性格
responseMode 响应模式 all / mention
language 默认语言 zh-CN / en / ja
maxTokens 最大回复 Token 数 2048
temperature 模型温度 0.7
skills 启用的技能列表 ["weather", "reminder"]
rateLimit 频率限制 { maxPerMinute: 10 }

消息路由策略

共享上下文 vs 隔离上下文

默认情况下,不同频道之间的对话上下文是相互隔离的。你可以通过配置启用共享上下文:

{
  context: {
    // 上下文隔离策略
    // "channel":按频道隔离(默认)
    // "user":按用户隔离(同一用户跨频道共享上下文)
    // "global":全局共享
    isolation: "channel",

    // 上下文窗口大小
    maxMessages: 50,

    // 上下文过期时间(秒)
    ttl: 3600
  }
}

按用户隔离的场景

当设置 isolation: "user" 时,同一个用户在不同频道的对话可以延续。例如,用户在 Telegram 上讨论了某个话题,切换到 Discord 后可以继续。

用户通过以下方式关联身份:

{
  context: {
    isolation: "user",
    // 用户身份映射(可选,用于跨平台识别同一用户)
    userMapping: {
      "telegram:12345678": "user-alice",
      "discord:98765432": "user-alice",
      "whatsapp:+8613800138000": "user-alice"
    }
  }
}

频道特定的技能配置

你可以为不同频道启用不同的技能:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "your-token",
      // 仅启用这些技能
      skills: ["weather", "translate", "reminder"],
    },

    slack: {
      enabled: true,
      botToken: "your-token",
      appToken: "your-app-token",
      // 工作场景的技能
      skills: ["jira", "github", "code-review"],
    },

    discord: {
      enabled: true,
      botToken: "your-token",
      // 娱乐场景的技能
      skills: ["trivia", "music-recommend", "game-wiki"],
    }
  }
}

状态监控

Dashboard 监控

启动 OpenClaw Dashboard 查看所有频道的实时状态:

openclaw dashboard

Dashboard 会在浏览器中打开,显示:

  • 各频道的连接状态(在线/离线/错误)
  • 消息收发统计
  • 模型调用次数和 Token 消耗
  • 实时日志流

命令行状态检查

# 查看所有频道状态
openclaw doctor

# 查看实时日志(所有频道)
openclaw logs

# 查看特定频道的日志
openclaw logs --channel telegram

典型的健康输出:

OpenClaw Doctor Report
======================
Gateway:    ✓ Running on port 18789
Node.js:    ✓ v22.12.0

Channels:
  whatsapp:  ✓ Connected (uptime: 3d 14h)
  telegram:  ✓ Connected (uptime: 3d 14h)
  discord:   ✓ Connected (uptime: 3d 14h)
  matrix:    ✓ Connected (uptime: 2d 8h)
  slack:     ✗ Error: Invalid bot token

Models:
  claude:    ✓ API reachable
  ollama:    ✓ Running locally

频率限制和负载均衡

当多个频道同时活跃时,建议配置频率限制以避免 API 额度耗尽:

{
  // 全局频率限制
  rateLimit: {
    // 每分钟最大请求数(所有频道合计)
    globalMaxPerMinute: 60,
    // 每个用户每分钟最大请求数
    userMaxPerMinute: 10
  },

  channels: {
    telegram: {
      enabled: true,
      botToken: "your-token",
      // 频道级频率限制
      rateLimit: {
        maxPerMinute: 30
      }
    },

    discord: {
      enabled: true,
      botToken: "your-token",
      rateLimit: {
        maxPerMinute: 20
      }
    }
  }
}

启用和禁用频道

你可以通过 enabled 字段快速启用或禁用某个频道,无需删除配置:

{
  channels: {
    whatsapp: {
      enabled: true,   // 运行中
      // ...
    },
    telegram: {
      enabled: false,  // 已禁用,但保留配置
      // ...
    }
  }
}

修改配置后,重启 OpenClaw 使其生效:

openclaw restart

实战:团队多频道部署方案

以下是一个团队实际使用的多频道配置方案:

{
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // 团队内部 Slack 工作频道
    slack: {
      enabled: true,
      botToken: "xoxb-xxxxx",
      appToken: "xapp-xxxxx",
      responseMode: "mention",
      persona: {
        name: "团队助手",
        systemPrompt: "你是团队的技术助手,帮助回答技术问题、review代码、查找文档。"
      },
      skills: ["github", "jira", "code-review", "docs-search"],
      language: "zh-CN"
    },

    // 客户支持 Telegram 频道
    telegram: {
      enabled: true,
      botToken: "your-token",
      responseMode: "all",
      persona: {
        name: "客服小助",
        systemPrompt: "你是产品客服助手,礼貌地回答用户关于产品的问题。遇到无法解决的问题,建议用户联系人工客服。"
      },
      skills: ["faq", "product-docs"],
      model: {
        provider: "openai",
        name: "gpt-4o-mini",
        apiKey: "sk-xxxxx"
      }
    },

    // CEO 的私人 WhatsApp 助手
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      responseMode: "all",
      persona: {
        name: "智能管家",
        systemPrompt: "你是CEO的私人智能助手,帮助处理日程、提醒、信息汇总等任务。"
      },
      skills: ["calendar", "reminder", "news-summary", "weather"]
    }
  }
}

常见问题

某个频道掉线后会影响其他频道吗?

不会。每个频道独立运行,一个频道的异常不会影响其他频道。OpenClaw 还内置了自动重连机制。

多频道会消耗更多内存吗?

每个额外的频道大约增加 20-50MB 内存占用。5 个频道同时运行时,总内存通常在 200-400MB 范围内。

如何快速排查频道问题?

# 运行诊断
openclaw doctor

# 查看特定频道日志
openclaw logs --channel discord

# 检查 Gateway 状态
curl http://localhost:18789/health

小结

通过多频道配置,OpenClaw 可以成为你的全平台 AI 中枢。每个频道独立配置模型、人设和技能的能力,让你能够灵活应对不同场景的需求。结合状态监控和频率限制,你可以放心地在生产环境中部署多频道服务。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入