engram

Модель данных

Таблицы SQLite и структура данных engram

Модель данных

Engram хранит все данные в SQLite (WAL mode) по пути ~/.engram/memories.db.

memories

Основная таблица записей.

ПолеТипОписание
idTEXT PKUUID записи
memory_typeTEXTdecision, pattern, bugfix, context, antipattern, insight
contextTEXTСитуация или контекст
actionTEXTДействие или решение
resultTEXTРезультат
scoreREALОценка качества (0.0-1.0)
embedding_contextBLOBВектор эмбеддинга context
embedding_actionBLOBВектор эмбеддинга action
embedding_resultBLOBВектор эмбеддинга result
indexedBOOLEANПроиндексировано ли в HNSW
tagsTEXTJSON-массив тегов
projectTEXTИдентификатор проекта
parent_idTEXTРодительская запись (каузальная цепочка)
source_idsTEXTID исходных записей (для insights)
insight_typeTEXTТип insight (cluster, temporal, causal)
created_atTEXTДата создания (ISO 8601)
updated_atTEXTДата обновления
used_countINTEGERКоличество использований в поиске
last_used_atTEXTПоследнее использование
superseded_byTEXTID записи-замены (при консолидации)

memories_fts

Виртуальная таблица FTS5 для полнотекстового поиска через BM25.

CREATE VIRTUAL TABLE memories_fts USING fts5(
    context,
    action,
    result,
    content='memories',
    content_rowid='rowid'
);

Индексирует три текстовых поля записи. Используется для sparse-компоненты гибридного поиска.

q_table

Таблица Q-Learning роутера. Хранит значения для 4 независимых уровней.

ПолеТипОписание
router_levelTEXTУровень: search, llm, context, proactivity
stateTEXTСостояние (mode: debug, architecture, coding, review, plan, routine)
actionTEXTДействие (зависит от уровня)
valueREALQ-значение
update_countINTEGERКоличество обновлений

Действия по уровням:

УровеньДействия
searchhigh_threshold, medium_threshold, low_threshold
llmcheap, balanced, expensive
contextraw, summarize
proactivitypassive, proactive

consolidation_log

Аудит операций консолидации.

ПолеТипОписание
idINTEGER PKАвтоинкремент
actionTEXTТип операции (merge, delete, archive)
sourceTEXTИсточник (auto, user)
detailsTEXTJSON с деталями операции
created_atTEXTДата операции

feedback_tracking

Отслеживание feedback loop для Q-Learning.

ПолеТипОписание
memory_idTEXTUUID записи
searched_atTEXTКогда запись была показана в результатах поиска
judgedBOOLEANБыла ли запись оценена через judge

Цикл: memory_search отмечает показанные записи -> memory_judge устанавливает judged = true -> memory_status показывает pending_judgments.

recommendations

Рекомендации trainer, ожидающие одобрения.

ПолеТипОписание
target_idTEXTUUID целевой записи
actionTEXTРекомендуемое действие
reasoningTEXTОбоснование

metrics

Метрики от trainer (агрегаты).

ПолеТипОписание
nameTEXTНазвание метрики
valueREALЗначение

SQLite WAL mode

База данных работает в WAL (Write-Ahead Logging) mode:

  • Crash-safe записи с гарантией целостности данных
  • Параллельное чтение во время записи
  • Один файл memories.db + вспомогательные memories.db-wal и memories.db-shm