【OpenClaw:应用与协同】20、OpenClaw Supervisor-Worker架构——搭建多智能体团队化作战系统

【多Agent协同】OpenClaw Supervisor-Worker架构------搭建多智能体团队化作战系统

一句话导读:当单一AI Agent面对复杂任务时,往往顾此失彼------让Supervisor-Worker架构帮你组建一支各司其职的AI团队,让"老板"负责拆解调度,"员工"专注执行,协同攻克复杂工作流。

引言:单一Agent的能力瓶颈

2026年,AI Agent已深度融入开发者的日常工作------从自动搭建环境、管理文件,到跨平台消息响应。但随着任务复杂度提升,单一Agent的局限性日益凸显:

上下文窗口限制:处理长文档时,Agent会"遗忘"早期信息。一个负责会议纪要的Agent,既要听懂录音,又要整理要点,还要同步日程,很容易顾此失彼。

工具冲突:让同一个Agent同时管理文件系统、调用API、执行代码,权限边界难以把控,安全风险陡增。

专业分工缺失:就像你不能让一个程序员同时做UI设计和文案撰写,AI也需要专业分工------有的擅长代码,有的精通文档,有的专攻数据。

多Agent协同作业(Multi-Agent) 正是解决这些问题的关键------让负责调度的"老板"、负责写代码的"技术专家"和负责搜集信息的"情报员"各司其职,通过标准协议进行串联、并联,组成一支高效的"数字团队"。

本文将深入OpenClaw的Supervisor-Worker架构,从设计原理到实战案例,从核心实现到部署方案,带你搭建第一个多智能体团队。

一、多Agent架构设计

1.1 Supervisor-Worker模型

OpenClaw的多Agent架构采用经典的Supervisor-Worker(主从)模式,这与点对点平级Agent有本质区别:
存储层
执行层
调度层
用户层
拆解任务1
拆解任务2
拆解任务3
返回结果
返回结果
返回结果
汇总输出
读写
读写
读写
读写
用户输入
Supervisor Agent

任务拆解与调度
Worker A

语音转文字
Worker B

纪要整理
Worker C

日程同步
共享记忆库

MEMORY.md + 向量库

各角色职责清晰

角色 职责 对应人类团队
Supervisor Agent 接收原始需求、拆解子任务、调度Worker、汇总结果 项目经理/团队领导
Worker Agent 专注执行特定领域任务(如语音识别、文本处理、API调用) 专业执行者
共享记忆库 存储任务上下文、中间结果、长期记忆 团队共享文档

1.2 通信机制:JSON-RPC + 事件总线

Agent之间的通信是协作的基础。OpenClaw设计了双层通信机制:

核心工具:sessions_send

Supervisor通过内置工具sessions_send唤起Worker Agent:

typescript 复制代码
// Supervisor调用Worker的示例
await sessions_send({
  agentId: "speech-to-text-worker",  // 目标Worker
  task: "将录音文件转换为文字",        // 任务描述
  params: {
    filePath: "/tmp/meeting.mp3",
    language: "zh"
  }
});

Worker执行完毕后,通过相同机制返回结果:

typescript 复制代码
// Worker返回结果
await sessions_send({
  agentId: "supervisor",  // 返回给Supervisor
  result: {
    text: "会议录音转写结果...",
    confidence: 0.98
  }
});
底层通信:事件总线(EventEmitter)

OpenClaw使用基于Redis的事件总线实现Agent间通信:
Worker Redis事件总线 Supervisor Worker Redis事件总线 Supervisor 发布任务事件 (task:speech-to-text) 订阅事件推送 执行任务 发布结果事件 (result:speech-to-text) 订阅结果推送 汇总处理

事件格式示例

json 复制代码
{
  "eventId": "evt_abc123",
  "type": "task:speech-to-text",
  "source": "supervisor",
  "target": "speech-to-text-worker",
  "payload": {
    "taskId": "task_456",
    "params": { "filePath": "/tmp/meeting.mp3" }
  },
  "timestamp": 1741680000000
}

