OpenClaw飞书多Agent实战:我在飞书建了个AI团队

OpenClaw飞书多Agent实战:我在飞书建了个AI团队

前言

你有没有想过,在飞书里建一个AI团队,每个AI都有专人专岗、互不干扰、还能协作?

比如:

  • 📝 文案助手 专门写文案、策划方案
  • 📚 知识管理员 负责RAG检索、知识库问答
  • 💻 开发助手 专注代码审查、技术方案
  • 📊 数据分析师 处理数据、生成报表

好消息是:一个飞书App + 一套OpenClaw 就能实现!

今天这篇文章,手把手教你搭建飞书多Agent系统。


一、架构原理

核心概念

在开始之前,先理解三个核心概念:

概念 说明
Binding(路由) 一条路由规则,决定消息交给哪个Agent处理
Session(会话隔离) 每个Agent + 群聊组合 = 独立上下文、工作目录、模型、工具
Agent间通信 通过 sessions_send 异步委派,实现协作

系统架构图

飞书Bot(一个应用)
│
┌─────────────┼─────────────┐
│             │             │
群聊「开发」  群聊「运营」  群聊「知识库」
│             │             │
Coder Agent   Ops Agent     Wiki Agent

核心优势:

  • ✅ 不需要装多套OpenClaw,一个实例搞定所有
  • ✅ 每个Agent有独立的工作空间和记忆
  • ✅ Agent之间可以互相通信、协作
  • ✅ 消息自动路由到对应Agent

二、快速开始

前置要求

  • 已安装 OpenClaw 并完成基础配置
  • 拥有飞书开放平台管理员权限
  • 一个可用的飞书企业账号

Step 1:创建飞书应用

  1. 登录 飞书开放平台
  2. 创建企业自建应用
  3. 添加以下权限:
功能 权限
接收消息 im.message.receive_v1
发送消息 im:message:send_as_bot
创建群聊 im.chat:create
更新群聊 im:chat:update
添加成员 im:chat.members:write_only
文档读写 docs:doc docs:doc:create
云文档 drive:drive
  1. 配置消息事件订阅(使用ngrok或内网穿透)

Step 2:连接飞书频道

# 添加飞书配置
openclaw channels add feishu \n  --app-id cli_xxxx \n  --app-secret your_app_secret

# 验证连接
openclaw channels list

Step 3:创建多Agent

方式一:使用官方脚本(推荐)

# 克隆项目
git clone https://github.com/hyperlist/feishu-multi-agent.git
cd feishu-multi-agent

# 运行创建向导
python scripts/create_agent.py --preset momo
python scripts/create_agent.py --preset coder

方式二:手动创建

# 创建工作目录
mkdir -p ~/.openclaw/workspace-coder
mkdir -p ~/.openclaw/workspace-writer
mkdir -p ~/.openclaw/workspace-wiki

# 添加Agent
openclaw agents add --workspace ~/.openclaw/workspace-coder coder
openclaw agents add --workspace ~/.openclaw/workspace-writer writer
openclaw agents add --workspace ~/.openclaw/workspace-wiki wiki

三、配置文件详解

完整配置示例

将以下配置添加到 ~/.openclaw/openclaw.json

{
  "agents": {
    "list": [
      {
        "id": "momo",
        "name": "MOMO协调者",
        "workspace": "~/.openclaw/workspaces/momo",
        "model": {
          "primary": "deepseek/deepseek-chat"
        },
        "identity": {
          "name": "MOMO",
          "emoji": "🦞",
          "description": "多Agent系统协调者,负责分发任务和协调"
        },
        "tools": {
          "allow": ["gateway", "sessions"]
        }
      },
      {
        "id": "coder",
        "name": "开发助手",
        "workspace": "~/.openclaw/workspaces/coder",
        "model": {
          "primary": "claude-3-haiku"
        },
        "identity": {
          "name": "代码小助手",
          "emoji": "💻",
          "description": "专注代码开发、调试和审查"
        },
        "tools": {
          "allow": ["exec", "file"]
        }
      },
      {
        "id": "writer",
        "name": "文案助手",
        "workspace": "~/.openclaw/workspaces/writer",
        "model": {
          "primary": "qwen-plus"
        },
        "identity": {
          "name": "文案小达人",
          "emoji": "📝",
          "description": "专注文案创作、内容策划"
        },
        "tools": {
          "allow": ["file", "browser"]
        }
      },
      {
        "id": "wiki",
        "name": "知识管理员",
        "workspace": "~/.openclaw/workspaces/wiki",
        "model": {
          "primary": "qwen-max"
        },
        "identity": {
          "name": "知识库管理员",
          "emoji": "📚",
          "description": "负责知识库管理和RAG检索"
        },
        "tools": {
          "allow": ["file", "wiki", "memory"]
        }
      }
    ]
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "accounts": {
        "default": {
          "appId": "cli_xxxx",
          "appSecret": "your_app_secret"
        }
      },
      "groupPolicy": "allowlist"
    }
  },
  "bindings": [
    {
      "agentId": "momo",
      "match": {
        "channel": "feishu",
        "accountId": "default",
        "chatId": "oc_coordinator_group"
      }
    },
    {
      "agentId": "coder",
      "match": {
        "channel": "feishu",
        "accountId": "default",
        "chatId": "oc_dev_group"
      }
    },
    {
      "agentId": "writer",
      "match": {
        "channel": "feishu",
        "accountId": "default",
        "chatId": "oc_ops_group"
      }
    },
    {
      "agentId": "wiki",
      "match": {
        "channel": "feishu",
        "accountId": "default",
        "chatId": "oc_wiki_group"
      }
    }
  ]
}

Agent身份文件 (SOUL.md)

在每个Agent的工作目录下创建 SOUL.md

coder/SOUL.md

你是研发团队的AI助手,专注于:
- 代码审查与优化建议
- 技术方案评审
- 故障排查指导
- 开发工具推荐

风格:专业、简洁、注重最佳实践

writer/SOUL.md

你是内容创作助手,专注于:
- 文案撰写与修改
- 营销方案策划
- 社交媒体内容
- 活动策划

风格:生动、有创意、贴近用户

wiki/SOUL.md

你是知识库管理员,专注于:
- RAG检索增强
- 知识问答
- 文档整理
- 信息归纳

风格:严谨、准确、善于引用

四、群组配置

创建飞书群聊

# 在飞书中创建以下群聊
- AI协调中心(协调者MOMO)
- 开发交流群(coder)
- 运营策划群(writer)
- 知识库问答(wiki)

配置群组白名单

# 设置只允许指定群聊
openclaw config set channels.feishu.groupPolicy allowlist

# 添加群聊ID到白名单
openclaw config set --json channels.feishu.groupAllowFrom '[
  "oc_coordinator_group",
  "oc_dev_group",
  "oc_ops_group",
  "oc_wiki_group"
]'

将Bot添加到群聊

  1. 打开飞书群聊
  2. 点击「设置」→「群机器人」
  3. 添加「自定义机器人」
  4. 复制机器人名称和webhook地址

五、部署脚本

一键部署脚本

创建 deploy-multiagent.sh

#!/bin/bash

# OpenClaw 飞书多Agent一键部署脚本

set -e

echo "🚀 开始部署飞书多Agent系统..."

# 1. 创建工作目录
echo "📁 创建工作目录..."
mkdir -p ~/.openclaw/workspaces/{momo,coder,writer,wiki}

# 2. 创建Agent身份文件
echo "📝 创建Agent身份文件..."

# MOMO协调者
cat > ~/.openclaw/workspaces/momo/SOUL.md << 'EOF'
你是OpenClaw多Agent系统的协调者MOMO。

你的职责:
- 理解用户需求
- 将任务分发到合适的Agent
- 协调多个Agent协作
- 汇总各Agent的结果

风格:友善、高效、善于协调
EOF

# Coder
cat > ~/.openclaw/workspaces/coder/SOUL.md << 'EOF'
你是研发团队的AI助手,专注于:
- 代码审查与优化建议
- 技术方案评审
- 故障排查指导

风格:专业、简洁、注重最佳实践
EOF

# Writer
cat > ~/.openclaw/workspaces/writer/SOUL.md << 'EOF'
你是内容创作助手,专注于:
- 文案撰写与修改
- 营销方案策划
- 活动策划

风格:生动、有创意、贴近用户
EOF

# Wiki
cat > ~/.openclaw/workspaces/wiki/SOUL.md << 'EOF'
你是知识库管理员,专注于:
- RAG检索增强
- 知识问答
- 文档整理

风格:严谨、准确、善于引用
EOF

# 3. 添加Agent
echo "🤖 添加Agent..."
openclaw agents add --workspace ~/.openclaw/workspaces/momo momo
openclaw agents add --workspace ~/.openclaw/workspaces/coder coder
openclaw agents add --workspace ~/.openclaw/workspaces/writer writer
openclaw agents add --workspace ~/.openclaw/workspaces/wiki wiki

# 4. 配置飞书
echo "📱 配置飞书频道..."
read -p "请输入飞书 App ID: " APP_ID
read -p "请输入飞书 App Secret: " APP_SECRET

openclaw channels add feishu --app-id $APP_ID --app-secret $APP_SECRET

# 5. 重启网关
echo "🔄 重启网关..."
openclaw gateway restart

# 6. 验证
echo "✅ 验证部署..."
openclaw agents list
openclaw channels list

echo "🎉 部署完成!"
echo "请在飞书中创建以下群聊并添加Bot:"
echo "  - AI协调中心 (MOMO)"
echo "  - 开发交流群 (Coder)"
echo "  - 运营策划群 (Writer)"
echo "  - 知识库问答 (Wiki)"

运行部署脚本:

chmod +x deploy-multiagent.sh
./deploy-multiagent.sh

Docker部署方式

创建 docker-compose.yml

version: '3.8'

