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.