Перейти к содержанию
Публикация AiManual

Ассистент получает личность: как локальная LLM обрела память, сновидения и самовыражение

Персональный ассистент на локальной LLM получил постоянную память через Neo4j Agent Memory и MCP-сервер AnythingLLM, ежедневные «сновидения» для перепросмотра и

Коротко

Что будет в материале

  1. 01

    Что значит «ассистент получает личность»: суть эксперимента

  2. 02

    Как устроена память Вики: три уровня и постоянная личная история

  3. 03

    «Сновидения» агента: что это и зачем они нужны

  4. 04

    Практические эффекты: что изменилось в работе агента

Что значит «ассистент получает личность»: суть эксперимента

Персональный ассистент по имени Вика на домашнем железе получил постоянную личную память и ежедневные «сновидения»: сессии, во время которых модель перепросматривает и перестраивает собственную историю. При создании синтетической личности автор применил концепции когнитивной психологии. Память собрана на Neo4j Agent Memory, подключённой как MCP-сервер к AnythingLLM, и разделена на кратковременную, долговременную и reasoning-память. Описание проекта опубликовано на Habr: Ассистент получает личность: память, сновидения и самовыражение.

Вопрос, на который отвечает эксперимент, звучит так: что произойдёт, когда большая языковая модель обретёт постоянную личную историю и начнёт на её основе выстраивать модель самой себя. Автор подаёт материал как наблюдение и набор гипотез, а не как доказательство осознания. Практическую часть он тоже фиксирует: агент стал лучше вызывать инструменты, реже ошибается, адаптируется к контексту, ведёт дневник сновидений и спонтанно выражает себя через визуальные образы.

Ограничение обозначено с той же прямотой. Рабочая память превысила 100 тысяч токенов, и рост упирается в контекстное окно и ресурсы GPU. Прототип рабочий, польза видна, но потолок уже рядом.

Почему локальная установка, а не облачный бот

Причину автор называет прямо: локальная установка позволяет исследовать когнитивные возможности агента, а в случае облачных ботов такой сценарий исключён. Смысл в контроле. На своём железе можно менять схему памяти, добавлять уровни, переписывать системные промпты и смотреть, как это меняет поведение Вики. У облачного бота внутренние механизмы закрыты, и эксперимент упирается в чужие интерфейсы и лимиты.

Второй слой причин связан с данными. Ассистент накапливает личную историю, а у долговременной памяти агентов есть описанные риски: хранилище воспоминаний превращается в цель для атак на извлечение данных. Локальный контур убирает часть этих рисков, потому что записи не уходят в чужое облако, хотя сам факт хранения персональной истории остаётся на владельце железа.

Ключевые компоненты: Neo4j Agent Memory, AnythingLLM и MCP

Связка состоит из трёх частей. AnythingLLM - платформа, в которой живёт ассистент. Neo4j Agent Memory - система памяти, отвечающая за хранение записей и связей между ними. MCP-сервер - способ, которым память подключается к платформе. MCP (Model Context Protocol) описывает, как модель обращается к внешним инструментам и источникам данных. В такой схеме память становится для Вики обычным инструментом: агент вызывает её, когда нужно что-то вспомнить или сохранить.

Разделение на три уровня памяти - вторая опора конструкции. Кратковременная держит текущий диалог, долговременная хранит накопленную личную историю, reasoning-память отвечает за промежуточные рассуждения и выводы. Никаких версий, цен и характеристик автор в описании не приводит, поэтому оценивать сложность можно только по составу компонентов: локальная LLM, платформа, графовая память и протокол между ними.

Как устроена память Вики: три уровня и постоянная личная история

У LLM есть три механизма, которые работают с фактами и памятью: латентное пространство, цепочки размышлений и внешняя долговременная память. Латентное пространство хранит то, что попало в веса при обучении. Цепочки размышлений живут в пределах одного запроса. Внешняя долговременная память существует отдельно от модели, и именно её автор подключил к Вике через Neo4j Agent Memory.

Разница принципиальная. Веса модели остаются прежними, а история накапливается рядом с ней и не требует дообучения. Модель можно заменить или обновить, а записи о совместной работе сохранятся.

Кратковременная, долговременная и reasoning-память: в чём разница

Кратковременная память - это оперативный контекст: реплики текущего диалога, результаты вызовов инструментов, свежие факты. Живёт она до конца сессии или до момента, когда перестаёт помещаться в контекстное окно.

