Назад

19. OpenClaw на практике: создание Agent для командной работы

В статье показано, как создать Agent для командной работы с помощью OpenClaw: многоканальный доступ, командная база знаний, распределение задач, координация совещаний и другие функции для повышения эффективности команды.

Для OpenClaw v2026.2 | Необходим рабочий Slack или Discord workspace, права администратора.

TL;DR: Многоканальная конфигурация: "channels": {"slack": {...}, "discord": {...}}. Управление участниками: "team": {"members": [...]}. Синхронизация базы знаний: навык notion-sync. Распределение задач: Agent подбирает исполнителя по навыкам. Протоколы совещаний: автоматическая запись и генерация структурированных сводок. Ежедневная утренняя рассылка по Cron: "schedule": "0 8 * * 1-5".

Цель практики

Создать Agent, который может:

  1. Обеспечивать многоканальную командную коммуникацию
  2. Управлять командной базой знаний
  3. Распределять и отслеживать задачи
  4. Координировать совещания
  5. Автоматизировать рабочие процессы

Архитектура

[Slack] [Discord] [Teams] [Email]
         ↓           ↓          ↓
         [Gateway + Agent Router]
                    ↓
    ┌───────────────┼───────────────┐
    ↓               ↓               ↓
[Agent команды]  [Agent проекта]  [Agent-помощник]
    ↓               ↓               ↓
[База знаний]   [Система задач]   [Календарь]

Многоканальная конфигурация

Настройка Slack

{
  "channels": {
    "slack": {
      "botToken": "${SLACK_BOT_TOKEN}",
      "appToken": "${SLACK_APP_TOKEN}",
      "dmPolicy": "open",
      "groups": {
        "C12345678": {
          "name": "engineering",
          "requireMention": false
        },
        "C87654321": {
          "name": "general",
          "requireMention": true
        }
      }
    }
  }
}

Настройка Discord

{
  "channels": {
    "discord": {
      "token": "${DISCORD_TOKEN}",
      "guilds": {
        "123456789": {
          "name": "team-workspace",
          "channels": {
            "general": { "requireMention": true },
            "dev-team": { "requireMention": false }
          }
        }
      }
    }
  }
}

Управление участниками команды

{
  "team": {
    "members": [
      {
        "id": "U001",
        "name": "Алексей",
        "role": "Фронтенд-разработчик",
        "slack": "U123456",
        "discord": "123456789",
        "skills": ["react", "typescript", "css"]
      },
      {
        "id": "U002",
        "name": "Борис",
        "role": "Бэкенд-разработчик",
        "slack": "U234567",
        "discord": "234567890",
        "skills": ["python", "django", "postgresql"]
      }
    ]
  }
}

Командная база знаний

Структура базы знаний

База знаний команды/
├── Проекты/
│   ├── Проект А/
│   │   ├── Документ требований.md
│   │   ├── Техническое решение.md
│   │   └── Протоколы совещаний/
│   └── Проект Б/
├── Процессы/
│   ├── Стандарт код-ревью.md
│   ├── Процесс выпуска.md
│   └── Онбординг новичков.md
├── Технологический стек/
│   ├── Фронтенд.md
│   ├── Бэкенд.md
│   └── DevOps.md
└── FAQ/
    ├── Проблемы развёртывания.md
    └── Оптимизация производительности.md

Запросы к базе знаний

Пользователь (Slack): @team-bot Какой у нас бэкенд-стек?

Agent: Согласно командной базе знаний, наш бэкенд-стек:

## Бэкенд-стек

### Основной фреймворк
- **Фреймворк**: Django 4.2
- **Язык**: Python 3.11
- **База данных**: PostgreSQL 15

### Инфраструктура
- **Кэш**: Redis
- **Очереди**: Celery
- **Поиск**: Elasticsearch

### Развёртывание
- **Контейнеры**: Docker
- **Оркестрация**: Kubernetes
- **CI/CD**: GitHub Actions

Подробная документация: [Бэкенд-стек](ссылка на базу знаний)

Нужны подробности?

Обновление базы знаний

Пользователь (Discord): Обнови базу знаний: мы добавили Elasticsearch

Agent: Хорошо, обновляю документацию бэкенд-стека...

[Обновление базы знаний]

Документ обновлён:
- Файл: Технологический стек/Бэкенд.md
- Изменение: добавлен Elasticsearch в раздел «Инфраструктура»

Изменения отправлены в командную базу знаний, участники получат уведомление.

