打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人
打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人
引言
OpenClaw 是一个强大的智能体(Agent)编排框架,它通过统一的架构让开发者可以轻松管理多个聊天机器人,并接入不同的即时通讯平台。在实际应用中,我们往往需要同时运行多个 QQ 机器人(例如个人助手、工作助手),甚至希望同一个智能体既能处理 QQ 消息,也能响应飞书消息。
本文将详细介绍如何在一个 OpenClaw 实例中配置多通道(QQ、飞书)、多 Agent 以及多 QQ 机器人账号,实现资源的高效利用和灵活的消息路由。特别地,我们将阐明飞书通道与 QQ 通道在绑定规则上的差异,避免常见的配置错误。
核心概念回顾
-
Agent(智能体):拥有独立人格、记忆和技能的对话单元。每个 Agent 有自己的工作区(workspace),存放
SOUL.md(人格设定)和skills/(技能)。 -
Channel(通道):连接外部即时通讯平台的模块,如
qqbot(QQ 官方机器人)、feishu(飞书)。 - Binding(绑定):定义消息路由的规则,将特定通道的 incoming 消息派发给指定的 Agent 处理。
环境准备
- 已安装 OpenClaw
- 拥有至少一个 QQ 机器人(在 QQ 开放平台 创建)和一个飞书应用(在 飞书开放平台 创建),获取各自的 AppID 和 AppSecret
配置多 QQ 机器人账号
OpenClaw 的 qqbot 通道支持同时接入多个 QQ 机器人,只需在 channels.qqbot.accounts 对象中为每个机器人定义一个唯一的 accountId,并填入对应的凭证。
配置文件示例 ~/.openclaw/config.json:
{
"channels": {
"qqbot": {
"enabled": true,
"accounts": {
"personal-bot": {
"appId": "QQ_APPID_1",
"clientSecret": "QQ_SECRET_1"
},
"work-bot": {
"appId": "QQ_APPID_2",
"clientSecret": "QQ_SECRET_2"
}
}
}
}
}
这里 personal-bot 和 work-bot 是我们自定义的账号 ID,后续在绑定规则中会用到。
配置多 Agent
每个 Agent 对应一种人格或功能。例如我们可以创建两个 Agent:
-
shuying-finance:金融助手,负责处理投资咨询 -
shuying-general:通用助手,负责日常闲聊
Agent 配置示例:
{
"agents": {
"list": [
{
"id": "shuying-finance",
"name": "金融助手",
"workspace": "/data/workspace/finance"
},
{
"id": "shuying-general",
"name": "通用助手",
"workspace": "/data/workspace/general"
}
]
}
}
每个 Agent 的工作区是独立的,可以放置不同的人格设定文件(SOUL.md)和技能代码。
配置绑定规则:将 QQ 账号路由到不同 Agent
现在我们将两个 QQ 机器人分别绑定到不同的 Agent。注意,在匹配 QQ 通道时,我们使用 accountId 字段来指定具体的机器人账号。
{
"bindings": [
{
"agentId": "shuying-finance",
"match": {
"channel": "qqbot",
"accountId": "work-bot"
}
},
{
"agentId": "shuying-general",
"match": {
"channel": "qqbot",
"accountId": "personal-bot"
}
}
]
}
易错提醒:字段名必须是
accountId,而不是account。如果写成"account": "..."会导致 Invalid input 错误。
配置飞书通道与绑定规则
飞书通道的配置与 QQ 略有不同。首先在 channels.feishu 中配置应用账号:
{
"channels": {
"feishu": {
"enabled": true,
"accounts": {
"finance-feishu": {
"appId": "FEISHU_APPID",
"appSecret": "FEISHU_SECRET"
}
}
}
}
}
飞书绑定规则的关键区别在于:飞书的消息来源需要指定具体的 peer(对话对象),可以是用户私聊(user)或群聊(group),并给出对应的 ID。
例如,我们希望将某个飞书群的会话路由给金融助手:
{
"bindings": [
{
"agentId": "shuying-finance",
"match": {
"channel": "feishu",
"accountId": "finance-feishu",
"peer": {
"kind": "group",
"id": "oc_582b57e290ba8a4d662eedaa0f446eb7"
}
}
}
]
}
如果需要匹配某个用户的私聊,则将 kind 改为 user,id 改为用户的 open_id。
为什么飞书不使用 accountId 直接匹配?
因为飞书通道支持在同一应用账号下区分不同的会话来源(群或用户),提供更精细的路由控制。如果你希望某个飞书应用账号的所有消息都交给同一个 Agent,可以省略 peer 字段。
进阶:同一个 Agent 同时处理 QQ 和飞书
如果希望一个 Agent(例如 shuying-finance)既能处理 QQ 消息,也能处理飞书消息,只需添加两条绑定规则,指向同一个 agentId。
完整绑定示例:
{
"bindings": [
// QQ 绑定
{
"agentId": "shuying-finance",
"match": {
"channel": "qqbot",
"accountId": "work-bot"
}
},
{
"agentId": "shuying-general",
"match": {
"channel": "qqbot",
"accountId": "personal-bot"
}
},
// 飞书绑定(同一个金融助手)
{
"agentId": "shuying-finance",
"match": {
"channel": "feishu",
"accountId": "finance-feishu",
"peer": {
"kind": "group",
"id": "oc_582b57e290ba8a4d662eedaa0f446eb7"
}
}
}
]
}
现在,无论是通过 work-bot QQ 号发来的消息,还是通过指定飞书群发来的消息,都会交给 shuying-finance 这个 Agent 统一处理。Agent 将使用同一套人格和技能进行回复,实现跨平台的一致性体验。
配置文件完整示例
将以上片段整合成一个完整的配置文件(仅展示关键部分):
{
"agents": {
"list": [
{ "id": "shuying-finance", "workspace": "/data/workspace/finance" },
{ "id": "shuying-general", "workspace": "/data/workspace/general" }
]
},
"channels": {
"qqbot": {
"enabled": true,
"accounts": {
"personal-bot": { "appId": "QQ_APPID_1", "clientSecret": "QQ_SECRET_1" },
"work-bot": { "appId": "QQ_APPID_2", "clientSecret": "QQ_SECRET_2" }
}
},
"feishu": {
"enabled": true,
"accounts": {
"finance-feishu": { "appId": "FEISHU_APPID", "appSecret": "FEISHU_SECRET" }
}
}
},
"bindings": [
{ "agentId": "shuying-finance", "match": { "channel": "qqbot", "accountId": "work-bot" } },
{ "agentId": "shuying-general", "match": { "channel": "qqbot", "accountId": "personal-bot" } },
{
"agentId": "shuying-finance",
"match": {
"channel": "feishu",
"accountId": "finance-feishu",
"peer": { "kind": "group", "id": "oc_582b57e290ba8a4d662eedaa0f446eb7" }
}
}
]
}
验证与重启
修改配置文件后,建议先验证语法:
openclaw config validate
如果没有错误,重启网关服务使配置生效:
openclaw gateway restart
之后可以通过 openclaw status 查看 Agent 和通道的运行状态。分别用 QQ 和飞书向对应的机器人/群发送消息,测试是否被正确路由到预期的 Agent。
常见问题
-
绑定规则不生效(QQ):检查
accountId是否与accounts中的键名完全一致(区分大小写),且字段名为accountId而非account。 -
绑定规则不生效(飞书):确认
peer中的kind和id正确无误,且该群或用户确实属于配置的飞书应用。 -
通道启动失败:确认 appId/appSecret 无误,并且服务器 IP 已在对应平台的白名单中。
-
Agent 无响应:检查 Agent 的工作区是否存在有效的
SOUL.md文件,或者是否有技能代码错误。
总结
通过本文的配置,我们实现了在一个 OpenClaw 实例中:
- 接入多个 QQ 机器人账号
- 定义多个具有不同人格的 Agent
- 将不同 QQ 账号的消息精确路由到对应的 Agent
- 将飞书特定群的消息也路由到其中一个 Agent,实现跨平台统一处理
OpenClaw 的灵活性和扩展性为构建复杂的对话系统提供了坚实的基础。掌握通道、Agent 和绑定规则的关系,你可以轻松扩展更多平台和更多智能体,打造属于自己的机器人矩阵。
相关文章:
- 打造你的家庭 AI 助手(三):QQ 机器人接入 OpenClaw
- 一个 OpenClaw 配置多个 QQ 机器人实战指南