大多数人用一个 Agent 就够了。但随着使用深入,你可能会想要:一个 Agent 专门处理工作事务,另一个专门做生活助理;或者给家人提供一个权限受限的 Bot,自己用另一个功能完整的。这些都可以用多 Agent 实现。
一、什么是多 Agent
在 OpenClaw 里,Agent 是一个完全独立的”大脑”单元,有自己的:
- 独立工作目录(workspace)
- 独立的会话存储
- 独立的工具权限设置
- 独立的 Channel 绑定
多个 Agent 运行在同一个 Gateway 实例里,共用同一个进程,但彼此完全隔离、互不干扰。
二、什么时候需要多 Agent
| 场景 | 说明 |
|---|---|
| 功能隔离 | 工作 Bot 能读写文件,生活 Bot 只能聊天 |
| 权限隔离 | 给家人一个只能聊天的 Bot,自己用功能完整的 |
| 个性隔离 | 不同 Channel 上的 Bot 有不同的名字和风格 |
| 模型隔离 | 日常对话用便宜的模型,专业任务用强模型 |
三、创建新 Agent
openclaw agents add <agentId>
例如创建一个叫 family 的 Agent:
openclaw agents add family
这条命令会:
- 在
~/.openclaw/agents/family/下创建独立的状态目录 - 在
~/.openclaw/workspace-family/下创建工作目录
查看所有 Agent:
openclaw agents list
四、在配置文件里配置多 Agent
~/.openclaw/openclaw.json 里用 agents.list 数组定义每个 Agent:
{
agents: {
// 默认设置,所有 Agent 继承
defaults: {
model: {
primary: "anthropic/claude-sonnet-4-6"
}
},
// Agent 列表
list: [
{
id: "main", // 默认 Agent,必须有
agentDir: "~/.openclaw/agents/main",
workspace: "~/.openclaw/workspace",
tools: { profile: "full" }
},
{
id: "family",
agentDir: "~/.openclaw/agents/family",
workspace: "~/.openclaw/workspace-family",
model: {
primary: "groq/llama-3.3-70b-versatile" // 这个 Agent 用不同的模型
},
tools: {
profile: "messaging" // 只允许聊天,不能操作文件
}
}
]
}
}
五、Channel 绑定:消息路由到哪个 Agent
创建了多个 Agent 之后,还需要告诉 OpenClaw:哪些消息路由给哪个 Agent。这通过 bindings(绑定规则) 来配置。
方案一:按 Channel 类型路由
Telegram 的消息给 main,Feishu 的消息给 family:
{
agents: {
list: [
{ id: "main", /* ... */ },
{ id: "family", /* ... */ }
],
bindings: [
{ channel: "feishu", agentId: "family" },
{ channel: "telegram", agentId: "main" }
]
}
}
方案二:按用户 ID 路由
同一个 Channel,不同用户路由到不同 Agent:
{
agents: {
bindings: [
// 家人的 Telegram ID 路由给 family Agent
{ channel: "telegram", peer: "家人的user_id", agentId: "family" },
// 其他人(包括自己)默认走 main
{ channel: "telegram", agentId: "main" }
]
}
}
路由优先级
当多条规则都匹配时,更精确的规则优先:
- peer(指定用户 ID)— 最高优先级
- guild/team ID(指定群组)
- account ID(指定 Channel 账户)
- channel(Channel 类型)— 最低优先级
同一层级有多条规则时,配置文件里靠前的优先。
六、验证路由配置
openclaw agents list --bindings
这条命令会列出所有 Agent 及其绑定规则,方便确认配置是否正确。
七、常见配置示例
工作 Bot + 家用 Bot
{
agents: {
defaults: {
model: { primary: "anthropic/claude-sonnet-4-6" }
},
list: [
{
id: "work",
agentDir: "~/.openclaw/agents/work",
workspace: "~/work-workspace",
tools: { profile: "coding" } // 可以操作文件和执行命令
},
{
id: "home",
agentDir: "~/.openclaw/agents/home",
workspace: "~/.openclaw/workspace-home",
model: { primary: "groq/llama-3.3-70b-versatile" }, // 用更便宜的模型
tools: { profile: "messaging" } // 只能聊天
}
],
bindings: [
{ channel: "telegram", peer: "自己的user_id", agentId: "work" },
{ channel: "telegram", agentId: "home" } // 其他人走 home
]
}
}
给不同 Channel 设置不同个性
每个 Agent 的工作目录里可以放 SOUL.md 文件,定义 Bot 的个性和行为风格:
# work Agent 的个性
echo "你是一个专业的工作助理,回答简洁、重点突出。" > ~/work-workspace/SOUL.md
# home Agent 的个性
echo "你是一个友善的家庭助理,语气温暖,适合全家人使用。" > ~/.openclaw/workspace-home/SOUL.md