从”单线程对话”进化为”多线程指挥”——详解如何让多个智能体并行处理任务并汇总结果
一、核心概念:什么是”龙虾场主”模式?
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"] } } }
四、并行处理流程图解

关键点:多个子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们替你执行!

