实战

OpenClaw 多 Agent 路由实战:一个 Gateway 同时跑多个 AI 人格

OpenClaw 多 Agent 路由完整实战指南:一个 Gateway 跑多个隔离 AI 人格。涵盖 DM 分流(一号多人)、频道分流(WhatsApp 日常 + Telegram 深度工作)、多号码 per-Agent、多 Telegram Bot 四大典型场景,含完整 JSON 配置和路由优先级规则。

2026/3/14分钟 阅读ClaudeEagle

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 biz
json
{
  "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"] }
      }
    }
  }
}

路由规则优先级(决定性规则,高者优先)

  1. peer 精确匹配(DM/群组/频道 ID)
  2. parentPeer 匹配(线程继承)
  3. guildId + roles(Discord 角色路由)
  4. guildId(Discord)
  5. teamId(Slack)
  6. accountId 匹配(账号级别)
  7. 频道级别匹配(accountId: "*"
  8. 兜底默认 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 官方文档

相关文章推荐

实战OpenClaw 日志与健康检查完全指南:监控、告警与运维自动化OpenClaw 日志系统(Logging)与健康检查(Health Check)完整教程:日志级别配置(debug/info/warn/error)和日志格式(text/json)、日志文件持久化路径配置、按渠道/Agent/Provider 过滤日志、Health Check HTTP 端点(/health)的使用(状态码/响应格式)、用于容器编排的 liveness/readiness 探针配置、Gateway Doctor 命令的详细输出解读、集成 Prometheus 指标导出(/metrics 端点)、Grafana Dashboard 可视化,以及生产环境的日志轮转和告警配置方案。2026/3/25实战OpenClaw 代理配置完全指南:SOCKS5/HTTP 代理接入 Claude API 解决网络限制OpenClaw 网络代理(Proxy)配置完整教程:为什么需要代理(大陆访问 Anthropic/OpenAI API 被限制)、SOCKS5 代理配置方式(proxy.socks5/proxy.url)、HTTP/HTTPS 代理配置、代理认证(带用户名密码的代理)、按 Provider 单独配置代理(Anthropic 用代理、国内模型不走代理)、Clash/V2Ray/Xray 等代理工具与 OpenClaw 的对接方式、代理连通性测试方法,以及常见代理问题排障(SSL证书错误/超时/认证失败)。2026/3/25实战OpenClaw 密钥管理完全指南:API Key 安全存储、环境变量与 Vault 集成OpenClaw 密钥(Secrets)管理完整教程:密钥存储的三种方式对比(配置文件明文/环境变量/外部 Vault)、openclaw secrets set/get/list 命令使用、环境变量在配置中的引用语法(${ENV_VAR})、与系统 Keychain 集成(macOS Keychain/Linux Secret Service)、1Password CLI 和 HashiCorp Vault 接入方案、密钥轮换的操作流程、防止密钥泄露的检查(避免 git commit 含密钥)、以及密钥的最小权限原则(每个渠道用独立的 Token)。2026/3/25实战OpenClaw 渠道排障完全指南:消息收不到、Bot 不回复的系统性诊断方法OpenClaw 渠道故障系统性诊断教程:openclaw doctor 一键诊断命令的输出解读、最常见的 5 类问题(Bot Token 无效/Webhook URL 不可达/DM 配对未完成/网络防火墙拦截/配置格式错误)及对应修复步骤、各主要渠道的专项排障(Telegram 403/WhatsApp QR 失效/Slack 事件订阅未开启/Discord 权限不足/Matrix E2EE 设备未验证)、Gateway 日志的关键字段解读、常见错误码含义(401/403/409/429/503),以及在 Discord 社区获取技术支持的途径。2026/3/25实战OpenClaw 费用控制完全指南:Token 限制、Rate Limit 与 API 成本优化实践OpenClaw API 费用控制完整教程:每请求/每日 Token 上限配置(maxTokensPerRequest/maxTokensPerDay)、Rate Limit 限流防刷设置、每日美元预算告警(budgetAlert)、模型降级策略(高峰期自动切 Haiku 降成本)、Prompt Caching 开启减少重复 Token 消耗、各模型每百万 Token 价格对比表、Ollama 本地模型 0 成本方案,以及监控 Token 用量的 Dashboard 和日志方法。2026/3/25实战OpenClaw 与 Claude Code 协同使用实战:AI 聊天助手 + AI 编程助手的终极组合OpenClaw 与 Claude Code 协同使用的完整实战指南:两款工具的定位差异(OpenClaw=聊天AI助手框架,Claude Code=代码库直接操作的编程工具)、在 OpenClaw 中通过 exec 工具调用 Claude Code CLI(claude 命令)执行编程任务、把 OpenClaw 的 Telegram 消息转化为 Claude Code 任务(用自然语言描述→Claude Code执行→返回结果)、使用 OpenClaw Cron 定期触发 Claude Code 执行代码审查/依赖更新/测试/文档生成、CRS 代理在两者中的统一接入方案,以及常见的协同架构模式(主动触发/被动响应/定时执行)。2026/3/24