Преодоление автофагии в мультиагентных LLM-системах
через асинхронный cross-role recall
В индустрии искусственного интеллекта долгое время доминировал подход «train-then-deploy» (обучи и разверни). Однако в сценариях долгосрочного взаимодействия с бизнесом классические LLM сталкиваются с фундаментальными барьерами: бесконечным раздуванием KV-кэша, затуханием контекста и потерей фокуса.
Попытки решить эту проблему через интеграцию агентов часто приводят к так называемой автофагии (Autophagy) — феномену, когда модели, непрерывно обучаясь на собственных же данных и синтетических запросах, замыкаются в «эхо-камерах» и стремительно деградируют уже через 3–4 цикла.
AURA (Advanced Unified Retrieval Architecture) предлагает решение этой проблемы за счёт разделения когнитивных обязанностей на шесть специализированных ролей и внедрения асинхронных контуров самооптимизации.
1. Математический фундамент памяти AURA
Вместо линейного вытеснения старых сообщений из контекста, AURA использует концепцию динамического полураспада (halfLife по scope) и композитного скоринга. Каждому кванту памяти присваивается временной вес, зависящий от его контекстной области (scope).
Данные профиля пользователя (scope = user_profile) обладают практически бесконечным периодом полураспада, в то время как технические переменные текущей сессии (scope = session_task) затухают за считанные минуты.
Композитный скоринг
При каждом входящем запросе система осуществляет многофакторный гибридный поиск, балансируя параметры с помощью настраиваемых коэффициентов:
- α · semantic — смысловое сходство: близость старой информации к текущему запросу по векторным эмбеддингам
- β · recency — свежесть: экспоненциальный спад ценности на основе временного шага и метрики halfLife
- γ · importance — важность: статический приоритет критически важных бизнес-параметров, защищающий их от забывания
Запрос не передаётся в базу данных «вслепую». Слой агентской классификации (Agentic Intent Classification) предварительно определяет намерение пользователя и динамически пересчитывает коэффициенты α, β, γ. Для запроса «Что мы решили на вчерашнем созвоне?» классификатор максимизирует вес свежести (β). Для вопроса «Каковы базовые правила безопасности?» — вес важности (γ).
2. Шесть когнитивных ролей: от исполнения к самообучению
Главный барьер мультиагентных систем — изолированность памяти агентов. В AURA реализован механизм cross-role recall, позволяющий разным ролям извлекать инсайты из единой базы данных, стирая границы между контекстами смежных задач.
Спецификация 6 ролей
| Роль | Зона ответственности | Триггер запуска | Контур |
|---|---|---|---|
| Colleague | Ответ пользователю, RAG-извлечение, веб-выход | Входящий запрос | Горячий (~200ms) |
| Intern | Генерация пограничных вопросов, краш-тесты памяти | Простой системы > 5 мин | Тёплый |
| Teacher | Валидация новых знаний, корректировка halfLife и importance | Intern сгенерировал > 10 кейсов | Тёплый |
| Executor | Патчи мета-конфигурации, оптимизация алгоритмов поиска | Score валидации < 0.80 | Холодный |
| Researcher | Мониторинг телеметрии, выявление паттернов деградации | Каждые 100 запросов / по расписанию | Холодный |
| Mentor | Верификация патчей, human-in-the-loop, глобальные конфиги | Executor сформировал PR | Холодный |
- Colleague (Исполнитель / RAG): фронтенд системы. Отвечает пользователю, используя текущий слепок знаний, при необходимости — контролируемый выход в веб.
- Intern (Синтетический Генератор / Эволюционер): непрерывно «атакует» систему. Генерирует каверзные, пограничные вопросы по специфике бизнеса для расширения покрытия памяти.
- Teacher (Валидатор & Тренер памяти): фильтрует бред от Intern. Оценивает применимость новых знаний и обновляет базу, прописывая базовые веса importance.
- Executor (Автономный Инженер / Кодер): анализирует неэффективность алгоритмов извлечения данных (частые промахи RAG) и самостоятельно пишет патчи для мета-конфигурации системы.
- Researcher (Мультиагентный Аудитор): осуществляет мониторинг телеметрии и логов, выявляет системные паттерны деградации и активирует контуры оптимизации.
- Mentor (Утверждающий / Guardrail): финальный рубеж контроля. Верифицирует изменения в коде от Executor на основе жестких математических ограничений.
Триггеры вызова холодного контура (Роль 5 → Роль 4)
Researcher (Мультиагентный Аудитор) принимает решение о вызове Executor на основе следующих детерминированных критериев:
| Метрика | Порог | Действие Researcher |
|---|---|---|
| Средний score валидации Intern | < 0.70 за 24 часа | Сбор логов ошибок, активация Executor |
| Повторяющиеся ошибки в одной категории знаний | > 3 за день | Формирование demand на патч мета-конфига |
| Время ответа Colleague превышает лимит | > 5 сек в 10% запросов | Сигнал в холодный контур на оптимизацию RAG |
| Отсутствие новых знаний по активной теме | > 30 дней без обновления | Запуск Intern на генерацию тестов |
| Коэффициент α (semantic) стабильно ниже β (recency) | α / β < 1.0 более 7 дней | Корректировка весов композитного скоринга |
3. Трёхконтурная модель выполнения: баланс скорости и чистоты
Каждое добавление новой роли в систему увеличивает количество шагов генерации текста и усложняет граф вызовов. Если в системе из трёх ролей цепочка рассуждений линейна O(N), то введение перекрёстной валидации порождает циклы обратной связи, превращая стоимость вычислений в экспоненциальную зависимость O(K^N).
- Горячий контур (Online, ~200ms): задействует исключительно Colleague. Композитный скоринг, извлечение контекста, ответ пользователю.
- Тёплый контур (Near-line): выполняется асинхронно в фоне. Intern генерирует гипотезы, Teacher размечает и корректирует веса фактов в базе знаний.
- Холодный контур (Offline / Nightly): активируется Researcher по триггеру — падение среднего score валидации ниже 80%. Executor анализирует логи, формирует пул изменений. Mentor проверяет патч по детерминированным правилам.
Эталонная реализация композитного скоринга
Базовый Python-код, фиксирующий математическую модель оценки релевантности памяти:
import math
SCOPE_HALFLIFE = {
"/news": 90, "/market": 90,
"/objections": 730, "/scripts": 730,
"/regulations": 3650, "/rules": 3650,
"/cases": 730, "/precedents": 365,
}
def compute_score(semantic, days, importance, half_life,
alpha=0.5, beta=0.3, gamma=0.2, floor=0.05):
recency = max(2 ** (-days / half_life), floor)
return round(min(alpha * semantic + beta * recency + gamma * importance, 1.0), 4)
def resolve_halflife(scope):
for prefix, hl in SCOPE_HALFLIFE.items():
if scope.startswith(prefix):
return hl
return 30 # default
Полный код — в публичном репозитории: github.com/alexenti-code/AURA-Retrieval
Заключение
Масштабирование ролей (3 → 6 → 9 → 12) подчиняется закону убывающей доходности. Переход от 3 ролей к 6 позволяет закрыть уязвимость марковских цепей и отсечь системный шум, поднимая чистоту памяти с пограничных 75% до контролируемых 92–95%. Дальнейшее расширение штата агентов до 9 или 12 ролей даёт минимальный прирост точности, но драматически бьёт по времени инференса и бюджетам.
Архитектурный паттерн 6 ролей с асинхронным разделением контуров на сегодняшний день является наиболее эффективным и безопасным решением для создания вечной корпоративной памяти ИИ-агентов.