Командная память
Как это хранится
.engram/memories.jsonlслужит источником истины. В нём одна JSON-запись на строку, отсортировано по id: записи, связи, сессии и tombstones. Его нужно коммитить..engram/engram.dbэто локальный индекс SQLite, который собирается из JSONL. Он в.gitignore.
Каждая запись зеркалируется в JSONL: сначала во временный файл, потом rename, чтобы сбой не оставил половину файла. При каждом открытии engram считает хэш JSONL. Если файл изменился с последней записи самим engram (из-за git pull, merge или ручной правки), записи вливаются в локальный индекс.
Правила слияния
- Записи: побеждает самый свежий
updatedAt. - Tombstones (жёсткие удаления) сильнее записи, на которую указывают.
- Связи и сессии объединяются.
- Неразрешённые маркеры конфликта git в JSONL допустимы. Обе стороны вливаются, а файл перезаписывается начисто.
Файл отсортирован по случайным id, поэтому два человека, добавляющие записи, редко задевают соседние строки. Большинство слияний проходит без конфликтов.
Ревью того, что выучил агент
Память можно ревьюить как код. Diff pull request показывает, какие решения и грабли добавились. Для более читаемой версии:
engram export --format md -o docs/MEMORY.mdОнбординг
Новый разработчик или новый агент может спросить:
Объясни, как здесь устроена авторизация.
и получить записанную историю решений вместо догадок. engram summary --full выводит всю картину целиком.
Приватность
Память пишется для коллег. Инструкции сервера запрещают агентам сохранять секреты, учётные данные и персональные данные, но memories.jsonl стоит ревьюить, как любой закоммиченный файл. Чтобы память осталась только на вашей машине, добавьте .engram/memories.jsonl в .gitignore или задайте "sync": { "jsonl": false }.