# 🤖 AI-Агент с Автономными Инструментами ## ✅ Реализовано **Интеграция завершена успешно!** Теперь твой бот умеет **самостоятельно решать**, когда использовать инструменты — без прямых команд! --- ## 📋 Что реализовано ### 1. Улучшенный AI-агент (`bot/ai_agent.py`) **Добавлено:** - ✅ Расширенные триггеры для всех инструментов - ✅ Приоритет инструментов: SSH > Cron > Поиск > RSS - ✅ Контекстная чувствительность (оценка уверенности) - ✅ Логирование использования инструментов - ✅ Поддержка пользовательских предпочтений ### 2. SSH-инструмент (`bot/tools/ssh_tool.py`) **Возможности:** - ✅ Подключение к серверам по SSH (asyncssh) - ✅ Выполнение команд с таймаутом - ✅ Красивое форматирование вывода - ✅ Конфигурация серверов (по умолчанию: 192.168.1.54) **Пример:** ``` Ты: Проверь нагрузку на сервере Бот: 🖥️ SSH: home Команда: uptime Вывод: 14:30:00 up 10 days, load average: 0.15 ✅ Успешно ``` ### 3. Cron-инструмент (`bot/tools/cron_tool.py`) **Возможности:** - ✅ Создание задач по расписанию - ✅ Поддержка форматов: `*/5 * * * *`, `@hourly`, `@daily`, `@weekly` - ✅ Просмотр, удаление, включение/выключение задач - ✅ Немедленный запуск задач **Пример:** ``` Ты: Напомни каждый день делать бэкап Бот: ⏰ Ваши задачи: ✅ Daily Backup Команда: /home/user/backup.sh Расписание: @daily Следующий запуск: 2024-03-11 00:00:00 ``` ### 4. Обновлённый `format_tool_result` в `bot.py` **Добавлено:** - ✅ Форматирование для SSH-команд - ✅ Форматирование для Cron-задач - ✅ Обработка ошибок с красивым выводом --- ## 🎯 Как это работает ### Автономное использование инструментов Бот **сам понимает**, когда нужен инструмент: | Твоя фраза | Бот использует | Почему | |------------|----------------|--------| | "Найди информацию про Python" | 🔍 DDGS Search | Триггер "найди" | | "Почитай новости IT" | 📰 RSS Reader | Триггер "новости" | | "Проверь сервер" | 🖥️ SSH Executor | Триггер "проверь сервер" | | "Напомни каждый день" | ⏰ Cron Manager | Триггер "каждый день" | ### Приоритеты Если сообщение подходит под несколько инструментов: 1. **SSH** (системные задачи) — высший приоритет 2. **Cron** (планирование) 3. **Поиск** (информация) 4. **RSS** (новости) --- ## 📦 Доступные инструменты | Инструмент | Назначение | Триггеры | |------------|------------|----------| | `ddgs_search` | Поиск в интернете | "найди", "поиск", "узнай", "как сделать" | | `rss_reader` | Чтение RSS лент | "новости", "почитай", "лента", "IT новости" | | `ssh_executor` | SSH-команды | "проверь сервер", "выполни команду", "uptime" | | `cron_manager` | Задачи по расписанию | "напомни", "запланируй", "каждый день" | --- ## 🔧 Настройка ### Добавление сервера в SSH Открой `bot/tools/ssh_tool.py` и добавь: ```python self.servers['myserver'] = ServerConfig( host='192.168.1.100', port=22, username='user', password='pass' # или client_keys=['/path/to/key'] ) ``` ### Добавление триггеров Открой `bot/ai_agent.py` и добавь в соответствующий список: ```python SEARCH_TRIGGERS = [ # ... существующие ... 'мой_триггер' # новый триггер ] ``` --- ## 🧪 Тестирование Проверка работы AI-агента: ```bash cd ~/git/telegram-cli-bot python3 -c " import asyncio from bot.ai_agent import ai_agent async def test(): tests = [ 'Найди информацию про Python', 'Почитай новости', 'Проверь нагрузку на сервере', 'Напомни каждый день', 'Привет!' ] for msg in tests: decision = await ai_agent.decide(msg) print(f'{msg}: {decision.tool_name or \"нет инструмента\"} (conf={decision.confidence})') asyncio.run(test()) " ``` **Ожидаемый результат:** ``` Найди информацию про Python: ddgs_search (conf=0.9) Почитай новости: rss_reader (conf=0.9) Проверь нагрузку на сервере: ssh_executor (conf=0.9) Напомни каждый день: cron_manager (conf=0.85) Привет!: нет инструмента (conf=0.0) ``` --- ## 📝 Примеры использования ### 🔍 Поиск в интернете ``` Ты: Найди руководство по async/await в Python Бот: 🔍 Результаты поиска: 1. **Python Async/Await Documentation** https://docs.python.org/3/library/asyncio.html asyncio is a library to write concurrent code ... ``` ### 📰 Чтение новостей ``` Ты: Почитай новости Linux Бот: 📰 Последние новости: 1. Linux Kernel 6.8 Released 📅 2024-03-10 14:30:00 🔗 https://... ``` ### 🖥️ SSH-команды ``` Ты: Сколько места на диске? Бот: 🖥️ SSH: home Команда: df -h Вывод: Filesystem Size Used Avail /dev/sda1 100G 50G 50G ✅ Успешно ``` ### ⏰ Cron-задачи ``` Ты: Запланируй бэкап каждый день в 3 ночи Бот: ✅ Задача добавлена: • ID: 1 • Название: Daily Backup • Расписание: 0 3 * * * • Следующий запуск: 2024-03-11 03:00:00 ``` --- ## 🚀 Запуск бота ```bash cd ~/git/telegram-cli-bot ./run.sh ``` Или вручную: ```bash python3 bot.py ``` --- ## 📊 Статистика **Файлы изменены/созданы:** - ✅ `bot/ai_agent.py` — улучшенный AI-агент - ✅ `bot/tools/ssh_tool.py` — SSH-инструмент (новый) - ✅ `bot/tools/cron_tool.py` — Cron-инструмент (новый) - ✅ `bot/tools/__init__.py` — реестр (обновлён) - ✅ `bot.py` — форматирование результатов (обновлён) - ✅ `TOOLS.md` — документация (обновлена) **Строк кода добавлено:** ~600+ **Инструментов доступно:** 4 --- ## 🎯 Следующие шаги **Можно добавить:** 1. **Веб-скрапинг** — парсинг конкретных сайтов 2. **Мониторинг** — авто-проверка метрик сервера 3. **Уведомления** — отправка уведомлений по расписанию 4. **Интеграции** — GitHub API, Docker API, etc. --- ## ⚠️ Важно - Бот персональный — нет ролевой модели и ограничений - Инструменты доступны **всегда** в AI-режиме - Бот **сам решает** когда использовать инструмент - Логи пишутся в `bot.log` **Приятного использования! 🚀**