Память агента снова начала сыпаться. Буквально два дня — и контекст теряется, хотя сообщений накопилось нормально. Не мог понять, в чем дело.
Вчера пришла идея — сделать как у человека.
Как работает человеческая память
У нас есть краткосрочная и долгосрочная память. Мы не сразу помним всё. Чтобы что-то вспомнить, нужно начать копать в глубину. Нужны маячки — определения того, что было и как это искать.
У меня стоит векторная база, которая помнит всё. Но нужны ориентиры для поиска.
Как я это реализовал
Краткосрочная память
Общий контекст — 60 сообщений (30 моих, 30 агента).
Нейросеть держит их в оперативном доступе. С каждым новым сообщением старые смещаются вниз.
Среднесрочная память (слепки)
Когда сообщений становится больше 25, нейросеть берёт всё, что ниже этой границы, и делает слепок — суммаризацию.
Этот слепок:
• Заталкивается в базу
• Передаётся в системный промпт
Получается цепочка:
- 25 новых сообщений накопилось → делается слепок
- Слепок уходит в память
- Сообщения смещаются ниже
- Модель помнит суть через слепки
Таким способом я передаю в системный промпт максимум 20 суммаризаций вместо тысяч сообщений.
Долгосрочная память
Векторная база хранит вообще всё. Дал модели доступ к поиску по среднесрочным слепкам.
Что получилось
Три уровня памяти:
• Краткосрочная: 60 последних сообщений (держит постоянно)
• Среднесрочная: слепки блоков по 25 сообщений (маячки для поиска)
• Долгосрочная: векторная база (хранит всё)
Пока работает хорошо.
Что дальше
Нужно ждать и тестировать. Когда наберётся очень большое количество сообщений, станет понятно, насколько сильно растягивается промпт.
Думаю, можно будет добавить ещё один уровень маячков выше — чтобы модель могла искать ещё глубже.
Посмотрим, как поведёт себя система под нагрузкой.