Перейти к содержимому
NEWЧат с 15 ИИ-моделями — попробуйте бесплатно / имейте совесть, когда будете делиться или копировать
>AISTUDY_

Модуль 3.4 · Урок 3

Урок 3: Финальный проект

50 мин
ПрактикаПроект
Содержание
3.4 / Урок 3 из 3

Чему вы научитесь

  • Проектировать мультиагентную систему с нуля
  • Создавать 3 агента с разными ролями
  • Подключать 2+ канала и настраивать маршрутизацию
  • Писать SOUL.md для каждого агента
  • Настраивать мониторинг и автоматизацию
  • Тестировать систему от начала до конца

Описание проекта

В этом уроке мы соберём полноценную мультиагентную систему OpenClaw. Это итоговый проект, который объединяет всё, что вы изучили в Треке 3.

Что мы создадим

  • 3 агента: личный ассистент, рабочий помощник, семейный бот
  • 2+ канала: Telegram + WhatsApp (или Discord/Slack)
  • Маршрутизация: каждый канал направляет сообщения нужному агенту
  • SOUL.md: уникальная личность для каждого агента
  • Навыки: разные наборы инструментов для каждого агента
  • Автоматизация: утренний дайджест и мониторинг
  • Мониторинг: отслеживание статуса, расходов, ошибок

Этап 1: Проектирование

Прежде чем писать конфигурацию, спланируйте систему.

Таблица агентов

АгентРольКаналыМодельПрава
personalЛичный ассистентTelegram DMClaude SonnetПолные
workРабочий помощникSlack, DiscordClaude SonnetФайлы, GitHub, без личных данных
familyСемейный ботWhatsApp (семейная группа)Claude HaikuТолько поиск, sandbox

Таблица каналов

КаналТипКому направлять
Telegram (личный бот)DMpersonal
SlackВсе каналыwork
Discord (рабочий сервер)Guild #1234work
WhatsAppСемейная группаfamily
WhatsAppЛичные DMpersonal

Таблица навыков

АгентНавыки
personalgmail, calendar, memory, browser, notes
workgithub, jira, memory, search
familysearch, memory

Этап 2: Создание агентов

Шаг 1: Создайте агентов

# Личный ассистент (уже существует как default, переименуем)
openclaw agents rename default personal

# Рабочий помощник
openclaw agents add work

# Семейный бот
openclaw agents add family

Шаг 2: Проверьте структуру

openclaw agents list
Agents:
  personal (default)  claude-sonnet-4-6   active
  work                claude-sonnet-4-6   active
  family              claude-haiku-4-5    active

Этап 3: Настройка SOUL.md

personal/SOUL.md

cat > ~/.openclaw/workspace-personal/SOUL.md << 'EOF'
# Персональный ассистент

Ты -- персональный AI-ассистент. Помогаешь с повседневными задачами:
планирование, напоминания, поиск информации, email, календарь.

## Стиль
- Отвечай на русском языке
- Дружелюбный, но не фамильярный тон
- Используй "вы" по умолчанию
- Краткие ответы, подробные -- по запросу
- Markdown-форматирование для списков и таблиц

## Правила
- Учитывай часовой пояс Europe/Moscow
- При работе с email: сначала резюме, потом действие
- При работе с файлами: подтверждай перед изменением
- Напоминай о важных делах, если они упоминались ранее
- Не выполняй финансовые операции без подтверждения

## Ограничения
- Не давай медицинских рекомендаций
- Не выполняй деструктивные команды (rm -rf, DROP) без подтверждения
- Не отправляй email без явного запроса
EOF

work/SOUL.md

cat > ~/.openclaw/workspace-work/SOUL.md << 'EOF'
# Рабочий ассистент

Ты -- рабочий AI-помощник для команды разработки.
Стек: TypeScript, React, Node.js, PostgreSQL, Docker.

## Стиль
- Технически точные ответы
- Код на TypeScript strict (no any)
- Conventional commits: feat:, fix:, refactor:
- Ответы на русском, код на английском
- Без smalltalk -- только по делу

## Правила
- Файл не более 250 строк -- декомпозируй
- Параметризованные SQL-запросы
- Перед деструктивными операциями: план + подтверждение
- При код-ревью: начни с главного, потом детали
- Следуй ESLint + Prettier конвенциям проекта

## Ограничения
- Нет доступа к личным файлам и почте
- Нет обсуждений нерабочих тем
- Не коммить в main без подтверждения
- Не удаляй ветки и теги без запроса
EOF

family/SOUL.md

