🛠 AI-инструменты

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

Михаил ИванинМихаил Иванин18 августа 2026 г.7 мин чтения
Память ИИ-агентов: разбор 30-мин курса экс-Google инженера
✈️
Свежие гайды и обзоры выходят в моём Telegram первыми
Подписаться →

Память ИИ-агентов: разбор 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, чтобы можно было открыть глазами. Компромисс между "просто" и "запросно": одна база, читается всеми, работает без сервера.

Четыре способа найти нужное в памяти

Когда у тебя тысяча заметок, вопрос не "где хранить", а "как достать релевантное":

  1. Ничего не делать - кинуть всю память в контекст. Работает, пока памяти на пять сообщений. На тысяче фактов модель захлебнётся токенами и всё равно проиграет в качестве.
  2. Ключевые слова - grep или FTS5. Дёшево, быстро, детерминированно. Проваливается на синонимах и перефразах.
  3. RAG - вектор эмбеддинга, поиск по косинусу. Ловит семантику ("тренировка" ≈ "спорт"), но требует эмбеддинг-модель и вектор-базу.
  4. 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. Разберу задачу и скажу, что реально автоматизируется, а что нет.

Бесплатный первый урок

Хочешь собрать это сам - с нуля до первого клиента?

В первом уроке показываю весь путь по шагам: ставим Claude Code, собираем первый рабочий инструмент и как на этом начать зарабатывать. Без воды и без кода.

Смотреть первый урок →
Михаил Иванин
Об авторе

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

Telegram @mike_cmo →Кто такой Михаил Иванин →
#память агентов#ии-агенты#sean chen#waku-agent#graph rag