Память ИИ-агентов: разбор 30-мин курса экс-Google инженера

Память ИИ-агентов: разбор 30-мин курса экс-Google инженера
Каждый запрос к LLM начинается с амнезии - модель не помнит, что было в предыдущем чате. Sean Chen (бывший инженер Google, выпускник MIT, автор канала "Sean's AI Stories" и репозитория waku-agent с 1458 звёздами) выложил 30-минутный курс про память ИИ-агентов - от простого текстового файла до временного графа, пять рабочих реализаций рядом. Ниже краткий разбор всех блоков плюс готовый запрос для Claude Code, чтобы повторить у себя за пару часов.
Кто такой Sean Chen и что за курс
Shen Sean Chen - основатель AutoManus, до этого работал в Google и учился в MIT. На YouTube-канале "Sean's AI Stories" ведёт серию "You Can Learn ... In X Min" - короткие ролики с полным кодом на GitHub. Разбираемый ролик называется "You Can Learn AI Agent Memory Layers | Graph RAG, Vector DB, SQLite, Hermes, Waku". В нём собраны пять реальных стеков памяти рядом друг с другом, чтобы можно было сравнить руками, а не по слайдам. Код к курсу лежит в github.com/ShenSeanChen/waku-agent под лицензией MIT.
Почему каждый вызов ИИ-модели - амнезия
LLM stateless по своей природе. Модель не хранит ничего между вызовами - вы каждый раз пересылаете ей всю переписку в промпте. Отсюда две боли: длинные диалоги съедают контекстное окно и деньги, а на 30-м шаге агент забывает роль или ключевой факт (эту же боль недавно замерила Tencent - подробнее в гайде про Tencent Agent Memory и экономию 61% токенов).
Sean раскладывает решение в две задачи. Первая - где хранить память. Вторая - как её оттуда доставать в нужный момент, потому что "положить" всегда легко, а "найти релевантное" сложно.
Где хранить память: текст, таблицы, графы
Три уровня, в порядке усложнения:
- Обычный текст - файл
MEMORY.md, куда агент дописывает факты. Читаемо человеком, плохо ищется машиной. Такой подход разбирал недавно в гайде про CLAUDE.md как постоянную память Claude Code. - Таблицы - строки в SQL. Каждая память = одна строка с полями
content,created_at,tags. Уже можно фильтровать и сортировать. - Графы - узлы (сущности) и рёбра (отношения). "Раджу нравятся утренние тренировки" превращается в связь
Raj -[prefers]-> morning training.
Waku Sean-а держит память в одном файле state.db - SQLite с встроенным полнотекстовым индексом FTS5. Плюс регулярно мирролит человекочитаемую копию в MEMORY.md, чтобы можно было открыть глазами. Компромисс между "просто" и "запросно": одна база, читается всеми, работает без сервера.
Четыре способа найти нужное в памяти
Когда у тебя тысяча заметок, вопрос не "где хранить", а "как достать релевантное":
- Ничего не делать - кинуть всю память в контекст. Работает, пока памяти на пять сообщений. На тысяче фактов модель захлебнётся токенами и всё равно проиграет в качестве.
- Ключевые слова - grep или FTS5. Дёшево, быстро, детерминированно. Проваливается на синонимах и перефразах.
- RAG - вектор эмбеддинга, поиск по косинусу. Ловит семантику ("тренировка" ≈ "спорт"), но требует эмбеддинг-модель и вектор-базу.
- Graph RAG - тот же поиск, но по графу. Кроме семантики учитывает связи: "все, кого Радж представил Сергею, за последний месяц".
Ключевой вывод Sean-а: не надо сразу лезть в векторы. Начни с ключевых слов - для 90% задач хватает. Векторы включай, когда воспроизведёшь боль руками.
Пять операций жизненного цикла памяти
Отдельно Sean раскладывает, что вообще агент делает с памятью помимо чтения. Это не CRUD, это шире:
- Add - положить новый факт. Гейт (в waku -
retrieval_gate.py) решает, стоит ли вообще запоминать этот ход, чтобы не засорять базу мусором. - Delete - удалить откровенно ложное. Мир меняется, факты стареют.
- Retire - не удалить, а пометить как неактуальный. Разница: retired-факт можно поднять для аудита ("почему ты так решил месяц назад").
- Attribution - откуда факт приехал: пользователь сказал, инструмент вернул, сам догадался. Нужно для доверия: догадка агента ≠ подтверждённый факт от юзера.
- Reflection - раз в N ходов агент дистиллирует сырые логи в компактные саммари и "личность". Иначе через 50 задач он забывает, кем был.
Если этого нет - память из помощника превращается в помойку. Все пять шагов лежат в waku/memory/*.py, можно читать и переиспользовать.
Сборка на тексте и SQLite - минимальный работающий стек
Первую версию курс делает на самом простом: файл MEMORY.md плюс state.db в SQLite. Никаких эмбеддингов, никакого сервера. Установка - одна команда:
pip install waku-agent
waku
Или клонировать репо и читать код:
git clone https://github.com/ShenSeanChen/waku-agent
cd waku-agent
uv venv && uv pip install -e .
cp .env.example .env
uv run waku
uv run waku dashboard # localhost:7777, видно, как обновляется память
Дашборд показывает каждый ход: гейт решил "надо или не надо лезть в память" → цикл дошёл до инструмента → ответ вернулся → строка в state.db обновилась. Самая внятная демонстрация того, что вообще происходит внутри агента - обычно этот момент скрыт фреймворком.
Когда SQLite хватает, а когда нужен вектор
Sean прямо говорит, векторную базу подключаем, когда:
- База переросла ~10к записей и
LIKE %слово%тормозит. - Пользователи спрашивают перефразами ("покажи прошлогодний налог" - а в базе "отчёт за 2025 год").
- Нужна кросс-язычность: запрос на английском, факты на русском.
До этого - SQLite и FTS5 покрывают 90% задач и не требуют поддерживать embed-модель. Как только полез в вектор - выбираешь Qdrant или pgvector, платишь за поднятие сервиса и за токены на эмбеддинги. Тратить это до того, как упрёшься - преждевременная оптимизация.
Временной граф - зачем он агенту
Отдельный кусок про Graph RAG с временными рёбрами. Обычный knowledge graph говорит "Иван работает в компании X". Временной граф добавляет период: "Иван работал в X с 2023-01 по 2025-03, сейчас в Y". По исследованиям, которые Sean приводит, больше 70% фактов о реальном мире имеют временное измерение - и без него агент выдаёт устаревшую инфу как актуальную.
Референс-реализации: Graphiti и Neo4j. Sean показывает построение временного графа из потока событий - каждый факт получает интервал валидности. Это уже тяжёлый стек, подключать имеет смысл, когда работаете с датами, договорами, историей отношений.
Как повторить весь курс через Claude Code
Ручной путь - смотреть 30 минут и повторять по видео. Быстрее - открыть Claude Code в папке с клонированным репо и попросить разобрать архитектуру пошагово:
Прочитай README и структуру этого репозитория waku-agent. По пяти пунктам:
1) Как устроено хранение памяти в state.db - какие таблицы, какие индексы FTS5.
2) Как работает retrieval_gate.py - когда решает "не лезть в память".
3) Как устроена consolidation.py - как из сырых логов получаются факты (reflection).
4) Что делает семантический слой в waku/memory/semantic/, эпизодический в episodic/, процедурный в procedural/.
5) Что нужно поменять, чтобы использовать этот подход с моим агентом на TypeScript через Anthropic SDK.
Сначала план, без кода. Задавай вопросы, если непонятно.
За полчаса получаете полную карту того, что делает Sean в ролике, плюс план адаптации под свой стек. Дальше уже можно резать по кускам и подключать к своему агенту. Тот же приём разбирал в гайде "Waku-agent: мозг агента в 95 строк".
Итог - что стоит забрать
Курс полезен не готовым решением, а разложенной методологией: где хранить, как искать, как поддерживать. Пять реальных реализаций рядом - редкий формат: обычно показывают одну и хвалят. Waku - хороший стартовый шаблон: MIT, весь цикл памяти доступен в коде, SQLite вместо тяжёлого стека. Начинать с векторов и Graph RAG не надо - это выйдет из-под контроля быстрее, чем вы получите первую ценность.
FAQ
Курс платный? Нет, ролик на YouTube и репозиторий на GitHub бесплатные, лицензия MIT. Sean предлагает платное сообщество ($20/мес) и консультации ($200/сессия) отдельно, но код и видео открыты.
Нужен ли Python, если у меня агент на другом языке? Waku написан на Python, но архитектура переносимая: слои памяти, гейт, консолидация - переносятся на любой язык через Anthropic SDK или OpenAI SDK. Claude Code помогает адаптировать за пару итераций.
Работает без облака? Да, весь стек локальный. SQLite-файл лежит у вас, ничего не уходит наружу. Провайдер модели вы выбираете сами: Anthropic, OpenAI, Gemini, DeepSeek, Kimi, GLM, OpenRouter.
Чем отличается от Mem0 или Zep?
Mem0 и Zep - облачные memory-сервисы, которые вы вызываете как API. Waku - open-source код на вашей машине, всё лежит в state.db. Плюс: приватность и цена. Минус: сами поддерживаете.
Стоит ли сразу брать Graph RAG? Нет. Sean прямо предупреждает: начните с ключевых слов и SQLite. Переходите на вектор, потом на граф, только когда упрётесь в конкретную боль. Иначе получите сложность, за которую нечем платить.
Что дальше
Если хочешь собрать такую систему у себя - у меня есть курс по вайбкодингу и работе с нейросетями в клубе Мандарин Лаб: mandarinedu.ru. Первые уроки открыты бесплатно.
Если нужно внедрить ИИ в бизнес - процессы, агентов, автоматизацию под вашу задачу - пишите мне напрямую: t.me/Philigranchik. Разберу задачу и скажу, что реально автоматизируется, а что нет.

Вайбкодер-разработчик и маркетолог с 9-летним опытом, основатель «Мандарин Лаб». Собирает на ИИ то, за что раньше платили подрядчикам сотни тысяч: CRM, ботов, автоматизации, монтаж. Одну из систем строил под агентство недвижимости с базой в 400 000 лидов. Теперь учит этому с нуля - как за вечер собрать свой инструмент через Claude Code и зарабатывать на нейросетях.
Telegram @mike_cmo →Кто такой Михаил Иванин →