Skip to main content

Семантический кэш и долговременная память для ИИ-агентов

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cache_recall-1.0.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cache_recall-1.0.0-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

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

Hashes for cache_recall-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b047d348f713eea4af04c119e4fd5a299d54f160bd0860e246283c4e0da4092d
MD5 872a9ae87392101a376584c16403bfc6
BLAKE2b-256 c9caccc26ca1b7605525758c19d3b6cdc2ccd61e3509545e586bd7bfe7e95ce9

See more details on using hashes here.

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

Hashes for cache_recall-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c90d774a53f0705a0936a50c7e9e1459dbde889d0cd41c71a066679af0985fb1
MD5 4882214ca0ce419dc5b731e57b65f516
BLAKE2b-256 5b102936bd438c8e135b0e567337c21afbdc02bd1f8eaad21e04beb8df009ace

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page