前言
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 中枢。每个频道独立配置模型、人设和技能的能力,让你能够灵活应对不同场景的需求。结合状态监控和频率限制,你可以放心地在生产环境中部署多频道服务。