1.3 会话隔离与权限控制

多Agent架构中,安全隔离至关重要。OpenClaw提供了三层隔离机制:

1.3.1 身份层隔离

每个Agent拥有独立的agentId(必须小写),系统基于此精准路由请求、建立独立上下文队列。

1.3.2 会话层隔离

默认情况下,每个Agent处于绝对的上下文隔离中,只关注自己的目标。如果调度者需要跨Agent查看历史会话,必须通过sessions_history工具显式调用。

1.3.3 工具权限隔离

在OpenClaw中,deny的优先级永远高于allow。可以为每个Worker配置细粒度权限:

json 复制代码
{
  "id": "speech-to-text-worker",
  "name": "语音转文字专员",
  "tools": {
    "allow": ["read", "sessions_send"],  // 仅允许读文件和通信
    "deny": ["exec", "write", "edit", "apply_patch", "bash"]  // 拒绝执行任何系统命令
  },
  "sandbox": {
    "mode": "all",      // 始终沙箱隔离
    "scope": "agent",    // 每个Agent独立容器
    "resources": {
      "cpu": 0.5,
      "memory": "1GB"
    }
  }
}

二、实战案例:会议秘书Agent团队

理论说再多,不如看一次真实的多Agent协同。我们将搭建一个会议秘书团队,处理完整流程:录音转文字 → 纪要整理 → 日程同步。

2.1 团队角色定义

外部系统
会议秘书团队

  1. 转写任务 调用
    返回文字稿
  2. 整理任务 返回纪要和待办
  3. 同步任务 调用
    返回同步结果
    汇总报告
    Supervisor

会议秘书调度员
Worker A

语音转写员
Worker B

纪要整理员
Worker C

日程同步员
Whisper API
飞书日历
用户上传录音

2.2 步骤1:创建Agent工作区

首先为三个Agent分别创建工作区:

bash 复制代码
# 创建Supervisor(会议秘书调度员)
openclaw agents add meeting-supervisor --workspace ~/.openclaw/workspace-meeting-supervisor

# 创建Worker A(语音转写员)
openclaw agents add speech-worker --workspace ~/.openclaw/workspace-speech

# 创建Worker B(纪要整理员)
openclaw agents add summary-worker --workspace ~/.openclaw/workspace-summary

# 创建Worker C(日程同步员)
openclaw agents add calendar-worker --workspace ~/.openclaw/workspace-calendar

# 验证创建结果
openclaw agents list

2.3 步骤2:配置Supervisor(调度中枢)

Supervisor的职责是接收用户指令、拆解任务、调度Worker、汇总结果。

SOUL.md(核心人格):

markdown 复制代码
# SOUL.md - 会议秘书调度员

我是会议秘书团队的调度中枢,负责协调整个会议处理流程。

## 核心职责
- 接收用户上传的会议录音或文字稿
- 拆解任务:语音转文字、纪要整理、日程同步
- 调用专业Worker执行子任务
- 汇总结果生成完整会议报告

## 性格特点
- 高效:并行调度多个Worker
- 严谨:确保每个子任务完成才汇总
- 透明:向用户汇报进度

## 工作流程
1. 收到会议录音 → 调用 speech-worker 转文字
2. 收到文字稿 → 调用 summary-worker 整理纪要
3. 收到纪要和待办 → 调用 calendar-worker 同步日程
4. 汇总所有结果 → 返回用户

AGENTS.md(团队通讯录):

markdown 复制代码
# AGENTS.md - 团队通讯录与调度规则

## 团队成员
- **speech-worker** (agentId: speech-worker) - 职责:语音转文字(调用Whisper API)
- **summary-worker** (agentId: summary-worker) - 职责:纪要整理、观点提取、待办识别
- **calendar-worker** (agentId: calendar-worker) - 职责:日程同步(飞书日历)

