# 🧠 Система памяти для ИИ-чата Простая и надёжная система памяти на **SQLite** для Telegram CLI бота с ИИ-агентом. --- ## 📋 Обзор Система памяти позволяет ИИ-агенту: - Помнить контекст между сессиями - Запоминать факты о пользователе (имя, предпочтения, проекты) - Искать в истории диалогов по запросу - Предоставлять персонализированные ответы --- ## 🏗️ Архитектура ``` ┌─────────────────────────────────────────────────────────┐ │ Telegram Bot (bot.py) │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌───────────┐ │ │ │ handle_ai_ │───▶│ memory_ │───▶│ qwen_ │ │ │ │ task() │ │ system │ │ integration│ │ │ └─────────────┘ └───────┬──────┘ └───────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ SQLiteStorage │ │ │ │ (facts, │ │ │ │ messages, │ │ │ │ sessions) │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` --- ## 🗄️ Структура базы данных ### Таблицы: **facts** — факты о пользователе: - `user_id` — ID пользователя - `fact_type` — тип факта (personal, technical, project, preference) - `content` — текст факта - `confidence` — уверенность (0.0–1.0) **messages** — история сообщений: - `user_id` — ID пользователя - `role` — "user" или "assistant" - `content` — текст сообщения - `session_id` — ID сессии **sessions** — сессии диалогов: - `user_id` — ID пользователя - `started_at` / `ended_at` — время сессии - `message_count` — количество сообщений - `summary` — краткое резюме (опционально) --- ## 🔧 Использование ### Сохранение сообщения: ```python from memory_system import save_ai_message # Сохранить сообщение пользователя save_ai_message(user_id=123456, role="user", content="Меня зовут Владимир") # Сохранить ответ ИИ save_ai_message(user_id=123456, role="assistant", content="Приятно познакомиться!") ``` ### Получение контекста: ```python from memory_system import format_memory_context # Получить профиль + последние сообщения + релевантные факты context = format_memory_context(user_id=123456, query="Где мои файлы?") ``` ### Профиль пользователя: ```python from memory_system import get_user_profile_summary profile = get_user_profile_summary(user_id=123456) # Профиль пользователя: # • Пользователя зовут Владимир # • Использует Python # • Проект в ~/git/telegram-cli-bot ``` --- ## 🎯 Извлечение фактов Система автоматически извлекает факты из сообщений: | Паттерн | Пример | Извлекаемый факт | |---------|--------|------------------| | `меня зовут ...` | "Меня зовут Владимир" | `PERSONAL: Пользователя зовут Владимир` | | `я использую ...` | "Я использую Python" | `TECHNICAL: Использует Python` | | `мой проект ...` | "Мой проект в ~/git/foo" | `PROJECT: Есть проект foo` | --- ## 📁 Файлы - `memory_system.py` — основная система памяти - `memory.db` — SQLite база данных (создаётся автоматически) --- ## 🚀 Настройка Никакой дополнительной настройки не требуется! Система работает из коробки. При первом запуске автоматически создаётся `memory.db` с нужными таблицами.