OpenClaw 多飞书机器人完整配置教程(Docker 部署版)

从单 Agent 到多 Agent,实现一个网关管理多个独立飞书机器人


一、教程概述

1.1 适用场景

  • 已有 OpenClaw Docker 部署环境
  • 需要多个飞书机器人,每个机器人独立工作
  • 每个机器人绑定不同的 Agent,使用不同的 AI 模型
  • 实现业务隔离(总控、公众号、小说、酒店、校园等)

1.2 最终架构

arduino 复制代码
┌─────────────────────────────────────────────────────────────────┐
│                        飞书用户                                  │
│    ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐     │
│    │ 小智   │ │ 公众号 │ │ 小说   │ │ 酒店   │ │ 校园   │     │
│    │ 机器人 │ │ 机器人 │ │ 机器人 │ │ 机器人 │ │ 机器人 │     │
│    └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘     │
└────────┼──────────┼──────────┼──────────┼──────────┼──────────┘
         │          │          │          │          │
         ▼          ▼          ▼          ▼          ▼
┌─────────────────────────────────────────────────────────────────┐
│                    OpenClaw Gateway                             │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    Bindings(路由)                       │   │
│  │   account-xiaozhi  ──→  main Agent                      │   │
│  │   account-wechat   ──→  wechat-public Agent             │   │
│  │   account-novel    ──→  novel Agent                     │   │
│  │   account-hotel    ──→  hotel Agent                     │   │
│  │   account-xiaoyuan ──→  xiaoyuan Agent                  │   │
│  └─────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

二、前置准备

2.1 已有环境

  • OpenClaw 已通过 Docker 部署并正常运行
  • 已有至少一个飞书机器人(小智)
  • 了解基本的 Docker 命令

2.2 飞书机器人创建与配置

在开始配置 OpenClaw 之前,需要先在飞书开放平台创建并配置机器人应用。

具体方法 :参见《OpenClaw 接入飞书机器人完整教程(Docker 部署版)》的 "一、飞书开放平台配置" 章节。

简要步骤

  1. 登录飞书开放平台,创建企业自建应用
  2. 添加机器人能力
  3. 获取 App ID 和 App Secret
  4. 配置权限(im:messageim:message.p2p_msg:readonlyim:message.group_at_msg:readonlyim:message:send_as_bot 等)
  5. 配置事件订阅,选择「长连接接收事件 」,添加 im.message.receive_v1 事件
  6. 发布应用版本

⚠️ 注意:每个飞书机器人需要单独创建应用,获取独立的 App ID 和 App Secret。

2.3 ⚠️ 重要风险提示:训练记忆可能丢失

风险 说明
训练记忆丢失 从单 Agent 升级到多 Agent 时,原有 Agent(main)的训练记忆可能无法保留
原因 添加 bindings 后,路由规则变化可能导致会话 ID 重置

⚠️ 真实经历

本次部署从单 Agent 升级到多 Agent 时,虽然提前备份了数据,但由于操作过程中的配置变更,原有训练数据未能成功恢复。这是一个惨痛的教训。

⚠️ 重要建议

  1. 如果原有 Agent 已经有重要的训练数据,请谨慎操作,评估是否值得冒险升级。
  2. 强烈建议:从一开始部署 OpenClaw 时,就按本教程配置成多 Agent 结构。 这样后续增加新的 Agent 时,不会影响已训练过的 Agent 数据,每个 Agent 的会话独立存储,互不干扰。
bash 复制代码
# 备份命令(建议升级前执行)
cp -r /opt/openclaw /opt/openclaw.backup.$(date +%Y%m%d_%H%M%S)
cp -r /opt/openclaw/config/agents/main/sessions /opt/openclaw/backup_sessions_$(date +%Y%m%d_%H%M%S)

2.4 ⚠️ 配置修改方式的大坑(非常重要)

OpenClaw 的配置有两种修改方式 ,优先级不同,这是一个排查了很久才发现的坑

方式 优先级 持久化
openclaw config set 命令 写入内部存储,覆盖文件配置
手动编辑 openclaw.json 仅文件修改

真实踩坑经历

