Закрыли терминал - агент забыл всё. Не «часть», а всё: какую архитектуру вы вчера обсудили, почему выбрали Postgres, как называете переменные. Каждая сессия начинается с чистого листа. Это как нанимать нового разработчика каждое утро: талантливый, быстрый, но вчерашний день для него не существует.
На проекте в десять файлов это терпимо, весь контекст влезает в одну сессию. Когда файлов становится полсотни, начинается боль. Агент в новой сессии не знает, что модуль авторизации уже готов, и пишет второй. Без ваших conventions он лепит код в своём стиле, и база превращается в лоскутное одеяло. Вы уже выбрали Redis для кэша и обосновали решение, а в следующей сессии он предлагает Memcached, потому что не помнит. Лечится это памятью. Точнее, несколькими её видами, ведь «память» - это семь разных задач, а не одна кнопка.
Memory Bank: память в файлах
Самый дешёвый уровень. Memory Bank - это структурированная документация в markdown, которая лежит в репозитории под git. Агент читает её при старте сессии и «вспоминает» проект. Стоит ноль, ставится за пять минут.
Сердце Memory Bank - индексный файл. И тут ключевая деталь: индекс это роутинг, а не хранилище. Он содержит аннотированные ссылки, что лежит в файле и зачем агенту туда идти. Нужно починить баг в корзине? Агент смотрит индекс, видит строку про cart.md, открывает только его. Не грузит авторизацию, не грузит платежи. Это и есть progressive disclosure: агент читает ровно столько, сколько нужно задаче.
Держится всё на четырёх принципах:
- Один источник правды - каждый факт живёт в одном месте.
- Атомарность - один файл, одна тема:
auth.mdпро авторизацию и ничего больше. - Прогрессивное раскрытие - индекс, потом обзор, потом детали.
- Пирамидка знаний - в коде описано, КАК сделано, в документации ПОЧЕМУ и ДЛЯ ЧЕГО.
Нарушите последний - и агент поменяет код, а доку забудет, они разъедутся.
Hindsight: операционная память от Orchestra
Memory Bank хранит знания о проекте. Но есть второй вопрос, на который он не отвечает: что мы делали вчера? Какой баг нашли, что осталось доделать, какие решения приняли за неделю. Эти данные меняются каждый день, и держать их в git неудобно.
Здесь работает Hindsight, управляемый MCP-сервер памяти от Orchestra. Подключается к Claude Code как обычный MCP-сервер и даёт четыре команды:
retain- запомнить факт.recall- вспомнить по смыслу, а не по точному совпадению.reflect- синтезировать выводы по теме.status- проверить связь.
Данные лежат в облаке и привязаны к идентификатору проекта, поэтому переживают закрытие терминала, перезагрузку и новую сессию.
Workflow простой:
- В начале сессии - пара запросов
recall: «что за проект, открытые задачи», «что меняли в прошлый раз, где блокеры». - Во время работы -
retainна ключевые события: приняли решение, закрыли этап, нашли проблему. - В конце - короткий wrap-up: что сделано, что осталось, следующий шаг.
У нас на боевом проекте это экономит по пятнадцать-тридцать минут прогрева каждую сессию.
Не путайте два уровня.
| Критерий | Memory Bank | Hindsight |
|---|---|---|
| Отвечает на | «Как устроен проект» | «Что делали и что решили» |
| Меняется | Редко | Ежедневно |
| Живёт | В git | В облаке |
| Пример | «кэш - Redis, TTL час» | «15 марта выбрали Redis из-за latency» |
Один и тот же факт спокойно живёт в обоих сразу, просто в разной формулировке.
mem0: память для агентов, которых вы пишете сами
mem0 нужен, когда вы пишете агента кодом, на Python или TypeScript, через Agent SDK. У такого агента нет ни CLAUDE.md, ни Hindsight, ни встроенной памяти. Три живых примера:
- Slack-бот - без mem0 не помнит, что Петя вчера спрашивал про деплой.
- Агент поддержки - вместо «здравствуйте, как вас зовут» встречает клиента «здравствуйте, Иван, в прошлый раз чинили оплату».
- Ночной CI-агент по пул-реквестам - помнит, что этот PR уже видел вчера и там было три бага.
API минимальный, буквально три строки:
from mem0 import Memory
m = Memory()
m.add("Иван предпочитает деплой через GitHub Actions", user_id="ivan")
Внутри гибридное хранилище: векторный индекс для поиска по смыслу плюс граф знаний для связей между фактами. Поэтому mem0 находит нужное воспоминание, даже когда запрос сформулирован иначе, чем исходный факт. Коротко: это remember и recall для агентов, которых вы строите сами, чтобы они держали предпочтения пользователя или команды.
Serena: код как память
Остаётся контекст, который не закрывает ни один из трёх уровней выше, понимание самого кода. По умолчанию Claude Code ищет через Read и Grep, то есть по тексту. Serena подключается MCP-сервером и добавляет семантику.
Разница видна на одном запросе: «покажи все реализации PaymentProcessor».
| Инструмент | Что вернёт на этот запрос |
|---|---|
| Grep, по тексту | Строчки, где встречается имя |
| Serena, по символам | Все классы, которые реализуют интерфейс |
Плюс папка .serena/memories/ хранит память на уровне кода, поддерживает мультипроект и три десятка языков. Разделение простое: CLAUDE.md знает правила проекта, Serena знает его структуру.
Дерево выбора
Собираем всё в одно решение. Задайте себе один вопрос: что именно нужно запомнить?
- Знания о проекте (архитектура, conventions, бизнес-правила) - Memory Bank.
- Структуру кода (зависимости, реализации, символы) - Serena.
- Операционный контекст (что делали, что решили, что осталось) - Hindsight.
- Формальные архитектурные решения с пересмотром по сроку - Forgeplan и ADR.
- Личные черновики и растущий промпт - Obsidian.
- Общую документацию команды - Confluence.
- Программную память для собственных агентов - mem0.
По уровням это складывается в четыре набора:
| Набор | Что входит |
|---|---|
| Минимальный | CLAUDE.md плюс Hindsight. Для соло-разработчика и небольшого проекта, пять минут на настройку. |
| Стандартный | Сверху Serena и Obsidian. |
| Production | Ещё Forgeplan и Confluence: решения не теряются, новых людей быстрее вводить в проект. |
| Advanced | Cross-project Forgeplan и mem0 для мультипроекта и кастомных агентов. |
Не прыгайте сразу на advanced. Начните с минимального набора и добавляйте инструмент только тогда, когда реально упёрлись, а не «на всякий случай».
Eli Rum
Автор курса Dev Velocity. Пишет об AI-разработке на практике: агенты, контекст, инструменты.