读完这一节,你会搞懂多 Agent 在 OpenClaw 里是什么意思(一个助手 = 一套工作区 + 一套会话 + 可选的独立渠道账号),会用 openclaw agents add 加新助手,并用 bindings 把飞书、Telegram、WhatsApp 等渠道的消息分给不同的助手。一个 Gateway 进程里可以同时跑多个「分身」,互不串台。
在 OpenClaw 里,一个 Agent(助手)就是一个完整独立的脑子,拥有:
~/.openclaw/agents/<agentId>/agent。~/.openclaw/agents/<agentId>/sessions/ 下,和别的助手完全分开。也就是说:多 Agent = 多套工作区 + 多套会话 + 多套认证,彼此隔离。同一个 Gateway 可以同时服务多个这样的 Agent;谁处理哪条消息,由 bindings(绑定规则)决定。
不配多 Agent 时,OpenClaw 只跑一个助手:
~/.openclaw/workspace,会话在 ~/.openclaw/agents/main/sessions/。下面说的「多 Agent」就是在这一层之上,再多加几套「脑子」,并靠 bindings 把不同渠道/不同账号/不同人的消息分给不同的 agentId。
在终端执行:
openclaw agents add work
把 work 换成你想起的名字(如 coding、social)。执行后,OpenClaw 会:
~/.openclaw/workspace-work),并放入 SOUL.md、AGENTS.md 等初始文件;再加一个就再执行一次,例如:
openclaw agents add coding
openclaw agents add social
每个 Agent 的 id 就是你在 add 时写的名字(如 work、coding);后面写 bindings 时用这个 id 指定「谁处理哪类消息」。
若你希望「工作助手」和「生活助手」用不同的飞书应用、不同的 Telegram 机器人或不同的 WhatsApp 号,就需要在对应平台各建一套,并在 OpenClaw 里用 accountId 区分。
channels.feishu.accounts.<accountId> 区分(若有多个应用)。channels.telegram.accounts.<accountId>.botToken,每个 accountId 对应一个 Agent 时,后面用 bindings 把该 account 绑到对应 agentId。openclaw channels login --channel whatsapp --account personal
openclaw channels login --channel whatsapp --account work
配置里会有 channels.whatsapp.accounts.personal、channels.whatsapp.accounts.work 等;再通过 bindings 把 accountId: "work" 绑到 Agent work。
若你暂时只想「一个 Telegram 号、一个 WhatsApp 号」给多个 Agent 用,也可以:用同一个 channel 账号,靠 bindings 按发送者(peer)把不同人的私聊分给不同 Agent(见官方「One WhatsApp number, multiple people」示例)。那样的话就不需要多个账号,只需多个 workspace + 多条 binding 规则。
Bindings 就是「谁的消息 → 交给哪个 Agent」的规则。在 ~/.openclaw/openclaw.json 里会有 bindings 数组,每条长这样:
{
"agentId": "work",
"match": { "channel": "telegram", "accountId": "work" }
}
表示:来自 Telegram、且账号是 work 的那台机器人的入站消息,都交给 work 这个 Agent。
若你只有一个 Telegram 账号,可以按发送者(peer)分,例如:
{
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram", "peer": { "kind": "direct", "id": "tg:你的个人ID" } } },
{ "agentId": "work", "match": { "channel": "telegram", "peer": { "kind": "direct", "id": "tg:同事ID" } } },
]
}
规则是最具体的那条优先:先看是否匹配某条 binding(channel、accountId、peer 等),匹配到就用对应的 agentId;都匹配不到就用默认 Agent(在 agents.list 里标了 default: true 的,或第一个)。
飞书、WhatsApp 同理:在 match 里写 channel: "feishu" 或 channel: "whatsapp",再按需加上 accountId 或 peer。完整字段和示例见官方 Multi-Agent Routing。
你也可以用 CLI 加 binding,不必手改 JSON:
openclaw agents bind --agent work --bind telegram:work
openclaw agents bindings
openclaw agents bindings 会列出当前所有绑定,便于核对。
改完配置后重启 Gateway,再确认路由和渠道都正常:
openclaw gateway restart
openclaw agents list --bindings
openclaw channels status --probe
openclaw agents add <名字>,会自动加进 agents.list 并建好工作区和目录。Q:bindings 写了但消息还是进了 main?
检查 match 是否写对:channel、accountId(若用多账号)、peer(若按人分)。agents list –bindings 看当前绑定是否生效;注意最具体的规则优先,若有多条匹配,按配置里顺序取第一条。
Q:多个 Agent 能共用一个工作区吗?
不推荐。每个 Agent 应有独立 workspace,否则会话、人设、记忆会混在一起。若想「共享一部分设定」,可以复制 AGENTS.md/SOUL.md 到多个工作区再各自改,或把公共内容放到共享 Skill(~/.openclaw/skills)。
Q:认证(API Key、OAuth)要每个 Agent 各配一份吗?
每个 Agent 的 agentDir 里各有 auth-profiles.json;默认不共享。若你希望某几个 Agent 用同一套模型认证,可以手动把一份 auth-profiles.json 复制到另一个 Agent 的 agentDir 里。不要多个 Agent 共用一个 agentDir,会乱。
Q:飞书 / Telegram / WhatsApp 的 bindings 怎么写?
在 bindings 里写 match: { channel: "feishu" } 或 "telegram"、"whatsapp";若该渠道配了多个 account,用 accountId: "xxx" 指定;若按发送者分,用 peer: { kind: "direct", id: "..." }。完整示例见官方 Multi-Agent 的 Platform examples。