OpenClaw 多智能体并行协作完全指南

内容分享1天前发布
0 0 0
全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

从”单线程对话”进化为”多线程指挥”——详解如何让多个智能体并行处理任务并汇总结果

一、核心概念:什么是”龙虾场主”模式?

OpenClaw的多智能体系统灵感来自”龙虾养殖场”的生态系统。在这个模式中:

龙虾场主(主Agent) = 统筹者,负责任务拆解、分配、监控、汇总
专业钳(子Agent) = 执行者,各司其职,并行工作
Announce机制 = 子Agent完成后自动汇报结果

并行处理 多个子Agent同时工作,效率提升数倍

专业分工 每个Agent专注特定领域,保证输出质量

自动汇总 结果通过Announce机制自动返回主Agent

二、架构详解:OpenClaw会话层级

OpenClaw的多Agent系统基于会话层级(Session Hierarchy)实现:

层级

标识

角色

说明

Depth 0

agent:main

主Agent(龙虾场主)

接收用户任务,统筹规划,分配子Agent

Depth 1

subagent:uuid

子Agent(专业Worker)

执行具体任务,并行工作

Depth 2

subagent:uuid:subagent

子子Agent

当maxSpawnDepth≥2时,可进一步派生

核心API:sessions_spawn

通过 sessions_spawn 创建子Agent并行执行任务:

// 并行派发三个子Agent同时工作

// 并行派发三个子Agent同时工作 const results = await sessions_spawn({ agentId: "researcher", // Agent标识符 task: "收集竞品分析报告...", label: "market-research", // 会话标签,便于追踪 runTimeoutSeconds: 3600, // 超时时间(秒) context: "isolated" // 隔离上下文,不继承父会话 });

关键参数说明

参数

必填

说明

agentId

目标Agent的标识符

task

任务描述,必须清晰、可执行

label

会话标签,用于追踪和识别

runTimeoutSeconds

提议

超时时间,提议设置防止无限运行

context

可选

“fork”继承父上下文,”isolated”完全隔离

mode

可选

“run”一次性任务,”persistent”持续运行

三、完整配置步骤(7步搞定)

1.创建Agent工作空间

为每个专业Agent创建独立的工作目录:

# 创建各Agent的工作空间

mkdir -p ~/.openclaw/workspace-researcher

# 调研Agent

mkdir -p ~/.openclaw/workspace-designer

# 设计Agent

mkdir -p ~/.openclaw/workspace-developer

# 开发Agent

2.编写Agent的身份文件(SOUL.md)

每个Agent需要有明确的角色定义:

#
workspace-researcher/SOUL.md 示例

# 我是市场调研专家

# 专长:数据分析、竞品研究、市场洞察

# 风格:专业、严谨、数据驱动

## 我的职责

– 分析市场趋势和竞争格局 – 收集用户画像数据 – 提供数据支撑的决策提议

3.配置openclaw.json(多Agent绑定)

在配置文件中定义所有Agent和它们的路由规则:

// openclaw.json 配置片段 { "agents": { "list": [ { "id": "main", "name": "龙虾场主", "workspace": "~/.openclaw/workspace" }, { "id": "researcher", "name": "调研钳", "workspace": "~/.openclaw/workspace-researcher" }, { "id": "designer", "name": "设计钳", "workspace": "~/.openclaw/workspace-designer" }, { "id": "developer", "name": "开发钳", "workspace": "~/.openclaw/workspace-developer" } ] }, "bindings": [ { "agentId": "main", "match": { "channel": "feishu", "peer": { "kind": "direct", "id": "ou_你的用户ID" } } } ] }

4.配置飞书Channel绑定

将飞书用户与主Agent绑定,确保消息路由正确:

// 在bindings中配置飞书路由

// 在bindings中配置飞书路由 { "bindings": [ { "type": "agent", "agentId": "main", "match": { "channel": "feishu", "accountId": "xiaoli", "peer": { "kind": "direct", "id": "ou_7986addcb459b1434f2e6500c225ede9" } } } ] }

5.编写AGENTS.md路由表

在主Agent工作空间中创建AGENTS.md定义任务分配规则:

# 任务分配规则表

## 任务类型 → Agent映射

“调研类任务”

→ researcher

“设计类任务”

→ designer

“开发类任务”

→ developer

“综合任务”