在配置群聊策略时,第一个 Agent 使用了以下命令设置了 allowlist

bash 复制代码
openclaw config set channels.feishu.groupPolicy allowlist

后来发现群聊不生效,想改为 open,于是手动编辑 openclaw.jsongroupPolicy 改为 "open"。但重启后始终无效,config get 查看仍然是 allowlist

排查过程

  • 检查 JSON 格式 ✅ 正确
  • 检查配置文件内容 ✅ 已改为 open
  • 检查容器挂载 ✅ 正常
  • 检查飞书权限 ✅ 已开通
  • 检查日志 ✅ 无报错

最终发现openclaw config set 命令设置的值优先级高于 手动编辑的 JSON 文件。即使文件中写的是 open,运行时仍然使用 config set 设置的 allowlist

⚠️ 经验教训

  • 尝试过先用 config unset 删除再改文件配置,实测无效
  • 唯一有效的解决方法 :用 config set 命令直接覆盖
bash 复制代码
# 唯一有效的解决方法:用 config set 直接覆盖
docker exec -it openclaw-gateway openclaw config set channels.feishu.groupPolicy open

核心原则

要么全程用命令,要么全程改文件,不要混用!如果混用了,config set 的优先级更高,手动改文件无效。而 config unset 也未必能解决问题,最可靠的方法就是统一用 config set 命令。


三、环境变量配置

3.1 编辑 .env 文件

bash 复制代码
cd /opt/openclaw
nano .env

添加所有飞书机器人的凭证:

bash 复制代码
# 小智机器人(总控)
FEISHU_XIAOZHI_APP_ID=cli_xxx
FEISHU_XIAOZHI_APP_SECRET=xxx

# 公众号机器人
FEISHU_WECHAT_APP_ID=cli_xxx
FEISHU_WECHAT_APP_SECRET=xxx

# 小说机器人
FEISHU_NOVEL_APP_ID=cli_xxx
FEISHU_NOVEL_APP_SECRET=xxx

# 酒店机器人
FEISHU_HOTEL_APP_ID=cli_xxx
FEISHU_HOTEL_APP_SECRET=xxx

# 校园机器人
FEISHU_XIAOYUAN_APP_ID=cli_xxx
FEISHU_XIAOYUAN_APP_SECRET=xxx

3.2 修改 docker-compose.yml

bash 复制代码
nano docker-compose.yml

environment: 部分添加:

yaml 复制代码
environment:
  - NODE_ENV=production
  - LOG_LEVEL=info
  - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_TOKEN}
  - DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
  - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}
  - VOLCANO_ENGINE_API_KEY=${VOLCANO_ENGINE_API_KEY}
  - FEISHU_XIAOZHI_APP_ID=${FEISHU_XIAOZHI_APP_ID}
  - FEISHU_XIAOZHI_APP_SECRET=${FEISHU_XIAOZHI_APP_SECRET}
  - FEISHU_WECHAT_APP_ID=${FEISHU_WECHAT_APP_ID}
  - FEISHU_WECHAT_APP_SECRET=${FEISHU_WECHAT_APP_SECRET}
  - FEISHU_NOVEL_APP_ID=${FEISHU_NOVEL_APP_ID}
  - FEISHU_NOVEL_APP_SECRET=${FEISHU_NOVEL_APP_SECRET}
  - FEISHU_HOTEL_APP_ID=${FEISHU_HOTEL_APP_ID}
  - FEISHU_HOTEL_APP_SECRET=${FEISHU_HOTEL_APP_SECRET}
  - FEISHU_XIAOYUAN_APP_ID=${FEISHU_XIAOYUAN_APP_ID}
  - FEISHU_XIAOYUAN_APP_SECRET=${FEISHU_XIAOYUAN_APP_SECRET}

四、创建 Agent

每个飞书机器人对应一个独立的 Agent。

bash 复制代码
# 进入容器
docker exec -it openclaw-gateway sh

# 创建公众号助手
openclaw agents add wechat-public

# 创建小说助手
openclaw agents add novel

# 创建酒店助手
openclaw agents add hotel

# 创建校园助手
openclaw agents add xiaoyuan

# 退出容器
exit

