OpenClaw多Agent路由配置

多 agent + 渠道路由(bindings)示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
  "agents": {
    "defaults": {
      "workspace": "~/.openclaw/workspace"
    },
    "list": [
      {
        "id": "personal",
        "default": true,
        "workspace": "~/.openclaw/workspace-personal",
        "model": "zai/glm-5"
      },
      {
        "id": "work",
        "workspace": "~/.openclaw/workspace-work"
      }
    ],
    "bindings": [
      {
        "agentId": "personal",
        "match": { "channel": "whatsapp", "peer": { "kind": "dm", "id": "+15555550123" } }
      },
      {
        "agentId": "work",
        "match": { "channel": "slack", "teamId": "T01234567", "peer": { "kind": "dm", "id": "U12345678" } }
      },
      {
        "agentId": "work",
        "match": { "channel": "discord", "guildId": "123456789012345678" }
      }
    ]
  }
}

说明

  • agents.list[].workspace 为每个 agent 的默认工作区目录,
  • bindings 使用 match.channel / accountId / peer / guildId / teamId 进行路由匹配,
  • peer.kind 常用为 dmgroup,不同渠道含义一致,但 ID 需使用该渠道原生 ID

查看当前配置是否已被加载:

openclaw agents list

绑定规则怎么用

  • 位置:openclaw.jsonagents.bindings 数组里,每条规则包含 agentIdmatch 两部分,
  • match 支持字段:channelaccountIdpeer(含 kind + id)、guildIdteamIdroles
  • 常见场景:
    • 私聊:使用 peer.kind: "dm" + 对方 ID
    • 群聊:使用 peer.kind: "group" + 群 ID
    • Discord:可用 guildIdroles
    • Slack:常用 teamId + peer

最小可用示例

使用流程

  • 把规则加到 openclaw.jsonagents.bindings,保存后重启 gateway/CLI 进程
  • openclaw agents list --bindings 查看当前路由命中情况

使用不同 agents 的方式

  • CLI 手动指定:用 openclaw agent --agent <id> --message "..." 直接选择某个 agent
  • 渠道路由自动分配:在 agents.bindings 里按 channel/accountId/peer/guildId/teamId 写规则,让消息自动路由到对应 agent,
  • 默认 agent:agents.listdefault: true 的那一个会作为默认主会话的 agent

常用命令

  • 查看有哪些 agent:openclaw agents list
  • 查看路由绑定:openclaw agents list --bindings
  • 直接指定 agent 发消息:
1
2
3
openclaw agent --agent main --message "你好"
openclaw agent --agent coder --message "帮我写一段 TypeScript"
openclaw agent --agent writer --message "帮我润色一段中文"

绑定规则结构

  • agentId:目标 agent 的 id
  • match.channel:渠道名(如 whatsapp / slack / discord / telegram
  • match.accountId:同一渠道多账号时区分账号(可选)
  • match.peer.kinddmgroup
  • match.peer.id:对端或群组的原生 ID
  • match.guildId / match.teamId:Discord/Slack 的组织范围路由(可选)

最小可用示例

使用流程

  • 写好 agents.bindings → 重启 gateway/CLI
  • openclaw agents list --bindings 查看路由是否命中

协作优化代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  "tools": {

    "agentToAgent": {

     "enabled": true,

      "allow": [

         "main",

        "coder",

        "writer"

      ]

    }

  },
  • tools.agentToAgent.enabled: true :开启 agent-to-agent 消息工具,让一个 agent 可以主动调用另一个 agent 协作处理任务(默认是关闭的)。
  • tools.agentToAgent.allow: [“main”,“coder”,“writer”] :只允许这三个 agent 互相发送 agent-to-agent 消息,避免其他未列出的 agent 参与协作。
    这些规则在多代理协作与工具策略文档中明确:agent-to-agent 默认关闭,必须显式开启并做 allowlist 限制。 Multi-Agent Routing Tools

其他优化方向

  • 按职责分离工具权限 :给 coder 开启文件/执行相关工具, writer 仅保留文本与消息类工具,减少误操作面。
  • 按渠道或账号更细路由 :在 bindings 里增加 accountId 或 peer 规则,让不同来源流量更精准分配。
  • 会话隔离策略 :设置 session.dmScope 为更细的粒度,避免不同人或渠道的对话混在一起。
  • 模型与成本分层 : main 用强模型做统筹, writer / coder 用性价比模型做执行,降低成本且保持质量。
  • Sandbox 隔离 :对有风险的 agent 开启 sandbox,限制其访问路径和工具范围。
  • 消息权限收紧 :对敏感渠道设置 dmPolicy / allowFrom ,减少不必要的入口。

概念说明

  • accountId :同一渠道下的“账号实例”。当一个渠道支持多账号(或多连接)时,用 accountId 区分不同账号。例如同一个 Feishu/WhatsApp 配置下的多个账户路由到不同 agent。 types.agents.ts
  • peer :具体的聊天对象或群组。由 kind (direct/group/thread 等)和 id (该对象的唯一 ID)组成,用于把特定人或特定群的消息路由到某个 agent。 types.agents.ts
  • accountId 解决“同一渠道多账号”的问题
  • peer 解决“同一账号下按具体联系人/群组细分”的问题

目前已经实现多agent多项目多任务

原文链接: https://www.17you.com/programming/openclaw%E5%A4%9Aagent%E8%AE%BE%E7%BD%AE/ 已复制!
编程和技术

寻找技术支持帮助和技术合伙人一起搞事。

请点击联系我


相关内容