cat > ~/.openclaw/workspace-family/SOUL.md << 'EOF'
# Семейный помощник

Ты -- дружелюбный помощник для семьи.
Помогаешь с вопросами, домашними заданиями, рецептами, развлечениями.

## Стиль
- Простой и понятный язык
- Используй "ты"
- Короткие предложения
- Можно использовать аналогии и примеры из жизни
- Объясняй сложное простыми словами

## Правила
- Помогай с домашними заданиями, но НЕ давай готовые ответы
- Подсказывай путь к решению
- При вопросах о здоровье -- предлагай обратиться к врачу
- При готовке -- указывай время и количество ингредиентов
- Если вопрос не для детей -- вежливо откажи

## Ограничения
- Нет доступа к файлам и системным командам
- Нет обсуждения тем для взрослых
- Не давай финансовых советов
- Не делай ничего, что может быть небезопасно
EOF

Этап 4: Настройка USER.md

personal/USER.md

cat > ~/.openclaw/workspace-personal/USER.md << 'EOF'
# Пользователь

Имя: Алексей
Город: Москва
Часовой пояс: Europe/Moscow
Язык: русский
Профессия: Tech Lead

## Предпочтения
- Формат дат: ДД.ММ.ГГГГ
- Валюта: рубли
- Краткие ответы предпочтительнее длинных
- Кофе: капучино (для контекста утренних бесед)
EOF

work/USER.md

cat > ~/.openclaw/workspace-work/USER.md << 'EOF'
# Пользователь

Имя: Алексей
Роль: Tech Lead
Стек: TypeScript, React, Node.js, PostgreSQL
Часовой пояс: Europe/Moscow
Рабочие часы: 10:00-19:00 (Пн-Пт)

## Контекст проектов
- Основной проект: MyApp (монорепо, pnpm)
- CI/CD: GitHub Actions
- Деплой: Docker Compose на VPS
- База: PostgreSQL 16
EOF

family/USER.md

cat > ~/.openclaw/workspace-family/USER.md << 'EOF'
# Семья

Семья Ивановых, Москва.

## Члены семьи
- Алексей (папа) -- разработчик
- Мария (мама) -- маркетолог
- Дима (сын, 12 лет) -- увлекается робототехникой
- Аня (дочь, 9 лет) -- увлекается рисованием

## Предпочтения
- Язык: русский
- Рецепты: без острого (дети не едят)
- Фильмы: семейные, рейтинг 6+
EOF

Этап 5: Конфигурация openclaw.json

Теперь соберём всё в единый конфигурационный файл.

{
  // Модель по умолчанию
  "defaultModel": "claude-sonnet-4-6",

  // API-ключи
  "auth": {
    "anthropic": {
      "apiKey": "sk-ant-api03-..."
    }
  },

  // Агенты
  "agents": {
    "defaults": {
      "userTimezone": "Europe/Moscow",
      "timeFormat": "24",
      "bootstrapMaxChars": 20000
    },
    "list": [
      {
        "id": "personal",
        "default": true,
        "workspace": "~/.openclaw/workspace-personal",
        "agentDir": "~/.openclaw/agents/personal/agent",
        "model": "claude-sonnet-4-6"
      },
      {
        "id": "work",
        "workspace": "~/.openclaw/workspace-work",
        "agentDir": "~/.openclaw/agents/work/agent",
        "model": "claude-sonnet-4-6",
        "tools": {
          "allow": ["read", "write", "exec", "search", "browser", "memory"]
        }
      },
      {
        "id": "family",
        "workspace": "~/.openclaw/workspace-family",
        "agentDir": "~/.openclaw/agents/family/agent",
        "model": "claude-haiku-4-5",
        "tools": {
          "allow": ["search", "memory"],
          "deny": ["exec", "write", "read", "browser"]
        },
        "sandbox": {
          "mode": "all"
        }
      }
    ]
  },

  // Каналы
  "channels": {
    "telegram": {
      "botToken": "7123456789:AAH...",
      "dmPolicy": "allowList",
      "allowFrom": ["123456789"]
    },
    "whatsapp": {
      "enabled": true,
      "dmPolicy": "paired",
      "pairedNumbers": ["+79991234567"]
    },
    "slack": {
      "botToken": "xoxb-...",
      "appToken": "xapp-...",
      "activation": "mention"
    }
  },

  // Маршрутизация
  "bindings": [
    // Семейная группа WhatsApp -> family
    {
      "agentId": "family",
      "match": {
        "channel": "whatsapp",
        "peer": {
          "kind": "group",
          "id": "120363012345678901@g.us"
        }
      }
    },
    // Slack -> work
    {
      "agentId": "work",
      "match": {
        "channel": "slack"
      }
    }
    // Всё остальное (Telegram, WhatsApp DM) -> personal (default)
  ],

  // Автоматизация
  "crons": [
    {
      "label": "Утренний дайджест",
      "schedule": "30 7 * * 1-5",
      "prompt": "Доброе утро! Краткая сводка: 1) Непрочитанные email (резюме). 2) Встречи на сегодня. 3) Погода в Москве. Если нечего сообщить -- напиши только \"Доброе утро, всё чисто!\"",
      "channel": "telegram"
    },
    {
      "label": "Вечерние итоги",
      "schedule": "0 19 * * 1-5",
      "prompt": "Итоги дня: количество обработанных сообщений, использованные токены, статус каналов. Кратко.",
      "channel": "telegram"
    }
  ],

  // Сессии
  "session": {
    "dmScope": "per-channel-peer",
    "resetTriggers": ["/new", "/reset"],
    "identityLinks": {
      "alexey": [
        "telegram:123456789",
        "whatsapp:+79991234567"
      ]
    }
  },

  // Gateway
  "gateway": {
    "port": 4200,
    "daemon": true
  }
}

