5.1 KiB
5.1 KiB
🧠 Система памяти для ИИ-чата
Простая и надёжная система памяти на 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— краткое резюме (опционально)
🔧 Использование
Сохранение сообщения:
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="Приятно познакомиться!")
Получение контекста:
from memory_system import format_memory_context
# Получить профиль + последние сообщения + релевантные факты
context = format_memory_context(user_id=123456, query="Где мои файлы?")
Профиль пользователя:
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 с нужными таблицами.