Назад

14. OpenClaw: автоматизация и запланированные задачи — Cron, Webhook и Gmail

В статье рассмотрены возможности автоматизации OpenClaw: запланированные задачи Cron, триггеры Webhook, интеграция Gmail Pub/Sub — чтобы ваш ИИ-ассистент работал проактивно, а не только реагировал на запросы.

Для OpenClaw v2026.2 | Статья подходит для пользователей, которые хотят, чтобы ИИ-ассистент работал проактивно, а не только отвечал на запросы.

TL;DR: Cron-задачи: "cron": [{"id": "daily", "schedule": "0 9 * * *", "message": "..."}]. Webhook-триггеры: POST /webhook/your-path. Gmail Pub/Sub — автоматическая обработка писем. Heartbeat — проактивные проверки. Примеры конфигурации: ежедневная сводка 0 8 * * 1-5, CI-уведомления через webhook, фильтры писем через Gmail Pub/Sub.

Обзор автоматизации

Типы автоматизации

Тип Способ срабатывания Сценарий использования
Cron По расписанию Ежедневные отчёты, регулярные проверки
Webhook HTTP-запрос Интеграция с внешними системами
Gmail Pub/Sub Новое письмо Автоматизация почты
Heartbeat Периодическая проверка Проактивные напоминания, рекомендации

Схема архитектуры

flowchart TB
    subgraph Triggers["Источники триггеров"]
        CRON[Cron — по расписанию]
        WH[Webhook HTTP]
        GM[Gmail Pub/Sub]
        HB[Heartbeat]
    end
    
    subgraph Gateway["Gateway"]
        SCHED[Планировщик]
        ROUTE[Маршрутизатор]
        AGENT[Agent]
    end
    
    subgraph Actions["Действия"]
        MSG[Отправка сообщения]
        EXEC[Выполнение задачи]
        NOTIF[Отправка уведомления]
    end
    
    CRON --> SCHED
    WH --> ROUTE
    GM --> ROUTE
    HB --> SCHED
    
    SCHED --> AGENT
    ROUTE --> AGENT
    AGENT --> MSG
    AGENT --> EXEC
    AGENT --> NOTIF

Cron-задачи

Cron-выражения

┌───────────── минута (0 - 59)
│ ┌───────────── час (0 - 23)
│ │ ┌───────────── день месяца (1 - 31)
│ │ │ ┌───────────── месяц (1 - 12)
│ │ │ │ ┌───────────── день недели (0 - 6, 0 = воскресенье)
│ │ │ │ │
* * * * *

Часто используемые выражения

Выражение Описание
0 9 * * * Каждый день в 9:00
0 18 * * 1-5 Будни в 18:00
*/30 * * * * Каждые 30 минут
0 0 1 * * 1-го числа каждого месяца в 0:00
0 9,18 * * * Каждый день в 9:00 и 18:00
0 9 * * 1 Каждый понедельник в 9:00

Настройка Cron-задач

{
  "cron": [
    {
      "id": "daily-briefing",
      "schedule": "0 9 * * *",
      "session": "main",
      "message": "Пожалуйста, предоставьте расписание и список дел на сегодня",
      "enabled": true
    },
    {
      "id": "weekly-summary",
      "schedule": "0 18 * * 5",
      "session": "main",
      "message": "Сгенерируйте итоги работы за неделю",
      "enabled": true
    },
    {
      "id": "health-check",
      "schedule": "*/15 * * * *",
      "session": "main",
      "message": "Проверьте состояние системы, сообщите о любых аномалиях",
      "enabled": true
    }
  ]
}

Параметры Cron-задач

Поле Тип Описание
id string Уникальный идентификатор задачи
schedule string Cron-выражение
session string Целевая сессия
message string Отправляемое сообщение
enabled boolean Включена ли задача
timezone string Часовой пояс (по умолчанию системный)

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

# Список всех задач
openclaw cron list

# Пример вывода:
# ID               Schedule       Status    Last Run
# daily-briefing   0 9 * * *     enabled   2026-02-26 09:00
# weekly-summary   0 18 * * 5    enabled   2026-02-23 18:00
# health-check    */15 * * * *   enabled   2026-02-26 10:30

# Ручной запуск задачи
openclaw cron run daily-briefing

# Включение/отключение задачи
openclaw cron enable daily-briefing
openclaw cron disable daily-briefing

# Просмотр логов задачи
openclaw cron logs daily-briefing

Webhook-триггеры

Настройка Webhook

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "your-webhook-secret",
      "session": "main",
      "handler": "github-push"
    },
    {
      "id": "custom-alert",
      "path": "/webhook/alert",
      "secret": "your-webhook-secret",
      "session": "main",
      "message": "Получен алерт: {{data.message}}"
    }
  ]
}

Конечные точки Webhook

POST http://your-gateway:18789/webhook/github-push
POST http://your-gateway:18789/webhook/alert

Пример GitHub Webhook

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "${GITHUB_WEBHOOK_SECRET}",
      "session": "work",
      "handler": "github-push"
    }
  ]
}

Скрипт обработчика:

// ~/.openclaw/handlers/github-push.js
module.exports = async (payload, session) => {
  if (payload.ref === 'refs/heads/main') {
    const commits = payload.commits.map(c => c.message).join('\n- ');
    return `Обнаружен новый push:\n\nВетка: main\nКоммиты:\n- ${commits}\n\nЧем могу помочь?`;
  }
  return null;
};

Пользовательская обработка Webhook

