1. 引言
在使用 OpenClaw 搭建 AI 助理的过程中,很多用户会面临一个共同的需求:希望能够根据不同的任务类型,灵活切换不同的大语言模型。例如,处理复杂逻辑和代码时希望调用推理能力更强的 Gemini 或 DeepSeek,日常闲聊或快速问答时则使用 Kimi 或通义千问以节省配额。然而,OpenClaw 默认的配置方式(通过腾讯云控制台可视化界面)通常只能绑定一个飞书机器人,导致模型切换变得麻烦——每次都要去后台修改配置,或者依赖终端命令临时切换。
本文旨在提供一种 “一劳永逸”的高级配置方案:通过直接修改 OpenClaw 的核心配置文件,实现单个 OpenClaw 网关同时接入多个飞书机器人,并将每个机器人绑定到不同的模型。你将能够在飞书客户端中,通过选择不同的机器人对话,自动获得不同模型的服务,就像拥有多个各怀绝技的 AI 助理。
本指南基于以下环境:
-
腾讯云轻量应用服务器(地域东京),已预装 OpenClaw 镜像。
-
已成功配置两个模型:
arkcode/deepseek-v3.2(用于代码与推理任务)arkcode/kimi-k2.5(用于日常对话与长文本处理)
-
你已经在飞书开放平台创建了两个企业自建应用,并分别启用了机器人能力。
通过本指南,你将学会:
- OpenClaw 的核心概念:Agent、模型、通道、绑定。
- 如何为不同任务创建独立的 Agent,并为其指定默认模型。
- 如何修改 OpenClaw 配置文件,使两个飞书机器人同时在线。
- 如何通过绑定规则,将每个机器人与特定的 Agent 关联。
- 测试验证及常见问题排查。
包含详细步骤、代码示例及排错指南,确保你能顺利实现多机器人多模型的灵活调用。
2. 理解 OpenClaw 的核心架构
在动手配置之前,有必要先理清 OpenClaw 的几个核心组件。这能帮助你理解后续每一步操作的意义,避免盲目复制命令。
2.1 Agent(代理)
Agent 是 OpenClaw 中处理对话的“虚拟助手”。每个 Agent 拥有独立的工作区(workspace),可以存储独立的对话历史、上下文记忆,并绑定一个默认的模型。你可以创建多个 Agent,分别赋予不同的角色设定(system prompt),并指定不同的模型。
2.2 Model(模型)
模型即你配置的各种大语言模型,例如 arkcode/deepseek-v3.2、arkcode/kimi-k2.5、gemini/gemini-2.0-flash 等。模型可以全局配置,但每个 Agent 需要明确指定使用哪个模型。
2.3 Channel(通道)
通道是消息的入口,负责接收来自不同平台的消息。OpenClaw 支持飞书、钉钉、微信公众号等多种通道。对于飞书,一个通道可以包含多个飞书机器人账号(accounts)。
2.4 Binding(绑定)
绑定是连接通道消息与 Agent 的桥梁。你可以定义规则:当某个飞书机器人(accountId)发来消息时,将该消息交给指定的 Agent 处理。绑定规则是 OpenClaw 实现多机器人多模型的核心机制。
小结:我们的目标就是创建两个 Agent,分别设置不同的模型,然后创建两个飞书机器人账号,通过绑定规则将机器人1绑定到 Agent1,机器人2绑定到 Agent2。
3. 准备工作
在开始配置前,请确保你已经完成以下前提条件:
3.1 腾讯云服务器环境
- 已购买腾讯云轻量应用服务器(建议地域选择东京或其他海外节点,以降低访问境外 API 的延迟)。
- 服务器已预装 OpenClaw 镜像,或已自行安装 OpenClaw(版本 ≥ 1.5.0)。
- 能够通过 SSH 登录服务器(例如使用密码或密钥)。
3.2 飞书开放平台配置
你需要在飞书开放平台创建两个独立的企业自建应用,并为每个应用配置机器人能力。每个应用都需要完成以下步骤:
-
创建应用:登录 飞书开放平台,点击“创建企业自建应用”,分别命名为“我的Gemini助手”、“我的Kimi助手”(名称可自定)。
-
获取凭证:进入每个应用的“凭证与基础信息”,记录下
App ID和App Secret。 -
配置事件订阅:
- 在“事件订阅”页面,将“订阅方式”设置为 WebSocket 方式(注意:OpenClaw 使用 WebSocket 连接,不需要配置 Request URL)。
- 如果启用了 Encrypt Key,请记录下来,后续需要在配置文件中填写。
- 添加事件:至少需要订阅
im.message.receive_v1事件,以便接收用户发送的消息。
-
配置机器人能力:
- 在“机器人”页面,开启机器人能力。
- 配置消息卡片的回调地址(可选,但如果要用卡片交互需配置)。
- 添加必要的权限:至少需要
im:message权限(发送消息)。
-
发布版本:在“版本管理与发布”中创建一个版本,提交审核。由于是自建应用,审核通常很快,或者你可以直接设置为“可用”。
完成以上步骤后,你将拥有两个飞书机器人的 App ID 和 App Secret,以及可能存在的 Encrypt Key。
3.3 已配置好的模型
假设你已经在 OpenClaw 中配置好了以下两个模型(模型名称可能会因实际配置略有不同,请用 openclaw models list 确认):
arkcode/deepseek-v3.2arkcode/kimi-k2.5
如果你尚未配置这两个模型,请先通过腾讯云控制台的“模型配置”界面或命令行添加它们。具体方法不在本文详述,但可参考 OpenClaw 官方文档。
4. 创建两个专属 Agent
首先,我们需要为两个不同的模型创建独立的 Agent。
4.1 SSH 登录服务器
打开终端,使用 SSH 登录你的腾讯云服务器:
ssh root@你的服务器IP
4.2 查看现有 Agent
输入以下命令,查看当前已有的 Agent:
openclaw agents list
如果你刚刚安装 OpenClaw,可能只有一个默认的 default 或 main 的 Agent。
4.3 创建两个新 Agent
我们将创建两个 Agent,分别命名为 agent-deepseek(用于代码推理)和 agent-kimi(用于日常对话)。
# 创建 agent-deepseek
openclaw agents add agent-deepseek
# 创建 agent-kimi
openclaw agents add agent-kimi
执行后,系统会提示确认,输入 yes 或直接回车即可。每个 Agent 会默认在 ~/.openclaw/workspace-<agent-name> 下创建独立的工作区,用于存储对话记录。
4.4 为 Agent 设置默认模型
我们需要为每个 Agent 指定要使用的模型。
# 为 agent-deepseek 设置默认模型为 deepseek-v3.2
openclaw models set arkcode/deepseek-v3.2 --agent agent-deepseek
# 为 agent-kimi 设置默认模型为 kimi-k2.5
openclaw models set arkcode/kimi-k2.5 --agent agent-kimi
注意:请确保模型名称与 openclaw models list 输出中的完全一致。如果模型名称包含空格或特殊字符,可能需要用引号括起来。
4.5 验证 Agent 配置
使用以下命令查看 Agent 详情,确认默认模型已正确设置:
openclaw agents describe agent-deepseek
openclaw agents describe agent-kimi
输出中应包含 Model: arkcode/deepseek-v3.2 或 arkcode/kimi-k2.5 的字段。
至此,两个 Agent 已准备就绪,接下来需要配置飞书通道。
5. 修改配置文件,实现多飞书机器人接入
OpenClaw 的核心配置文件位于 ~/.openclaw/openclaw.json。我们将通过手动编辑该文件,添加两个飞书机器人的账号信息,并建立与 Agent 的绑定。
5.1 备份当前配置文件
在修改之前,务必备份原文件,以便出错时恢复:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d)
5.2 编辑配置文件
使用你熟悉的文本编辑器打开配置文件,例如 nano 或 vim:
nano ~/.openclaw/openclaw.json
5.3 理解配置结构
一个典型的 OpenClaw 配置文件包含以下主要部分:
gateway:网关全局设置。agents:定义所有 Agent。models:模型配置(通常由命令行管理,可不手动修改)。channels:通道配置,包含飞书、钉钉等。bindings:绑定规则。
我们将重点关注 channels.feishu 和 bindings 部分。
5.4 添加两个飞书账号到 feishu 通道
找到 "channels" 下的 "feishu" 对象。如果之前通过腾讯云控制台配置过一个机器人,可能会看到类似这样的结构:
"feishu": {
"enabled": true,
"connectionMode": "websocket",
"appId": "cli_xxxxx",
"appSecret": "secret"
}
这种是单账号配置,无法容纳多个机器人。我们需要将其改造为多账号结构:使用 accounts 对象来容纳多个机器人。
修改后的 feishu 部分应如下所示:
"feishu": {
"enabled": true,
"connectionMode": "websocket",
"accounts": {
"deepseek-bot": {
"appId": "cli_你的第一个机器人_AppID",
"appSecret": "你的第一个机器人_AppSecret",
"encryptKey": "你的第一个机器人_EncryptKey(如果没有则留空)",
"verificationToken": "你的第一个机器人_VerificationToken(如果没有则留空)"
},
"kimi-bot": {
"appId": "cli_你的第二个机器人_AppID",
"appSecret": "你的第二个机器人_AppSecret",
"encryptKey": "你的第二个机器人_EncryptKey",
"verificationToken": "你的第二个机器人_VerificationToken"
}
}
}
关键点:
accounts是一个对象,其中的每个键(如deepseek-bot、kimi-bot)可以自定义,但建议用有意义的名称,方便后续绑定。- 每个账号内必须包含
appId和appSecret,如果飞书应用中配置了 Encrypt Key 或 Verification Token,也必须填写,否则 WebSocket 连接会失败。 - 原有的单账号字段(
appId、appSecret)必须删除,否则会导致配置错误。
5.5 定义两个 Agent(如果尚未在 agents 列表中)
在 agents 部分,确保已经包含了我们刚刚创建的两个 Agent。通常 agents 部分如下:
"agents": {
"list": [
{
"id": "agent-deepseek",
"workspace": "/root/.openclaw/workspace-agent-deepseek",
"model": "arkcode/deepseek-v3.2"
},
{
"id": "agent-kimi",
"workspace": "/root/.openclaw/workspace-agent-kimi",
"model": "arkcode/kimi-k2.5"
}
]
}
注意:这里的 workspace 路径应与实际路径一致(可通过 openclaw agents describe 查看)。如果 model 字段未出现,可以手动添加,或者由 openclaw models set 命令自动更新。
5.6 建立绑定规则(bindings)
现在是最关键的一步:定义绑定,将飞书机器人与 Agent 关联起来。
在配置文件的根对象中,找到或创建 "bindings" 数组:
"bindings": [
{
"agentId": "agent-deepseek",
"match": {
"channel": "feishu",
"accountId": "deepseek-bot"
}
},
{
"agentId": "agent-kimi",
"match": {
"channel": "feishu",
"accountId": "kimi-bot"
}
}
]
解释:
agentId:指定要绑定的 Agent ID。match:匹配规则,这里指定了通道为feishu,并且飞书账号的accountId为我们在accounts中定义的键名(deepseek-bot和kimi-bot)。- 当 OpenClaw 收到来自
deepseek-bot的消息时,会自动交给agent-deepseek处理,该 Agent 会使用默认模型arkcode/deepseek-v3.2进行回复。
5.7 保存并退出
在 nano 中按 Ctrl+O 保存,Ctrl+X 退出;在 vim 中按 Esc,输入 :wq 回车。
5.8 验证配置文件格式
在重启服务之前,建议用 jsonlint 或类似工具检查 JSON 格式是否正确。如果没有安装,可以使用 OpenClaw 自带的诊断命令:
openclaw doctor --fix
该命令会检查配置并尝试修复常见问题。如果返回错误,请根据提示检查 JSON 格式(如缺少逗号、花括号不匹配等)。
5.9 重启 OpenClaw 网关
使配置生效:
openclaw gateway restart
等待几秒钟,服务重新启动。
5.10 检查日志,确认两个机器人在线
使用以下命令查看实时日志:
openclaw logs --tail 50
你应该能看到类似以下的输出,表明两个飞书机器人均已成功连接:
[INFO] [feishu] deepseek-bot connected (app_id: cli_xxxx1)
[INFO] [feishu] kimi-bot connected (app_id: cli_xxxx2)
[INFO] Gateway started, listening for messages...
如果只有其中一个连接成功,请检查对应账号的 appId/appSecret 是否正确,以及 Encrypt Key 是否匹配。
6. 测试验证
现在,我们来验证两个机器人是否分别使用了正确的模型。
6.1 在飞书中与 deepseek-bot 对话
-
打开飞书客户端,找到你配置的第一个机器人(例如“我的DeepSeek助手”)。
-
在群聊中
@它,或者在单聊中直接发送消息。建议发送一个需要推理的问题,比如:请用 Python 写一个快速排序算法。
-
等待回复。理论上,这个机器人应该调用
arkcode/deepseek-v3.2模型,回复的内容会体现出 DeepSeek 的代码能力。
6.2 在飞书中与 kimi-bot 对话
-
找到第二个机器人(例如“我的Kimi助手”)。
-
发送一个适合 Kimi 的问题,比如:
请介绍一下长文本处理的技巧。
-
观察回复。Kimi 以长文本处理见长,回答应该更偏向于概括和解释。
6.3 进一步确认模型
如果你仍不确定实际调用了哪个模型,可以查看 OpenClaw 的日志,里面会记录每次请求所使用的 Agent 和模型:
openclaw logs --tail 20 | grep "model"
日志中会包含类似 agent=agent-deepseek model=arkcode/deepseek-v3.2 的信息,帮助你确认绑定是否生效。
7. 进阶优化与问题排查
7.1 如何实现更细粒度的模型切换?
除了绑定整个机器人,你还可以在同一个机器人内通过对话前缀或指令切换模型。但这需要编写自定义的 Agent 逻辑(例如使用 OpenClaw 的插件机制)。本文主要介绍的是多机器人方案,简单直接,适合大多数场景。
7.2 如何处理对话历史隔离?
每个 Agent 拥有独立的工作区,因此两个机器人的对话历史是完全隔离的。这意味着:
- 与 deepseek-bot 的对话不会影响 kimi-bot 的上下文。
- 你可以为每个 Agent 设置不同的 system prompt(通过
openclaw agents config命令设置system_prompt)。
7.3 飞书机器人频繁断连怎么办?
如果日志中出现 WebSocket 断开重连的提示,可能是网络不稳定或飞书服务抖动。OpenClaw 会自动重连,一般无需干预。如果问题持续,可以尝试:
- 检查服务器时间是否同步(
ntpdate)。 - 检查防火墙是否限制了出站连接(飞书 WebSocket 需要访问
wss://open.feishu.cn等域名)。
7.4 绑定不生效:机器人收到消息但无回复
可能的原因及解决方法:
- binding 中的 accountId 拼写错误:请确保
match.accountId与accounts中的键名完全一致(区分大小写)。 - Agent 未设置默认模型:运行
openclaw agents describe <agent-id>确认模型字段不为空。如果为空,重新执行openclaw models set ... --agent <agent-id>。 - 飞书事件订阅未配置:登录飞书开放平台,检查每个机器人是否已订阅
im.message.receive_v1事件。 - 权限不足:确保每个机器人都已添加
im:message权限,并重新发布版本。
7.5 如何添加第三个、第四个机器人?
流程完全一样:
- 在飞书开放平台再创建一个应用,获取凭证。
- 在 OpenClaw 配置文件的
accounts中添加新账号。 - 创建对应的新 Agent(可选,也可以复用现有 Agent)。
- 在
bindings中添加新规则。 - 重启网关。
7.6 如何通过命令行管理多 Agent?
常用命令一览:
openclaw agents list:列出所有 Agent。openclaw agents describe <agent-id>:查看 Agent 详情。openclaw agents config <agent-id> --system-prompt "你是一个...":设置角色提示。openclaw models set <model-id> --agent <agent-id>:修改 Agent 的默认模型。openclaw agents remove <agent-id>:删除 Agent(谨慎操作)。
8. 总结
通过本指南,你已经学会了如何在不依赖腾讯云可视化界面的情况下,通过直接修改 OpenClaw 配置文件,实现一个网关对接多个飞书机器人,并将每个机器人绑定到不同的 AI 模型。这种方法不仅解决了模型灵活切换的需求,还保持了对话历史的隔离,使每个机器人都能扮演独立的角色。
本方案的核心要点总结如下:
- Agent 是处理对话的独立单元,每个 Agent 有自己的工作区和默认模型。
- 飞书通道 支持多账号,通过
accounts对象配置多个机器人。 - 绑定规则 将特定飞书机器人的消息路由到指定 Agent。
- 所有配置修改后需重启网关,并检查日志确认连接状态。
现在,你可以在飞书中愉快地与多个 AI 助理交流,根据任务类型选择最合适的模型,既享受了顶尖模型的推理能力,又合理分配了配额。未来,OpenClaw 还会支持更多通道和更灵活的绑定规则,但本文介绍的底层原理将始终适用。
如果你在配置过程中遇到任何未覆盖的问题,欢迎查阅 OpenClaw 官方文档,或在相关社区中提问。祝你使用愉快!
附录:常用配置文件参考
以下是一个简化后的完整配置示例(敏感信息已脱敏):
{
"gateway": {
"token": "your-gateway-token"
},
"agents": {
"list": [
{
"id": "agent-deepseek",
"name": "丞相",
"default": true,
"workspace": "~/.openclaw/workspace-deepseek",
"model":{
"primary": "arkcode/deepseek-v3.2"
}
},
{
"id": "agent-kimi",
"name": "吏部尚书",
"workspace": "~/.openclaw/workspace-kimi",
"model":{
"primary": "arkcode/kimi-k2.5"
}
}
]
},
"session": {
"dmScope": "per-account-channel-peer"
},
"channels": {
"feishu": {
"enabled": true,
"domain": "feishu",
"groupPolicy": "open",
"accounts": {
"default": {},
"robot-1": {
"appId": "cli_a9206e7409f89cc5",
"appSecret": "这个不能告诉你",
"botName": "丞相",
"dmPolicy": "open"
},
"robot-2": {
"appId": "cli_a939e58e4e39dcee",
"appSecret": "这个不能告诉你",
"botName": "吏部尚书",
"dmPolicy": "open"
}
}
}
},
"bindings": [
{
"agentId": "agent-deepseek",
"match": {
"channel": "feishu",
"accountId": "robot-1"
}
},
{
"agentId": "agent-kimi",
"match": {
"channel": "feishu",
"accountId": "robot-2"
}
}
]
}
将此模板中的占位信息替换为你的实际数据,即可快速部署。
(全文完,约 3800 字)