什么是多智能体
默认情况下,OpenClaw 运行一个智能体(agentId =main),所有渠道的消息都由它处理。但在实际使用中,你可能需要多个"大脑"来处理不同场景:
- 一个智能体负责日常闲聊,另一个专注深度工作
- 不同联系人路由到不同智能体
- 家庭群组用一个专用智能体,工作群用另一个
多智能体架构就是在一个 Gateway 上运行多个独立智能体,每个智能体拥有独立的:
- 工作区(workspace):独立的 AGENTS.md、SOUL.md、MEMORY.md 等配置
- 会话(sessions):独立的对话历史
- 认证和权限:独立的工具权限和沙箱配置
它们共享同一个 Gateway 进程、同一套渠道连接和同一个模型配置。
单智能体模式(默认)
安装 OpenClaw 后,默认只有一个智能体main,它的工作区就是:
``
~/.openclaw/workspace/
`
所有渠道的消息都路由到 main 智能体。对大多数用户来说,单智能体模式完全够用。
你可以通过以下命令确认当前的智能体列表:
`bash
openclaw agents list
`
输出类似:
`
Agents:
main (default)
workspace: ~/.openclaw/workspace
sessions: ~/.openclaw/sessions
`
添加新智能体
当你需要第二个"大脑"时,使用交互式向导创建:
`bash
openclaw agents
`
向导会引导你完成以下步骤:
1. 输入智能体 ID:给新智能体起个名字,比如 work、family、assistant
2. 选择模板:可以从空白开始,也可以复制现有智能体的配置
3. 配置工作区:自动创建独立的工作区目录
创建完成后,新智能体的文件结构:
`
~/.openclaw/
├── workspace/ # main 智能体的工作区
├── sessions/ # main 智能体的会话
└── agents/
└── work/ # 新智能体 "work"
├── workspace/ # work 的独立工作区
│ ├── AGENTS.md
│ ├── SOUL.md
│ └── MEMORY.md
└── sessions/ # work 的独立会话
`
你可以分别编辑每个智能体的 SOUL.md 来定义不同的人格:
`bash
编辑 main 智能体的人设
nano ~/.openclaw/workspace/SOUL.md
编辑 work 智能体的人设
nano ~/.openclaw/agents/work/workspace/SOUL.md
`
Bindings 路由规则
有了多个智能体后,关键问题是:哪条消息发给哪个智能体?
这就是 Bindings(绑定)的作用。Bindings 是在 openclaw.json 中定义的路由规则,决定消息如何分发。
路由匹配优先级
Bindings 的匹配遵循最具体者优先原则:
1. peer 匹配(最高优先级):指定某个联系人/群组路由到某个智能体
2. 渠道匹配:指定某个渠道的所有消息路由到某个智能体
3. 默认匹配(最低优先级):没有匹配到任何规则时,使用默认智能体
配置示例
在 ~/.openclaw/openclaw.json 中配置 Bindings:
`json
{
"bindings": [
{
"agentId": "work",
"channel": "telegram",
"comment": "Telegram 上的所有消息都给 work 智能体"
},
{
"agentId": "family",
"channel": "whatsapp",
"peer": "家庭群",
"comment": "WhatsApp 家庭群专用智能体"
},
{
"agentId": "main",
"comment": "其他所有消息给 main(默认)"
}
]
}
`
匹配字段说明
| 字段 | 说明 | 示例 |
|------|------|------|
| agentId | 目标智能体 ID | "work"、"family" |
| channel | 渠道类型 | "telegram"、"whatsapp"、"discord" |
| peer | 联系人/群组标识 | 电话号码、群组名、用户 ID |
| accountId | 渠道账号 ID | 多账号场景下区分不同账号 |
| comment | 备注说明 | 方便自己记住这条规则的用途 |
匹配规则详解
当一条消息到达时,Gateway 按以下顺序查找匹配的 Binding:
`
消息到达 → 遍历 bindings 数组
→ 检查 peer 是否匹配(如果定义了)
→ 检查 channel 是否匹配(如果定义了)
→ 检查 accountId 是否匹配(如果定义了)
→ 所有定义的字段都匹配 → 使用该 binding 的 agentId
→ 没有字段定义(空 binding)→ 作为默认路由
`
规则越具体(定义的字段越多),优先级越高。
实用场景
场景一:WhatsApp 日常 + Telegram 深度工作
`json
{
"bindings": [
{
"agentId": "deep-work",
"channel": "telegram",
"comment": "Telegram 用于深度工作,智能体更专注、更严谨"
},
{
"agentId": "main",
"comment": "WhatsApp 和其他渠道用默认智能体,轻松日常"
}
]
}
`
deep-work 智能体的 SOUL.md 可以设置为更专业、更严谨的风格:
`markdown
SOUL.md (deep-work)
你是一个专注的工作助手。回答要精确、有条理。
不闲聊,不开玩笑。每次回答都要有明确的行动建议。
`
场景二:一个号码服务多人
如果你用一个 WhatsApp 号码同时服务多个客户,可以按联系人路由:
`json
{
"bindings": [
{
"agentId": "client-a",
"channel": "whatsapp",
"peer": "+8613800138001",
"comment": "客户 A 专用智能体"
},
{
"agentId": "client-b",
"channel": "whatsapp",
"peer": "+8613900139001",
"comment": "客户 B 专用智能体"
},
{
"agentId": "main",
"comment": "其他人用默认智能体"
}
]
}
`
每个客户的智能体可以有独立的记忆和上下文,互不干扰。
场景三:家庭群组专用智能体
`json
{
"bindings": [
{
"agentId": "family-bot",
"channel": "whatsapp",
"peer": "我的家庭群",
"comment": "家庭群专用,语气亲切友好"
},
{
"agentId": "main"
}
]
}
`
场景四:每个渠道一个 Bot
如果你同时运行 Discord Bot 和 Telegram Bot,可以让它们使用不同的智能体:
`json
{
"bindings": [
{
"agentId": "discord-bot",
"channel": "discord",
"comment": "Discord 服务器专用"
},
{
"agentId": "telegram-bot",
"channel": "telegram",
"comment": "Telegram 频道专用"
},
{
"agentId": "main"
}
]
}
`
按智能体配置沙箱和工具权限
多智能体的一个重要优势是可以按智能体独立配置安全策略。
沙箱模式
在 openclaw.json 中,可以为每个智能体设置不同的沙箱模式:
`json
{
"agents": {
"main": {
"sandbox": {
"mode": "off"
}
},
"untrusted": {
"sandbox": {
"mode": "docker",
"image": "openclawai/sandbox:latest"
}
}
}
}
`
沙箱模式选项:
| 模式 | 说明 |
|------|------|
| off | 不使用沙箱,直接在主机执行(默认) |
| docker | 在 Docker 容器中执行,完全隔离 |
工具权限
可以为每个智能体配置不同的工具白名单/黑名单:
`json
{
"agents": {
"main": {
"tools": {
"allow": ["*"],
"deny": []
}
},
"restricted": {
"tools": {
"allow": ["web_search", "read", "memory_search"],
"deny": ["exec", "write", "browser"]
}
}
}
}
`
这样 restricted 智能体只能搜索网页、读取文件和搜索记忆,不能执行命令、写文件或控制浏览器。
实际建议
- 日常智能体:权限宽松,方便使用
- 面向外部用户的智能体:开启沙箱 + 严格工具白名单
- 自动化任务智能体:只开放必要的工具权限
路径速查
多智能体模式下,各种文件的路径规律:
| 路径 | 说明 |
|------|------|
| ~/.openclaw/openclaw.json | Gateway 主配置(包含 bindings) |
| ~/.openclaw/workspace/ | main 智能体的工作区 |
| ~/.openclaw/sessions/ | main 智能体的会话 |
| ~/.openclaw/agents/ | 其他智能体的工作区 |
| ~/.openclaw/agents/ | 其他智能体的会话 |
常用管理命令:
`bash
列出所有智能体
openclaw agents list
创建新智能体(交互式)
openclaw agents
查看某个智能体的状态
openclaw agents status work
删除智能体
openclaw agents remove work
`
注意事项
1. 智能体 ID 命名:使用小写字母和连字符,如 deep-work、family-bot
2. 默认路由:bindings 数组中至少保留一个没有 channel/peer 限定的条目作为默认路由
3. 配置热重载:修改 openclaw.json` 后,Gateway 会自动检测变更并重新加载(如果开启了热重载模式)
4. 资源消耗:多个智能体共享同一个 Gateway 进程,不会显著增加内存或 CPU 消耗
5. 会话隔离:不同智能体的会话完全隔离,互相看不到对方的对话历史