Три подхода к памяти AI-агентов на базе Git: где помогает, а где только перекладывает старые проблемы
Memoir, Beads и Mem0 + Valkey обещают AI-агентам память, которая не теряется между сессиями и не загрязняет контекст. Но на практике Git-подобная память не универсальна: одни инструменты экономят токены, другие структурируют факты, третьи управляют задачами.
Git как хранилище памяти: три подхода в бою
Memoir, Beads и Mem0 + Valkey обещают AI-агентам память, которая не теряется между сессиями и не загрязняет контекст. На первый взгляд решение выглядит просто: возьми привычный инструмент и адаптируй под новые задачи. Но на практике Git-подобная память не универсальна. Одни инструменты экономят токены, другие структурируют факты, третьи управляют задачами. Где они действительно помогают, а где только перекладывают старые проблемы на новые рельсы — разбираем с примерами команд, лимитами и конкретными сценариями.
Memoir: когда память должна течь по веткам, а не через трещины
Memoir хранит память AI-агентов в виде семантических путей (preferences.coding.testing, api.v2.auth) и версионирует их как Git. Каждая запись — это коммит с SHA-256, что позволяет откатиться к любому состоянию памяти командой memoir checkout HEAD~5.
В продакшене он работает как плагин для Claude Code, Python SDK, CLI и MCP-сервер, а также автоматически сохраняет сессии и инжектирует контекст при старте. Главное обещание — избавиться от контекстного загрязнения. Допустим, разработчик запустил агента для рефакторинга API. Агент создал ветку migrate-to-deck-gl, протестировал новый формат ошибок — и забыл, что в main до сих пор используется старый. При переключении на main он продолжает применять экспериментальные паттерны к продакшн-коду, потому что память не синхронизирована с состоянием репозитория.
Memoir решает это через ветвление памяти: при git checkout агент автоматически переключается на соответствующую ветку памяти (memoir · switched to migrate-to-deck-gl), и эксперименты не просачиваются в продакшн.
Однако у такого подхода есть обратная сторона. Memoir требует ручной классификации или LLM, который будет присваивать фактам пути. Без этого память превращается в хаотичный граф, где даже простой вопрос «что мы обсуждали про аутентификацию?» потребует долгого блуждания по дереву. Прямой доступ по пути (memoir get api.v2.auth) работает за 0.1–1 мс, зато семантический поиск — 500–800 мс. Это приемлемо для структурированных данных, но не для неорганизованного контекста.
Beads: граф задач вместо заметок и поиска
Beads подходит тем, кому важна долгосрочная структура задач, а не просто факты. Он хранит память в JSONL-файлах внутри Git-репозитория, используя хеш-базированные ID задач (bd-a1b2) и граф зависимостей.
Пример команд:
beads task create "Refactor database layer" --id bd-db01
beads task create "Add password hashing" --parent bd-db01
beads graph # визуализация графа задач
Плюс — визуализация графа, минус — нет семантического поиска. Beads не предназначен для вопросов вроде «что мы знаем о кэшировании?», а только для отслеживания прогресса и зависимостей.
Ещё одна фича — компакция памяти: закрытые задачи сворачиваются в краткие резюме, но сохраняют полный контекст в фоне. Это удобно для многосессионных проектов, где нужно помнить не только результат, но и путь к нему. Но и здесь есть трение: чтобы Beads заработал, агент должен явно создавать задачи (beads task create). Если память генерируется спонтанно (например, длинные обсуждения в чате), её придётся вручную конвертировать — иначе она останется мёртвым грузом в JSONL-файлах.
Mem0 + Valkey: когда токены дороже структуры
Mem0 не позиционируется как Git-подобный инструмент. Его цель — снизить токен-стоимость памяти до 90%, используя Valkey для селективного извлечения релевантных фрагментов. Вместо хранения всей истории он индексирует память по атрибутам и возвращает только то, что нужно в конкретной сессии.
Это работает, если приоритет — стоимость, а не структура. Mem0 подходит для высоконагруженных сценариев, где каждый токен на счету, но не решает проблему контекстного загрязнения. Если агент переключается между ветками кода, его память не синхронизируется с состоянием репозитория — как и в традиционных подходах с CLAUDE.md.
Что общего и где расходятся подходы
Все три инструмента решают одну проблему: традиционные векторные базы данных и плоские заметки не справляются с продакшн-нагрузкой. Но дальше начинаются различия:
| Инструмент | Что версионирует | Ключевое ограничение | Когда выбирать |
|---|---|---|---|
| Memoir | Факты и преференции (например, кодинговые конвенции) | Требует ручной таксономии, нет семантического поиска | Нужна прозрачная, версионированная память для структурированных данных |
| Beads | Долгосрочные задачи и зависимости (например, многосессионная рефакторизация) | Нет семантического поиска, нужно явное создание задач | Важна структура задач, а не быстрый поиск |
| Mem0 + Valkey | Токен-эффективность | Не решает контекстное загрязнение, нет структуризации | Главный враг — высокая токен-стоимость |
Как выбрать без иллюзий
Если ваша задача — структурировать факты и преференции (например, кодинговые конвенции, API-справочники), попробуйте Memoir. Он подходит для сценариев, где память должна быть прозрачной и версионированной, но требует времени на настройку таксономии.
Если вы работаете с долгосрочными задачами и зависимостями (например, многосессионная рефакторизация), Beads будет удобнее. Он не решит проблему быстрого поиска, зато даст структурированный граф прогресса.
Если ваш главный враг — высокая токен-стоимость, Mem0 + Valkey оптимален. Но не ждите от него структуризации памяти или защиты от контекстного загрязнения — он просто режет затраты.
Выбор зависит от того, что вы хотите версионировать: факты, задачи или деньги.