注意 :创建 Agent 时遇到 Configure chat channels now? 提示,选择 No(渠道配置稍后通过配置文件统一管理)。


五、配置文件

5.1 备份当前配置

bash 复制代码
cd /opt/openclaw
cp config/openclaw.json config/openclaw.json.bak

5.2 完整配置文件

bash 复制代码
nano config/openclaw.json

写入以下内容:

json 复制代码
{
  "gateway": {
    "bind": "lan",
    "port": 18789,
    "auth": {
      "mode": "token"
    },
    "controlUi": {
      "allowedOrigins": [
        "http://localhost:18789",
        "http://127.0.0.1:18789",
        "http://localhost:37406",
        "http://127.0.0.1:37406"
      ]
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "deepseek/deepseek-chat"
      }
    },
    "list": [
      {
        "id": "main"
      },
      {
        "id": "wechat-public",
        "name": "wechat-public",
        "workspace": "/home/node/.openclaw/workspace-wechat-public",
        "agentDir": "/home/node/.openclaw/agents/wechat-public/agent",
        "model": {
          "primary": "bailian/qwen-plus"
        }
      },
      {
        "id": "novel",
        "name": "novel",
        "workspace": "/home/node/.openclaw/workspace-novel",
        "agentDir": "/home/node/.openclaw/agents/novel/agent",
        "model": {
          "primary": "bailian/qwen-plus"
        }
      },
      {
        "id": "hotel",
        "name": "hotel",
        "workspace": "/home/node/.openclaw/workspace-hotel",
        "agentDir": "/home/node/.openclaw/agents/hotel/agent",
        "model": {
          "primary": "bailian/qwen-plus"
        }
      },
      {
        "id": "xiaoyuan",
        "name": "xiaoyuan",
        "workspace": "/home/node/.openclaw/workspace-xiaoyuan",
        "agentDir": "/home/node/.openclaw/agents/xiaoyuan/agent",
        "model": {
          "primary": "bailian/qwen-plus"
        }
      }
    ]
  },
  "models": {
    "providers": {
      "bailian": {
        "api": "openai-completions",
        "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "apiKey": "${DASHSCOPE_API_KEY}",
        "models": [
          {
            "id": "qwen-plus",
            "name": "通义千问 Plus"
          }
        ]
      },
      "deepseek": {
        "api": "openai-completions",
        "baseUrl": "https://api.deepseek.com",
        "apiKey": "${DEEPSEEK_API_KEY}",
        "models": [
          {
            "id": "deepseek-chat",
            "name": "DeepSeek Chat"
          }
        ]
      },
      "volcengine": {
        "api": "openai-completions",
        "baseUrl": "https://ark.cn-beijing.volces.com/api/v3",
        "apiKey": "${VOLCANO_ENGINE_API_KEY}",
        "models": [
          {
            "id": "doubao-seed-2-0-pro-260215",
            "name": "豆包 Seed 2.0 pro"
          }
        ]
      }
    },
    "mode": "merge"
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "connectionMode": "websocket",
      "requireMention": true,
      "dmPolicy": "pairing",
      "groupPolicy": "open",
      "accounts": {
        "account-xiaozhi": {
          "appId": "${FEISHU_XIAOZHI_APP_ID}",
          "appSecret": "${FEISHU_XIAOZHI_APP_SECRET}"
        },
        "account-wechat": {
          "appId": "${FEISHU_WECHAT_APP_ID}",
          "appSecret": "${FEISHU_WECHAT_APP_SECRET}"
        },
        "account-novel": {
          "appId": "${FEISHU_NOVEL_APP_ID}",
          "appSecret": "${FEISHU_NOVEL_APP_SECRET}"
        },
        "account-hotel": {
          "appId": "${FEISHU_HOTEL_APP_ID}",
          "appSecret": "${FEISHU_HOTEL_APP_SECRET}"
        },
        "account-xiaoyuan": {
          "appId": "${FEISHU_XIAOYUAN_APP_ID}",
          "appSecret": "${FEISHU_XIAOYUAN_APP_SECRET}"
        }
      },
      "defaultAccount": "account-xiaozhi"
    }
  },
  "bindings": [
    {
      "agentId": "main",
      "match": {
        "channel": "feishu",
        "accountId": "account-xiaozhi"
      }
    },
    {
      "agentId": "wechat-public",
      "match": {
        "channel": "feishu",
        "accountId": "account-wechat"
      }
    },
    {
      "agentId": "novel",
      "match": {
        "channel": "feishu",
        "accountId": "account-novel"
      }
    },
    {
      "agentId": "hotel",
      "match": {
        "channel": "feishu",
        "accountId": "account-hotel"
      }
    },
    {
      "agentId": "xiaoyuan",
      "match": {
        "channel": "feishu",
        "accountId": "account-xiaoyuan"
      }
    }
  ],
  "plugins": {
    "entries": {
      "deepseek": {
        "enabled": true
      }
    }
  },
  "meta": {
    "lastTouchedVersion": "2026.4.8",
    "lastTouchedAt": "2026-04-10T10:12:39.868Z"
  }
}