Управление задачами

Распределение задач

Пользователь: @team-bot Создай задачу: оптимизировать скорость загрузки главной страницы, назначить на @Алексей

Agent: Задача создана!

## Задача #123

**Название**: Оптимизировать скорость загрузки главной страницы
**Ответственный**: Алексей
**Приоритет**: Средний
**Статус**: В ожидании
**Создано**: 2026-02-26 10:30

**Описание**:
Оптимизировать скорость загрузки главной страницы для улучшения пользовательского опыта.

**Рекомендуемые шаги**:
1. Проанализировать текущее время загрузки
2. Выявить узкие места производительности
3. Оптимизировать критический путь рендеринга
4. Реализовать решение
5. Проверить результат

**Рекомендуемый дедлайн**: 3 рабочих дня

@Алексей, вы получили уведомление. Добавить подробности?

Отслеживание задач

{
  "taskManagement": {
    "integration": "jira",
    "sync": true,
    "notifications": {
      "created": true,
      "updated": true,
      "completed": true,
      "overdue": true
    }
  }
}

Ежедневные напоминания о задачах

{
  "cron": [
    {
      "id": "daily-task-reminder",
      "schedule": "0 9 * * 1-5",
      "message": "Доброе утро! Вот задачи на сегодня:\n1. Задачи в ожидании\n2. Скоро истекающие задачи\n3. Совещания"
    }
  ]
}
Agent: Доброе утро! @Алексей @Борис @Виктор

## Сводка задач на сегодня

### В ожидании
- @Алексей: Оптимизация загрузки главной (приоритет: средний)
- @Борис: Обновление документации API (приоритет: низкий)
- @Виктор: Покрытие модульными тестами (приоритет: высокий)

### Скоро истекают
- @Алексей: Функция поиска — дедлайн завтра
- @Борис: Отчёт по оптимизации — дедлайн послезавтра

### Совещания сегодня
- 10:00 Обзор продукта
- 14:00 Технический обмен опытом
- 16:00 1v1 с Алексеем

Всем продуктивного дня!

Координация совещаний

Создание совещания

Пользователь: @team-bot Запланируй код-ревью совещание на завтра 14:00, пригласи фронтенд-группу

Agent: Планирую совещание...

## Совещание создано

**Тема**: Код-ревью
**Время**: 2026-02-27 14:00-15:00
**Участники**: Алексей, Борис, Виктор
**Место**: Переговорная A / Zoom

**Рекомендуемая повестка**:
1. Код-ревью оптимизации главной страницы
2. Код-ревью новых функций
3. Обсуждение стандартов кода

**Приглашения отправлены**:
- ✅ Алексей
- ✅ Борис
- ✅ Виктор

Приглашения отправлены на почту участников. Добавить ссылку на конференцию?

Протокол совещания

Пользователь: @team-bot Начни запись совещания

Agent: Начинаю запись совещания...

[Совещание проходит...]

Пользователь: @team-bot Заверши совещание, сгенерируй протокол

Agent: Протокол совещания сгенерирован:

## Протокол код-ревью совещания

**Дата**: 2026-02-26 14:00-15:00
**Участники**: Алексей, Борис, Виктор

### Рассмотренный код

**Оптимизация главной PR #123**
- ✅ Структура кода чистая
- ⚠️ Рекомендуется добавить модульные тесты
- ⚠️ Требуется оптимизация производительности
- Решение: одобрить, завершить оптимизацию перед мержем

**Поиск пользователей PR #124**
- ✅ Алгоритм реализован корректно
- ✅ Хорошее покрытие тестами
- Решение: одобрить, можно мержить

### Задачи

| Ответственный | Задача | Дедлайн |
|-------|------|------|
| Алексей | Добавить модульные тесты | 02-27 |
| Борис | Оптимизация производительности | 02-28 |

**Следующее совещание**: 2026-03-05 14:00

Протокол отправлен в канал #engineering.

Автоматизация рабочих процессов

Уведомления о PR

{
  "webhooks": [
    {
      "id": "pr-review",
      "path": "/webhook/github",
      "message": "Обнаружен новый PR: {{data.title}}\nВетка: {{data.branch}}\nАвтор: {{data.author}}\n\nТребуется ревью: @Алексей @Борис"
    }
  ]
}

Уведомление о развёртывании

Agent: 🚀 Уведомление о развёртывании

