OpenClaw学习总结_I_核心架构_9:Multi-Agent详解

I. 核心架构 - 9. Multi-Agent

📍 课程位置

阶段 :I. 核心架构
课序 :第 9 课
前置知识 :I-8. Session Pruning
后续课程:I-10. Sandboxing


🎯 本课核心问题(你不懂我就这样教你)

很多人第一次接触 OpenClaw 会有这些疑问:

  1. 我能不能让一个 OpenClaw 同时服务"工作"和"生活"两个场景?(不要互相串消息)
  2. 能不能让不同的人/不同群/不同渠道走不同的 Agent?
  3. 凭证(API Key)、工作目录、记忆、Session 能不能完全隔离?

答案是:可以,这就是 Multi-Agent(多 Agent)

一句话:

Multi-Agent = 在同一个 Gateway 下运行多个"彼此隔离"的 Agent,并用 bindings 把不同来源的消息路由到不同 Agent。


🧠 你先建立正确的心智模型

1)Gateway 只有一个,Agent 可以有多个

  • Gateway:消息/路由/控制中枢(你机器上跑的那个)
  • Agent:处理对话与工具调用的"工作单元"

类比:

  • Gateway 像"前台总机"
  • Agent 像"不同部门的客服/专家"

2)Multi-Agent 的价值不是"多几个机器人",而是"隔离"

隔离的对象包括:

  • Workspace(文件/项目)
  • Sessions(对话历史)
  • Memory(长期记忆)
  • Credentials(模型/渠道凭证)
  • Tools Policy(允许用哪些工具)
  • Sandboxing(是否跑在容器中)

🧩 Multi-Agent 由两块组成

A. agents.list:定义有哪些 Agent

你在配置里声明多个 Agent,每个 Agent 可以有:

  • id
  • workspace
  • model
  • tools policy
  • sandbox policy

示例(最常见:work + home):

json5 复制代码
{
  agents: {
    list: [
      { id: "home", default: true, workspace: "~/.openclaw/workspace-home" },
      { id: "work", workspace: "~/.openclaw/workspace-work" },
    ],
  },
}

default: true 表示当没有任何 binding 命中时,默认走 home(或你设置的默认 Agent)。

B. bindings:定义"什么消息走哪个 Agent"

bindings 是路由规则。它们按优先级匹配,命中就决定目标 Agent。

示例(按账号/渠道分流):

json5 复制代码
{
  bindings: [
    { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
    { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
  ],
}

🧭 路由优先级(绑定匹配规则)

你最需要掌握的一点:OpenClaw 的 Multi-Agent 路由是确定性的(deterministic)

它会按照"更具体 → 更泛化"的顺序去匹配(你的 binding 越具体,越优先)。

常见的匹配维度(从强到弱的大概思路)

  • peer / parentPeer(具体到某个对话对象或上级身份)
  • guildId + roles(Discord 这类)
  • guildId / teamId
  • accountId(同平台不同账号)
  • channel(平台)
  • default(默认 Agent)

你可以把它理解成:

先看"是不是这个人/这个群",再看"是不是这个账号",再看"是不是这个平台",最后才用默认。


🔐 隔离到底隔离了什么?(work/home 不串线的根源)

1)Workspace 隔离

不同 Agent 指向不同 workspace:

  • home 的文件、笔记、任务都在 workspace-home
  • work 的文件、代码、记录都在 workspace-work

好处

  • 不会出现"工作 Agent 在生活目录里乱改文件"
  • 项目依赖/脚本/技能也可以不同

2)Sessions 隔离

每个 Agent 自己维护会话文件(jsonl)。

好处

  • work Agent 不会看到 home 的对话历史
  • 多人 DM 也更安全

3)Credentials 隔离(最关键之一)

凭证可按 Agent 存放。

好处

  • work Agent 用公司模型 key
  • home Agent 用个人模型 key
  • 互不影响,便于轮换和权限最小化

4)Tools/Sandbox 隔离

你可以让:

  • work Agent 允许 exec/git/browser
  • home Agent 只允许 messaging + web_fetch

这样就算 prompt injection 也很难造成破坏。


🛡️ 多用户场景的安全关键:dmScope