{
  "webhooks": [
    {
      "id": "monitoring-alert",
      "path": "/webhook/alert",
      "methods": ["POST"],
      "session": "main",
      "message": "🚨 Уведомление об алерте\n\nУровень: {{data.level}}\nСервис: {{data.service}}\nСообщение: {{data.message}}\nВремя: {{data.timestamp}}"
    }
  ]
}

Отправка Webhook:

curl -X POST http://localhost:18789/webhook/alert \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Secret: your-secret" \
  -d '{
    "level": "critical",
    "service": "api-server",
    "message": "Загрузка CPU превысила 90%",
    "timestamp": "2026-02-26T10:30:00Z"
  }'

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

{
  "webhooks": [
    {
      "id": "secure-webhook",
      "path": "/webhook/secure",
      "secret": "your-secret-key",
      "signatureHeader": "X-Signature",
      "signatureAlgorithm": "sha256",
      "ipWhitelist": ["192.168.1.0/24"]
    }
  ]
}

Интеграция Gmail Pub/Sub

Настройка Gmail Pub/Sub

{
  "gmail": {
    "pubsub": {
      "enabled": true,
      "projectId": "your-project-id",
      "subscription": "gmail-subscription",
      "credentials": {
        "type": "service_account",
        "project_id": "your-project-id",
        "private_key_id": "...",
        "private_key": "...",
        "client_email": "..."
      },
      "filters": [
        {
          "from": "[email protected]",
          "session": "main",
          "message": "Получено важное письмо:\nОтправитель: {{sender}}\nТема: {{subject}}"
        }
      ]
    }
  }
}

Настройка Gmail Pub/Sub

  1. Создайте проект в Google Cloud
  2. Включите Gmail API
  3. Создайте тему Pub/Sub
  4. Создайте сервисный аккаунт
  5. Настройте Gmail watch
# Настройка Gmail watch
openclaw gmail watch --email [email protected]

Фильтры Gmail

Условие фильтра Описание
from Адрес отправителя
to Адрес получателя
subject Ключевые слова темы
hasAttachment Наличие вложений
label Метка Gmail
{
  "filters": [
    {
      "from": "[email protected]",
      "session": "work",
      "message": "Получено уведомление GitHub: {{subject}}"
    },
    {
      "from": "[email protected]",
      "hasAttachment": true,
      "session": "main",
      "message": "Получен документ от Stripe, пожалуйста, обработайте"
    }
  ]
}

Проактивные проверки Heartbeat

Настройка Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 3600000,
    "session": "main",
    "message": "Heartbeat: проверьте, есть ли что-то, требующее моего внимания"
  }
}

Применение Heartbeat

Применение Описание
Проактивные напоминания Регулярные напоминания пользователю
Проверка состояния Проверка состояния систем или сервисов
Рекомендации задач Рекомендации на основе контекста
Поддержание контекста Поддержание активности сессии

Пример Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 1800000,
    "conditions": [
      {
        "type": "time",
        "start": "09:00",
        "end": "18:00"
      },
      {
        "type": "active",
        "session": "main"
      }
    ],
    "message": "На основе текущего времени рекомендую проверить:\n1. Список дел на сегодня\n2. Почтовые напоминания\n3. Расписание"
  }
}

Практические примеры автоматизации

Пример 1: утренняя сводка

{
  "cron": [
    {
      "id": "morning-briefing",
      "schedule": "0 8 * * 1-5",
      "session": "main",
      "message": "Доброе утро! Пожалуйста, подготовьте утреннюю сводку:\n1. Прогноз погоды\n2. Расписание на сегодня\n3. Список дел\n4. Важные письма"
    }
  ]
}

Пример 2: уведомления CI/CD

{
  "webhooks": [
    {
      "id": "ci-failure",
      "path": "/webhook/ci",
      "session": "dev",
      "message": "⚠️ Ошибка CI\n\nПроект: {{data.repository}}\nВетка: {{data.branch}}\nКоммит: {{data.commit}}\nОшибка: {{data.error}}\n\nПомочь с анализом?"
    }
  ]
}

Пример 3: автоматическая обработка писем

{
  "gmail": {
    "pubsub": {
      "filters": [
        {
          "from": "[email protected]",
          "hasAttachment": true,
          "session": "main",
          "message": "Получено письмо со счётом, обрабатываю...\nСохраните вложение в папку «Финансы»"
        }
      ]
    }
  }
}

Пример 4: мониторинг системы

{
  "cron": [
    {
      "id": "system-monitor",
      "schedule": "*/5 * * * *",
      "session": "main",
      "message": "Проверить состояние системы",
      "skills": ["system-monitor"]
    }
  ]
}

Устранение неполадок

Cron-задача не выполняется

# Проверка статуса задачи
openclaw cron list

# Проверка логов
openclaw logs --filter cron

# Ручной запуск для тестирования
openclaw cron run task-id

Webhook не отвечает

# Проверка конечной точки Webhook
curl -X POST http://localhost:18789/webhook/test \
  -H "Content-Type: application/json" \
  -d '{"test": true}'

# Просмотр логов
openclaw logs --filter webhook

Gmail Pub/Sub не работает

# Проверка статуса подписки
openclaw gmail status

# Повторная настройка
openclaw gmail setup

# Проверка прав доступа
openclaw gmail check-permissions

Итоги

Автоматизация превращает OpenClaw из реактивного в проактивный инструмент:

  • Cron: выполнение задач по расписанию
  • Webhook: срабатывание по внешним событиям
  • Gmail Pub/Sub: автоматизация почты
  • Heartbeat: проактивные напоминания и рекомендации

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

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

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