→ main(先拆解,再分配) ## 并行执行规则 当用户任务包含多个子任务时: 1. 识别子任务类型 2. 同时派发对应的子Agent 3. 收集各Agent结果 4. 汇总输出 ## 结果汇总 所有子Agent完成后,将结果整理成统一格式返回给用户。

6.在主Agent中使用sessions_spawn派发任务

主Agent(龙虾场主)接收任务后,拆解并派发子Agent:

// 主Agent的工作流程示例(伪代码)

// 1. 接收任务:”帮我做一个市场调研、设计logo、开发落地页”

// 2. 拆解任务为三个并行子任务

// 主Agent的工作流程示例(伪代码) // 1. 接收任务:"帮我做一个市场调研、设计logo、开发落地页" // 2. 拆解任务为三个并行子任务 const subTasks = [ { agent: "researcher", task: "市场调研:分析竞品、用户画像..." }, { agent: "designer", task: "设计logo:科技感+温馨风格..." }, { agent: "developer", task: "开发落地页:基于调研和设计..." } ]; // 3. 并行派发所有子Agent const sessions = await Promise.all( subTasks.map(t => sessions_spawn({ agentId: t.agent, task: t.task, label: `${t.agent}-task`, runTimeoutSeconds: 7200 })) ); // 4. 等待所有子Agent完成并汇总结果 // 结果通过Announce机制自动返回 // 5. 整合输出最终交付物

7.配置工具权限(可选但推荐)

控制各Agent的工具有限权限:

// 限制子Agent只能使用特定工具

// 限制子Agent只能使用特定工具 { "agents": { "researcher": { "allowedTools": ["web_search", "read", "write"], "deniedTools": ["exec", "video_generate"] }, "developer": { "allowedTools": ["read", "write", "exec"] } } }

四、并行处理流程图解

OpenClaw 多智能体并行协作完全指南

关键点:多个子Agent同时工作(并行),大幅提升效率;主Agent负责协调和汇总,不做具体执行工作。

五、实战代码模板

5.1 主Agent派发并行任务模板

