同一个进程跑 3 个 AI Agent,按飞书群自动路由——OpenClaw 多角色配置实战

电商团队通常不止一个群:销售群聊业绩、售后群处理工单、运营群盯库存。如果每个群想配一个专属 AI 助手,开 3 台服务器太浪费。这篇文章演示怎么在同一个 OpenClaw(🦞)实例里配 3 个不同人格、不同技能的 Agent,按飞书群 ID 自动路由,用户感知是 3 个独立助手,底层是 1 个进程。

场景和目标

假设你有一个电商团队,需求如下:

需要什么样的 AI核心能力
销售讨论群热情、数据驱动查销售额、分析订单趋势、监控退货率
售后工单群耐心、严谨处理退款、查工单状态、分类客诉
运营日报群简洁、效率至上库存预警、补货建议、自动日报

这 3 个群 @ 同一个飞书 Bot,但各群收到的回复风格和能力完全不同。

OpenClaw 的多 Agent 机制就是为这种场景设计的:不同 Workspace → 不同人格和技能 → 通过 bindings 路由到不同群。下面一步步配。


Step 1:建 Workspace 目录

每个 Agent 有自己的 Workspace,彼此隔离。Workspace 下的 SOUL.md 定义人格,skills/ 目录定义能力。

mkdir -p /data/workspace-sales/skills
mkdir -p /data/workspace-support/skills
mkdir -p /data/workspace-ops/skills

写人格文件

销售助手:

cat > /data/workspace-sales/SOUL.md << 'EOF'
# 销售助手

你是电商团队的销售数据分析助手。

## 风格
- 先给数据再给分析,用百分比和趋势说话
- 主动发现异常:"华东区退货率比上周高了 3 个点"

## 不做
- 不处理售后和退款
- 不编造数字,数据来自平台 API
EOF

售后客服:

cat > /data/workspace-support/SOUL.md << 'EOF'
# 售后客服

你是电商团队的售后处理助手。

## 风格
- 先确认问题再给方案
- 涉及退款给明确金额和操作步骤

## 不做
- 不回答销售数据
- 超授权金额提醒找主管
EOF

运营助手:

cat > /data/workspace-ops/SOUL.md << 'EOF'
# 运营助手

你是电商团队的运营监控助手。

## 风格
- 能用数字就不用文字
- 预警信息标粗
- 主动推送关键信息

## 不做
- 不处理销售分析和售后
EOF

Step 2:写 Skill 文件

Skill 是 Markdown 格式的能力描述,放在 skills/ 目录下,OpenClaw 自动加载到对应 Agent 的 System Prompt。

销售助手的数据查询 Skill:

cat > /data/workspace-sales/skills/sales-query/SKILL.md << 'EOF'
# 销售数据查询

## 什么时候用
用户问销售额、订单量、退货率、GMV、客单价、转化率

## 怎么做

### 查今日概况

curl -s -H "Authorization: Bearer $SHOP_TOKEN" \
"$SHOP_API/v1/orders/stats?date=$(date +%Y-%m-%d)" | jq '{

total_orders: .data.order_count,
total_amount: (.data.total_amount / 100 | tostring + " 元"),
avg_price: (.data.avg_amount / 100 | tostring + " 元"),
return_rate: (.data.return_rate | tostring + "%")

}'


### 查日期范围趋势

curl -s -H "Authorization: Bearer $SHOP_TOKEN" \
"$SHOP_API/v1/orders/trend?start=$START&end=$END" | jq '.data[] | {

date: .date,
orders: .order_count,
amount: (.total_amount / 100)

}'


## 输出要求
- 先报数字,再给环比
- 退货率 > 5% 主动标出
EOF

运营助手的库存预警 Skill:

cat > /data/workspace-ops/skills/inventory-alert/SKILL.md << 'EOF'
# 库存预警

## 什么时候用
用户问库存,或定时任务触发

## 怎么做

curl -s -H "Authorization: Bearer $SHOP_TOKEN" \
"$SHOP_API/v1/inventory/alerts" | jq '.data[] | select(.stock < .safety_stock) | {

sku_id: .sku_id,
name: .product_name,
current: .stock,
safety_line: .safety_stock,
gap: (.safety_stock - .stock)

}'


## 输出要求
- 按缺口大小排序
- 缺口超安全库存 50% 标"紧急"
- 补货建议 = 安全库存 × 2 - 当前库存
EOF

Step 3:核心配置 openclaw.json

这是路由的关键——定义 Agent 列表、群到 Agent 的映射、飞书渠道:

{
  "ai": {
    "provider": "amazon-bedrock",
    "model": "us.anthropic.claude-sonnet-4-6",
    "auth": "aws-sdk"
  },
  "agents": {
    "list": [
      {
        "id": "sales",
        "name": "销售助手",
        "workspace": "/data/workspace-sales"
      },
      {
        "id": "support",
        "name": "售后客服",
        "workspace": "/data/workspace-support"
      },
      {
        "id": "ops",
        "name": "运营助手",
        "workspace": "/data/workspace-ops"
      }
    ]
  },
  "bindings": [
    {
      "match": {
        "channel": "feishu",
        "peer": { "kind": "group", "id": "oc_sales_group_id" }
      },
      "agentId": "sales"
    },
    {
      "match": {
        "channel": "feishu",
        "peer": { "kind": "group", "id": "oc_support_group_id" }
      },
      "agentId": "support"
    },
    {
      "match": {
        "channel": "feishu",
        "peer": { "kind": "group", "id": "oc_ops_group_id" }
      },
      "agentId": "ops"
    }
  ],
  "channels": {
    "feishu": {
      "enabled": true,
      "accounts": [{
        "appId": "cli_your_app_id",
        "appSecret": "your_app_secret"
      }],
      "dmPolicy": "open",
      "groupPolicy": "open",
      "requireMention": true
    }
  },
  "session": {
    "dmScope": "per-peer"
  }
}

几个关键设计:

  • bindings:飞书群 ID → Agent ID 的映射规则,消息进来自动路由
  • requireMention: true:群里必须 @ Bot 才回,避免刷屏
  • dmScope: per-peer:同群不同人的对话自动隔离
  • 零密钥:三个 Agent 共用一个 Bedrock 后端,走 IAM 角色认证

飞书群 ID 在哪找?群设置 → 群信息 → 群 ID(oc_ 开头)。


Step 4:接入飞书

OpenClaw 用出站 WebSocket 连飞书——不需要公网 IP,不需要配 Webhook。

创建飞书应用

  1. 飞书开放平台 → 创建企业自建应用
  2. 记下 App ID 和 App Secret
  3. 加权限:im:messageim:message:send_as_botim:chat:readonly
  4. 开启 Bot 能力

启动并验证

openclaw gateway start

# 确认飞书连上了
tail -f ~/.openclaw/logs/gateway.log | grep feishu
# 期望看到:[feishu] WebSocket connected to wss://open.feishu.cn/...

⚠️ 顺序很重要: 先启动 OpenClaw(WebSocket 连上),再去飞书开放平台配事件订阅。反过来会报连接失败。

飞书开放平台 → 事件与回调 → 添加事件 → 订阅 im.message.receive_v1 → 发布版本。

拉 Bot 进群测试

把 Bot 分别拉进 3 个群,在销售群 @ Bot:

@销售助手 今天卖了多少?

如果配置正确,销售群收到数据分析风格的回复,售后群收到客服风格的回复——底层是同一个进程。


Step 5:定时推送

运营助手不能只被动回答,还要主动推消息。在 openclaw.json 加 cron:

{
  "cron": {
    "jobs": [
      {
        "id": "morning-report",
        "schedule": "0 9 * * *",
        "agentId": "ops",
        "task": "生成昨日运营日报:销售额、订单量、退货率、低库存清单,推送运营群",
        "channel": "feishu",
        "target": "group:oc_ops_group_id"
      },
      {
        "id": "stock-check",
        "schedule": "every 4h",
        "agentId": "ops",
        "task": "检查库存,低于安全线的 SKU 立即推预警",
        "channel": "feishu",
        "target": "group:oc_ops_group_id"
      }
    ]
  }
}

每天 9 点自动推日报,每 4 小时扫一次库存。


进阶思路:SaaS 化多租户

如果你是电商平台方,要给每个卖家提供 AI 助手,可以用 一商户一容器 的方式:

# docker-compose 示例
version: '3'
services:
  openclaw:
    image: openclaw/openclaw:latest
    environment:
      - SELLER_ID=${SELLER_ID}
    volumes:
      - ./workspace-${SELLER_ID}:/data/workspace
    restart: always
    mem_limit: 512m

用 Amazon ECS 或 EKS 编排,CloudFormation 模板化部署。所有容器共享 Bedrock 后端(按量计费),数据通过独立 Workspace 天然隔离。

好处是隔离性强——一家出问题不影响其他家。AI Agent 场景主要消耗模型调用而非 CPU/内存,资源利用率的损失可以接受。


总结:改了哪些文件

新增:
  /data/workspace-sales/SOUL.md
  /data/workspace-sales/skills/sales-query/SKILL.md
  /data/workspace-support/SOUL.md
  /data/workspace-support/skills/ticket-handler/SKILL.md
  /data/workspace-ops/SOUL.md
  /data/workspace-ops/skills/inventory-alert/SKILL.md

修改:
  openclaw.json  ← 加了 agents.list + bindings + cron

没有写后端代码。人格是 Markdown,技能是 Markdown,路由是 JSON。配置驱动,不是开发驱动——这是 OpenClaw 做多 Agent 和传统 Function Calling 方案的根本区别。

📖 完整架构设计参考:亚马逊云科技官方博客深度解析

参考链接


本文是「OpenClaw 云端实战」系列第 4 篇。

你的团队有类似的多角色 AI 需求吗?配置过程有什么问题直接评论区问,手把手帮你排查 🔧

标签: none

添加新评论