5.3 验证 JSON 格式

bash 复制代码
cat config/openclaw.json | python3 -m json.tool > /dev/null && echo "✅ 格式正确" || echo "❌ 格式错误"

六、重启与验证

6.1 重启容器

bash 复制代码
cd /opt/openclaw
docker compose restart

6.2 查看日志

bash 复制代码
docker compose logs --tail=50 | grep -i feishu

预期输出 :应该看到所有账号都显示 WebSocket client started

6.3 查看所有 Agent

bash 复制代码
docker exec -it openclaw-gateway openclaw agents list

预期输出

arduino 复制代码
main
wechat-public
novel
hotel
xiaoyuan

七、配对机器人

7.1 触发配对

在飞书中向每个机器人发送任意消息(如"你好"),机器人会回复配对码。

7.2 查看待配对请求

bash 复制代码
docker exec -it openclaw-gateway openclaw pairing list

7.3 批准配对

bash 复制代码
docker exec -it openclaw-gateway openclaw pairing approve <配对码>

对每个机器人重复此操作。


八、群聊配置(重要)

8.1 关键配置参数

参数 作用 推荐值
groupPolicy 群聊策略 "open"(允许所有群聊)
requireMention 是否需要 @ 才回复 true

8.2 ⚠️ 常见问题:群聊 @ 没反应

现象 原因 解决方法
群聊中 @ 机器人没回复 消息中没有正确 @ 机器人 使用飞书的 @ 功能,选择机器人名称
日志显示 did not mention bot 只打了文字,没有使用 @ 功能 输入 @ 符号,从列表中选择机器人
日志显示 groupPolicy: allowlist 群聊策略为白名单模式 改为 "open"

8.3 检查群聊策略

bash 复制代码
# 查看当前生效的 groupPolicy
docker exec -it openclaw-gateway openclaw config get channels.feishu.groupPolicy

如果输出不是 "open",执行:

bash 复制代码
docker exec -it openclaw-gateway openclaw config set channels.feishu.groupPolicy open
cd /opt/openclaw && docker compose restart

8.4 确认 @ 方式正确

在飞书群聊中:

  • 输入 @ 符号
  • 从弹出的列表中选择机器人
  • 确保机器人名称高亮显示(通常是蓝色)

8.5 确认机器人已在群聊中

在群聊的「群设置」→「群机器人」中,确认机器人已在列表中。


九、配置管理注意事项(重要经验)

9.1 ⚠️ 配置修改方式的选择

OpenClaw 的配置有两种修改方式,优先级不同:

方式 优先级 持久化
openclaw config set 命令 写入内部存储,覆盖文件配置
手动编辑 openclaw.json 仅文件修改

9.2 ⚠️ 踩坑经历(必读)

问题现象

  • 第一个 Agent 使用 openclaw config set channels.feishu.groupPolicy allowlist 设置了群聊策略
  • 后来发现群聊不生效,想改为 open
  • 手动编辑 openclaw.jsongroupPolicy 改为 "open"
  • 重启后始终无效,config get 查看仍然是 allowlist