**Проект**: Фронтенд-приложение
**Окружение**: Production
**Версия**: v1.2.3
**Ветка**: main
**Коммит**: abc1234 — исправление проблемы поиска пользователей

**Журнал изменений**:
- Исправлена пагинация результатов поиска
- Оптимизирована скорость загрузки главной
- Обновлён дизайн интерфейса

**Время развёртывания**: 2026-02-26 16:30:45
**Статус**: ✅ Успешно

Мониторинг: https://monitor.example.com/frontend

@команда, обратите внимание на ситуацию после релиза.

Напоминание о дежурстве

{
  "cron": [
    {
      "id": "oncall-reminder",
      "schedule": "0 9 * * 1-5",
      "message": "Сегодня дежурный: {{oncall}}, убедитесь, что вы онлайн и готовы реагировать на срочные вопросы."
    }
  ]
}

Аналитика команды

Рабочая статистика

Пользователь: @team-bot Рабочая статистика за эту неделю

Agent: Формирую статистику за неделю...

## Недельная рабочая статистика (19/02 — 25/02)

### Выполнение задач
- Всего задач: 23
- Завершено: 18 (78%)
- В работе: 3 (13%)
- В ожидании: 2 (9%)

### Вклад в код
| Участник | Коммиты | PR | Ревью |
|-----|---------|-----|---------|
| Алексей | 12 | 3 | 5 |
| Борис | 8 | 2 | 8 |
| Виктор | 15 | 4 | 3 |

### Время на совещаниях
- Всего совещаний: 6
- Общая продолжительность: 8,5 часов
- В среднем на человека: 2,8 часа

### Время отклика
- Среднее время первого ответа: 15 минут
- Отклик на сообщения Slack: 95%
- Задачи завершены в срок: 85%

### Рекомендации
- 💡 Рекомендуется сократить время совещаний для увеличения фокусного времени
- 💡 Среда после обеда — продуктивное время, подходит для глубокой работы
- 💡 Доля просроченных задач немного выросла, рекомендуется улучшить оценки

Нужен подробный отчёт?

Анализ настроения команды

Пользователь: @team-bot Проанализируй настроение команды

Agent: Анализирую настроение команды...

[Анализ последних сообщений]
[Выявление эмоциональных маркеров]
[Генерация отчёта]

## Анализ настроения команды

### Общее настроение
- Индекс настроения на этой неделе: 7,2/10
- Прошлая неделя: 7,5/10
- Изменение: -0,3 (незначительное снижение)

### Распределение
- Позитивные слова: 65% (готово, сделано, отлично, давайте)
- Нейтральные слова: 30% (в работе, на рассмотрении, обсуждаем)
- Негативные слова: 5% (перенос, проблема, нагрузка)

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

### Рекомендации
- 🌟 В пятницу после обеда — командное мероприятие
- 🌟 Сократить необязательные совещания
- 🌟 При код-ревью давать больше позитивной обратной связи

Отправить команде приветственное сообщение?

Лучшие практики

1. Разделение каналов

Канал Назначение Правило упоминания
#general Общие уведомления Нужен @
#engineering Технические обсуждения Не нужен @
#alerts Системные оповещения Автоуведомление
#random Неформальное общение Не нужен @

2. Стандарт отклика

{
  "responseRules": {
    "urgent": {
      "keywords": ["срочно", "urgent", "проблема в продакшене"],
      "response": "Немедленный ответ",
      "escalation": "Эскалация при отсутствии ответа 5 минут"
    },
    "normal": {
      "keywords": [],
      "response": "Ответ в течение 2 часов"
    }
  }
}

3. Стратегия уведомлений

{
  "notifications": {
    "quietHours": {
      "start": "22:00",
      "end": "08:00"
    },
    "channels": {
      "slack": {
        "urgent": "always",
        "normal": "workingHours"
      },
      "discord": {
        "urgent": "always",
        "normal": "quiet"
      }
    }
  }
}

Итоги

Agent для командной работы на базе OpenClaw обеспечивает:

  • Многоканальная интеграция: единый доступ через Slack, Discord, Teams
  • База знаний: обмен и поиск командных знаний
  • Отслеживание задач: автоматическое распределение, напоминания, статистика
  • Координация совещаний: создание, запись, генерация протоколов
  • Автоматизация процессов: уведомления о PR, оповещения о развёртывании, напоминания о дежурстве
  • Аналитика команды: рабочая статистика, анализ настроения

История изменений:

  • 2026-02-26: первая публикация

Навигация по серии: