首页 资讯 下载 教程 Skills 社群

OpenClaw 多代理架构:一个网关运行多个 AI 助手

什么是多代理

OpenClaw 支持在单个网关中运行多个完全隔离的 AI 代理。每个代理就像一个独立的「大脑」,拥有自己的:

  • 工作区和文件系统
  • 会话存储和聊天历史
  • 人格设定和行为指令
  • 模型配置和工具权限
  • 认证凭证

这意味着你可以在同一台设备上同时运行「工作助手」「生活管家」「编程搭档」等多个角色完全不同的 AI 代理。

配置多个代理

~/.openclaw/openclaw.json 中定义代理列表:

{
  agents: {
    defaults: {
      model: { primary: "anthropic/claude-sonnet-4-5" }
    },
    list: [
      {
        id: "work",
        identity: {
          name: "工作助手",
          emoji: "💼"
        },
        model: { primary: "anthropic/claude-opus-4-5" },
        workspace: "~/openclaw-workspaces/work"
      },
      {
        id: "home",
        identity: {
          name: "生活管家",
          emoji: "🏠"
        },
        model: { primary: "ollama/llama3.3" },
        workspace: "~/openclaw-workspaces/home"
      },
      {
        id: "coder",
        identity: {
          name: "编程搭档",
          emoji: "👨‍💻"
        },
        model: { primary: "anthropic/claude-opus-4-5" },
        workspace: "~/projects"
      }
    ]
  }
}

消息路由

OpenClaw 使用确定性的优先级规则将消息路由到正确的代理:

  1. 对等方匹配:特定联系人或群组 ID 绑定到指定代理
  2. 账户匹配:按聊天账户路由(适用于多账号场景)
  3. 频道规则:按频道类型路由
  4. 默认回退:未匹配的消息路由到默认代理

按联系人路由

让同事的消息发给工作助手,家人的消息发给生活管家:

{
  agents: {
    list: [
      {
        id: "work",
        bindings: {
          peers: ["colleague-user-id-1", "colleague-user-id-2"]
        }
      },
      {
        id: "home",
        bindings: {
          peers: ["family-member-id"]
        }
      }
    ]
  }
}

按账户路由

如果你有多个聊天账号(比如工作微信和私人微信),可以按账户分流:

{
  channels: {
    whatsapp: {
      accounts: {
        "personal": { /* 个人号配置 */ },
        "business": { /* 工作号配置 */ }
      }
    }
  },
  agents: {
    list: [
      {
        id: "home",
        bindings: { accountId: "personal" }
      },
      {
        id: "work",
        bindings: { accountId: "business" }
      }
    ]
  }
}

隔离与安全

每个代理的数据完全隔离,存储在独立的目录结构中:

~/.openclaw/agents/
├── work/
│   ├── agent/
│   │   ├── AGENTS.md      # 代理行为指令
│   │   ├── SOUL.md        # 人格设定
│   │   └── auth-profiles.json
│   └── sessions/          # 会话存储
├── home/
│   ├── agent/
│   └── sessions/
└── coder/
    ├── agent/
    └── sessions/

认证凭证(如 API 密钥)不会在代理之间自动共享,每个代理需要独立配置。

差异化权限

可以为不同代理设置不同的安全级别:

{
  agents: {
    list: [
      {
        id: "personal",
        // 完全信任的个人代理
        sandbox: { mode: "off" }
      },
      {
        id: "family",
        // 家庭成员共用,限制权限
        sandbox: {
          mode: "all",
          workspaceAccess: "ro"
        },
        tools: {
          deny: ["exec", "browser"]
        }
      },
      {
        id: "public",
        // 对外开放的代理,最严格限制
        sandbox: {
          mode: "all",
          workspaceAccess: "none"
        },
        tools: {
          allow: ["group:web"],
          deny: ["exec", "browser", "group:fs"]
        }
      }
    ]
  }
}

代理人格配置

每个代理在自己的工作区中有 AGENTS.mdSOUL.md 文件来定义行为和人格:

工作助手的 SOUL.md 示例

你是一个专业的工作助手。你的风格是简洁、高效、注重数据。
回复使用正式的商务语气,优先给出可执行的建议。

生活管家的 SOUL.md 示例

你是一个温暖的生活助手。你关心用户的健康和生活质量。
回复风格轻松友好,会主动提醒休息和运动。

群聊中的代理识别

在群聊中,可以通过 @ 提及或 emoji 前缀来指定与哪个代理交互:

{
  agents: {
    list: [
      {
        id: "work",
        identity: {
          name: "工作助手",
          emoji: "💼"
        },
        groupChat: {
          mentionPatterns: ["@工作助手", "💼"]
        }
      }
    ]
  }
}

使用建议

  • 从 2 个代理开始,逐步扩展
  • 为每个代理明确分工,避免职责重叠
  • 敏感操作限制在可信的代理中
  • 公开代理务必开启沙箱和权限限制
  • 定期检查各代理的会话记录和工具调用日志