telegram-cli-bot/MEMORY_SYSTEM.md

125 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧠 Система памяти для ИИ-чата
Простая и надёжная система памяти на **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` — краткое резюме (опционально)
---
## 🔧 Использование
### Сохранение сообщения:
```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` с нужными таблицами.