OpenClaw 最强大的能力之一:单个 Gateway 进程可以同时运行多个完全隔离的 Agent,每个 Agent 拥有独立的工作区、会话存储、认证信息和个性配置。
什么是「一个 Agent」?
一个 Agent 是一个完全隔离的「大脑」,包含:
- 工作区(workspace):独立的文件、AGENTS.md/SOUL.md/USER.md、本地笔记、Persona 规则
- 状态目录(agentDir):独立的认证 Profile、模型注册表、per-Agent 配置
- 会话存储:
~/.openclaw/agents/<agentId>/sessions/
重要:认证 Profile 是 per-Agent 的,不会自动共享。如需共享凭证,手动复制 auth-profiles.json。
路径速查
| 类型 | 路径 |
|---|---|
| 配置 | ~/.openclaw/openclaw.json |
| 状态目录 | ~/.openclaw/ |
| 工作区 | ~/.openclaw/workspace |
| Agent 目录 | ~/.openclaw/agents/<agentId>/agent |
| 会话 | ~/.openclaw/agents/<agentId>/sessions |
快速添加第二个 Agent
bash
openclaw agents add work
openclaw agents list --bindings实战场景一:一个号码,���个用户(DM 分流)
用一个 WhatsApp 账号,根据对方手机号路由到不同 Agent:
json
{
"agents": {
"list": [
{ "id": "alex", "workspace": "~/.openclaw/workspace-alex" },
{ "id": "mia", "workspace": "~/.openclaw/workspace-mia" }
]
},
"bindings": [
{
"agentId": "alex",
"match": { "channel": "whatsapp", "peer": { "kind": "direct", "id": "+15551230001" } }
},
{
"agentId": "mia",
"match": { "channel": "whatsapp", "peer": { "kind": "direct", "id": "+15551230002" } }
}
],
"channels": {
"whatsapp": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551230001", "+15551230002"]
}
}
}说明:DM 访问控制是全局的(per WhatsApp 账号),不是 per-Agent 的。真正的隔离需要每人一个 Agent。
实战场景二:WhatsApp 日常 + Telegram 深度工作
按频道分流:WhatsApp 用快速的 Sonnet Agent,Telegram 用强力的 Opus Agent:
json
{
"agents": {
"list": [
{
"id": "chat",
"name": "日常助手",
"workspace": "~/.openclaw/workspace-chat",
"model": "anthropic/claude-sonnet-4-5"
},
{
"id": "opus",
"name": "深度工作",
"workspace": "~/.openclaw/workspace-opus",
"model": "anthropic/claude-opus-4-6"
}
]
},
"bindings": [
{ "agentId": "chat", "match": { "channel": "whatsapp" } },
{ "agentId": "opus", "match": { "channel": "telegram" } }
]
}实战场景三:多个 WhatsApp 号码 per-Agent
每个号码对应一个独立 Agent,完全隔离:
bash
# 先登录两个号码
openclaw channels login --channel whatsapp --account personal
openclaw channels login --channel whatsapp --account bizjson
{
"agents": {
"list": [
{ "id": "home", "default": true, "workspace": "~/.openclaw/workspace-home", "agentDir": "~/.openclaw/agents/home/agent" },
{ "id": "work", "workspace": "~/.openclaw/workspace-work", "agentDir": "~/.openclaw/agents/work/agent" }
]
},
"bindings": [
{ "agentId": "home", "match": { "channel": "whatsapp", "accountId": "personal" } },
{ "agentId": "work", "match": { "channel": "whatsapp", "accountId": "biz" } }
]
}实战场景四:多个 Telegram Bot per-Agent
json
{
"agents": {
"list": [
{ "id": "main", "workspace": "~/.openclaw/workspace-main" },
{ "id": "alerts", "workspace": "~/.openclaw/workspace-alerts" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram", "accountId": "default" } },
{ "agentId": "alerts", "match": { "channel": "telegram", "accountId": "alerts" } }
],
"channels": {
"telegram": {
"accounts": {
"default": { "botToken": "123456:ABC...", "dmPolicy": "pairing" },
"alerts": { "botToken": "987654:XYZ...", "dmPolicy": "allowlist", "allowFrom": ["tg:123456789"] }
}
}
}
}路由规则优先级(决定性规则,高者优先)
peer精确匹配(DM/群组/频道 ID)parentPeer匹配(线程继承)guildId + roles(Discord 角色路由)guildId(Discord)teamId(Slack)accountId匹配(账号级别)- 频道级别匹配(
accountId: "*") - 兜底默认 Agent(
agents.list[].default,否则第一个,默认main)
同级多个 Binding 匹配时,配置中靠前的优先。
Agent 间通信(可选)
默认关闭,需显式开启:
json
{
"tools": {
"agentToAgent": {
"enabled": true,
"allow": ["home", "work"]
}
}
}注意事项
- 绑定省略
accountId时只匹配默认账号 - 使用
accountId: "*"匹配该频道所有账号 - 不同 Agent 不要复用
agentDir,会导致认证/会话冲突 - 工作区默认不是硬沙箱,绝对路径可访问其他位置;如需隔离请开启 Sandboxing
原文:Multi-Agent Routing - OpenClaw | 来源:OpenClaw 官方文档