/** * 主Agent:并行派发多个子Agent处理任务 * @param {string} userTask - 用户提交的综合任务 * @returns {string} - 汇总后的最终结果 */ async function handleUserTask(userTask) { // Step 1: 分析任务,拆解为并行子任务 const subTasks = analyzeAndSplitTask(userTask); // Step 2: 并行派发所有子Agent const spawnPromises = subTasks.map(st => sessions_spawn({ agentId: st.agentId, task: st.task, label: st.label, runTimeoutSeconds: st.timeout || 7200, context: "isolated" })); const spawnedSessions = await Promise.all(spawnPromises); // Step 3: 等待所有子Agent完成(通过Announce机制) // 这里可以添加进度监控逻辑 // Step 4: 汇总结果(各子Agent通过Announce返回结果) const finalResult = await aggregateResults(spawnedSessions); return finalResult; } /** * 任务拆解:根据任务类型分配给不同的专业Agent */ function analyzeAndSplitTask(task) { // 示例拆解逻辑,实际根据任务内容动态判断 return [ { agentId: "researcher", task: "调研市场数据...", label: "research" }, { agentId: "designer", task: "设计视觉素材...", label: "design" }, { agentId: "developer", task: "开发落地页面...", label: "develop" } ]; }

5.2 子Agent完成任务后的返回方式

// 子Agent完成任务后的两种返回方式 // 方式1:正常返回结果(结果会发送到父Agent) // 直接在消息中包含结果即可 "任务完成!调研结果:2024年Q1市场增长15%,竞品主要是A、B两家..." // 方式2:静默完成(不发送任何消息给父Agent) // 如果任务不需要返回结果,可以静默完成 if (noNeedToAnnounce) { // 返回ANNOUNCE_SKIP表明静默完成 return "ANNOUNCE_SKIP"; }

5.3 飞书Channel配置完整示例

// openclaw.json 飞书多Agent配置 { "channels": { "feishu": { "enabled": true, "defaultAccount": "xiaoli" } }, "agents": { "list": [ { "id": "main", "name": "龙虾场主", "runtime": { "type": "main" } }, { "id": "researcher", "name": "调研钳", "runtime": { "type": "subagent", "workspace": "~/.openclaw/workspace-researcher" } }, { "id": "designer", "name": "设计钳", "runtime": { "type": "subagent", "workspace": "~/.openclaw/workspace-designer" } } ] }, "bindings": [ { "agentId": "main", "match": { "channel": "feishu", "peer": { "kind": "direct", "id": "ou_7986addcb459b1434f2e6500c225ede9" } } } ] }

六、Announce机制详解

子Agent完成后,结果通过Announce机制自动返回给父Agent:

结果自动汇总示例

// 主Agent等待并收集各子Agent的Announce结果 // 假设各子Agent返回的结果格式如下: // researcher返回: "市场调研完成:竞品A占比40%,B占比30%..." // designer返回: "Logo设计完成:提供了3个方案..." // developer返回: "页面开发完成:已部署到测试环境..." // 主Agent汇总: const finalReport = ` # 项目完成报告 ## 1. 市场调研(调研钳) 竞品A占比40%,B占比30%,提议定价2999元... ## 2. 视觉设计(设计钳) 完成Logo设计,3个方案供选择,已同步到设计稿... ## 3. 页面开发(开发钳) 落地页开发完成,已部署到测试环境... ## 4. 汇总提议 提议优先推进A方案,配合2999元定价策略... `;

七、最佳实践与注意事项

7.1 任务拆解原则

✅ 好任务:“请调研TOP 5竞品的功能和价格,分析用户画像,给出定价提议”
❌ 差任务:“帮我分析一下市场”(太模糊,无法执行)

7.2 常见的坑及解决方案

⚠️ 坑1:子Agent不返回结果
检查是否设置了正确的runTimeoutSeconds,或检查Announce机制是否启用

⚠️ 坑2:任务分配混乱
确保AGENTS.md中正确定义了任务→Agent的映射规则

⚠️ 坑3:飞书路由失败
检查bindings配置中的peer.id是否为用户的open_id(格式:ou_xxx)

7.3 性能优化提议

并行优先 无依赖关系的任务必定要并行派发,不要串行

超时控制 必定要设置runTimeoutSeconds,防止子Agent无限运行

上下文隔离 使用context:”isolated”避免子Agent继承父会话的上下文

结果格式化 提前约定各子Agent的返回格式,便于汇总

八、飞书具体配置步骤

Step 1: 获取你的飞书User ID

在飞书开放平台检查日志,或发送消息给机器人后查看openclaw日志:

# 查看日志获取用户open_id

openclaw logs –follow

# 日志中会显示: open_id: ou_xxx

Step 2: 配置openclaw.json

# 完整配置示例(保存到 ~/.openclaw/openclaw.json) { "channels": { "feishu": { "enabled": true, "dmPolicy": "allowlist", "allowFrom": ["ou_7986addcb459b1434f2e6500c225ede9"] } }, "agents": { "list": [ { "id": "main", "name": "主Agent" }, { "id": "sub1", "name": "子Agent1" }, { "id": "sub2", "name": "子Agent2" } ] }, "bindings": [ { "agentId": "main", "match": { "channel": "feishu", "peer": { "kind": "direct", "id": "ou_7986addcb459b1434f2e6500c225ede9" } } } ] }

Step 3: 重启Gateway使配置生效

# 重启OpenClaw Gateway

openclaw gateway restart

Step 4: 验证配置

# 检查Agent配置

openclaw config get agents

# 检查bindings配置

openclaw config get bindings

九、总结:你的多智能体天团

龙虾场主(Main Agent) ├── 调研钳(Researcher)→ 市场调研、数据分析 ├── 设计钳(Designer)→ 视觉设计、素材创作 ├── ✍️ 文案钳(Writer)→ 内容创作、SEO优化 ├── 开发钳(Developer)→ 编程开发、页面搭建 └── 汇总钳(Merger)→ 结果整合、最终输出

核心价值:
1. 并行处理 — 多个任务同时执行,效率提升数倍
2. 专业分工 — 每个Agent专注特定领域,保证输出质量
3. 自动汇总 — Announce机制自动收集结果,无需手动整合
4. 易于扩展 — 新增Agent只需配置路由规则即可

通过以上配置,你可以在飞书中实现:一个任务 → 多个Agent并行处理 → 自动汇总结果的完整workflow。就像指挥一支特种部队,你做指挥官,AI们替你执行!

OpenClaw 多智能体并行协作完全指南

© 版权声明

相关文章

暂无评论

none
暂无评论...