Skip to content

Командная память ​

Как это хранится ​

  • .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 показывает, какие решения и грабли добавились. Для более читаемой версии:

bash
engram export --format md -o docs/MEMORY.md

Онбординг ​

Новый разработчик или новый агент может спросить:

Объясни, как здесь устроена авторизация.

и получить записанную историю решений вместо догадок. engram summary --full выводит всю картину целиком.

Приватность ​

Память пишется для коллег. Инструкции сервера запрещают агентам сохранять секреты, учётные данные и персональные данные, но memories.jsonl стоит ревьюить, как любой закоммиченный файл. Чтобы память осталась только на вашей машине, добавьте .engram/memories.jsonl в .gitignore или задайте "sync": { "jsonl": false }.

Released under the MIT License.