Семантический кэш и долговременная память для ИИ-агентов
Project description
Recall
Семантический кэш и долговременная память для ИИ-агентов.
Recall помогает ИИ-ассистентам запоминать ответы и факты о пользователе — чтобы не отвечать на одно и то же дважды и давать персонализированные ответы.
Возможности
| Функция | Описание |
|---|---|
| Кэш ответов | Семантический поиск — находит похожие вопросы, не только точные совпадения |
| Память ИИ | Долговременные факты о пользователе (навыки, проекты, предпочтения) |
| TTL | Автоустаревание кэшированных ответов |
| Теги | Группировка записей по категориям |
| Экономика | Статистика: сколько запросов сэкономлено |
| MCP-сервер | 17 инструментов для MCP-клиентов (Qwen, Claude Desktop) |
| Локальный | Все данные на твоём компьютере, ничего не уходит в облако |
Установка
pip install cache-recall
Быстрый старт
1. Первый запуск
При первом использовании Recall автоматически создаёт папку ~/.recall/:
~/.recall/
├── cache.db ← Кэш ответов (временный, можно удалять)
├── memory.db ← Память ИИ (постоянная, не трогать)
├── recall.log ← Логи
└── config.json ← Настройки (создаётся при изменении)
Ничего настраивать не нужно — работает из коробки.
2. Использование через CLI
# Найти ответ в кэше
recall ask "Что такое Python?"
# Сохранить ответ с тегами
recall save "Что такое Go?" "Язык от Google" --tags go,programming
# Запомнить факт о пользователе
recall remember "Пользователь владеет Python" --category skills --importance 7
# Найти релевантные факты
recall recall "какие языки знает пользователь?"
# Статистика
recall stats
recall economy
recall mem-stats
# Список записей
recall list
recall mem-list skills
# Настройки
recall config list
recall config set ttl 3600
3. Подключение как MCP-сервер
Добавь в настройки MCP-клиента (например, ~/.qwen/settings.json):
{
"mcpServers": {
"recall": {
"command": "python",
"args": ["-m", "recall.mcp_server"]
}
}
}
После подключения ИИ-ассистент получит 17 инструментов:
| Инструмент | Что делает |
|---|---|
ask(query) |
Ищет ответ в кэше |
save(query, response, tags) |
Сохраняет ответ |
remember(fact, category) |
Запоминает факт |
recall_memories(query) |
Находит релевантные факты |
cache_stats() |
Статистика кэша |
economy_stats() |
HIT/MISS, экономия токенов |
memory_stats() |
Статистика памяти |
config_get/set() |
Управление настройками |
tag_stats() |
Статистика по тегам |
cache_list(tag) |
Список записей |
list_memories(category) |
Список фактов |
cache_cleanup() |
Удалить просроченные |
cache_clear() |
Очистить кэш |
update_memory(id) |
Обновить факт |
forget_memory(id) |
Удалить факт |
Конфигурация
Настройки хранятся в ~/.recall/config.json. При первом запуске — дефолтные значения.
{
"cache_db": "~/.recall/cache.db",
"memory_db": "~/.recall/memory.db",
"ttl": 86400,
"threshold": 0.75,
"log_file": "~/.recall/recall.log",
"log_level": "INFO",
"tags_enabled": true,
"economy_tracking": true,
"memory_enabled": true
}
| Настройка | По умолчанию | Описание |
|---|---|---|
ttl |
86400 (24ч) | Время жизни кэшированных ответов |
threshold |
0.75 | Порог семантического сходства |
tags_enabled |
true | Включить теги |
memory_enabled |
true | Включить память ИИ |
Как использовать как библиотеку
from recall.cache import PromptCache
from recall.memory import Memory
# Кэш
cache = PromptCache(ttl=3600)
answer = cache.ask("Что такое Python?")
if answer is None:
answer = "Python — язык программирования..."
cache.save("Что такое Python?", answer, tags=["#python"])
# Память
memory = Memory()
memory.remember("Пользователь владеет Python", category="skills", importance=7)
facts = memory.recall_memories("какие языки знает?")
Структура проекта
recall/
├── src/
│ └── recall/
│ ├── __init__.py
│ ├── cache.py # Ядро кэша: SQLite, эмбеддинги, теги
│ ├── memory.py # Долговременная память ИИ
│ ├── config.py # JSON-конфиг с дефолтами
│ ├── economy.py # Трекер экономии (HIT/MISS)
│ └── mcp_server.py # MCP-сервер (17 инструментов)
├── scripts/
│ └── recall_cli.py # CLI-инструмент
├── tests/
│ └── test_cache.py # 128 тестов
├── pyproject.toml
├── README.md
└── LICENSE
Разработка
# Клонировать репозиторий
git clone https://github.com/YOUR_USERNAME/recall.git
cd recall
# Установить зависимости
pip install -r requirements.txt
# Запустить тесты
python tests/test_cache.py
# Собрать пакет
pip install build
python -m build
# Установить локально
pip install -e .
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cache_recall-1.0.0.tar.gz.
File metadata
- Download URL: cache_recall-1.0.0.tar.gz
- Upload date:
- Size: 25.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b047d348f713eea4af04c119e4fd5a299d54f160bd0860e246283c4e0da4092d
|
|
| MD5 |
872a9ae87392101a376584c16403bfc6
|
|
| BLAKE2b-256 |
c9caccc26ca1b7605525758c19d3b6cdc2ccd61e3509545e586bd7bfe7e95ce9
|
File details
Details for the file cache_recall-1.0.0-py3-none-any.whl.
File metadata
- Download URL: cache_recall-1.0.0-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c90d774a53f0705a0936a50c7e9e1459dbde889d0cd41c71a066679af0985fb1
|
|
| MD5 |
4882214ca0ce419dc5b731e57b65f516
|
|
| BLAKE2b-256 |
5b102936bd438c8e135b0e567337c21afbdc02bd1f8eaad21e04beb8df009ace
|