## 任务调度规则
| 任务类型 | 目标Agent | 调用语法 |
|---------|-----------|---------|
| 语音转文字 | speech-worker | `sessions_send(agentId="speech-worker", task="转写录音", params={filePath})` |
| 纪要整理 | summary-worker | `sessions_send(agentId="summary-worker", task="整理纪要", params={text})` |
| 日程同步 | calendar-worker | `sessions_send(agentId="calendar-worker", task="同步待办", params={tasks})` |

## 工作流约束
- 必须按顺序执行:先转写,再整理,最后同步
- 每个步骤完成后再进入下一步
- 出现错误时记录日志并通知用户

2.4 步骤3:配置Worker A(语音转写员)

SOUL.md

markdown 复制代码
# SOUL.md - 语音转写专员

我是团队的语音转写专家,负责将录音文件转换为文字。

## 核心职责
- 接收音频文件(MP3、WAV、M4A格式)
- 调用Whisper API进行语音识别
- 返回带时间戳的文字稿

## 能力边界
✅ 可以做:
- 音频格式转换
- 多语种识别(中/英/日/韩)
- 说话人分离

❌ 不做:
- 文本总结和分析
- 日程安排

## 工作流程
1. 验证音频文件存在且格式支持
2. 调用Whisper API转写
3. 返回文字稿(含时间戳)

权限配置

json 复制代码
{
  "id": "speech-worker",
  "tools": {
    "allow": ["read", "sessions_send"],
    "deny": ["exec", "write", "edit", "bash"]
  },
  "sandbox": {
    "mode": "all",
    "resources": {
      "cpu": 1.0,
      "memory": "2GB"  // 语音转写需要较多内存
    }
  }
}

2.5 步骤4:配置Worker B(纪要整理员)

SOUL.md

markdown 复制代码
# SOUL.md - 纪要整理专员

我是团队的内容分析专家,负责将会议文字稿提炼为结构化纪要。

## 核心职责
- 提取会议核心观点和结论
- 识别待办事项(任务、负责人、截止时间)
- 按模板生成结构化纪要

