TL;DR
SEPM (Self-Evolving Procedural Memory, «самообучающаяся память процедур») делает для команды агентов две вещи. Все шаги задачи хранятся как граф зависимостей: что нужно закончить, прежде чем начать следующее. Все действия агентов пишутся в общий журнал (blackboard) со структурой. После задачи проверенные шаги превращаются в процедуру, которую берут в следующий раз. Повторяющиеся ошибки превращаются в предупреждения с условиями.
Главная находка: процедура без зависимостей — это просто список «что делать». Агент А не знает, что агент Б не должен трогать результат, пока агент В его не проверил. Поэтому агенты дублируют работу, идут вперёд без готовой предпосылки или применяют старый рецепт там, где его условия уже не выполняются. Когда те же знания дали текстом, без графа, результат упал на 8–17 процентных пунктов. Некоторые «общие» памяти и вовсе оказались хуже, чем отсутствие памяти.
Суть метода в четырёх вещах: (1) шаги связаны предпосылками; (2) каждый ход агента записан в журнал (задача, наблюдение, действие, результат, ошибка); (3) менеджер сверяет цель, план и факты каждого агента с эталоном и исправляет отклонения; (4) передача работы между агентами требует доказательства, а не слов «готово». Всё это в статье реализовано кодом. Принципы при этом переносятся в инструкции агенту-менеджеру.
Схема метода
ДО ЗАДАЧИ:
Поиск процедур (условия применимости подходят, исключения не мешают)
→ менеджер строит граф задач: шаги + предпосылки + кто отвечает + предупреждения
ВО ВРЕМЯ ЗАДАЧИ (цикл):
Агент делает шаг → пишет в журнал: (задача, наблюдение, действие, результат, ошибка)
→ менеджер проверяет три расхождения:
цель ≠ назначенной? план ≠ назначенного? факты противоречат друг другу?
→ если да: правка и рассылка затронутым агентам
→ передача работы между агентами — только при подтверждённой предпосылке
ПОСЛЕ ЗАДАЧИ:
Берём только проверенные шаги и реальные зависимости (не просто «шёл после»)
→ создать / исправить / сузить процедуру, добавить предупреждение
→ новую версию принимаем, только если прошла проверки безопасности, состояния,
причинности и повторяемости
Пример применения
Задача: Селлер запускает карточку нового термостакана на Wildberries. В команде три агента. Копирайтер пишет заголовок и описание. Агент по характеристикам заполняет поля и размеры. Агент-публикатор загружает всё в личный кабинет. Типичная беда: публикатор уже «грузит» карточку, а характеристики ещё не сверены с описанием. Копирайтер при этом написал «объём 500 мл», а в поле стоит 450.
Промпт (для агента-менеджера):
Ты менеджер команды из трёх агентов: Копирайтер, Характеристики, Публикатор.
Цель: опубликовать карточку термостакана «Север-500» на Wildberries без ошибок в данных.
Шаг 1 (Копирайтер): заголовок и описание. Предпосылок нет.
Шаг 2 (Характеристики): заполнить поля (объём, материал, вес). Предпосылок нет.
Шаг 3 (Менеджер): сверить объём, материал и вес в тексте и в полях. Предпосылки: шаги 1 и 2 выполнены.
Шаг 4 (Публикатор): загрузить карточку. Предпосылка: шаг 3 подтверждён таблицей сверки.
Каждый агент после хода пишет одну запись:
[задача | что увидел | что сделал | результат | ошибка или «нет»]
Менеджер отмечает статус шага: ожидает / выполнен-проверен / провален.
После каждой записи проверь:
1. Цель: делает ли агент то, что назначено (а не соседнюю работу)?
2. План: совпадают ли его шаги с графом?
3. Факты: нет ли противоречий между записями разных агентов?
Если есть расхождение: назови его, верни агента к назначенному шагу, сообщи затронутым.
Передача работы допустима, только если в журнале есть ДОКАЗАТЕЛЬСТВО выполнения
предпосылки (таблица сверки, а не фраза «готово»). Без него Публикатору ответь: «Жди шаг 3».
- Объём в описании и в поле расходятся, если копирайтер писал «с запасом». Всегда сверять числа.
Результат: Менеджер выстроит работу по графу. Публикатора остановит, пока нет таблицы сверки. Если Копирайтер ушёл писать заодно инфографику, менеджер вернёт его к шагу 1. Если в журнале противоречие (500 против 450 мл), оно будет названо, а исправление уйдёт обоим затронутым агентам. В конце появится готовая карточка и журнал, из которого можно собрать процедуру для следующего товара.
Почему это работает
Слабость. Если дать агентам просто список шагов, зависимости между ними остаются в «голове» каждого. Модель не видит, что результат одного агента — вход для другого. Она знает, что делать, но не знает, при каких условиях это уже можно делать. Поэтому и случаются дубли и преждевременные действия. Старые рецепты применяются там, где их допущения уже неверны.
Сильная сторона. Модель хорошо следует явной структуре: «шаг 4 только после шага 3», «в записи есть поле “ошибка”». Она хорошо сверяет два текста и находит расхождение. Она неплохо вытаскивает из длинного протокола «что получилось и почему».
Как метод это использует. Зависимости вынесены в явный граф, поэтому проверка предпосылки превращается в простое сравнение. Журнал даёт менеджеру факты вместо слов. Процедуры сохраняются вместе с условиями применимости и исключениями, поэтому опыт не переносится туда, где он не работает.
Рычаги управления промптом: - Строгость передачи работы. «Нужно доказательство» вместо «подтверди» → меньше преждевременных шагов, но больше проверок. - Поля записи журнала. Убери «ошибка» → теряются уроки для предупреждений. Добавь «артефакт» → проще проверять передачу. - Что считать расхождением. Три вида (цель, план, факты) можно сузить до одного для простых задач и сэкономить токены. - Предупреждения с условием. «Если X, то проверить Y» работает лучше, чем общее «будь осторожен». - Условия применимости процедуры. Чёткие «когда применять» и «когда нет» не дают старому рецепту сработать на чужой задаче.
Шаблон промпта
Это перенос идей SEPM в текстовый системный промпт менеджера. Оригинал реализован кодом (поиск BM25, векторное сходство, автоматические проверки при принятии версий). Структура ниже сохраняет логику метода, но проверки делает сама модель.
Ты менеджер команды агентов: {список_агентов}.
Общая цель: {цель_и_ограничения}.
Применимые процедуры (подходят по условиям, исключения не мешают):
{процедура_1: название | когда применять | когда НЕ применять | шаги с предпосылками | предупреждения}
{процедура_2: ...}
Построй граф: у каждого шага укажи
- id и действие
- ответственный агент
- предпосылки (id шагов, чей результат нужен)
- как доказать выполнение
Учитывай предупреждения из процедур.
После каждого хода агент добавляет запись:
[задача | наблюдение | действие | результат | ошибка или «нет»]
Менеджер ведёт статус каждого шага: ожидает / выполнен-проверен / провален.
В журнал идёт только публичное: внутренние рассуждения агентов не записываем.
После каждой записи проверь три расхождения:
1. ЦЕЛЬ: действие агента соответствует его назначению и общим ограничениям?
(Похожие по словам цели могут означать разные операции.)
2. ПЛАН: шаги агента совпадают с графом по действиям и по зависимостям?
3. ФАКТЫ: нет ли записей разных агентов, которые противоречат друг другу?
При любом расхождении: назови его, дай исправление, передай затронутым агентам.
Передача результата другому агенту — только при доказательстве, что предпосылка
выполнена: {что_считать_доказательством}. Простая последовательность во времени
предпосылкой не считается.
После завершения задачи:
1. Отбери только проверенные шаги и зависимости, где результат одного реально
нужен следующему.
2. Если задача новая — оформи новую процедуру.
Если старая процедура помогла и есть улучшение — предложи новую версию.
Если ошибка повторялась — добавь предупреждение с условием срабатывания.
3. Для каждой версии укажи: когда применять, когда нет, на какой записи журнала основано.
4. Не меняй обязательные предпосылки и проверки ради краткости.
Что подставлять: {список_агентов} — роли вашей команды. {цель_и_ограничения} — задача и жёсткие рамки (бюджет, сроки, правила площадки). {процедуры} — ваши прошлые удачные цепочки (в первый раз блок пустой). {что_считать_доказательством} — таблица, скриншот, ссылка, результат проверки.
🚀 Быстрый старт — вставь в чат:
Вот шаблон менеджера команды агентов по методу SEPM. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие роли у вашей команды, что считать доказательством готовности и какие ошибки уже случались. Это нужно, потому что без реальных зависимостей и «доказательств» метод вырождается в обычный список шагов. Она возьмёт паттерн из шаблона и соберёт рабочий промпт под вашу задачу.
Ограничения
⚠️ Нужна инженерия: в статье это полноценный фреймворк на коде: поиск процедур, расчёт расхождений, автоматическое принятие версий по повторным испытаниям. В чате вы получите лишь облегчённую версию принципов, и её эффект статья не измеряла.
⚠️ Слабые модели: маленькие модели почти не используют процедурные подсказки. Самые малые конфигурации давали почти одинаковые результаты. Метод опирается на способность модели следовать структуре.
⚠️ Прирост над сильными аналогами скромнее, чем над «без памяти»: лидерство над лучшей альтернативой — единицы процентных пунктов. Большие цифры (+25–30 пунктов) считаются от варианта вообще без памяти.
⚠️ Не везде одинаково: на офисных задачах вклад самообучающейся памяти сверх общего журнала почти нулевой. Основной выигрыш там давала сама структура работы. Часть эффекта общая у блэкборда и памяти, и разделить их полностью нельзя.
⚠️ Симуляторы, не реальный бизнес: тесты шли на учебных средах (домашние задачи в симуляции, веб, офисные приложения). Перенос на ваши процессы нужно проверять.
⚠️ Старая «память» может вредить: в части конфигураций готовые методы памяти дали результат хуже, чем без памяти. Накопленный опыт без условий применимости опасен.
Как исследовали
Авторы взяли три среды: ALFWorld (бытовые задачи в симуляции), WebArena (задачи в браузере) и OfficeBench (работа в офисных приложениях). Команды агентов запускали на двух готовых многоагентных системах, AutoGen и DyLAN. Сравнивали SEPM с отсутствием памяти и тремя известными подходами: Generative Agents, MetaGPT, G-Memory. Основной запуск шёл на gpt-5-mini, чувствительность к модели проверяли ещё на двенадцати.
На AutoGen SEPM поднял результат с 59,7 до 89,6 на ALFWorld, с 12,4 до 38,3 на WebArena, с 41,7 до 54,7 на OfficeBench. Над лучшим конкурентом выигрыш скромнее, 3–8 пунктов. SEPM стал лучшим во всех шести вариантах.
Самое поучительное — абляции (отключение частей). Общий журнал дал +9,7, +15,3 и +3,3 пункта. Самообучающаяся память добавила ещё +17,2 на ALFWorld. Если заменить граф зависимостей на текстовую процедуру с теми же знаниями и тем же бюджетом контекста, результат падает на 8–17 пунктов. Знания те же, форма другая, и форма решает.
Удивило, что некоторые конкурирующие методы проседали ниже базового уровня (например, MetaGPT на DyLAN в ALFWorld). Память без структуры и условий применимости может навредить. Ещё одна находка: на ALFWorld SEPM расходует меньше токенов, чем Generative Agents и G-Memory, и при этом лучше по результату.
Адаптации и экстраполяции
🔧 Техника: «Доказательство вместо подтверждения» → меньше преждевременных передач
Добавьте в правила любому агенту, который ждёт результата другого:
Не начинай шаг, пока в журнале нет артефакта предыдущего шага (файл, таблица, ссылка,
результат проверки). Слова «готово» и «сделал» артефактом не считаются.
Если артефакта нет, напиши: «Жду: {что именно}».
🔧 Техника: файл процедур для Claude Code / Cursor → опыт не теряется между сессиями
Ведите в проекте PROCEDURES.md. Для каждой повторяющейся задачи пишите: когда применять, когда нет, шаги с предпосылками, предупреждения с условиями («если миграция трогает таблицу orders, сначала снять бэкап»). В CLAUDE.md или AGENTS.md добавьте строку: «Перед задачей найди подходящую процедуру в PROCEDURES.md. После завершения предложи правку, если появился проверенный урок». Правки принимайте сами, глазами, а не автоматически: так вы заменяете проверки принятия версий из статьи.
Ресурсы
- SEPM: Self-Evolving Procedural Memory Grounded in Task Graphs for Multi-Agent Collaboration — Yi Liu, Junwei Zhao, Li Sun, Jiansong Zhang, Sen Su (Beijing University of Posts and Telecommunications; China Telecom), препринт.
- Код: https://github.com/cookieApril/SEPM
- Бенчмарки: ALFWorld, WebArena, OfficeBench, MultiAgentBench.
- Сравнивались с: Generative Agents, MetaGPT, G-Memory; хосты AutoGen и DyLAN. Родственные работы: LEGOMem, LLMA-Mem.
