TOPIC / RESOURCE

OpenClaw 多 Agent 飞书 Bot 配置指南

如果你准备在飞书中让不同机器人绑定不同 Agent 来实现角色分工和渠道分流,这页先帮你把目录结构、配置文件模板、飞书应用创建步骤和常见报错排查顺序理清楚。建议先把单 Agent 路径跑稳并验证权限边界,再按实际需求逐步拆分为多 Agent 架构。

适合谁

  • 已经把单机器人飞书路线跑稳
  • 希望让不同机器人绑定不同 Agent
  • 准备做角色分工、渠道分流或上下文隔离

先判断你是不是真的需要多 Agent

多 Agent 不是“更高级就一定更好”,而是一种更适合明确分工的配置方式。

更适合上多 Agent 的情况通常是:

  • 你想让不同机器人承担不同角色
  • 你想按渠道或账号分流
  • 你想把个人场景和工作场景彻底分开
  • 你已经把单 Agent 路线跑稳了

如果你现在连单个飞书机器人都还没完全跑通,先不要急着上这一层。

核心概念,先用这三个词理解

agentId

一个独立“大脑”。它应该拥有自己的工作区、自己的状态目录、自己的会话。

accountId

一个具体的飞书账号实例。最常见的理解就是:一个飞书应用 / 一个机器人身份。

binding

把某个渠道入站消息路由到哪个 agentId 的规则。

简单理解就是:

  • agentId 决定“谁来干活”
  • accountId 决定“消息从哪个机器人进来”
  • binding 决定“这条消息交给谁”

目录结构先别搞混

多 Agent 场景里,最容易乱的是路径。更实用的心智是把它拆成三层:

~/.openclaw/
├── openclaw.json
├── agents/
│   ├── main/agent/
│   ├── dev/agent/
│   └── content/agent/
└── workspace/
    ├── main/
    ├── dev/
    └── content/

你至少要分清:

  • workspace:长期规则、记忆、角色文件
  • agentDir:认证、状态、模型注册等 Agent 状态
  • sessions:会话和路由状态

最容易踩的坑就是:多个 Agent 共用同一个 agentDir,最后认证和会话互相打架。

先用一份最小模板跑通,不要一上来上 6 个角色

很多人一上来就照着 6 Agent 模板猛填,结果一处配错就全盘看不清。更稳的方式是先用 2 到 3 个 Agent 跑通,再扩。

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom/qwen3.5-plus"
      }
    },
    "list": [
      {
        "id": "main",
        "default": true,
        "name": "大总管",
        "workspace": "/home/node/.openclaw/workspace/main",
        "agentDir": "/home/node/.openclaw/agents/main/agent"
      },
      {
        "id": "content",
        "name": "内容助理",
        "workspace": "/home/node/.openclaw/workspace/content",
        "agentDir": "/home/node/.openclaw/agents/content/agent"
      }
    ]
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "accounts": {
        "main": {
          "appId": "cli_xxxxxxxxxxxxxxx",
          "appSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        },
        "content": {
          "appId": "cli_xxxxxxxxxxxxxxx",
          "appSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
      }
    }
  },
  "bindings": [
    { "agentId": "main", "match": { "channel": "feishu", "accountId": "main" } },
    { "agentId": "content", "match": { "channel": "feishu", "accountId": "content" } }
  ],
  "tools": {
    "agentToAgent": {
      "enabled": true,
      "allow": ["main", "content"]
    }
  }
}

重点不是把模板背下来,而是先确认:

  • 每个 id 唯一
  • 每个 workspace 独立
  • 每个 agentDir 独立
  • 每个飞书机器人都有对应 accountId
  • 每个 accountId 都有对应 binding

飞书应用怎么配,先抓最关键的 5 步

1. 为每个 Agent 创建独立应用

例如:

  • OpenClaw-大总管
  • OpenClaw-内容助理
  • OpenClaw-开发助理

2. 记录每个应用的 App IDApp Secret

这一步别偷懒。后面一旦贴错,排障会非常痛苦。

3. 开启机器人能力

至少先确认:

  • 机器人能力已开启
  • 允许以机器人身份加入群聊

4. 事件订阅优先用长连接

第一次做多 Agent,不要再给自己加 webhook 复杂度。先用长连接,把最小消息链路跑通。

5. 权限开完后,记得发布版本

很多“为什么它就是不在线”的问题,根源不是配置写错,而是飞书应用根本还没发布。

启动与校验,按这个顺序来

1. 先让 OpenClaw 帮你建 Agent

openclaw agents add content
openclaw agents add dev
openclaw agents list --bindings

2. 再手动核对目录

mkdir -p /home/node/.openclaw/workspace/{main,content,dev}
mkdir -p /home/node/.openclaw/agents/{main,content,dev}/agent

3. 先校验 JSON

node -e "JSON.parse(require('fs').readFileSync('/home/node/.openclaw/openclaw.json'))" && echo "OK"

4. 再启动

openclaw start

如果你已经进入更正式的环境,再考虑后台或服务化启动。

5. 用日志确认是否真的上线

tail -f /home/node/.openclaw/run.log

如果日志里能看到类似 feishu main: running,说明对应机器人已经起来了。

最容易踩的坑,按这张排查表看

Bot offline

优先检查:

  • App ID / App Secret 是否贴错
  • 飞书应用是否已发布
  • 日志里是否有鉴权报错

Agent 之间不协作

优先检查:

  • tools.agentToAgent.allow 是否包含所有 Agent
  • 每个工作区是否真的有 AGENTS.md
  • 是否有多个 Agent 共用同一个 agentDir

消息能发不能收,或能收不能回

优先检查:

  • 事件订阅有没有勾 im.message.receive_v1
  • 权限里有没有开消息权限
  • 长连接是否正常

路由不生效

优先检查:

  • bindings 有没有写错
  • accountId 是否和飞书账号实例一致
  • 是不是把更具体的规则放在了更泛的规则后面

下一步建议

FAQ

本页常见问题

当你已经把单机器人路径跑稳,并且确实需要角色分工、不同渠道分流或不同上下文隔离时,多 Agent 才值得上。

不一定,但对大多数人来说,一开始按一对一去理解和配置最容易排障,也最不容易把路由搞乱。

最常见的是多个 Agent 共用同一个 agentDir、bindings 配错、飞书应用没发布,以及把路径写成了错误的用户目录。