Logo
活死人の行知路

OpenClaw多代理


📅 | 📝 450 字
#AI #openclaw

1 背景

1.1 现象

我添加了两个飞书机器人,我先添加了一个“抖店客服专员-抖抖”,并为其设置了角色,又添加了另一个“拼多多客服专员-多多”,未对其设置角色,我在测试时问“拼多多客服专员-多多”她是谁,她居然回复我她是“抖店客服专员-抖抖”,即出现了角色身份错乱的现象。

我的配置如下:

{
  channels: {
    feishu: {
      enabled: true,
      dmPolicy: 'pairing',
      typingIndicator: false,
      resolveSenderNames: false,
      accounts: {
        bot1: {
          appId: 'cli_xxx',
          appSecret: '__OPENCLAW_REDACTED__',
          botName: '抖店客服专员-抖抖',
          typingIndicator: true,
          resolveSenderNames: false,
        },
        bot2: {
          appId: 'cli_yyy',
          appSecret: '__OPENCLAW_REDACTED__',
          botName: '拼多多客服专员-多多',
          typingIndicator: true,
          resolveSenderNames: false,
        },
      },
    },
  },
  ...
}

1.2 分析

在上面描述的场景中,多个飞书机器人(通过 accounts 配置)出现角色错乱的问题,通常是因为后台的 AI 模型(或 agent)是共享的,导致无论哪个机器人被调用,都使用相同的系统提示(system prompt)或身份定义。简单来说,机器人账号只是“入口”(channel account),但背后的“大脑”(模型和角色)没有区分开来。当用户问“是谁”时,它基于全局或默认的 prompt 回答,导致混淆。

这在 OpenClaw(或类似框架,如从你的配置文件结构推测)中是常见问题,尤其当你只配置了 channels.accounts 而忽略 agents 部分时。以下是处理步骤和推荐方案,基于项目文档和社区实践(例如,使用多 agent 隔离角色)。

2 配置多个 Agents

对于多个飞书客服机器人(每个机器人有独立的 appId + appSecret,通常对应不同的客服角色,如售前、售后、技术支持等)的场景,推荐的做法是“一个人(一个客服机器人)对应一个独立的 Agent”,也就是多个 Agent(不是只用一个共享 Agent)。

2.1 为什么多个客服机器人适合“多个 Agent”而不是“一个 Agent”?

  • 隔离最彻底,避免串台/错乱:每个客服机器人处理不同类型咨询(如一个专售前引导、一个专退款售后),如果只用一个 Agent,所有对话记忆、上下文、prompt 都会共享,导致:
    • 用户问“退款进度”给售后机器人,它可能混入售前对话历史。
    • 角色身份容易错乱(你之前遇到的“问第二个机器人,它说自己是第一个”就是典型)。
    • 客服风格/知识边界模糊(售前要热情推销,售后要耐心安抚)。
  • 每个 Agent 独立:memory(对话历史)、workspace(文件/知识库)、system prompt(角色定义)、甚至模型(售前用更活泼的模型,售后用更严谨的)都能完全隔离。
  • 飞书侧体验最佳:用户加多个机器人到群/私聊,@不同机器人触发不同客服,互不干扰。群里可以同时有“售前Bot”“售后Bot”“技术Bot”,用户@谁谁专业回应。
  • 社区/文档共识:从 OpenClaw docs、GitHub issues、知乎/腾讯云/阿里云教程、实战复盘看,多飞书账号(multiple accounts) + 多 Agent + bindings by accountId 是主流方案,尤其适合客服/多角色场景。单 Agent 只适合“一个机器人 + 多群不同人格”。

如果强行只用一个 Agent(所有机器人 fallback 到 main),只能靠 prompt 硬编码区分(如“你是售前客服,如果消息来自账号X就… ”),但实际效果差、容易越界、维护麻烦。

2.2 推荐配置:多个飞书机器人 → 多个 Agent(一对一绑定)

