Память в агентах: Simple/Postgres Memory, ключи сессии, «почему чат забывает»
Почему агент n8n забывает историю чата, как работают ключи сессии и когда Simple Memory или Postgres Memory является правильным выбором.
Если чат-бот n8n после первого ответа больше не помнит имя пользователя или предыдущие вопросы, это почти всегда связано с настройкой памяти AI Agent Node, а не с самой языковой моделью. n8n не сохраняет историю разговора автоматически: только когда вы подключаете к агенту узел памяти, такой как Simple Memory или Postgres Chat Memory, и этот узел имеет уникальный ключ сессии для каждого разговора, агент может находить предыдущие сообщения. Если ключ сессии отсутствует, одинаков при каждом запуске, или Chat Trigger не установлен на "From Memory", агент ведет себя так, будто каждое сообщение начинает новый разговор. Состояние: июль 2026.
Почему чат "забывает": наиболее частые причины
Прежде чем настраивать сам узел памяти, стоит взглянуть на типичные источники ошибок, которые на практике снова и снова приводят к одному и тому же симптому.
- Узел памяти не подключен: Без подключенного суб-узла памяти AI Agent Node не имеет памяти, каждый запрос обрабатывается изолированно.
- Ключ сессии постоянен или пуст: Если ключ сессии имеет одно и то же фиксированное значение при каждом запросе, или отсутствует, все разговоры попадают в один и тот же общий пул памяти или вообще не сопоставляются.
- Chat Trigger не установлен на "From Memory": Согласно документации n8n по узлу Chat Trigger вы должны установить опцию "Load Previous Session" на "From Memory" и подключить триггер и агент к одному и тому же узлу памяти, иначе агент не загрузит предыдущую историю.
- Simple Memory в режиме очереди: Тот, кто использует n8n в режиме очереди с несколькими воркерами, согласно документации по узлу Simple Memory не может на это полагаться, поскольку n8n не гарантирует, что последовательные вызовы будут обработаны одним и тем же воркером.
Ключ сессии: сердце сопоставления памяти
Ключ сессии это ключ, под которым n8n сохраняет определенный разговор в памяти. Согласно документации n8n, как Simple Memory, так и Postgres Chat Memory требуют именно этот единственный обязательный параметр, чтобы задать "the key to use to store the memory in the workflow data", а в случае Postgres в таблице базы данных. На практике это означает: каждому разговору нужно собственное стабильное значение, например ID чата из Chat Trigger, номер телефона в сценариях телефонии или ID клиента из вашей CRM. Если вместо этого вы используете выражение, которое меняется при каждом запуске, при каждом сообщении создается новая пустая память. Деталь, которую легко упустить: суб-узлы, такие как узлы памяти, согласно документации, разрешают выражения всегда только для первого элемента, а не для каждого элемента отдельно, как обычные узлы. Если вы обрабатываете несколько сообщений чата в одном пакете, это может привести к неверному или смешанному ключу сессии.
Simple Memory и Postgres Memory: ключевое отличие
Simple Memory, указанный в списке узлов как Window Buffer Memory, хранит историю разговора, согласно документации, непосредственно в данных workflow работающего экземпляра n8n, что делает его самым быстрым способом вообще дать агенту память. Загвоздка: эта память не привязана постоянно к базе данных и, согласно n8n, явно работает ненадежно в производственном workflow, работающем в режиме очереди. Postgres Chat Memory же записывает каждое сообщение в таблицу вашей собственной базы данных Postgres, которую n8n при необходимости создает автоматически. Таким образом история переживает перезапуски, деплои и несколько воркер-процессов. Оба типа узлов имеют общий параметр "Context Window Length", который определяет, сколько предыдущих взаимодействий агент учитывает в качестве контекста: слишком высокое значение неоправданно увеличивает расход токенов и время ответа. Важно для Postgres: если вы подключаете несколько узлов Postgres Chat Memory в одном workflow, согласно документации они по умолчанию обращаются к одному и тому же экземпляру памяти. Раздельные разговоры нуждаются, следовательно, в разных ключах сессии, а не в разных узлах.
Правильное подключение Chat Trigger и агента
Часто упускаемый шаг касается самого узла Chat Trigger. Только когда вы переключите там "Load Previous Session" с "Off" на "From Memory", вообще появляется возможность подключить узел памяти, и n8n загружает предыдущую историю при начале сессии. n8n также явно рекомендует подключать Chat Trigger и агент к одному и тому же узлу памяти, чтобы оба компонента использовали один и тот же источник истины. В противном случае два отдельных узла памяти с разными ключами сессии создают два параллельных, несогласованных набора памяти для одного и того же разговора, что проявляется как непоследовательное или противоречивое поведение ответов.
На практике: когда усилия оправданы
Для внутреннего тестового бота или proof of concept обычно достаточно Simple Memory. Как только агент начинает работать в продакшене с реальными данными клиентов, обслуживает нескольких одновременных пользователей, или должно быть прослеживаемо, кто, когда и что сказал агенту, постоянное хранение в собственной базе данных, такой как Postgres Chat Memory, является более надежным выбором, в том числе потому, что историю там можно экспортировать, проверить и при необходимости удалить. Тот, кто хочет построить такую архитектуру вместе с чистой концепцией ключей сессии, найдет отправную точку в услугах ИИ-агентов NordFlux, а также в общей автоматизации n8n.
Часто задаваемые вопросы о памяти в агентах n8n
Что именно такое ключ сессии в n8n?
Ключ сессии это идентификатор, под которым узел памяти сохраняет и находит историю разговора. Он должен быть стабильным и уникальным для каждого разговора, например ID чата из Chat Trigger, иначе агент больше не сможет сопоставить предыдущие сообщения.
Почему Simple Memory иногда недостаточно?
Согласно документации n8n, Simple Memory хранит историю в данных workflow работающего экземпляра и поэтому не привязана к базе данных. В производственных workflow в режиме очереди с несколькими воркерами узел поэтому явно работает ненадежно, потому что не гарантируется, что последующие вызовы достигнут того же воркера.
Могу ли я использовать несколько узлов памяти в одном workflow?
Да, но несколько узлов Postgres Chat Memory, согласно документации, по умолчанию обращаются к одному и тому же экземпляру памяти. Для раздельных разговоров вам нужны разные ключи сессии, не обязательно разные узлы.
Нужно ли мне дополнительно что-то настраивать в Chat Trigger, чтобы память работала?
Да. Опция "Load Previous Session" должна быть установлена на "From Memory", иначе n8n не подключит триггер к узлу памяти и не загрузит предыдущую историю. Кроме того, Chat Trigger и агент должны быть подключены к одному и тому же узлу памяти.
NordFlux UG (haftungsbeschränkt)
NordFlux создаёт цифровых сотрудников для организаций: автоматизации и КИ-агентов, которые берут на себя повторяющуюся работу. Вы сохраняете контроль.
Конкретные вопросы по автоматизации или КИ?
В рамках бесплатного первичного анализа мы напрямую обсудим Ваш случай. Без обязательств.