最近很多朋友问我:"OpenClaw 的多 Agent 到底怎么用?"
今天手把手教你在 10 分钟内,搭建一个 6 个 Agent 的协作团队。
先搞清楚 4 个核心概念
在动手之前,先搞懂这几个东西,不然后面会懵。
1. sessions_spawn:创建子任务(工具调用)
sessions_spawn({
agentId: "dev-assistant", // 目标Agent
task: "写一个 hello world 脚本", // 任务描述
label: "test-1", // 任务标识
mode: "run" // run=一次性,session=持久会话})mode 模式选择:
mode: "run"(默认):一次性任务,完成后自动通知结果
mode: "session":持久会话,需配合thread: true(仅飞书支持)
Session Key 完整格式:agent:<agentId>:subagent:<uuid>
2. sessions_send:发消息给队友
sessions_send({ agentId: "content-assistant", // 目标Agent
message: "开发任务完成了,可以写文档了" // 消息内容
})适合轻量级通知,不创建新会话。
3. subagents 工具:管理后台任务
subagents({ action: "list" }) // 查看所有后台任务subagents({ action: "steer", sessionId: "agent:dev-assistant:subagent:xxx" })
subagents({ action: "kill", sessionId: "agent:dev-assistant:subagent:xxx" })只能 list/steer/kill,不能 spawn!
4. 启用 A2A 通信(必须!)
{ "tools": { "agentToAgent": { "enabled": true }
}
}第一步:创建 6 个 Agent
# 6 个 Agent 的完整创建命令openclaw agents add main --workspace ~/.openclaw/workspace
openclaw agents add coordinator --workspace ~/.openclaw/workspace-coordinator
openclaw agents add dev-assistant --workspace ~/.openclaw/workspace-dev
openclaw agents add content-assistant --workspace ~/.openclaw/workspace-content
openclaw agents add ops-assistant --workspace ~/.openclaw/workspace-ops
openclaw agents add research-assistant --workspace ~/.openclaw/workspace-research第二步:为 6 个 Agent 写配置文件
2.1 奇奇 (main) — 对外接口
工作区: ~/.openclaw/workspace/
AGENTS.md:
# AGENTS.md - 奇奇(主 Agent)## 🤝 团队成员- **小夏** (coordinator) - 大总管,负责任务协调- **开发助理** (dev-assistant) - 代码开发- **内容助理** (content-assistant) - 文档内容- **运维助理** (ops-assistant) - 运维监控- **研究助理** (research-assistant) - 资料研究## 📬 通信方式- 收到超哥任务 → 分析类型 → 分发给合适的 Agent- 使用 `sessions_spawn` 创建子任务- 使用 `sessions_send` 发通知给队友- 使用 `subagents` 查看/管理后台任务2.2 小夏 (coordinator)
工作区: ~/.openclaw/workspace-coordinator/
AGENTS.md:
# AGENTS.md - 小夏(协调员)## 🤝 团队成员- **奇奇** (main) - 主 Agent,给我分派任务- **开发助理** (dev-assistant) - 执行开发任务- **内容助理** (content-assistant) - 写文档- **运维助理** (ops-assistant) - 部署运维- **研究助理** (research-assistant) - 搜集资料## 📬 通信方式- 接收奇奇的任务 → 拆解 → 分发给合适的 Agent- 使用 `sessions_spawn({ mode: "run" })` 创建一次性后台任务- 使用 `sessions_send` 发通知给下游 Agent- 任务完成后汇报给奇奇2.3 开发助理 (dev-assistant)
工作区: ~/.openclaw/workspace-dev/
AGENTS.md:
# AGENTS.md - 开发助理## 🤝 团队成员- **小夏** (coordinator) - 给我分派任务- **奇奇** (main) - 对外接口- **内容助理** (content-assistant) - 我完成后通知它写文档- **运维助理** (ops-assistant) - 我完成后通知它部署## 📬 通信方式- 接收任务 → 编写代码 → 自测- 完成后用 `sessions_send` 通知内容助理写文档- 同时用 `sessions_send` 通知运维助理部署- 用 `sessions_spawn` 创建技术调研子任务(如需要)2.4 内容助理 (content-assistant)
工作区: ~/.openclaw/workspace-content/
AGENTS.md:
# AGENTS.md - 内容助理## 🤝 团队成员- **小夏** (coordinator) - 给我分派任务- **奇奇** (main) - 对外接口- **开发助理** (dev-assistant) - 给我提供技术内容- **研究助理** (research-assistant) - 给我提供研究资料## 📬 通信方式- 接收任务 → 收集素材 → 撰写内容- 完成后用 `sessions_send` 汇报给小夏2.5 运维助理 (ops-assistant)
工作区: ~/.openclaw/workspace-ops/
AGENTS.md:
# AGENTS.md - 运维助理## 🤝 团队成员- **小夏** (coordinator) - 给我分派任务- **奇奇** (main) - 对外接口- **开发助理** (dev-assistant) - 给我提供部署包## 📬 通信方式- 接收任务 → 部署服务 → 配置监控- 完成后用 `sessions_send` 汇报给小夏2.6 研究助理 (research-assistant)
工作区: ~/.openclaw/workspace-research/
AGENTS.md:
# AGENTS.md - 研究助理## 🤝 团队成员- **小夏** (coordinator) - 给我分派任务- **奇奇** (main) - 对外接口- **内容助理** (content-assistant) - 我整理的资料给它写文章## 📬 通信方式- 接收任务 → 搜索分析 → 整理报告- 完成后用 `sessions_send` 通知内容助理- 用 `sessions_spawn` 并行搜索多个来源(如需要)第三步:配置完整的路由绑定
关键:bindings 是顶层配置,与 channels 同级!
{ // ==================== 渠道配置 ====================
"channels": { "feishu": { "enabled": true, "dmPolicy": "pairing"
}
}, // ==================== 路由绑定(关键!)====================
"bindings": [ // 奇奇:处理飞书私聊
{ "agentId": "main", "match": { "channel": "feishu", "accountId": "default"
}
}, // 小夏:协调员,处理飞书特定群聊
{ "agentId": "coordinator", "match": { "channel": "feishu", "accountId": "default", "peer": { "kind": "channel", "id": "oc_xxx" } // 群聊用 kind:channel
}
}, // 其他 Agent 通常不需要直接接收消息,通过小夏分发
], // ==================== A2A 通信 ====================
"tools": { "agentToAgent": { "enabled": true }
}, // ==================== 全局默认值 ====================
"agents": {
defaults: {
model: { primary: "minimax-portal/MiniMax-M2.7" },
subagents: {
model: "minimax-portal/MiniMax-M2", // 子代理用便宜模型
maxSpawnDepth: 1,
maxConcurrent: 3
}
},
list: [
{ id: "main", model: { primary: "minimax-portal/MiniMax-M2.7" } },
{ id: "coordinator", model: { primary: "minimax-portal/MiniMax-M2.7" } },
{ id: "dev-assistant", model: { primary: "minimax-portal/MiniMax-M2" } },
{ id: "content-assistant", model: { primary: "minimax-portal/MiniMax-M2" } },
{ id: "ops-assistant", model: { primary: "minimax-portal/MiniMax-M2" } },
{ id: "research-assistant", model: { primary: "minimax-portal/MiniMax-M2" } },
]
}
}binding 配置字段说明: | 字段 | 说明 | |------|------| | agentId | Agent 标识符(不是 agent!来源:/gateway/configuration) | | match.channel | 渠道名称(如 feishu、telegram) | | match.accountId | 账号标识,default 表示默认账号 | | match.peer.kind | user(私聊)或 channel(群聊) | | match.peer.id | 用户或群组的 ID(ou_ 开头为用户,oc_ 开头为群组) |
Agent 间通信:3 种通话方式的使用场景
方式 1:sessions_spawn(推荐用于任务分发)
场景: 需要创建独立的后台任务
// 开发助理收到任务sessions_spawn({
agentId: "dev-assistant",
task: "开发 Token 监控脚本,每天早上 6 点检查使用量",
label: "token-monitor-dev",
mode: "run" // 一次性任务,完成后通知})// 返回 Session Key: agent:dev-assistant:subagent:xxx使用时机:
需要创建新会话来执行任务
任务需要独立运行、不阻塞主流程
需要跟踪和管理子任务
方式 2:sessions_send(推荐用于通知)
场景: 给已有的会话发消息
// 开发完成后,通知内容助理sessions_send({
agentId: "content-assistant",
message: "Token 监控脚本开发完成,源码在 /scripts/token-monitor.sh,请写使用文档"})// 通知运维助理部署sessions_send({
agentId: "ops-assistant",
message: "Token 监控脚本已就绪,请部署到生产环境并配置监控"})使用时机:
轻量级通知,不需要创建新会话
协作流程中的上下游通知
任务状态更新
方式 3:subagents(用于管理)
场景: 查看、接管、终止后台任务
// 查看所有后台任务subagents({ action: "list" })// 返回: [{ sessionId: "agent:dev-assistant:subagent:xxx", status: "running", ... }]// 接管任务(接管控制权,继续对话)subagents({ action: "steer", sessionId: "agent:dev-assistant:subagent:xxx" })// 终止任务subagents({ action: "kill", sessionId: "agent:dev-assistant:subagent:xxx" })使用时机:
查看有哪些后台任务在运行
需要干预正在运行的任务
取消不需要的任务
完整协作流程示例
场景:超哥说"开发一个 Token 监控脚本"
Step 1:奇奇接收并分派
// 奇奇收到任务,分析后分派给小夏sessions_send({
agentId: "coordinator",
message: "超哥需要 Token 监控脚本,请协调开发"})Step 2:小夏分派给开发助理
// 小夏创建开发任务sessions_spawn({
agentId: "dev-assistant",
task: "开发 Token 监控脚本:\n1. 位置:/root/.openclaw/workspace/scripts/token-monitor.sh\n2. 功能:每天早上 6 点检查 token 使用量\n3. 输出:发送报告到超哥飞书",
label: "token-monitor-script",
mode: "run"})Step 3:开发助理执行并通知
// 开发助理完成开发后sessions_send({
agentId: "content-assistant",
message: "Token 监控脚本已完成,请写使用说明:\n位置:/root/.openclaw/workspace/scripts/token-monitor.sh"})
sessions_send({
agentId: "ops-assistant",
message: "Token 监控脚本已就绪,请:\n1. 设置执行权限\n2. 配置 cron(每天 6:00)\n3. 添加到健康检查"})Step 4:内容助理和运维助理并行执行
// 内容助理完成后sessions_send({
agentId: "coordinator",
message: "Token 监控脚本使用文档已完成:docs/token-monitor-usage.md"})// 运维助理完成后sessions_send({
agentId: "coordinator",
message: "Token 监控脚本已部署完成,cron 已配置"})Step 5:小夏验收并汇报
// 小夏验收通过后sessions_send({
agentId: "main",
message: "Token 监控脚本开发完成:\n- 脚本:/root/.openclaw/workspace/scripts/token-monitor.sh\n- 文档:docs/token-monitor-usage.md\n- 状态:已部署,每天 6:00 执行"})Step 6:奇奇汇报超哥
超哥,Token 监控脚本已完成!
📍 脚本位置:/root/.openclaw/workspace/scripts/token-monitor.sh
📅 执行时间:每天早上 6:00📖 使用文档:docs/token-monitor-usage.md
✅ 状态:已部署并配置监控5 个容易踩的坑
坑 1:maxConcurrent 默认是 1 不是 8
agents:
list:
- id: coordinator
maxConcurrent: 3 # 需要显式设置才能提高并发坑 2:子代理不能嵌套 spawn
agents:
defaults:
subagents:
maxSpawnDepth: 1 # 默认值,子代理不能再 spawn坑 3:子代理只注入 AGENTS.md + TOOLS.md
spawn 子代理时,SOUL.md、IDENTITY.md、USER.md 不会自动注入。
坑 4:binding 用 agent 而不是 agentId
// ❌ 错误{ "agent": "main", ... }// ✅ 正确{ "agentId": "main", ... }坑 5:QQ 通道不支持 thread binding
// ❌ QQ 通道会报错sessions_spawn({ mode: "session", thread: true })// ✅ QQ 通道用 run 模式 + 文件接力sessions_spawn({ mode: "run", ... })完整配置清单
| 配置项 | 正确值 | 来源 |
|---|---|---|
sessions_spawn | 工具调用(JSON),不是 bash 命令 | /tools/subagents |
sessions_send | 工具调用,发送消息到已有会话 | /concepts/session-tool |
subagents | 只能 list/steer/kill,不能 spawn | /tools/subagents |
sessions_list vs subagents | sessions_list 查所有会话;subagents 仅当前会话子代理 | /concepts/session-tool |
agents.list[] | Agent 定义在 list 数组,不是 agents.entries | /concepts/multi-agent |
bindings[].agentId | 是 agentId,不是 agent | /gateway/configuration |
bindings | 顶层配置,与 channels 同级 | /gateway/configuration |
Session Key | agent:<agentId>:subagent:<uuid> | /tools/subagents |
maxConcurrent | 默认 1,需显式设置 | /concepts/multi-agent |
maxSpawnDepth | 默认 1,子代理不可嵌套 | /tools/subagents |
tools.agentToAgent.enabled | 必须 true | /concepts/multi-agent |
| 子代理上下文 | AGENTS.md + TOOLS.md | /concepts/multi-agent |
mode: "session" | 需 thread: true,仅飞书支持 | /tools/subagents |
| QQ 通道 | 不支持 thread,用 run + 文件接力 | /tools/subagents |
有问题欢迎留言。
📚 出处引用
本文档内容基于 OpenClaw 官方文档验证:
OpenClaw 官方文档: https://docs.openclaw.ai/
OpenClaw GitHub 仓库: https://github.com/openclaw/openclaw
关键文档章节(全部经过官方文档验证)
| 主题 | 官方文档位置 |
|---|---|
| sessions_spawn 工具调用 | https://docs.openclaw.ai/tools/subagents |
| binding 路由配置 | https://docs.openclaw.ai/gateway/configuration |
| agents CLI 命令 | https://docs.openclaw.ai/cli/agents |
| Session Tools(sessions_list/subagents 区别) | https://docs.openclaw.ai/concepts/session-tool |
| 多 Agent 路由 | https://docs.openclaw.ai/concepts/multi-agent |
| 错误处理/重试策略 | https://docs.openclaw.ai/concepts/retry |
夜雨聆风