OpenClaw 多 Agent 协作实战完全教程
你已经装好了 OpenClaw也配置了几个 Agent——intel 负责收集资讯wechat 负责写文章coder 负责写代码。每个 Agent 单独用都没问题。但你很快发现一件事它们互相不知道对方的存在。你得把 intel 的结果复制出来再粘贴给 wechat手动当它们之间的传话筒。这篇教程就是写给这个阶段的人的——已经有多个 Agent 在跑想让它们真正协同起来不再靠人工中转。0 核心概念两种模式不要混淆OpenClaw 多 Agent 有两种根本不同的运行模式。混淆这两种模式是配置出错最常见的原因模式是什么生命周期持久 Agent独立存在有自己的配置、记忆、频道绑定永久运行子 AgentSub-agent从某个会话临时派生执行单次任务后自动归档任务完成后归档注意群聊协作用的是持久 Agent子 Agent 调用走的是 sessions_spawn。两者的配置字段完全不同搞混了配置会直接失效或报错。本教程介绍四种打破 Agent 隔离的通信工具工具用途默认状态群聊历史共享同群 Bot 通过消息历史间接共享上下文需配置 groupPolicysessions_spawn主 Agent 派生临时子 Agent 执行任务需配 allowAgents 白名单agentToAgent / sessions_send持久 Agent 之间直接发消息默认关闭需显式开启共享文件Agent 通过读写文件异步传递数据无需配置但需约定协议方案一 群聊协作最直观今天就能用把多个持久 Agent 的 bot 拉进同一个群通过 提及来触发不同 Agent。每个 Agent 被触发时能读到群里的历史消息包括其他 Agent 之前的回复——这就是上下文共享的原理。配置openclaw.json{ channels: { telegram: { groupPolicy: allowlist, groups: { allowlist: [-100xxxxxxx] } }, feishu: { requireMention: true }, slack: { channels: { C_YOUR_CHANNEL_ID: { allow: true, requireMention: true, allowBots: true } } } } }注意飞书和 Slack 必须设requireMention: true否则每条消息都触发多个 Bot 会互相触发陷入死循环。实际交互效果你: intel 最近 AI 行业有什么重要新闻 intel: [回复 3 条重要新闻] 你: wechat 把 intel 刚才说的第一条新闻写成公众号文章 wechat: [基于群里 intel 的回复写出完整文章] # 原理wechat 被 时群历史消息全量进入其上下文窗口适合场景日常协作、需要人工协调、透明度要求高的流程。方案二 子 Agent 调用最高效最省钱主 Agent 通过sessions_spawn工具派生一个临时子 Agent子 Agent 只把最终结论返回中间过程不污染主 Agent 的会话历史。sessions_spawn 完整参数{ task: 收集最近 7 天 AI 重要动态, // 必填 label: intel-daily, // 便于 /subagents list 识别 agentId: intel, // 指定哪个 Agent 执行 model: anthropic/claude-haiku-3.5,// 单次覆盖模型省钱关键 thinking: none, // 关闭扩展思考 runTimeoutSeconds: 300, // 超时保护5 分钟 cleanup: delete // 完成后立即归档 }必须配置的权限白名单最常见的坑注意allowAgents只能放在agents.list[]的具体 Agent 条目里不能放 agents.defaults 里。放错位置会导致 Gateway 启动时配置校验报错崩溃// ✅ 正确写法 { agents: { list: [ { id: main, subagents: { allowAgents: [intel, wechat, content-curator] // 或写 [*] 允许调用所有 Agent } } ] } } // ❌ 错误写法——会导致 Gateway 启动崩溃 // agents: { defaults: { subagents: { allowAgents: [...] } } }两个重要冲突agentToAgent.enabled: true与 sessions_spawn 冲突。同时开启时子 Agent 会出现在 sessions 列表但 totalTokens 永远是 0永不执行。二选一不能同时用。runTimeoutSeconds目前不能在 agents.defaults 里设全局默认值必须在每次 sessions_spawn 调用里单独传入。忘记设的话子 Agent 跑飞了不会自动停。子 Agent 的上下文注入天然省钱子 Agent 系统提示比主 Agent 少注入多个文件基础开销天然更低文件主 Agent子 AgentAGENTS.md注入注入TOOLS.md注入注入SOUL.md注入不注入省 TokenIDENTITY.md / USER.md 等注入不注入省 Token全局配置{ agents: { defaults: { subagents: { model: anthropic/claude-haiku-3.5, // 子 Agent 默认便宜模型 maxConcurrent: 8, // 全局并发上限 archiveAfterMinutes: 60, // 完成后 60 分钟自动归档 maxChildrenPerAgent: 5 // 每个 session 最多 5 个子 Agent } } } }嵌套子 Agent三层流水线进阶开启 maxSpawnDepth: 2 后可实现「主 Agent → 编排子 Agent → 工作子 Agent」三层模式深度角色能否再派生0主主 Agent始终可以1编排子 AgentmaxSpawnDepth≥2 时可以2叶工作子 Agent永不可以注意社区反映嵌套子 Agent 行为有时不稳定。建议先用 maxSpawnDepth: 1 的单层模式验证后再尝试深度 2。方案三 agentToAgent 持久 Agent 直接通信sessions_send 工具允许持久 Agent 之间像打「内线电话」一样直接发消息不需要用户在群里中转。适合「主管 专家」长期协作模式。配置必须显式开启{ tools: { agentToAgent: { enabled: true, allow: [main, intel, wechat, coder] } } }重要提醒agentToAgent.enabled: true 与 sessions_spawn 冲突两者不能同时使用。如果你还需要派生临时子 Agent目前只能用方案二暂时不要开 agentToAgent。协作架构图用户发指令 → 主管 Agent (main) 接收↓判断任务类型sessions_send 分配给专家↙ ↓ ↘intel wechat coder↘ ↓ ↙主管 Agent 汇总结果 → 回复用户方案四 共享文件协作最低成本全异步多个 Agent 通过读写共享目录里的文件传递信息适合定时任务和异步场景。这是当前 Bug #5813 尚未修复期间最稳定的变通方案。约定协议示例# intel 的 AGENTS.md写入端 完成资讯收集后写入 - ~/clawd/shared/intel-latest.md → 最新资讯每次覆盖 - ~/clawd/shared/intel-to-wechat.md → 专门给 wechat 的素材 # wechat 的 AGENTS.md读取端 写作前 1. 读取 ~/clawd/shared/intel-to-wechat.md 2. 检查文件时间戳超过 6 小时标记为「陈旧」提示用户确认配合 Cron 实现全自动流水线# 每天 8:00 收集资讯 openclaw cron add --every 24h --at 08:00 --agent intel \ 收集过去 24 小时 AI 动态写入 ~/clawd/shared/intel-latest.md # 每天 9:00 写文章intel 完成后 openclaw cron add --every 24h --at 09:00 --agent wechat \ 读取 ~/clawd/shared/intel-latest.md写一篇公众号文章草稿成功早上 10 点你打开飞书wechat 发来文章草稿。全程无需人工干预。四种方案对比方案实时性自动化成本群聊协作实时需人工较高子 Agent实时全自动低agentToAgent实时全自动中共享文件异步全自动最低注意方案二sessions_spawn和方案三agentToAgent目前不能同时使用Bug #5813。选择前先想清楚你更需要哪个。优先级速查表优先级操作原因P0飞书/Slack 群设 requireMention: true防 Bot 互相触发死循环P0allowAgents 只放 agents.list[]放 defaults 导致 Gateway 崩溃#11982P0agentToAgent 与 sessions_spawn 二选一同时开启导致子 Agent 永不执行#5813P1sessions_spawn 每次传 runTimeoutSeconds无全局默认值忘设子 Agent 可能跑飞#19288P1sessions_spawn 传 model: haiku最直接的省钱手段P1agentToAgent.allow 用最小权限白名单不是所有 Agent 都需要和所有人通信P2共享文件约定 .lock 文件防并发写入没有内置锁机制需手动约定协议P2验证 maxSpawnDepth: 2 行为一致后再用社区反映行为不稳定先单层验证#17511从哪里开始第一步先试群聊协作——配置最简单今天就能验证多 Agent 上下文共享是否生效↓第二步确认群聊正常后在 AGENTS.md 里加 sessions_spawn 规则记得配 allowAgents↓第三步测试子 Agent 时先不要开 agentToAgent避免触发 Bug #5813↓第四步基础流程跑通后加 Cron 共享文件实现全自动异步任务提示遇到奇怪的行为时先升级 OpenClaw 版本再用/subagents list和/subagents log检查子 Agent 实际运行状态而不是反复修改配置猜原因。常见问题排查问题一 了没有任何反应原因飞书应用没有群聊消息权限解决进入飞书开放平台 → 找到你的应用 → 权限管理 → 开启im:message.group_at_msg权限重新发布应用版本问题二群里只有一个 bot 响应其他 bot 没动静原因这是正常行为说明飞书群里 谁谁响应没有被 的 bot 不会动。这正是requireMention: true生效的表现不是 bug。问题三多个 bot 同时响应没有 的也在说话原因requireMention没有生效解决检查 openclaw.json找到飞书频道配置确认是否有这一行feishu: { requireMention: true // 必须是 true不能缺不能是 false }改完记得重启 Gateway 让配置生效。