Агент --- это «мозг» 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 выбирает по приоритету (от высшего к низшему):
| Приоритет | Уровень | Пример |
|---|---|---|
| 1 | Peer (конкретный собеседник) | DM с +79001234567 |
| 2 | ParentPeer (наследование треда) | Тред в группе |
| 3 | Guild + Roles (Discord) | Сервер + роль |
| 4 | Guild (Discord) | Весь сервер |
| 5 | Team (Slack) | Slack workspace |
| 6 | Account | Конкретный аккаунт канала |
| 7 | Channel | Весь канал целиком |
Если несколько правил совпадают на одном уровне, побеждает первое в порядке конфигурации.
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
Что дальше
- Gateway OpenClaw --- как устроен gateway, через который работают все агенты
- SOUL.md: персонализация --- настройка личности каждого агента
- Скиллы OpenClaw --- добавление навыков агентам
- Безопасность --- песочница и защита при работе с агентами
- Все команды CLI --- полный справочник команд, включая agents