Канал

Агенты OpenClaw: мульти-агент, маршрутизация, настройка

Агент --- это «мозг» OpenClaw. Он получает сообщения, обрабатывает их через языковую модель и выполняет действия: отвечает в мессенджерах, запускает команды, работает с файлами.

По умолчанию OpenClaw работает с одним агентом --- main. Для большинства задач этого достаточно. Но если вы хотите разделить контексты --- например, рабочий бот и личный, или разные боты в Telegram --- можно запустить несколько агентов на одном gateway.

Что такое агент

Каждый агент --- это изолированная единица со своими:

КомпонентОписание
WorkspaceРабочая директория с SOUL.md, AGENTS.md, скиллами
СессииИзолированное хранилище истории разговоров
Auth-профилиОтдельные ключи и авторизации
МодельМожно назначить свою LLM каждому агенту

Структура файлов одного агента:

~/.openclaw/
├── agents/
│   └── main/                    # agentId
│       ├── agent/               # Состояние агента
│       │   └── auth-profiles.json
│       └── sessions/            # История разговоров
└── workspace/                   # Рабочая директория
    ├── SOUL.md
    ├── AGENTS.md
    └── skills/

Один агент (по умолчанию)

Если вы не настраивали мульти-агент, OpenClaw работает так:

  • agentId: main
  • Workspace: ~/.openclaw/workspace
  • Состояние: ~/.openclaw/agents/main/agent
  • Сессии: ~/.openclaw/agents/main/sessions

Менять ничего не нужно --- всё настраивается автоматически при первом запуске.

Мульти-агент: зачем и когда

Несколько агентов нужны, когда:

  • Разные Telegram-боты --- основной бот и бот для уведомлений
  • Разделение контекстов --- рабочий и личный ассистент
  • Разные модели --- один агент на Claude для сложных задач, другой на DeepSeek для рутины
  • Разные права --- один агент с полным доступом, другой только для чтения

Создание агентов

# Добавить агента:
openclaw agents add coding

# Добавить ещё одного:
openclaw agents add alerts

Каждый агент получает свой workspace и директорию состояния.

Проверка

# Список агентов с привязками:
openclaw agents list --bindings

# Статус каналов:
openclaw channels status --probe

Маршрутизация (bindings)

Маршрутизация определяет, какой агент обрабатывает сообщения из какого канала или аккаунта. Настраивается в ~/.openclaw/openclaw.json.

Базовый пример: два Telegram-бота

// ~/.openclaw/openclaw.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..." },
        alerts: { botToken: "987654:XYZ..." },
      },
    },
  },
}

Результат: сообщения в первого бота идут агенту main, во второго --- агенту alerts. У каждого свой workspace, сессии и настройки.

Разные каналы → разные агенты

{
  agents: {
    list: [
      { id: "chat", model: "anthropic/claude-sonnet-4-5" },
      { id: "opus", model: "anthropic/claude-opus-4-6" },
    ],
  },
  bindings: [
    { agentId: "chat", match: { channel: "whatsapp" } },
    { agentId: "opus", match: { channel: "telegram" } },
  ],
}

WhatsApp-сообщения обрабатывает модель подешевле, Telegram --- помощнее.

Маршрутизация по собеседнику (peer)

{
  bindings: [
    {
      agentId: "opus",
      match: {
        channel: "whatsapp",
        peer: { kind: "direct", id: "+79001234567" },
      },
    },
    { agentId: "chat", match: { channel: "whatsapp" } },
  ],
}

Конкретный контакт получает мощного агента, все остальные --- обычного.

Приоритет маршрутизации

Когда несколько правил могут подойти, OpenClaw выбирает по приоритету (от высшего к низшему):

ПриоритетУровеньПример
1Peer (конкретный собеседник)DM с +79001234567
2ParentPeer (наследование треда)Тред в группе
3Guild + Roles (Discord)Сервер + роль
4Guild (Discord)Весь сервер
5Team (Slack)Slack workspace
6AccountКонкретный аккаунт канала
7ChannelВесь канал целиком

Если несколько правил совпадают на одном уровне, побеждает первое в порядке конфигурации.

CLI-команды для агентов

КомандаОписание
openclaw agents listСписок всех агентов
openclaw agents list --bindingsСписок с привязками каналов
openclaw agents add <id>Добавить нового агента
openclaw agents bind --channel telegram --account bot2 --agent codingПривязать канал к агенту
openclaw agents unbind --channel telegram --account bot2Отвязать
openclaw agents bindingsПоказать текущие привязки

После изменения привязок перезапустите gateway:

openclaw gateway restart

Per-agent sandbox и ограничения

Каждому агенту можно задать свой уровень доступа:

{
  agents: {
    list: [
      {
        id: "personal",
        sandbox: { mode: "off" },
      },
      {
        id: "family",
        sandbox: {
          mode: "all",
          scope: "agent",
        },
        tools: {
          allow: ["read"],
          deny: ["exec", "write", "edit"],
        },
      },
    ],
  },
}

В этом примере:

  • Агент personal работает без ограничений
  • Агент family запущен в песочнице и может только читать файлы --- без выполнения команд и записи

Workspace агента

Workspace --- рабочая директория агента. В ней хранятся:

ФайлНазначение
SOUL.mdСистемный промпт --- личность и правила поведения
AGENTS.mdОписание доступных инструментов и шаблонов
USER.mdИнформация о пользователе
skills/Папка с навыками агента

Для мульти-агента каждый получает свой workspace:

{
  agents: {
    list: [
      { id: "main", workspace: "~/.openclaw/workspace-main" },
      { id: "coding", workspace: "~/.openclaw/workspace-coding" },
    ],
  },
}

Важно: Никогда не используйте один agentDir для нескольких агентов --- это вызовет конфликты авторизации и сессий.

Субагенты

Субагенты --- это делегирование задач от одного агента другому внутри OpenClaw. Основной агент может «попросить» субагента выполнить отдельную задачу и получить результат.

По умолчанию межагентная коммуникация отключена. Для включения:

{
  tools: {
    agentToAgent: {
      enabled: true,
    },
  },
}

Субагенты полезны для сложных сценариев:

  • Основной агент обрабатывает диалог, а кодинг-агент пишет код
  • Один агент собирает информацию, другой анализирует

Типичные проблемы

Сообщения приходят не тому агенту

Проверьте привязки:

openclaw agents list --bindings

Убедитесь, что accountId в bindings совпадает с ключом в channels.

Агент не отвечает в одном из каналов

# Проверьте статус каналов:
openclaw channels status --probe

# Перезапустите gateway:
openclaw gateway restart

«Pairing required» при добавлении нового агента

Новому агенту нужна отдельная авторизация. Пройдите pairing для каждого агента:

openclaw pairing --agent coding

Что дальше

Следите за OpenClaw на русском

Разбираем обновления, пишем гайды, делимся кейсами

Подписаться на канал Задать вопрос в чате
Присоединяйтесь к сообществу