Модуль 3.4 · Урок 3
Урок 3: Финальный проект
Содержание
- Чему вы научитесь
- Описание проекта
- Что мы создадим
- Этап 1: Проектирование
- Таблица агентов
- Таблица каналов
- Таблица навыков
- Этап 2: Создание агентов
- Шаг 1: Создайте агентов
- Шаг 2: Проверьте структуру
- Этап 3: Настройка SOUL.md
- personal/SOUL.md
- work/SOUL.md
- family/SOUL.md
- Этап 4: Настройка USER.md
- personal/USER.md
- work/USER.md
- family/USER.md
- Этап 5: Конфигурация openclaw.json
- Этап 6: Установка навыков
- Для personal
- Для work
- Проверка
- Этап 7: Запуск и тестирование
- Запуск
- Проверка статуса
- Тест 1: Проверка маршрутизации
- Тест 2: Проверка изоляции
- Тест 3: Проверка прав
- Тест 4: Проверка моделей
- Этап 8: Мониторинг
- Дашборд статуса
- Отслеживание расходов
- Логирование ошибок
- Мониторинг здоровья каналов
- Этап 9: Оптимизация
- Оптимизация стоимости
- Оптимизация SOUL.md
- Оптимизация навыков
- Чеклист финального проекта
- Агенты
- Каналы
- Маршрутизация
- Навыки
- Автоматизация
- Мониторинг
- Безопасность
- Попробуйте сами
- Ключевые выводы
- Что дальше
Чему вы научитесь
- Проектировать мультиагентную систему с нуля
- Создавать 3 агента с разными ролями
- Подключать 2+ канала и настраивать маршрутизацию
- Писать SOUL.md для каждого агента
- Настраивать мониторинг и автоматизацию
- Тестировать систему от начала до конца
Описание проекта
В этом уроке мы соберём полноценную мультиагентную систему OpenClaw. Это итоговый проект, который объединяет всё, что вы изучили в Треке 3.
Что мы создадим
- 3 агента: личный ассистент, рабочий помощник, семейный бот
- 2+ канала: Telegram + WhatsApp (или Discord/Slack)
- Маршрутизация: каждый канал направляет сообщения нужному агенту
- SOUL.md: уникальная личность для каждого агента
- Навыки: разные наборы инструментов для каждого агента
- Автоматизация: утренний дайджест и мониторинг
- Мониторинг: отслеживание статуса, расходов, ошибок
Этап 1: Проектирование
Прежде чем писать конфигурацию, спланируйте систему.
Таблица агентов
| Агент | Роль | Каналы | Модель | Права |
|---|---|---|---|---|
personal | Личный ассистент | Telegram DM | Claude Sonnet | Полные |
work | Рабочий помощник | Slack, Discord | Claude Sonnet | Файлы, GitHub, без личных данных |
family | Семейный бот | WhatsApp (семейная группа) | Claude Haiku | Только поиск, sandbox |
Таблица каналов
| Канал | Тип | Кому направлять |
|---|---|---|
| Telegram (личный бот) | DM | personal |
| Slack | Все каналы | work |
| Discord (рабочий сервер) | Guild #1234 | work |
| Семейная группа | family | |
| Личные DM | personal |
Таблица навыков
| Агент | Навыки |
|---|---|
| personal | gmail, calendar, memory, browser, notes |
| work | github, jira, memory, search |
| family | search, 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: Оптимизация
Оптимизация стоимости
-
Переведите family на Haiku — для простых вопросов этого достаточно.
-
Используйте Haiku для cron — рутинные задачи не требуют мощной модели:
{
"crons": [
{
"label": "Утренний дайджест",
"schedule": "30 7 * * 1-5",
"model": "claude-haiku-4-5",
"prompt": "..."
}
]
}
- Добавьте условие «тишина» в 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-профили разделены (если есть рабочие/личные ключи)
Попробуйте сами
-
Соберите систему. Следуя этапам выше, создайте полноценную мультиагентную конфигурацию.
-
Адаптируйте под себя. Замените агентов и каналы на те, которые актуальны для вас. Не обязательно повторять пример один в один.
-
Проведите 24 часа с системой. Используйте OpenClaw в реальных сценариях:
- Утром получите дайджест
- Днём задайте рабочий вопрос через Slack
- Вечером попросите рецепт в семейном чате
-
Оцените расходы. Через день проверьте
openclaw usageи оптимизируйте. -
Поделитесь конфигурацией. Если ваша настройка полезна — опубликуйте анонимизированный
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
- Участвуйте в сообществе — делитесь навыками, конфигурациями и опытом