telegram-cli-bot/MEMORY_SYSTEM.md

5.1 KiB
Raw Permalink Blame History

🧠 Система памяти для ИИ-чата

Простая и надёжная система памяти на 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.01.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 с нужными таблицами.