Память AI-агента: Hindsight vs Graphiti — зачем агенту не просто RAG, а опыт
У AI-агентов есть странная слабость. Они могут писать код, читать документы, вызывать инструменты и вести длинный диалог, но на следующей сессии снова становятся почти пустыми. В лучшем случае мы подсовываем им историю чата, папку с заметками или векторный поиск по документам. Это помогает, но только до первого серьезного изменения контекста.
Клиент вчера работал на Postgres, сегодня переехал на MySQL. Пользователь раньше хотел короткие ответы, потом попросил подробные. Агент уже совершал ошибку в похожей задаче, но не вынес из нее урок. В таких случаях проблема не в размере контекстного окна. Проблема в том, что у агента нет нормальной памяти.
В канале “Для журнала” как раз всплыла хорошая пара инструментов для этой темы: Hindsight и Graphiti. Оба смотрят дальше обычного RAG, но делают это по-разному. Hindsight ближе к готовому слою памяти, который должен помогать агенту учиться на опыте. Graphiti ближе к движку временного графа знаний, на котором можно построить собственную память, контекст или корпоративный knowledge layer.
Почему RAG уже не закрывает задачу памяти
RAG хорошо отвечает на вопрос “что лежит в документах?”. Агентная память отвечает на другой вопрос: “что система уже узнала, что изменилось, чему можно доверять и почему?”.
Это принципиальная разница. Документ в базе знаний обычно статичен. Жизнь агента динамична. Он получает обратную связь, ошибается, исправляется, наблюдает за пользователем, меняет мнение о процессе, сталкивается с новыми фактами. Если все это хранить как плоские куски текста, память быстро превращается в склад противоречий.
Поэтому зрелая память должна уметь не только искать, но и различать роли информации. Факт о мире — это одно. Опыт самого агента — другое. Наблюдение о пользователе — третье. Вывод, который агент сделал на основе нескольких эпизодов, — четвертое. Если все эти слои смешать, агент начнет уверенно доставать не то: старый факт вместо нового, гипотезу вместо доказательства, случайный эпизод вместо устойчивого паттерна.
Hindsight: память, которая пытается учиться
Hindsight описывает себя как систему памяти для агентов, которые должны не просто помнить, а становиться лучше со временем. В документации и репозитории у него есть три базовые операции: retain, recall и reflect. По-русски это можно перевести как “сохранить”, “вспомнить” и “осмыслить”.
Смысл в том, что память не сводится к добавлению заметки в базу. Агент сохраняет информацию, потом ищет релевантные воспоминания, а затем может делать рефлексию: превращать накопленные факты и эпизоды в более полезные выводы. В исследовательской статье “Hindsight is 20/20” эта логика описана через несколько сетей памяти: факты о мире, опыт агента, синтезированные представления о сущностях и развивающиеся убеждения.
Практически это интересно тем, кто делает персональных ассистентов, AI-сотрудников, саппорт-агентов или рабочих агентов внутри компании. Такому агенту важно не только знать “Иван работает в отделе закупок”, но и помнить, что Иван три раза просил не присылать длинные письма, что прошлый расчет по его проекту был принят только после добавления таблицы рисков, а похожая автоматизация уже ломалась на этапе согласования доступов.
Главное обещание Hindsight — готовый слой памяти, который можно добавить поверх агента быстрее, чем проектировать собственный граф с нуля. Это не значит, что его надо ставить в любой n8n-сценарий. Даже сами авторы пишут, что для простых workflow это может быть избыточно. Но если агент должен копить опыт месяцами и менять поведение на основе обратной связи, идея становится серьезной.
Graphiti: временной граф контекста
Graphiti идет с другой стороны. Это не столько “память из коробки”, сколько open-source движок для построения временных графов контекста. В обычном графе знаний есть сущности и связи. В Graphiti важен еще и вопрос времени: когда факт стал истинным, когда был заменен, из какого эпизода он появился.
Это очень важная инженерная деталь. В реальном бизнес-контексте факты не просто добавляются. Они устаревают, уточняются, конфликтуют, получают новые источники. Если клиент изменил тариф, старая связь не должна исчезать бесследно, но агент не должен использовать ее как актуальную. Graphiti как раз строится вокруг временных фактов, provenance — происхождения знания — и возможности делать запросы по смыслу, ключевым словам и связям графа.
Разработчики Zep объясняют Graphiti как open-source temporal context graph engine. Zep — это управляемая платформа вокруг этой идеи, а Graphiti — ядро, которое можно взять и встроить в свою систему. Поэтому выбор здесь зависит от зрелости команды. Если хочется гибкости, собственной онтологии, контроля над сущностями и связями — Graphiti выглядит естественно. Если хочется быстрее получить память агента без построения всей инфраструктуры вокруг нее — проще смотреть в сторону готового memory layer.
Hindsight или Graphiti: что выбрать
Они похожи только на уровне большой темы. На уровне инженерного решения это разные инструменты.
| Вопрос | Hindsight | Graphiti |
|---|---|---|
| Что это по сути | готовый слой памяти для агента | движок временного графа контекста |
| Главная идея | агент должен сохранять, вспоминать и осмыслять опыт | факты и связи должны жить во времени и иметь источник |
| Где сильнее | персональные агенты, AI-сотрудники, обучение на обратной связи | кастомные knowledge graphs, корпоративный контекст, сложные доменные модели |
| Что дает быстрее | рабочую модель памяти вокруг retain / recall / reflect | гибкую основу для собственной архитектуры |
| Что потребует от команды | понять, как подключить и настроить memory bank | спроектировать типы сущностей, эпизоды, retrieval и операционный слой |
| Риск | поставить тяжелую память туда, где хватило бы простого поиска | построить красивый граф, но не довести его до удобной памяти агента |
Если совсем коротко: Hindsight стоит рассматривать, когда вам нужен агент, который учится на своем опыте. Graphiti стоит рассматривать, когда вам нужен управляемый временной слой знаний, который вы готовы проектировать сами.
Главная проблема памяти — не хранение, а консолидация
Самое полезное в этой теме — перестать думать о памяти как о папке “все, что было”. Такая папка быстро становится вредной. Старая информация начинает спорить с новой, случайные замечания становятся “правилами”, а агент выдает уверенный ответ из устаревшего контекста.
В материале Hindsight про consolidation problem хорошо сформулирована эта проблема: памяти нужны правила важности, объединения, устаревания и удаления. Что вообще становится памятью? Как объединяются два факта об одной сущности? Как падает доверие к старому факту? Когда запись больше не нужна?
Для журнала и наших рабочих систем это прямо практический вывод. Если мы хотим, чтобы агент писал статьи, помнил редакционные замечания, не повторял плохие паттерны и понимал историю проекта, ему мало поиска по папке. Ему нужен слой, где замечание “слишком много одинаковых буллетов” превращается не в один лог в чате, а в правило, которое потом влияет на следующие статьи.
Как это применить в журнале
Для onff.ru память агента можно представить не как “большую базу знаний”, а как редакционную нервную систему. В нее попадают источники, удачные заголовки, слабые места прошлых статей, правила форматирования, реакции на публикации, заметки из канала “Для журнала”, найденные ошибки и решения вроде нашего недавнего перехода на Ghost ?source=html для таблиц.
Тогда публикационный навык начинает работать иначе. Он не просто берет Markdown и отправляет его в Ghost. Он помнит, что таблицы должны проходить через HTML. Помнит, что статьи не должны превращаться в одинаковые списки. Помнит, что английский термин лучше сначала объяснить по-русски. Помнит, какие темы уже были раскрыты поверхностно и требуют примеров, скриншотов или GIF.
Здесь Hindsight и Graphiti можно даже не противопоставлять. Hindsight интересен как быстрый путь к памяти поведения: что агент сделал, где ошибся, что пользователь поправил. Graphiti интересен как будущий слой структуры: статьи, источники, темы, сущности, инструменты, даты, связи между публикациями и обновлениями. Для маленького журнала это может выглядеть чрезмерно. Для журнала, который хочет стать живой системой знаний, это уже не роскошь.
Вывод
Память AI-агента — это не “добавим векторную базу и будем искать по прошлым сообщениям”. Это архитектурный слой доверия. Он отвечает за то, что агент считает фактом, что считает опытом, что считает выводом и что уже должно быть пересмотрено.
Hindsight предлагает более готовую модель памяти, где агент сохраняет, вспоминает и осмысляет. Graphiti предлагает гибкий временной граф, где факты живут вместе с источником и историей изменений. Первый путь ближе к быстрому внедрению памяти в агента. Второй — к построению собственной инфраструктуры контекста.
Для практической работы важен не бренд инструмента, а сам сдвиг мышления. Если агент должен делать что-то дольше одного чата, память становится не украшением, а частью ответственности. Без нее агент просто каждый раз начинает жизнь заново.
Источники
- Hindsight GitHub: Agent Memory That Learns
- Hindsight is 20/20: Building Agent Memory that Retains, Recalls, and Reflects
- Graphiti GitHub: Build Temporal Context Graphs for AI Agents
- Graphiti documentation: Welcome to Graphiti
- Graphiti: Temporal Knowledge Graphs for Agentic Apps
- Zep: A Temporal Knowledge Graph Architecture for Agent Memory
- The Consolidation Problem in Agent Memory