Этап 6: Установка навыков

Для personal

cd ~/.openclaw/workspace-personal
clawhub install openclaw/gmail
clawhub install openclaw/calendar

Для work

cd ~/.openclaw/workspace-work
clawhub install openclaw/github

Проверка

openclaw skills list --agent personal
openclaw skills list --agent work
openclaw skills list --agent family

Этап 7: Запуск и тестирование

Запуск

openclaw restart

Проверка статуса

openclaw status
OpenClaw Gateway
  Status: running
  Uptime: 15s
  Agents: personal (default), work, family
  Channels: telegram (connected), whatsapp (connected), slack (connected)
  Bindings: 2 rules + default fallback

Тест 1: Проверка маршрутизации

Отправьте сообщения через разные каналы и убедитесь, что они попадают к нужному агенту.

# Включите логи маршрутизации
openclaw logs -f --filter routing

Telegram DM (должен ответить personal):

Вы (Telegram): Кто ты и какой у тебя SOUL.md?

Slack (должен ответить work):

@bot Кто ты и какой у тебя SOUL.md?

WhatsApp семейная группа (должен ответить family):

Бот, кто ты?

Тест 2: Проверка изоляции

Убедитесь, что агенты не знают о данных друг друга.

В Slack (work-агент):

Какое у меня хобби?

Ответ: работа-агент не должен знать о хобби — у него в USER.md только рабочая информация.

В Telegram (personal-агент):

Какое у меня хобби?

Ответ: если в personal/USER.md есть хобби, агент его назовёт.

Тест 3: Проверка прав

В семейной группе WhatsApp (family-агент):

Покажи содержимое файла /etc/hostname

Ответ: family-агент не может читать файлы — должен отказать.

Тест 4: Проверка моделей

# Проверьте, какая модель используется для каждого агента
openclaw agents info personal | grep Model
openclaw agents info work | grep Model
openclaw agents info family | grep Model

Этап 8: Мониторинг

Дашборд статуса

openclaw status --verbose
OpenClaw Gateway v0.16.1
  Status: running
  PID: 12345
  Uptime: 2d 14h 32m

Agents:
  personal  claude-sonnet-4-6  5 skills  sessions: 23
  work      claude-sonnet-4-6  2 skills  sessions: 45
  family    claude-haiku-4-5   0 skills  sessions: 12

Channels:
  telegram    connected  last msg: 3m ago
  whatsapp    connected  last msg: 1h ago
  slack       connected  last msg: 15m ago

Automation:
  crons: 2 active (next: "Утренний дайджест" at 07:30)
  webhooks: 0

Usage (today):
  personal:  12,300 tokens ($0.18)
  work:      34,500 tokens ($0.52)
  family:     5,600 tokens ($0.01)
  Total:     52,400 tokens ($0.71)

Отслеживание расходов

# Расходы за текущий месяц
openclaw usage --period month
Usage (March 2026):
  personal:  345,000 tokens   $5.18
  work:      890,000 tokens  $13.35
  family:    156,000 tokens   $0.23
  cron:       45,000 tokens   $0.68
  Total:   1,436,000 tokens  $19.44

Логирование ошибок

# Ошибки за последний день
openclaw logs --filter error --since 24h

