7.7 KiB
7.7 KiB
🕐 Интеллектуальная 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.8.0 Интеллектуальная cron-система с AI-агентом