OpenClaw 高级配置指南:一个网关对接多个飞书机器人

0 阅读15分钟

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.2arkcode/kimi-k2.5gemini/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 飞书开放平台配置

你需要在飞书开放平台创建两个独立的企业自建应用,并为每个应用配置机器人能力。每个应用都需要完成以下步骤:

  1. 创建应用:登录 飞书开放平台,点击“创建企业自建应用”,分别命名为“我的Gemini助手”、“我的Kimi助手”(名称可自定)。

  2. 获取凭证:进入每个应用的“凭证与基础信息”,记录下 App IDApp Secret

  3. 配置事件订阅

    • 在“事件订阅”页面,将“订阅方式”设置为 WebSocket 方式(注意:OpenClaw 使用 WebSocket 连接,不需要配置 Request URL)。
    • 如果启用了 Encrypt Key,请记录下来,后续需要在配置文件中填写。
    • 添加事件:至少需要订阅 im.message.receive_v1 事件,以便接收用户发送的消息。
  4. 配置机器人能力

    • 在“机器人”页面,开启机器人能力。
    • 配置消息卡片的回调地址(可选,但如果要用卡片交互需配置)。
    • 添加必要的权限:至少需要 im:message 权限(发送消息)。
  5. 发布版本:在“版本管理与发布”中创建一个版本,提交审核。由于是自建应用,审核通常很快,或者你可以直接设置为“可用”。

完成以上步骤后,你将拥有两个飞书机器人的 App ID 和 App Secret,以及可能存在的 Encrypt Key。

3.3 已配置好的模型

假设你已经在 OpenClaw 中配置好了以下两个模型(模型名称可能会因实际配置略有不同,请用 openclaw models list 确认):

  • arkcode/deepseek-v3.2
  • arkcode/kimi-k2.5

如果你尚未配置这两个模型,请先通过腾讯云控制台的“模型配置”界面或命令行添加它们。具体方法不在本文详述,但可参考 OpenClaw 官方文档。


4. 创建两个专属 Agent

首先,我们需要为两个不同的模型创建独立的 Agent。

4.1 SSH 登录服务器

打开终端,使用 SSH 登录你的腾讯云服务器:

ssh root@你的服务器IP

4.2 查看现有 Agent

输入以下命令,查看当前已有的 Agent:

openclaw agents list

如果你刚刚安装 OpenClaw,可能只有一个默认的 defaultmain 的 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.2arkcode/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 编辑配置文件

使用你熟悉的文本编辑器打开配置文件,例如 nanovim

nano ~/.openclaw/openclaw.json

5.3 理解配置结构

一个典型的 OpenClaw 配置文件包含以下主要部分:

  • gateway:网关全局设置。
  • agents:定义所有 Agent。
  • models:模型配置(通常由命令行管理,可不手动修改)。
  • channels:通道配置,包含飞书、钉钉等。
  • bindings:绑定规则。

我们将重点关注 channels.feishubindings 部分。

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-botkimi-bot)可以自定义,但建议用有意义的名称,方便后续绑定。
  • 每个账号内必须包含 appIdappSecret,如果飞书应用中配置了 Encrypt Key 或 Verification Token,也必须填写,否则 WebSocket 连接会失败。
  • 原有的单账号字段(appIdappSecret)必须删除,否则会导致配置错误。

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-botkimi-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 对话

  1. 打开飞书客户端,找到你配置的第一个机器人(例如“我的DeepSeek助手”)。

  2. 在群聊中 @ 它,或者在单聊中直接发送消息。建议发送一个需要推理的问题,比如:

    请用 Python 写一个快速排序算法。

  3. 等待回复。理论上,这个机器人应该调用 arkcode/deepseek-v3.2 模型,回复的内容会体现出 DeepSeek 的代码能力。

image.png

6.2 在飞书中与 kimi-bot 对话

  1. 找到第二个机器人(例如“我的Kimi助手”)。

  2. 发送一个适合 Kimi 的问题,比如:

    请介绍一下长文本处理的技巧。

  3. 观察回复。Kimi 以长文本处理见长,回答应该更偏向于概括和解释。

image.png

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 绑定不生效:机器人收到消息但无回复

可能的原因及解决方法:

  1. binding 中的 accountId 拼写错误:请确保 match.accountIdaccounts 中的键名完全一致(区分大小写)。
  2. Agent 未设置默认模型:运行 openclaw agents describe <agent-id> 确认模型字段不为空。如果为空,重新执行 openclaw models set ... --agent <agent-id>
  3. 飞书事件订阅未配置:登录飞书开放平台,检查每个机器人是否已订阅 im.message.receive_v1 事件。
  4. 权限不足:确保每个机器人都已添加 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 字)