Помните шутку в студенчестве, когда в середине курсовой работы пишут что-то вроде “бла бла бла, все равно это никто не читает”? Как оказалось — полезный прием при работе с долговременной памятью ИИ-агентов 🤷♂️
“Компания” из нескольких агентов или пулов агентов (“пул” = отдел) сталкивалась со следующими проблемами: ▪️если им нечем было заняться в ожидании сигналов извне, они начинали “флудить в курилке” — жечь лимиты на интенсивные диалоги на малозначимые для их работы темы; ▪️со временем у них деградировала долговременная память, они плохо воспринимали изменчивость внешней среды и делали явные глупости.
Последние несколько недель я решал эти проблемы. Технические отчеты (для ваших агентов 😇) здесь, основные идеи ниже.
Антифлуд-решение было довольно простым: перед тем, как писать соседу, агент должен задекларировать 2 вещи: ▪️что он хочет от соседа ▪️как он фиксирует, что ожидаемое получено. Тут важен процесс — сама необходимость “думать” в эту сторону заставляет агентов подходить к коммуникации более осознанно. Плюс периодически лиды пулов проверяют все эти поля на предмет отношения к делу.
Решение по долговременной памяти посложнее. Поработав какое-то время и заполнив себе контекст на 30-60% агент должен выполнить “свертку”: актуализировать долговременную память, сжать и очистить свой текущий контекст.
Эту задачу решают все подобные системы (включая Codex и Claude Code) с переменным успехом, т.к. у всех проблема одинаковы: агенты фиксируют не все, что полезно, слишком обобщают, “ленятся” читать предыдущие свои записи и находить противоречия и т.д.
Чтобы подобных проблем было меньше у меня этим процессом управляет алгоритм-надзиратель (не агент), заставляющий отработать несколько векторов: ▪️Вектор “Вперед”. Все записи в памяти имеют срок актуальности, скажем, неделя или две. При наступлении этого срока агента просят решить, актуальна ли запись сейчас, что изменилось. ▪️Вектор “Назад”. Алгоритм берет все сообщения, которые пользователь слал агенту в текущей сессии, и смотрит, соответствуют ли прошлые записи тому, что было выявлено сейчас.
Казалось бы, все. Но в большинстве случаев если дать агенту файл и спроси “актуален ли он”, агент посмотрит в начало или в начало и конец, и скажет да, актуален. Ибо для него все в какой-то мере актуально. Ну если потом выяснится, что ошибся - скажет: “сорян, мой косяк”.
Поэтому вводится третий вектор - “Помощник”. Работает так: более слабая модель просматривает память и сам говорит, что актуально, а что нет. Плюс в результаты специально “подсаживаются” неверные утверждения. И агента просят за ним перепроверить.
В подобной ситуации агент уже вынужден действовать более ответственно, особенно если ему прямо говорят, что подсажены неверные данные.
Пару недель наблюдаю за этой механикой — в целом работает.
PS в тему LLM-вендинга: на днях новая Astra от OpenAI уделала все остальные LLM, включая новенький Fable.
PPS. Обещал рассказать про AI PDLC на примере проекта "Собеседники". Текущее состояние такое: группа из более чем 10 агентов приняла и разобрала чужой код, организовала свое рабочее пространство (включая весь контур тестирования), отработала обновления продукта по полному циклу “спецификации - разработка - приемка - выкат в прод”. Детали опишу позже, хочу еще понаблюдать.