telegram-cli-bot/CRON_SYSTEM.md

220 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🕐 Интеллектуальная Cron-система
Интеллектуальная система планирования задач для Telegram CLI Bot.
## 📋 Особенности
В отличие от классического cron, задачи выполняются не как команды, а как **промпты для ИИ-агента**.
### Структура задачи
```python
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` - промпт для ИИ-агента
**Примеры:**
```bash
# Ежедневная проверка диска
/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. Ежедневный мониторинг диска
```bash
/cron add disk_daily @daily Проверить свободное место на сервере home. Если меньше 10GB - предупредить
```
### 2. Ежечасные новости IT
```bash
/cron add it_news @hourly Найти свежие новости про Python и Linux за последний час
```
### 3. Мониторинг нагрузки каждые 5 минут
```bash
/cron add load_monitor */5 * * * * Проверить нагрузку CPU и RAM на сервере
```
### 4. Еженедельный поиск уязвимостей
```bash
/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-агентом*