262 lines
8.4 KiB
Markdown
262 lines
8.4 KiB
Markdown
# 🤖 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_tool` | Поиск в интернете | "найди", "поиск", "узнай", "как сделать" |
|
||
| `rss_tool` | Чтение RSS лент | "новости", "почитай", "лента", "IT новости" |
|
||
| `ssh_tool` | SSH-команды | "проверь сервер", "выполни команду", "uptime" |
|
||
| `cron_tool` | Задачи по расписанию | "напомни", "запланируй", "каждый день" |
|
||
|
||
---
|
||
|
||
## 🔧 Настройка
|
||
|
||
### Добавление сервера в 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`
|
||
|
||
**Приятного использования! 🚀**
|