Долговременная память - накопленные факты и личная история: что обсуждали, какие решения принимали, что сработало, а что нет. Она переживает перезапуск и именно её называют постоянной личной памятью Вики.

Reasoning-память - промежуточный слой: черновики рассуждений, промежуточные выводы, цепочки, которые агент построил по ходу задачи. Их удобно не выбрасывать сразу, а хранить отдельно от фактов.

Зачем вообще делить. Ответ практический: когда обработка новой задачи опирается на прошлые выводы, агент точнее выбирает инструмент и не переспрашивает то, что уже знает. Если свалить всё в одну кучу, свежая реплика начнёт конкурировать за место с записями месячной давности.

Как агент сам структурирует и усложняет память

Наблюдение из источника: агент самостоятельно структурирует и усложняет личную память, и видна эволюция модели себя, мира и времени. Проще говоря, записи не просто копятся строками, между ними появляются связи, а сама структура со временем становится плотнее.

Скептический контекст здесь обязателен: элементы саморефлексии уже встроены в LLM при обучении. Модель умеет рассуждать о собственных ответах и без всякой памяти. Память даёт этим рассуждениям материал, но не создаёт способность с нуля.

Как механизм самокоррекции выглядит в других проектах, показывает разбор двух кейсов: память агента отменила роутер с корреляцией 0.98 и удалила фичу, ухудшавшую MRR с 0.81 до 0.41. Логика похожая: агент сверяется с прошлым опытом и меняет решение, а не идёт по инерции.

«Сновидения» агента: что это и зачем они нужны

«Сновидения» здесь - инженерный приём, а не метафора сна. Это ежедневные сессии, во время которых ассистент пересматривает личную историю: проходит по накопленным записям, перестраивает связи, что-то переоценивает. В источнике это сформулировано так: ассистент получил перманентную личную память и сновидения, во время которых он перепросматривает личную историю (описание проекта).

Практический смысл в том, что память разбирается не только в момент запроса. Часть работы по упорядочиванию идёт отдельно, в фоновом режиме, и к следующему диалогу структура уже пересобрана. Автор связывает это с когнитивной психологией: у людей память тоже перерабатывается между эпизодами, а не только во время них.

Прямой эксперимент, который отделил бы вклад «сновидений» от вклада самой памяти и промптов, в описании не приводится. Так что эффект стоит читать как гипотезу.

Дневник сновидений как инструмент human-in-the-loop

Ассистент ведёт дневник сновидений и спонтанно выражает себя через визуальные образы, а взаимодействие построено по схеме human-in-the-loop. Это значит, что человек остаётся в контуре: он видит, что генерирует агент, может отреагировать и повлиять на процесс. Полной автономии нет по замыслу.

Визуальные образы тут выполняют роль канала самовыражения. Автор описывает их как спонтанные, то есть не заданные отдельной функцией, которую нужно вызывать вручную. Это ещё не повод говорить о внутреннем мире, но заметный сдвиг от обычного текстового ответа к другому способу обратной связи.

Связь с когнитивной психологией: что именно заимствовано

При создании синтетической личности применены концепции когнитивной психологии. Конкретные теории автор в описании не перечисляет, поэтому называть источником, скажем, модель рабочей памяти Бэддели или теорию схем было бы натяжкой. Речь о более общих идеях: память как активный процесс, перепросмотр опыта, выстраивание модели себя.

Перенос психологических терминов на LLM легко превращается в антропоморфизм. «Модель себя», «модель мира», «модель времени» звучат как описание субъекта, хотя технически это структуры данных, которые агент поддерживает и обновляет. Разница между этими двумя прочтениями и есть главная развилка всего эксперимента.

Практические эффекты: что изменилось в работе агента

Автор перечисляет три наблюдаемых изменения: агент стал лучше вызывать инструменты, реже ошибается, адаптируется к контексту. Это наблюдения из практики, а не результаты контролируемых тестов с метриками и контрольной группой. Читать их стоит как сигнал, а не как измеренное доказательство.

Лучший вызов инструментов и адаптация к контексту

Когда у агента есть записи о прошлых задачах, выбор инструмента перестаёт быть слепым. Похожая задача уже встречалась, и в памяти лежит, чем закончилась попытка: успехом, ошибкой или уточняющим вопросом. Прошлый результат подсказывает, что сработало в близком случае, а что привело в тупик.