Мониторинг здоровья каналов

Добавьте cron-задачу для автоматической проверки:

{
  "label": "Проверка каналов",
  "schedule": "0 */6 * * *",
  "prompt": "Проверь статус всех каналов (openclaw channels list). Если какой-то канал disconnected -- уведоми меня с названием канала и временем отключения.",
  "channel": "telegram"
}

Этап 9: Оптимизация

Оптимизация стоимости

  1. Переведите family на Haiku — для простых вопросов этого достаточно.

  2. Используйте Haiku для cron — рутинные задачи не требуют мощной модели:

{
  "crons": [
    {
      "label": "Утренний дайджест",
      "schedule": "30 7 * * 1-5",
      "model": "claude-haiku-4-5",
      "prompt": "..."
    }
  ]
}
  1. Добавьте условие «тишина» в cron:
"Если нечего сообщить -- не отправляй сообщение."

Оптимизация SOUL.md

  • Удалите лишний текст — каждый символ расходует токены
  • Оптимальный размер: 500-2000 символов
  • Проверяйте: wc -c ~/.openclaw/workspace-personal/SOUL.md

Оптимизация навыков

Удалите неиспользуемые навыки:

openclaw skills list --agent work --usage
Skills for agent "work":
  github      used 45 times (last 24h: 12)
  jira        used 2 times (last 24h: 0)    ← Редко используется

Чеклист финального проекта

Пройдитесь по списку и отметьте выполненное:

Агенты

  • Создано 3 агента (personal, work, family)
  • Каждый агент имеет уникальный SOUL.md
  • USER.md заполнен для каждого агента
  • Модели распределены по задачам

Каналы

  • Подключены 2+ канала
  • Настроены dmPolicy / allowFrom для безопасности
  • Каналы показывают статус connected

Маршрутизация

  • Bindings настроены для каждого сценария
  • Конкретные bindings стоят перед общими
  • Протестировано через openclaw routing test
  • Fallback на default агент работает

Навыки

  • personal: gmail, calendar (или другие нужные)
  • work: github (или другие рабочие)
  • family: минимум навыков, sandbox включён

Автоматизация

  • Утренний дайджест настроен
  • Протестирован через openclaw cron run

Мониторинг

  • openclaw status показывает все агенты и каналы
  • openclaw usage показывает расходы
  • Логи маршрутизации работают

Безопасность

  • family-агент в sandbox
  • family-агент не имеет доступа к файлам и exec
  • dmPolicy ограничивает доступ посторонних
  • Auth-профили разделены (если есть рабочие/личные ключи)

Попробуйте сами

  1. Соберите систему. Следуя этапам выше, создайте полноценную мультиагентную конфигурацию.

  2. Адаптируйте под себя. Замените агентов и каналы на те, которые актуальны для вас. Не обязательно повторять пример один в один.

  3. Проведите 24 часа с системой. Используйте OpenClaw в реальных сценариях:

    • Утром получите дайджест
    • Днём задайте рабочий вопрос через Slack
    • Вечером попросите рецепт в семейном чате
  4. Оцените расходы. Через день проверьте openclaw usage и оптимизируйте.

  5. Поделитесь конфигурацией. Если ваша настройка полезна — опубликуйте анонимизированный openclaw.json в сообществе OpenClaw.


Ключевые выводы

  • Мультиагентная система OpenClaw состоит из агентов, каналов, bindings и автоматизации
  • Каждый агент изолирован: свой SOUL.md, навыки, права, модель
  • Bindings маршрутизируют сообщения из каналов к нужным агентам
  • Разные модели для разных задач оптимизируют стоимость и качество
  • Sandbox и ограничения tools обеспечивают безопасность
  • Мониторинг через openclaw status и openclaw usage помогает контролировать систему
  • Автоматизация (cron) делает систему проактивной

Что дальше

Поздравляем! Вы прошли весь Трек 3 — от установки OpenClaw до полноценной мультиагентной системы. Вот направления для дальнейшего развития:

  • Добавьте больше навыков — исследуйте ClawHub для новых интеграций
  • Настройте вебхуки — подключите GitHub, Sentry, мониторинг
  • Попробуйте локальные модели — Ollama для максимальной приватности
  • Создайте свои навыки — автоматизируйте уникальные для вас задачи
  • Подключите больше каналов — Signal, Matrix, Microsoft Teams
  • Участвуйте в сообществе — делитесь навыками, конфигурациями и опытом
Скачать урок

Есть идея или нашли ошибку?

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.