services:
  openclaw:
    image: openclaw/openclaw:latest
    container_name: openclaw-multiagent
    ports:
      - "18789:18789"
    volumes:
      - ~/.openclaw:/root/.openclaw
      - /path/to/workspaces:/root/.openclaw/workspaces
    environment:
      - OPENCLAW_GATEWAY_PORT=18789
      - FEISHU_APP_ID=${FEISHU_APP_ID}
      - FEISHU_APP_SECRET=${FEISHU_APP_SECRET}
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 4G
        reservations:
          memory: 2G

启动:

# 设置环境变量
export FEISHU_APP_ID=cli_xxxx
export FEISHU_APP_SECRET=your_secret

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

systemd服务配置(Linux)

创建 /etc/systemd/system/openclaw.service

[Unit]
Description=OpenClaw Multi-Agent Gateway
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/home/your_user
ExecStart=/usr/local/bin/openclaw gateway start
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
sudo systemctl status openclaw

六、Agent间协作示例

场景:用户请求写一个Python爬虫

用户 → 发送到【开发交流群】

Coder Agent 回复:

好的,我来帮你写一个爬虫。你需要爬取什么网站?

用户 → “爬取B站视频信息”

Coder Agent → 调用 sessions_send 通知 Wiki Agent 查RAG知识库

Wiki Agent 回复:

找到B站API相关文档,使用其公开接口可获取视频信息。

Coder Agent 整合信息,编写代码:

import requests

def get_bilibili_video_info(bvid):
    """获取B站视频信息"""
    url = f"https://api.bilibili.com/x/web-interface/view"
    params = {"bvid": bvid}
    headers = {"User-Agent": "Mozilla/5.0"}
    
    response = requests.get(url, params=params, headers=headers)
    return response.json()

# 使用示例
info = get_bilibili_video_info("BV1VzAMzzEEb")
print(f"标题: {info['data']['title']}")

七、常见问题与解决方案

问题1:消息没有被正确路由

症状:消息被错误的Agent处理

排查步骤

# 检查bindings配置
openclaw config get bindings

# 检查群聊ID
openclaw channels list

解决方案:确保 chatId 与实际群聊ID匹配


问题2:Agent无法访问飞书文档

症状:报错 Permission deniedDocument not found

解决方案

  1. 在飞书开放平台重新确认权限
  2. 确保Bot已被添加到文档协作者
# 重新配置飞书权限
openclaw channels remove feishu
openclaw channels add feishu --app-id xxx --app-secret yyy
openclaw gateway restart

问题3:Agent之间无法通信

症状sessions_send 失败

解决方案:确保目标Agent存在且tools配置正确

{
  "tools": {
    "allow": ["gateway", "sessions"]
  }
}

问题4:会话上下文混乱

症状:不同群聊的消息混入同一上下文

解决方案

# 清除特定会话
openclaw sessions clear <session-id>

# 或重启网关
openclaw gateway restart

问题5:飞书Bot收不到消息

症状:Bot没有任何响应

排查步骤

  1. 检查飞书开放平台的webhook配置
  2. 确认事件订阅是否生效
  3. 检查内网穿透是否正常
# 测试webhook
curl -X POST https://open.feishu.cn/open-apis/bot/v2/hook/your-webhook \n  -H "Content-Type: application/json" \n  -d '{"msg_type":"text","content":{"text":"test"}}'

八、进阶配置

不同群聊使用不同模型

{
  "agents": {
    "list": [
      {
        "id": "coder",
        "model": {
          "primary": "claude-3-haiku",
          "fallback": "gpt-4o-mini"
        }
      },
      {
        "id": "writer",
        "model": {
          "primary": "qwen-plus"
        }
      }
    ]
  }
}

配置Agent工具权限

{
  "agents": {
    "list": [{
      "id": "coder",
      "tools": {
        "allow": ["exec", "file", "github"],
        "deny": ["gateway"]
      }
    }]
  }
}

启用RAG知识库

在Agent配置中添加:

{
  "memory": {
    "provider": "local",
    "path": "~/.openclaw/knowledge",
    "chunkSize": 512,
    "topK": 5
  }
}

九、项目资源

资源 链接
飞书多Agent模板 GitHub: hyperlist/feishu-multi-agent
OpenClaw官方文档 docs.openclaw.ai
飞书开放平台 open.feishu.cn

十、总结

通过本文,你应该已经掌握了:

  1. OpenClaw多Agent架构原理 - 理解Binding、Session、Agent间通信
  2. 飞书多Agent配置方法 - 一个Bot驱动多个独立Agent
  3. 完整部署脚本 - 一键部署Docker/Linux/systemd多种方式
  4. 常见问题解决方案 - 路由错误、权限问题、通信失败等

核心优势回顾:

优势 说明
🚀 简化部署 一套OpenClaw,多个Agent
🎯 专业分工 每个Agent专人专岗
🔒 会话隔离 独立上下文,互不干扰
🤝 协作能力 Agent间可互相通信
📱 统一入口 一个飞书Bot,触达所有Agent

下一步建议:

  1. 先部署一个简单的Agent练手
  2. 熟悉路由配置和身份文件
  3. 逐步扩展为多Agent系统
  4. 尝试Agent间协作场景

视频来源:B站 BV1VzAMzzEEb
本文整理自原视频教程,配合官方文档补充完整配置代码

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息