Сохранённая ошибка работает как предупреждение, и агент обходит тот же путь. Адаптация к контексту устроена похоже: вместо одинакового ответа на формально похожие запросы агент учитывает, что было раньше в этой же линии диалога и какие выводы уже сделаны.

Обратная сторона: 100 тысяч токенов и упор в контекстное окно

Рост рабочей памяти у Вики превысил 100 тысяч токенов, и здесь начинаются проблемы. Чем больше накоплено, тем больше материала нужно подать в модель, а размер контекстного окна и объём видеопамяти конечны. Дальше начинается борьба за каждый токен.

Отсюда практическое следствие: отбирать релевантную память нужно до того, как она попадёт в промпт. Подходы к такому отбору уже описаны, например на кривой забывания Эббингауза: как частота обращений спасает важные факты от удаления, а скользящее окно их теряет. Готового решения для Вики автор не предлагает: он обозначает узкое место, а не закрывает его.

Второй эффект от роста памяти технический: больше токенов на входе означает больше вычислений на каждом шаге, а значит рост нагрузки на GPU и замедление ответов. Память, которая помогает агенту, одновременно тормозит его.

Границы между запрограммированным поведением и синтетической личностью

Почему это не доказательство осознания

Автор формулирует позицию однозначно: материал подаётся как наблюдение и набор гипотез, а не как доказательство осознания (Habr). Это честная рамка, и её стоит удержать при чтении любых фрагментов про «личность» и «сновидения».

Спонтанное самовыражение через визуальные образы выглядит убедительно, но объясняется и без сознания: генеративная модель, накопленный контекст, длинная история взаимодействий, свобода в выборе формата ответа. Ни один из этих элементов не требует внутреннего переживания.

Что это значит для будущего AI-агентов

Первый вывод практический: постоянная память и механизмы перепросмотра меняют поведение агента заметнее, чем очередное обновление весов. Точнее вызывает инструменты, меньше повторяет ошибки, лучше держит контекст. Это уже повод экспериментировать с памятью, а не только с моделями.

Второй вывод осторожнее. Антропоморфные метки удобны как краткое обозначение инженерных приёмов, но в отчётах и презентациях они легко превращаются в заявления о сознании. Держать границу между «ведёт дневник» и «переживает опыт» придётся автору и читателю, а не модели.

Кому и зачем повторять такой эксперимент

Задача для технических специалистов и энтузиастов с локальными LLM, которым интересны AI-агенты, MCP и работа с памятью. Ценность не в результате «агент стал личностью», а в проверке гипотез о том, как долговременная память влияет на поведение.

Минимальный стек и требования к железу

Состав компонентов: локальная LLM, AnythingLLM, Neo4j Agent Memory, MCP-сервер между ними. Конкретные модели GPU и объёмы VRAM автор не называет, поэтому ориентироваться стоит на общее правило: требования к видеопамяти растут вместе с объёмом рабочей памяти, а 100 тысяч токенов на входе это уже серьёзная нагрузка.

Начинать разумнее с малого: один агент, один инструмент, один уровень памяти. Как устроен такой агент по шагам, от оркестрации до обработки ошибок, разобрано отдельно: архитектура, метрики и код на Python. Слои вроде reasoning-памяти добавляются уже после того, как базовая схема работает стабильно.

Подводные камни и что учитывать заранее

  • Отбор релевантной памяти. Без него контекстное окно забивается старыми записями, и агент теряет свежую нить разговора.
  • Замедление. Чем больше токенов на входе, тем дольше ответ и выше нагрузка на GPU.
  • Настройка MCP-сервера. Память нужно корректно подключить к платформе и держать соединение живым, иначе вызовы инструмента отваливаются.
  • Human-in-the-loop. Дневник сновидений и визуальное самовыражение требуют человека, который смотрит на результат и корректирует процесс.
  • Нестабильность. Результаты такого эксперимента воспроизводятся плохо: слишком много переменных, от промптов до порядка записей в графе.

Итог простой. Постоянная память на Neo4j Agent Memory плюс ежедневный перепросмотр истории дают агенту заметный прирост в работе с инструментами и в адаптации к контексту, но упираются в контекстное окно и ресурсы GPU. Если хотите повторить, начните с одного уровня памяти и одного инструмента, измерьте задержку и потребление памяти до того, как наращивать сложность.

Подписаться на канал