telegram-cli-bot/CRON_SYSTEM.md

7.7 KiB
Raw Blame History

🕐 Интеллектуальная Cron-система

Интеллектуальная система планирования задач для Telegram CLI Bot.

📋 Особенности

В отличие от классического cron, задачи выполняются не как команды, а как промпты для ИИ-агента.

Структура задачи

CronJob:
  - id: int              # Уникальный ID
  - name: str            # Название задачи
  - prompt: str          # Промпт для ИИ-агента
  - schedule: str        # Расписание (@hourly, @daily, */5 * * * *)
  - user_id: int         # ID пользователя Telegram
  - enabled: bool        # Включена ли задача
  - notify: bool         # Уведомлять пользователя в Telegram
  - log_results: bool    # Сохранять результат в лог-файл
  - last_run: datetime   # Последнее выполнение
  - next_run: datetime   # Следующее выполнение
  - created_at: datetime # Дата создания

🔄 Процесс выполнения

┌─────────────────────────────────────────────────────────┐
│  Cron Scheduler (проверяет каждую минуту)               │
│         ↓ (если время пришло)                           │
│  Отправляет промпт ИИ-агенту                            │
│         ↓                                               │
│  ИИ-агент (Рик) анализирует промпт:                     │
│    - Решает какой инструмент использовать               │
│    - Выполняет инструмент (поиск, SSH, RSS)             │
│         ↓                                               │
│  Если notify=True → отправка уведомления в Telegram     │
│  Если log_results=True → сохранение в лог-файл          │
└─────────────────────────────────────────────────────────┘

📝 Команды управления

/cron list - Показать все задачи

/cron list

Пример вывода:

⏰ Ваши задачи:

✅ Проверка диска (ID: 1)
   🔔📝 Промпт: Проверить свободное место на сервере...
   Расписание: @daily
   Следующий запуск: 2026-02-26 00:00:00
   Последний запуск: 2026-02-25 00:00:00

/cron add - Добавить задачу

/cron add <name> <schedule> <prompt>

Параметры:

  • name - название задачи
  • schedule - расписание:
    • @hourly - каждый час
    • @daily - каждый день
    • @weekly - каждую неделю
    • */5 * * * * - каждые 5 минут (cron format)
  • prompt - промпт для ИИ-агента

Примеры:

# Ежедневная проверка диска
/cron add check_disk @daily Проверить свободное место на сервере home

# Ежечасные новости
/cron add tech_news @hourly Что нового в Linux сегодня

# Каждые 5 минут мониторинг
/cron add monitor */5 * * * * Проверить нагрузку на сервер

/cron run - Выполнить задачу немедленно

/cron run <id>

Пример:

/cron run 1

/cron remove - Удалить задачу

/cron remove <id>

/cron toggle - Включить/выключить задачу

/cron toggle <id>

🛠️ Инструменты ИИ-агента

При выполнении задачи ИИ-агент может использовать:

Инструмент Назначение Триггеры
ddgs_tool Поиск в интернете "найди", "поиск", "узнай"
rss_tool Чтение RSS лент "новости", "почитай", "лента"
ssh_tool SSH-команды "проверь сервер", "выполни команду"
cron_tool Управление задачами "напомни", "запланируй"

📂 Логирование

Результаты выполнения задач сохраняются в:

cron_logs/
  cron_job_1_check_disk.log
  cron_job_2_tech_news.log
  ...

Формат лога:

============================================================
[2026-02-25 10:30:00] Задача: Проверка диска (ID: 1)
============================================================
Промпт:
Проверить свободное место на сервере home

Результат:
Задача 'Проверка диска' выполнена.

Использован инструмент: ssh_tool
Результат: Filesystem      Size  Used Avail Use% Mounted on
...

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

Если notify=True, бот отправляет уведомление в Telegram:

✅ Задача 'Проверка диска' выполнена.

Использован инструмент: ssh_tool
Результат: Свободно 45GB на /dev/sda1

💡 Примеры использования

1. Ежедневный мониторинг диска

/cron add disk_daily @daily Проверить свободное место на сервере home. Если меньше 10GB - предупредить

2. Ежечасные новости IT

/cron add it_news @hourly Найти свежие новости про Python и Linux за последний час

3. Мониторинг нагрузки каждые 5 минут

/cron add load_monitor */5 * * * * Проверить нагрузку CPU и RAM на сервере

4. Еженедельный поиск уязвимостей

/cron add security_scan @weekly Найти информацию о новых уязвимостях в Linux за неделю

🚀 Архитектура

bot/
  tools/
    cron_tool.py        # Инструмент управления задачами
  services/
    cron_scheduler.py   # Планировщик (проверка каждую минуту)
  handlers/
    commands.py         # Обработчик команды /cron

⚙️ Технические детали

  • Проверка задач: каждую минуту (60 секунд)
  • Хранение: SQLite (cron.db)
  • Логи: текстовые файлы (cron_logs/)
  • Формат расписания: cron format или специальные (@hourly, @daily, @weekly)

🎯 Отличия от классического cron

Классический cron Интеллектуальный cron
Выполняет команды Выполняет промпты для ИИ
Жёсткая логика Гибкое решение через ИИ
Вывод в stdout/email Уведомления в Telegram + логи
Нет контекста ИИ использует контекст и память

Версия: 0.5.3 Интеллектуальная cron-система с AI-агентом