排查过程

  • 检查 JSON 格式 ✅ 正确
  • 检查配置文件内容 ✅ 已改为 open
  • 检查容器挂载 ✅ 正常
  • 检查飞书权限 ✅ 已开通
  • 检查日志 ✅ 无报错

最终发现openclaw config set 命令设置的值优先级高于 手动编辑的 JSON 文件。即使文件中写的是 open,运行时仍然使用 config set 设置的 allowlist

⚠️ 经验教训

  • 尝试过先用 config unset 删除再改文件配置,实测无效
  • 唯一有效的解决方法 :用 config set 命令直接覆盖
bash 复制代码
# 唯一有效的解决方法:用 config set 直接覆盖
docker exec -it openclaw-gateway openclaw config set channels.feishu.groupPolicy open

9.3 推荐做法

场景 推荐方式
日常配置调整 统一使用 config set 命令
大规模配置迁移 docker compose down 停止服务 → 手动编辑 → docker compose up -d
配置排查 config get 查看运行时实际生效的值

核心原则

要么全程用命令,要么全程改文件,不要混用!如果混用了,config set 的优先级更高,手动改文件无效。而 config unset 也未必能解决问题,最可靠的方法就是统一用 config set 命令。

9.4 查看当前生效的配置

bash 复制代码
# 查看完整运行时配置
docker exec -it openclaw-gateway openclaw config get

# 查看特定配置项
docker exec -it openclaw-gateway openclaw config get channels.feishu.groupPolicy

十、最终架构总结

飞书机器人 Account ID Agent ID 模型 用途
小智 account-xiaozhi main DeepSeek 日常总控
公众号 account-wechat wechat-public 百炼 文案写作
小说 account-novel novel 百炼 小说创作
酒店 account-hotel hotel 百炼 酒店咨询
校园 account-xiaoyuan xiaoyuan 百炼 校园助手

十一、常见问题汇总

问题 原因 解决方法
报错 expected record, received array accounts 用了数组格式 改为对象格式 { "key": { ... } }
机器人收不到消息 事件订阅未配置长连接 飞书开放平台选择「长连接接收事件」
配对码失效 有效期约 5-10 分钟 重新发送消息获取新码
原有训练记忆丢失 添加 bindings 后路由变化 升级前备份,升级后重新训练。建议一开始就配置成多 Agent 结构
Agent 找不到 未执行 openclaw agents add 先创建 Agent 再修改配置
群聊 @ 没反应 没有正确 @ 机器人 使用 @ 功能,从列表中选择机器人
群聊 @ 没反应 groupPolicy 不是 open 执行 config set channels.feishu.groupPolicy open
配置修改后不生效 config set 优先级更高 统一使用 config set 命令
手动改 JSON 无效 config set 覆盖了文件配置 config set 直接覆盖(config unset 实测无效)

完成以上配置后,你就可以在飞书中与多个独立的 AI 机器人对话了! 🚀

相关推荐
xcbrand2 小时前
专精特新品牌全案公司有哪些
大数据·人工智能·python
波动几何2 小时前
五层能力架构全景
人工智能
攻城狮7号2 小时前
面向未来的时序数据库选型指南:当数据存储遇上原生AI
数据库·人工智能·时序数据库·apache iotdb
小白狮ww2 小时前
3 秒出全纹理!TRELLIS.2 实现单图生成高分辨率 3D 资产
图像处理·人工智能·3d·语言模型·微软·开源·3d内容生成
ZWZhangYu2 小时前
Spring AI Alibaba 入门实战:Java 开发者如何快速构建第一个 AI 应用
人工智能
动恰客流管家2 小时前
动恰 3DV3丨门店选址与展会客流统计方案:精准数据赋能实体商业科学决策
大数据·人工智能
Agent产品评测局2 小时前
图片生成智能体哪家好?2026年企业级视觉创作与自动化选型全景横评
运维·人工智能·ai·自动化
移动云开发者联盟2 小时前
告别AI失忆!移动云大云海山数据库解锁OpenClaw云端长期记忆
数据库·人工智能
leo825...2 小时前
AI大模型、OpenClaw、Claude Code、Agent、Prompt、MCP、Skill、Token、多智能体、具身智能到底啥关系?
人工智能·ai