Самообучение
Три цикла обучения engram — Q-Learning, trainer, LoRA
Самообучение
Engram использует три цикла обучения с разными временными масштабами для постоянного улучшения качества поиска и генерации знаний.
Три цикла обучения
Fast: Q-Learning (каждый вызов)
Q-Learning роутер обновляется при каждом вызове memory_judge. Обратная связь от агента напрямую влияет на выбор стратегии поиска, LLM-модели, контекстуализации и проактивности.
Подробнее: Q-Learning роутер.
Medium: Trainer (периодически)
Python-процесс анализирует накопленные записи и генерирует insights — производные знания, недоступные при анализе отдельных записей.
Deep: LoRA fine-tuning (по запросу)
Тонкая настройка модели на данных из памяти. Экспортирует ONNX-модель для локальной генерации без API-вызовов.
engram-trainer --db ~/.engram/memories.db --deepTrainer
Установка
pip install engram-trainerЗапуск
engram-trainer --db ~/.engram/memories.db
engram-trainer --db ~/.engram/memories.db --models-path ~/.engram/modelsИли через MCP:
{ "action": "generate" }Или через CLI:
engram train generateАнализ
Trainer выполняет несколько видов анализа:
Кластеризация — группирует записи по семантической близости. Использует AgglomerativeClustering с cosine distance matrix (metric="precomputed").
Временные паттерны — находит повторяющиеся решения в определенные временные периоды.
Каузальные цепочки — прослеживает цепочки причина-следствие через parent_id. Сначала строит явные цепочки (parent_id), затем находит неявные по времени и семантической близости.
Quality gate — валидирует сгенерированные insights через ROUGE-L (LCS F-measure, порог 0.1).
Генерируемые insights
Каждый insight сохраняется как запись с memory_type = "insight" и содержит:
context— описание обнаруженного паттернаaction— рекомендуемое действиеresult— ожидаемый эффектinsight_type— тип анализа (cluster, temporal, causal)source_ids— ID исходных записей
ONNX-модели
При запуске с флагом --deep trainer выполняет LoRA fine-tuning и экспортирует:
~/.engram/models/
text_generator.onnx # ONNX-модель для генерации текста
tokenizer.json # токенизаторМодели используются провайдером local в секции [llm] конфигурации для генерации без API-вызовов.
Протокол trainer
Trainer общается с Rust-ядром через stdout JSON Lines. Каждая строка — JSON-объект с полем type:
| Тип | Описание |
|---|---|
progress | Прогресс выполнения (stage, percent) |
insight | Сгенерированный insight |
recommendation | Рекомендация по существующей записи |
metric | Метрика (name, value) |
artifact | Созданный файл (path, size_bytes) |
complete | Завершение (insights_generated, duration_secs) |
Подробнее: Протокол.
Конфигурация
Параметры trainer в engram.toml:
[trainer]
trainer_binary = "engram-trainer"
trainer_timeout_secs = 300
models_path = "~/.engram/models"Таймаут по умолчанию — 5 минут. При превышении процесс завершается с ошибкой 6014 (TrainerTimeout).