Multi-Agent 解决的是"不同场景走不同 Agent"。

同一个 Agent 内部,多人私聊仍然可能串------这由 Session 的 dmScope 决定。

推荐(多用户):

json5 复制代码
{ session: { dmScope: "per-channel-peer" } }

这能防止:

  • A 给你发的隐私
  • 被 B 的 DM 会话上下文"继承"

🔧 三个最常用的 Multi-Agent 实战配方

配方 1:按平台分流

  • Telegram → work
  • WhatsApp → home
json5 复制代码
{
  agents: { list: [
    { id: "home", default: true, workspace: "~/.openclaw/home" },
    { id: "work", workspace: "~/.openclaw/work" },
  ] },
  bindings: [
    { agentId: "work", match: { channel: "telegram" } },
    { agentId: "home", match: { channel: "whatsapp" } },
  ],
}

配方 2:按账号分流(同平台多账号)

json5 复制代码
{
  bindings: [
    { agentId: "work", match: { channel: "feishu", accountId: "corp" } },
    { agentId: "home", match: { channel: "feishu", accountId: "personal" } },
  ],
}

配方 3:按具体人/群分流(最精确)

json5 复制代码
{
  bindings: [
    { agentId: "work", match: { peer: "user:ou_xxx" } },
    { agentId: "home", match: { peer: "whatsapp:+1555..." } },
  ],
}

⚠️ 常见陷阱(非常重要)

陷阱 表现 根因 解决
binding 不生效 全走 default match 写错/太泛 用更具体的 match;检查 channel/accountId/peer
误路由 某些群进错 Agent 优先级理解错误 让更具体的规则排在更高优先级;减少冲突
仍然串对话 不同用户互相影响 dmScope 太粗(main/per-peer) 用 per-channel-peer
凭证污染 work key 被 home 用 没做 per-agent auth 分离 auth profiles/credentials
工具风险 home Agent 乱 exec tools policy 没隔离 home 用最小工具集 + sandbox

📝 学习心得

Multi-Agent 这章最容易被误解成"多开几个机器人"。

但真正的价值在于:

  • 隔离(工作/生活/不同用户)
  • 最小权限(不同 Agent 不同工具/不同 key)
  • 可控路由(bindings 决定谁处理哪类消息)

只要你掌握:

  • agents.list 定义 Agent
  • bindings 决定路由
  • dmScope 保证 DM 安全

你就能在不乱搞的情况下,把系统搭成"生产可用"。


✅ 本课总结(你要记住的 5 句话)

  1. 一个 Gateway,可以跑多个 Agent。
  2. Multi-Agent 的本质是隔离,不是数量。
  3. bindings 决定"什么消息给谁处理",越具体越优先。
  4. 多用户私聊必须配 dmScope(推荐 per-channel-peer)。
  5. 不同 Agent 应隔离 workspace/credentials/tools,避免串线和安全事故。

🔗 相关资源

下一课:I-10. Sandboxing(用容器把风险再锁一层)

相关推荐
这个DBA有点耶6 小时前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
锋行天下7 小时前
我试图优化 Vite 的拆包,结果首屏慢了 10 倍
前端·vue.js·架构
小鼻子的猫13 小时前
独立开发 30 天:2.5 万行代码,23 个 Bug,5 次重构——一个 AI 社区的诞生
架构
doiito13 小时前
【Agent Harness】Gliding Horse 上下文动态感知与智能压缩:让 Agent 真正“听得进”每一句话
ai·rust·架构设计·系统设计·ai agent
咖啡八杯13 小时前
GoF设计模式——命令模式
java·设计模式·架构
candyTong15 小时前
阿里开源 AI Code Review 工具:ocr review 的执行链路解析
javascript·后端·架构
doiito1 天前
【Agent Harness】TPS的“自工程完结”教会了我一件事:别把Bug留给下一道工序
架构·rust
烬羽1 天前
中英文 token 数量差一倍?两段 JS 代码搞懂 LLM 底层是怎么"读"文字的
javascript·程序员·架构
白鲸开源1 天前
一文读懂DolphinScheduler插件机制:如何轻松扩展任务类型与数据源
java·架构·github