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(用容器把风险再锁一层)

相关推荐
小飞大王6661 小时前
从零手写 React:深度解析 Fiber 架构与 Hooks 实现
前端·react.js·架构
Nice__J2 小时前
Mcu架构以及原理——3.存储器架构
单片机·嵌入式硬件·架构
殷紫川2 小时前
吃透 Spring Boot 3 + Spring Cloud 云原生新特性
spring boot·spring cloud·架构
heimeiyingwang2 小时前
【架构实战】Spring Cloud微服务实战入门
spring cloud·微服务·架构
一叶飘零_sweeeet2 小时前
Redis 高可用全链路拆解:从主从复制到集群架构的原理与实践
redis·架构·redis高可用架构
倾心琴心2 小时前
【agent辅助pcb routing coding学习】实践7 length matching 算法学习
学习·算法·agent·pcb·routing
SuniaWang2 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题八:《RAG 系统安全与权限管理:企业级数据保护方案》
java·前端·人工智能·spring boot·后端·spring·架构
zzh940772 小时前
GPT-4o与Gemini 3镜像站背后的算力与工程:大模型训练基础设施拆解
人工智能·深度学习·架构
十年编程老舅2 小时前
Linux DMA 技术深度拆解
linux·网络·linux内核·dma·c/c++·内存访问