示例(假设你有 3 个客服机器人:抖店客服专员、拼多多客服专员、售前、售后、技术):

  1. channels 配置(保持你的多账号):

    {
      "channels": {
        "feishu": {
          "enabled": true,
          "dmPolicy": "pairing",  // 或 "open" 根据需求
          "typingIndicator": false,
          "resolveSenderNames": false,
          "accounts": {
             "csr_doudou": {
              "appId": "cli_抖店客服专员xxx",
              "appSecret": "抖店客服专员secret",
              "botName": "抖店客服专员-抖抖",
              "typingIndicator": true,
              "resolveSenderNames": false,
            },
            "csr_duoduo": {
              "appId": "cli_拼多多客服专员xxx",
              "appSecret": "拼多多客服专员secret",
              "botName": "拼多多客服专员-多多",
              "typingIndicator": true,
              "resolveSenderNames": false,
            },
            "pre_sale": {
              "appId": "cli_售前xxx",
              "appSecret": "售前secret",
              "botName": "售前小助手",
              "enabled": true
            },
            "after_sale": {
              "appId": "cli_售后yyy",
              "appSecret": "售后secret",
              "botName": "售后客服",
              "enabled": true
            },
            "tech_support": {
              "appId": "cli_技术zzz",
              "appSecret": "技术secret",
              "botName": "技术支持",
              "enabled": true
            }
          }
        }
      }
    }
    
  2. agents 配置(创建多个独立 Agent):

    • 推荐用命令行创建(自动生成 workspace):
      openclaw agents add csr_doudou --workspace ~/.openclaw/workspace-csr-doudou --model "zai/glm-4.7"
      openclaw agents add csr_duoduo --workspace ~/.openclaw/workspace-csr-duoduo --model "zai/glm-4.7"
      # 3. 创建客服总控Agent(默认GLM-4.7)
      openclaw agents add csr_manager --workspace ~/.openclaw/workspace-csr-manager --model "zai/glm-4.7"
      
      openclaw agents add csr_doudou --workspace ~/.openclaw/agents/csr_doudou
      openclaw agents add csr_duoduo --workspace ~/.openclaw/agents/csr_duoduo
      
      openclaw agents add pre_sale --workspace ~/.openclaw/agents/pre_sale
      openclaw agents add after_sale --workspace ~/.openclaw/agents/after_sale
      openclaw agents add tech_support --workspace ~/.openclaw/agents/tech_support
      
    • 然后在每个 Agent 的 workspace 里编辑 IDENTITY.md / SOUL.md 等,定义角色:
      • pre_sale:热情、推销导向、产品知识强。
      • after_sale:耐心、安抚、退款流程熟。
      • tech_support:专业、技术细节多。

    创建完会在 ~/.openclaw/openclaw.json 中的 agents 下出现对应的 list。

    配置片段:

    {
      agents: {
        defaults: {
          model: {primary: 'zai/glm-4.5-air'},
          compaction: {mode: 'safeguard'},
          sandbox: {mode: 'off'},
        },
        list: [
          {
            id: 'main',
          },
          {
            id: 'csr_doudou',
            name: 'csr_doudou',
            workspace: '/home/node/.openclaw/agents/csr_doudou',
            agentDir: '/home/node/.openclaw/agents/csr_doudou/agent',
          },
          {
            id: 'csr_duoduo',
            name: 'csr_duoduo',
            workspace: '/home/node/.openclaw/agents/csr_duoduo',
            agentDir: '/home/node/.openclaw/agents/csr_duoduo/agent',
          },
        ],
      },
    }
    
  3. bindings 路由(关键!按 accountId 精确绑定):

    {
      agents: { ... }
      ...
      "bindings": [
        {
          "match": { "channel": "feishu", "accountId": "csr_doudou" },
          "agentId": "csr_doudou"
        },
        {
          "match": { "channel": "feishu", "accountId": "csr_duoduo" },
          "agentId": "csr_duoduo"
        },
        {
          "match": { "channel": "feishu" },  // fallback
          "agentId": "pre_sale"  // 或 main
        }
      ]
    }
    
  4. 生效

    • 保存 openclaw.json → openclaw gateway restart 或重启服务。
    • 测试:分别私聊/群里 @ 不同机器人,问“你的职责是什么”,每个应该只认自己身份。

什么时候可以用“一个 Agent”?

  • 你只有一个飞书机器人,但想在不同客服群里表现出不同风格(靠群 chat_id 路由)。
  • 所有客服其实是“同质化”的(同一个 prompt 就够),不想多管理 Agent。
  • 但客服场景通常需要强隔离,所以不推荐。

注意事项(基于 2026 年常见坑)

  • 旧版有时 multi-account + multi-agent 有 session path bug(只走 main Agent),升级到最新版(3.2+ 或检查 GitHub releases)。
  • 每个 Agent workspace 独立,避免共享文件冲突。
  • 如果群里多个机器人共存,飞书会按 @ 路由;没 @ 时可能走默认,但 bindings by accountId 优先。
  • 日志查看 incoming message 的 accountId,确保匹配。

这样配置后,你的多个飞书客服机器人就能各司其职、互不干扰,像真正的客服团队。

我遇到的问题

  • OpenClaw如何对接飞书?
  • OpenClaw如何添加多个飞书频道(多个不同角色的机器人)?
  • OpenClaw “客服专员”如何对接抖店?