125 lines
5.1 KiB
Markdown
125 lines
5.1 KiB
Markdown
# 🧠 Система памяти для ИИ-чата
|
||
|
||
Простая и надёжная система памяти на **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` с нужными таблицами.
|