Persistent hybrid-search memory for AI CLI sessions (Claude Code, Codex, any turn-based jsonl)
Project description
anamnestic
Персистентная память с гибридным поиском для сессий AI-CLI.
Собирает исторические транскрипты из Claude Code (main + sub-агенты), Codex CLI и VS Code Copilot в единый корпус. Даёт гибридный поиск (BM25 + семантика + темпоральный + граф сущностей → RRF-слияние) и отдаёт результаты обратно клиентам как MCP-инструменты.
Построено как слой-расширение поверх claude-mem: переиспользует его SQLite-файл как базовую схему и добавляет собственные таблицы, индексы и сервисы. Оба сосуществуют, не конфликтуя.
pip install anamnestic
Зачем
- Транскрипты рабочих сессий с AI-агентами накапливаются между проектами и клиентами. Grep по jsonl — медленно и семантически слепо; сами клиенты всё забывают между запусками.
- MCP-сервер, который на
mem_search("запрос")возвращает ранжированные реплики из любой прошлой сессии, превращает архив в адресуемую поверхность знаний. - Только BM25 пропускает парафразы. Только семантика не видит точных токенов (IP, CVE, пути). Четырёхканальный RRF даёт каждому каналу шанс вытащить релевантное.
Архитектура
Поисковый пайплайн
Четыре канала извлечения, объединённые через RRF:
| Канал | Источник | Что находит |
|---|---|---|
| BM25 | FTS5 по turns + саммари | Точные токены, пути к файлам, ошибки |
| Семантика | Chroma cosine similarity | Парафразы, концептуально похожий контент |
| Темпоральный | SQL по диапазону дат (EN/RU) | «вчера», «на прошлой неделе», «in March» |
| Граф | BFS по co-occurrence сущностей | Связанные turns через общие пути/URL |
Пост-фьюжн этапы:
- Importance weighting — повышает turns с кодом, ошибками, решениями
- Temporal decay — экспоненциальный полураспад (по умолчанию 90 дней), свежие результаты выше
- Cross-encoder reranking — ONNX MiniLM перескорирует top-20 для финальной точности
Каждый ответ поиска включает диагностику по каналам.
Контроль качества графа сущностей
- Минимальный вес ребра — одноразовые co-occurrence (weight < 2) отсекаются как шум
- IDF-нормализация —
score = weight / log₂(degree + 1)подавляет сущности-хабы, поднимает редкие дискриминативные
MCP-инструменты
| Инструмент | Назначение |
|---|---|
mem_search |
Гибридный поиск с выбором режима (hybrid/bm25/semantic) |
mem_probe |
Оракул покрытия — «встречается ли этот токен?» |
mem_entity |
Поиск по сущности — «что мы делали с этим файлом?» |
mem_get_turn |
Получить turn с окружающим контекстом |
mem_get_session |
Обзор сессии с метаданными |
mem_get_thread |
Цепочка продолжений — все связанные сессии |
mem_stats |
Статистика корпуса |
mem_audit_tail |
Последние записи телеметрии |
CLI
anamnestic sync # ingest + embed + обогащение (сущности, потоки, importance, саммари, граф)
anamnestic search "запрос"
anamnestic status # снимок здоровья корпуса
anamnestic verify # проверки целостности (FTS, drift, сироты)
anamnestic backup # WAL-safe tar (хранит последние 10)
anamnestic restore # восстановление из бэкапа
anamnestic audit # лог последних операций
anamnestic eval # регрессионный тест по golden-запросам
anamnestic archive # архивация старых low-importance turns
Установка
Полная инструкция — установка, бэкфилл, регистрация MCP, systemd-таймеры, переезд — в SETUP.md.
Принципы дизайна
- Файл — единица идемпотентности.
anamnestic_ingest_stateхранит(source, path, mtime_ns); повторный запуск пропускает неизменённые файлы. - Turn — единица хранения.
historical_turnsс UNIQUE-ключом(content_session_id, turn_number); UPSERT не плодит дубликаты. - Формат — ответственность парсера. Добавить новый CLI-агент = написать парсер в
anamnestic/ingest/и зарегистрировать glob. - Каждая операция аудируется.
anamnestic_auditлогирует sync/verify/backup/restore с длительностью и JSON-payload. - Auto-sync при старте MCP. Лёгкий ingest + embed при запуске сервера — данные всегда актуальны.
Тесты
93 теста, покрывающие все модули:
- Интеграционные тесты полного RRF-пайплайна (формула скора, multi-channel merge, importance, decay, граф, диагностика)
- Unit-тесты importance scoring, temporal parsing, decay, entity extraction, graph traversal, reranking, threading, summarization, parsers, MCP server
pytest tests/ -v # <1с
Лицензия
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
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 anamnestic-0.2.4.tar.gz.
File metadata
- Download URL: anamnestic-0.2.4.tar.gz
- Upload date:
- Size: 64.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29290fa4dd33d27091f18acbecc27b36f0d98f07ead7c430fec079bc42f27144
|
|
| MD5 |
78f84beb8a0726ca1c0d6f161b861408
|
|
| BLAKE2b-256 |
1268dda6089854e9965e560878190eb69e79d91ae4028f91a33be81a20cfbb5f
|
File details
Details for the file anamnestic-0.2.4-py3-none-any.whl.
File metadata
- Download URL: anamnestic-0.2.4-py3-none-any.whl
- Upload date:
- Size: 58.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0edb221873beaf95cf8ef42c69a260dd8ff7bfd89c12439f1b43162f0079eb70
|
|
| MD5 |
5c2bfbf35033c9a5280a14073827ac31
|
|
| BLAKE2b-256 |
65b5c62203e2485caf1ae43d1d5be9956e5e97b2c24f63851028a03463d26b63
|