## 输出格式
```markdown
# 会议纪要 - {日期}

## 参会人员
- 

## 核心观点
1. 

## 待办事项
| 任务 | 负责人 | 截止时间 |
|-----|-------|---------|
|     |       |         |

## 下一步安排
- 

工作原则

  • 客观提取,不添加主观判断

  • 待办事项必须明确负责人和时间

    2.6 步骤5:配置Worker C(日程同步员)

    SOUL.md

    markdown 复制代码
    # SOUL.md - 日程同步专员
    
    我是团队的日历管家,负责将待办事项同步到飞书日历。
    
    ## 核心职责
    - 解析待办事项列表
    - 调用飞书API创建日程
    - 返回同步结果和链接
    
    ## 能力边界
    ✅ 可以做:
    - 创建飞书日程
    - 设置提醒
    - 邀请参会人
    
    ❌ 不做:
    - 修改已有日程
    - 删除日历事件
    
    ## 工作流程
    1. 接收待办事项列表
    2. 为每个任务创建日历事件
    3. 返回成功/失败统计

2.7 步骤6:配置通信白名单

~/.openclaw/openclaw.json中配置Agent间通信权限:

json 复制代码
{
  "agents": {
    "list": [
      {
        "id": "meeting-supervisor",
        "workspace": "~/.openclaw/workspace-meeting-supervisor"
      },
      {
        "id": "speech-worker",
        "workspace": "~/.openclaw/workspace-speech"
      },
      {
        "id": "summary-worker",
        "workspace": "~/.openclaw/workspace-summary"
      },
      {
        "id": "calendar-worker",
        "workspace": "~/.openclaw/workspace-calendar"
      }
    ]
  },
  "tools": {
    "agentToAgent": {
      "enabled": true,
      "allow": ["meeting-supervisor", "speech-worker", "summary-worker", "calendar-worker"]
    },
    "sessions": {
      "visibility": "all"  // 允许跨Agent查看会话
    }
  }
}

2.8 步骤7:绑定通信渠道

如果希望在不同渠道与不同Agent对话,可以配置bindings:

json 复制代码
{
  "bindings": [
    { 
      "agentId": "meeting-supervisor", 
      "match": { 
        "channel": "discord", 
        "peer": { "kind": "channel", "id": "123456789" }  // 会议专用频道
      } 
    },
    { 
      "agentId": "calendar-worker", 
      "match": { 
        "channel": "feishu", 
        "peer": { "kind": "user", "id": "user_abc" }  // 个人飞书账号
      } 
    }
  ]
}

重启网关使配置生效:

bash 复制代码
openclaw gateway restart

三、核心实现:Supervisor-Worker底层机制

3.1 任务拆解算法

Supervisor如何将用户原始需求拆解为子任务?OpenClaw基于LLM的意图识别和规划能力实现。

任务拆解流程
渲染错误: Mermaid 渲染失败: Parse error on line 2: ...hart TD A[用户输入:"处理今天下午的会议录音"] --> B[ ----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'STR'

核心代码示例(简化版):

typescript 复制代码
async function decomposeTask(userInput: string): Promise<TaskGraph> {
  // 调用LLM分析任务需求
  const analysis = await callLLM(`
    分析以下用户请求,拆解为子任务列表,并标明依赖关系:
    请求:${userInput}
    
    输出JSON格式:
    {
      "tasks": [
        {"id": "task1", "type": "speech-to-text", "dependsOn": []},
        {"id": "task2", "type": "summarize", "dependsOn": ["task1"]},
        {"id": "task3", "type": "calendar-sync", "dependsOn": ["task2"]}
      ]
    }
  `);
  
  return JSON.parse(analysis);
}

3.2 状态同步:共享记忆库

为避免信息孤岛,OpenClaw通过共享记忆库实现Agent间状态同步。核心机制:

  1. MEMORY.md:所有Agent可读写的长期记忆文件
  2. 向量库:语义化存储和检索历史信息
  3. 工作区文件:临时传递中间结果

状态同步流程

typescript 复制代码
// Supervisor写入任务状态
await fs.writeFile(
  '~/.openclaw/shared/meeting-task.json',
  JSON.stringify({
    taskId: 'meeting_001',
    status: 'speech_completed',
    transcript: '...',
    nextTask: 'summarize'
  })
);

// Worker读取状态
const state = JSON.parse(
  await fs.readFile('~/.openclaw/shared/meeting-task.json')
);
if (state.nextTask === 'summarize') {
  // 执行纪要整理
}

3.3 异常处理与重试机制

生产环境中,Worker可能失败(API超时、网络波动)。OpenClaw设计了多层异常处理:




Worker执行失败
重试次数<3?
等待2^retry秒

指数退避
重试
通知Supervisor
有备用Worker?
切换到备用Worker
重新执行
记录错误
返回部分结果

核心代码

typescript 复制代码
async function executeWithRetry(
  workerId: string, 
  task: Task, 
  retryCount = 0
): Promise<Result> {
  try {
    return await callWorker(workerId, task);
  } catch (error) {
    if (retryCount >= 3) {
      // 通知Supervisor切换备用Worker
      await notifySupervisor({
        type: 'WORKER_FAILED',
        workerId,
        task,
        error: error.message
      });
      throw error;
    }
    
    // 指数退避
    const waitTime = Math.pow(2, retryCount) * 1000;
    await sleep(waitTime);
    
    return executeWithRetry(workerId, task, retryCount + 1);
  }
}

四、部署方案:从单机到分布式

4.1 单机多Agent:进程隔离

对于个人使用或小团队,单机部署足够。OpenClaw通过进程隔离确保Agent间互不干扰:
单机部署
进程3
进程2
进程1
Worker C
Gateway网关
Supervisor Agent
Worker A
Worker B

资源分配

bash 复制代码
# 为不同Agent分配不同CPU核心
taskset -c 0-1 openclaw agent start meeting-supervisor  # 使用核心0-1
taskset -c 2 openclaw agent start speech-worker          # 使用核心2
taskset -c 3 openclaw agent start summary-worker         # 使用核心3

4.2 分布式多Agent:K8s部署

当Agent规模扩大,需要分布式部署。OpenClaw支持Kubernetes原生部署:

yaml 复制代码
# k8s部署示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: meeting-supervisor
spec:
  replicas: 1
  selector:
    matchLabels:
      app: openclaw
      agent: supervisor
  template:
    metadata:
      labels:
        app: openclaw
        agent: supervisor
    spec:
      containers:
      - name: openclaw
        image: openclaw/agent:latest
        env:
        - name: AGENT_ID
          value: "meeting-supervisor"
        - name: WORKSPACE
          value: "/workspace"
        volumeMounts:
        - name: workspace
          mountPath: /workspace
      volumes:
      - name: workspace
        persistentVolumeClaim:
          claimName: openclaw-workspace-supervisor
---
apiVersion: v1
kind: Service
metadata:
  name: supervisor-service
spec:
  selector:
    app: openclaw
    agent: supervisor
  ports:
  - port: 18789
    targetPort: 18789

服务发现:通过K8s Service实现Agent间通信:

typescript 复制代码
// Worker通过服务名访问Supervisor
const supervisorUrl = 'http://supervisor-service:18789';
await fetch(`${supervisorUrl}/api/message`, {
  method: 'POST',
  body: JSON.stringify({ result })
});

4.3 弹性扩缩容

根据Worker负载动态调整实例数,避免资源浪费:

yaml 复制代码
# HorizontalPodAutoscaler配置
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: speech-worker-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: speech-worker
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70  # CPU使用率超过70%时扩容

扩容触发场景

  • 同时处理多个会议录音 → speech-worker自动扩容
  • 深夜无任务 → 缩容到1个实例
  • 大型会议(多人同时使用)→ 按需扩容

五、成本优化:动态资源管理

5.1 按Worker负载动态扩缩容

OpenClaw内置资源监控,可根据实时负载调整资源分配:
执行
决策
监控


实时监控CPU/内存
负载 > 阈值?
启动新Worker
停止空闲Worker

配置示例

json 复制代码
{
  "autoscaling": {
    "speech-worker": {
      "minReplicas": 1,
      "maxReplicas": 5,
      "metrics": [
        {
          "type": "cpu",
          "targetAverageValue": 70  // CPU使用率70%
        },
        {
          "type": "queue",
          "targetAverageValue": 10   // 队列深度10
        }
      ]
    }
  }
}

5.2 模型成本优化

为不同Worker配置不同模型,平衡成本与效果:

Worker类型 推荐模型 成本策略
语音转写 Whisper API 按需付费,但低频使用
纪要整理 本地Llama3 零成本,足够胜任
日程同步 GPT-4o-mini 低配模型,仅需简单API调用
Supervisor调度 Qwen-Max 中等成本,需要较好推理能力

配置示例

json 复制代码
{
  "models": {
    "speech-worker": {
      "provider": "openai",
      "model": "whisper-1"
    },
    "summary-worker": {
      "provider": "ollama",
      "model": "llama3:8b"
    },
    "calendar-worker": {
      "provider": "openai",
      "model": "gpt-4o-mini"
    },
    "meeting-supervisor": {
      "provider": "aliyun_bailian",
      "model": "qwen-max"
    }
  }
}

5.3 闲置资源回收

长时间无任务的Worker自动释放资源:

bash 复制代码
# 设置闲置超时
openclaw config set agent.idleTimeout 300  # 5分钟无任务则停止

# 查看当前活跃Agent
openclaw agent list --active

# 手动回收闲置
openclaw agent prune --idle 10m

六、面试考点:Supervisor-Worker架构核心设计

在技术面试中,关于多Agent协同,面试官通常会考察以下深度问题:

6.1 为什么选择Supervisor-Worker而不是点对点架构?

核心答案:解耦控制逻辑与执行逻辑。

维度 Supervisor-Worker 点对点平级
控制复杂度 中心化,易于管理 分散化,协调困难
任务依赖 天然支持DAG 需额外实现编排
故障处理 统一由Supervisor处理 每个Agent自处理,易混乱
可扩展性 新增Worker不影响现有 新增Agent需修改多个配置

适用场景:有明确业务流程、需要顺序执行的任务(如会议处理),适合Supervisor-Worker;简单并行任务(如同时搜索多个关键词),适合点对点。

6.2 如何防止Agent间通信的死锁?

设计思路:超时 + 超时 + 超时

  1. 请求超时 :每个sessions_send调用设置超时(默认30秒)
  2. 队列超时:任务在Worker队列中等待超时(可配置)
  3. 全局超时:整个工作流最大执行时间

代码示例

typescript 复制代码
// 带超时的Agent调用
const result = await Promise.race([
  sessions_send({ agentId: "speech-worker", task }),
  new Promise((_, reject) => 
    setTimeout(() => reject(new Error("Worker timeout")), 30000)
  )
]);

6.3 如何保证多Agent下的数据一致性?

核心机制:共享记忆 + 版本控制

  1. 共享文件所有Agent读写同一份MEMORY.md,通过文件锁避免并发
  2. 版本向量:每个写入操作附带版本号,冲突时自动合并
  3. 事务日志:所有状态变更写入WAL,故障后可恢复

6.4 分布式部署下如何保证会话一致性?

答案:将状态外置到共享存储
共享存储
K8s集群
Supervisor Pod 1
Supervisor Pod 2
Worker Pod 1
Worker Pod 2
Redis
持久卷

  • 会话数据:存Redis(快速访问)
  • 文件数据:存持久卷(PV)
  • 任何Pod重启:从共享存储恢复状态

结语:从单兵作战到团队协作

OpenClaw的Supervisor-Worker架构,让我们看到了AI从"单兵作战"向"团队协作"演进的清晰路径。通过合理的角色分工、标准化的通信协议、完善的异常处理和弹性部署,我们可以构建出真正生产可用的多智能体系统。

会议秘书Agent团队只是起点。同样的架构,可以扩展到:

  • 代码开发团队:Supervisor拆解需求,Worker分别负责前端、后端、数据库
  • 数据分析团队:Worker分别负责数据抓取、清洗、建模、可视化
  • 客服团队:Worker分别处理订单、售后、技术咨询

多Agent的魅力就在于此:将复杂的长逻辑链条,拆解为多个高内聚、低耦合的专业节点异步协作。当你的AI从"一个人"变成"一支队伍",它能创造的价值将呈指数级增长。


相关推荐
IT 行者2 小时前
每天了解几个MCP SERVER:21st.dev Magic
人工智能·ui·mcp
小哈里2 小时前
【架构】Server-Survival,扮演云架构师的塔防游戏,生存策略
游戏·架构·云计算·架构师·策略
kong79069282 小时前
AI大模型应用开发-智能体架构
人工智能·智能体
丶伯爵式2 小时前
OpenClaw 接入飞书 (2026年3月11日)
ai·飞书·ai助手·openclaw·大龙虾
FeelTouch Labs2 小时前
企业落地AI数据分析项目DB-GPT、Supersonic和SQLcoder
人工智能·数据分析·智能问数
生活予甜2 小时前
2026年算法备案办理服务优选服务商口碑解读
大数据·运维·人工智能
SCBAiotAigc2 小时前
2026.3.7:具身智能之51单片机<二>:ISP烧录过程
c++·人工智能·单片机·嵌入式硬件·51单片机·c
Sunhen_Qiletian2 小时前
计算机视觉系列进阶教学之人脸检测
人工智能·计算机视觉
掘金一周2 小时前
为什么我拖了一个多月才开始使用OpenClaw?| 掘金一周 3.12
人工智能