axmg-kernel (shelf) — Движок ассоциативной памяти на базе Merkle DAG
shelf — это встраиваемая, независимая и детерминированная Rust-библиотека ассоциативной памяти без использования векторных баз данных, эмбеддингов и нейросетевых словарей.
Она строит композитную память непосредственно из сырых байтовых потоков, используя криптографический Merkle DAG (SHA-256), динамику времени (Wheel), механизм фильтрации шума (Eviction $K=3$) и ассоциативный граф (PPMI + Recall).
🚀 Быстрый старт (Quickstart)
Добавьте библиотеку в ваш Cargo.toml:
[]
= { = "../shelf" }
1. Минимальный пример (In-Memory)
use Axmg;
Запустить готовый пример из репозитория:
💾 Режимы хранения
Режим 1: Полная персистентность (ACID на redb)
use Axmg;
// Открывает существующую базу или создает новую по указанному пути.
// Таймлайн автоматически пишется рядом в "agent_memory_timeline.jsonl".
let mut memory = open?;
memory.ingest?;
// Данные атомарно закоммичены на диск!
Режим 2: Гибкая конфигурация через AxmgBuilder
use ;
let memory = new
.db_path
.timeline_path
.birth_threshold // Минимальная частота для рождения составного токена
.tie_break // Детерминированный порядок сортировки волн
.focus_window // Число топ-концептов в фокусе
.auto_save // Транзакционный сброс на каждом шаге
.build?;
🧠 Ключевые архитектурные концепции
| Концепт | Описание | Модуль |
|---|---|---|
| Store (Merkle DAG) | Неизменяемая SoA-арена токенов. Детерминированные SHA-256 хеши. Фабричные 256 байт на нулевом уровне. | store.rs |
| StreamingRecognizer | Потоковая свёртка чанков произвольного размера за $O(N)$ без словаря. | recognizer.rs |
| WheelState (Колесо времени) | Дискретные эпохи (обороты). Трекинг времени последнего касания (last_touched). |
wheel.rs |
| Eviction & FocusSet ($K=3$) | Generational GC (mark без sweep). Корневое окно $K=3$ оборотов + срез 25% пограничных по PPMI-весу. | death.rs |
| Surprise ($S_{\text{static}}, S_{\text{growth}}$) | Потоковый расчет удивления в горячем цикле без клонирования стора. Классификация: Familiar / NovelGrowth / Noise. | surprise.rs |
| PPMI Recall | Субграфный ассоциативный поиск по матрице совместной встречаемости. | recall.rs |
🛠 Справочник API (Axmg)
Методы интеграции и записи
engine.ingest(text: &str) -> Result<IngestReport, AxmgError>— интеграция строки с тегом"general".engine.ingest_tagged(text: &str, tag: &str) -> Result<IngestReport, AxmgError>— интеграция строки с пользовательским тегом.engine.ingest_bytes(bytes: &[u8]) -> Result<IngestReport, AxmgError>— интеграция сырых байт (логи, бинарные потоки).
Методы извлечения и поиска
engine.recall(query: &str, limit: Option<usize>) -> RecallResponse— ассоциативный субграфный поиск концептов вокруг запроса.engine.focus() -> Arc<FocusSet>— мгновенный lock-free доступ к снапшоту активных токенов.engine.focused_concepts() -> &[FocusConcept]— срез топ-концептов текущего фокуса.engine.prompt_context() -> String— готовая строка активного контекста для внедрения в системный промпт LLM (экономия токенов 96.89%).
Диагностика и статистика
engine.check_surprise(hypothesis: &str) -> SurpriseReport— проверка удивления без мутации хранилища.engine.stats() -> EngineStats— статистика: число токенов, коэффициент сжатия, доля фокуса.engine.timeline(limit: Option<usize>) -> Vec<TimelineEntry>— выборка последних событий таймлайна.engine.save() -> Result<(), AxmgError>— принудительный сброс на диск.
🛡 Фундаментальные инварианты библиотеки
- Строгий детерминизм: Одинаковый поток байтов всегда порождает идентичные SHA-256 хеши и структуру Merkle DAG.
- Смерть — это прекращение обращения, а не удаление: Тела токенов в
Storeнеизменны (Append-only). Вытеснение фиксируется как лог событийUnfocus. - Безопасность типов: Никаких паник в библиотечном коде; все операции возвращают
Result<T, AxmgError>. - Lock-Free чтение: Чтение фокуса внимания не блокирует входящий поток интеграции событий.
📖 Локальная документация (Rustdoc)
Сгенерировать и открыть интерактивную HTML-вики документацию с перекрёстными ссылками и сигнатурами: