TL;DR
Evolver — фреймворк внешней процедурной памяти для кодинг-агентов (Claude Code, Codex), который сжимает сырые логи прошлых запусков в компактные структурированные карточки стратегий — «гены» (Genes) — и подгружает их в новые сессии через хуки или MCP. Вместо того чтобы хранить гигабайты старых диалогов или писать длинные текстовые инструкции вручную, система выделяет из удачных и провальных попыток три артефакта: сам алгоритм действий (Gene), конкретный пример применения (Capsule) и список запрещённых ошибок (AntiGene).
Когда агент получает сложную задачу в репозитории или терминале, он тратит львиную долю токенов и вызовов модели на слепую разведку: перебирает команды, натыкается на ошибки окружения, ищет нужные файлы и заново изобретает обходные пути. Как только сессия закрывается, весь этот выстраданный опыт сгорает — в следующей похожей задаче агент снова наступает на те же грабли и жжёт бюджет на повторное исследование. Если же просто сваливать старые логи в контекст или копить раздутые файлы навыков без отбора, устаревшие и неподходящие советы начинают сбивать модель с толку и только раздувают расход токенов.
Evolver решает это через цикл из трёх этапов: после завершения сессии он извлекает из логов кандидатов в «гены», отправляет их в карантин с проверкой на реальных запусках, а при старте новой похожей задачи инжектирует проверенные стратегии (в пределах жёсткого бюджета 12 КБ) прямо в контекст агента вместе с примером и антипаттернами.
Схема метода
ЭТАП 1 (Сбор и дистилляция — после сессии): Логи агента (команды, ошибки, итог) → извлечение стратегии (Gene), примера (Capsule) и антипаттерна (AntiGene) → помещение в карантин
ЭТАП 2 (Отбор и подача — на старте новой сессии): Описание новой задачи → поиск подходящих «генов» по сигналам совпадения (до 12 КБ) → вставка в контекст через хук или MCP
ЭТАП 3 (Эволюция по обратной связи — после выполнения): Успех/провал и расход токенов → повышение статуса «гена» из карантина в проверенные или отзыв (revocation) вредного правила
Этапы разнесены между сессиями: сбор и обновление статуса идут в фоне после задач, а подача срабатывает автоматически на старте нового запроса. Принцип структуры «гена» можно воспроизвести и вручную внутри CLAUDE.md или папки скиллов.
Пример применения
Задача: Команда разработки финтех-сервиса в Москве использует Claude Code для исправления багов в микросервисах расчёта кешбэка по СБП и деплоя в локальном Docker-контуре. Агент постоянно теряет по 40–50 шагов на поиск специфичных конфигов тестовой БД и падает на кастомном линтере безопасности. Нужно упаковать опыт прошлых сессий по формату Evolver (Gene + Capsule + AntiGene) для автоматической подгрузки при задачах в этом модуле.
Промпт:
Используй проверенную процедурную память по формату Evolver перед началом работы над задачей.
Локализация и починка гонок и ошибок округления в сервисе начисления кешбэка СБП
Применять ТОЛЬКО когда задача связана с расчётом кешбэка, лимитами СБП, задержками очереди RabbitMQ или падением интеграционных тестов в модуле billing-sbp.
billing-sbp, cashback, rounding, race condition, TestSbpAccrual
1. Не запускай полный grep по монорепозиторию — сразу открой ядро расчёта в `services/billing-sbp/internal/calc/engine.go` и обработчик очереди `consumer.go`.
2. Перед правкой воспроизведи баг точечным запуском `go test -v ./services/billing-sbp/internal/calc -run {ИмяТеста}` с флагом `-race`.
3. Проверь идемпотентность записи транзакции по ключу `ext_tx_id` в Redis-кэше.
Запустить `make lint-sec SERVICE=billing-sbp` и убедиться, что тест с флагом `-race` проходит 3 раза подряд без блокировок.
В тикете BILL-402 при параллельной отмене оплаты по QR-коду возникал паник-краш из-за обращения к nil-указателю сессии.
Добавлена атомарная проверка статуса отмены до захвата мьютекса начисления; проверка заняла 4 вызова инструментов вместо обхода всех пайплайнов.
- ЗАПРЕЩЕНО запускать `docker compose up --build` всего стенда ради проверки одной функции — это вешает сессию по таймауту.
- ЗАПРЕЩЕНО менять типы денежных полей с `decimal.Decimal` на `float64`.
Текущая задача: {описание_тикета_из_трекера}
Сначала сверься с . Если задача подходит — строго следуй , избегай действий из и заверши работу проверкой по .
Результат:
Модель не станет тратить десятки вызовов grep и bash на изучение архитектуры монорепозитория и не положит тестовый стенд полной пересборкой Docker. Она сначала подтвердит, что симптомы тикета совпадают с условиями применимости «гена», сразу перейдёт к целевым файлам модуля, проверит код на гонки потоков по короткому пути из ProceduralSteps и отчитается по чеклисту ValidationPlan, сэкономив время и токены.
Почему это работает
Обычные текстовые файлы с документацией или свалка старых диалогов плохо работают для агентов по двум причинам. Во-первых, в длинных описаниях навыков много «воды», из-за чего модель теряет конкретный порядок команд. Во-вторых, совет, который помог в одной задаче, может навредить в соседней, если у него не прописаны чёткие границы применимости — агент начинает слепо копировать старые шаги там, где они не нужны.
Архитектура Evolver обходит обе ловушки за счёт жёсткого разделения памяти на управляющие элементы. Каждый Gene хранит не просто совет, а пятёрку элементов: краткую суть, пошаговую процедуру, условия применимости, сигналы для поиска и план валидации. Рядом с ним идут Capsule (живой мини-пример успешного кейса) и AntiGene (явный стоп-лист тупиковых веток, куда агент уже ходил и обжёгся).
Второй секрет эффективности — жизненный цикл стратегии. Новые правила, вытащенные из логов автоматически, не попадают сразу в боевой контур: они проходят через карантин и испытательный срок. Если при повторном использовании «ген» приводит к ошибкам или раздувает расход токенов, система понижает его приоритет или отзывает, сохраняя в активном пуле только те процедуры, которые реально сокращают путь к решению.
Рычаги управления:
- Бюджет инъекции (в оригинале — не более 12 000 байт на сессию) → держи подгружаемые правила компактными, чтобы они не вытесняли контекст самой задачи.
- Блок → пополняй его после каждого случая, когда агент зациклился на 10+ шагов в ложном направлении; запрет тупиковой ветки экономит больше всего токенов.
- Условия применимости (ApplicabilityConditions) → формулируй как жёсткий фильтр «когда применять и когда игнорировать», чтобы агент не тащил старый шаблон в неподходящую задачу.
Шаблон промпта
{суть_решения_в_одном_предложении}
Применять, если: {условия_когда_стратегия_подходит}.
НЕ применять, если: {условия_когда_стратегия_вредна}.
{ключевые_слова_ошибки_модули}
1. {шаг_1_точечная_проверка_или_файл}
2. {шаг_2_действие_или_исправление}
3. {шаг_3_финальная_операция}
{конкретная_команда_или_критерий_проверки_результата}
{краткое_описание_прошлого_кейса}
{что_именно_сделали_и_почему_сработало}
- Не делать: {тупиковое_действие_1_из_прошлых_логов}
- Не делать: {тупиковое_действие_2_из_прошлых_логов}
Инструкция по работе с опытом:
1. В начале работы проверь . Если текущая задача не подходит — игнорируй этот блок.
2. При совпадении используй как короткий маршрут вместо слепого поиска с нуля.
3. Строго избегай шагов из и перед сдачей ответа выполни .
Задача: {описание_задачи}
Что подставлять в плейсхолдеры:
- {условия_когда_стратегия_подходит} / {условия_когда_стратегия_вредна} — конкретные признаки задачи (стек, папка, текст ошибки), отделяющие нужный сценарий от похожих.
- {шаг_1...3} — короткие команды и пути к файлам, которые позволяют пропустить фазу долгого поиска.
- {тупиковое_действие} — команды и гипотезы, на которых агент в прошлый раз потерял время или сломал сборку.
🚀 Быстрый старт — вставь в чат после долгой сессии с агентом:
Вот шаблон структуры опыта Evolver (Gene + Capsule + AntiGene). Проанализируй наш текущий диалог и упакуй найденное решение и все тупиковые попытки в этот формат для будущих сессий: [твоя задача/модуль].
Задавай вопросы, если нужно уточнить границы применимости.
[вставить шаблон выше]
LLM сама выделит из вашей длинной переписки короткий рабочий маршрут в , запишет ваши ошибки и ложные следы в и сформулирует команду проверки для .
Ограничения
⚠️ Проверка только на повторных запусках тех же задач: В эксперименте авторы извлекали «гены» из базового прогона и проверяли их на тех же самых восстановленных задачах. Насколько хорошо такие «гены» переносятся на совершенно новые, ранее не встречавшиеся задачи, исследование не доказывает.
⚠️ Точность растёт не везде: В почти половине протестированных связок «модель + бенчмарк» процент решённых задач вообще не изменился (особенно там, где базовый агент и так выбивал максимум). Главный стабильный выигрыш метода — не скачок умственных способностей, а экономия токенов и шагов на разведке.
⚠️ Скрытая стоимость дистилляции: Снижение расхода токенов в отчёте посчитано только внутри самой финальной сессии выполнения — затраты на работу LLM по извлечению и суммаризации «генов» из прошлых логов в эту цифру не включены.
Как исследовали
Команда протестировала Evolver v2.0.33 на двух популярных агентных обвязках — Claude Code и Codex — в паре с двумя моделями (deepseek-v4.1-flash и gpt-5.6-sol) на четырёх серьёзных бенчмарках: терминальных задачах Terminal-Bench 2.1, починке кода в SWE-bench Multilingual и SWE-rebench, а также многошаговом поиске GAIA. Всего собрали 16 конфигураций по 20 задач в каждой (320 парных запусков) по трёхшаговому протоколу B–E–G: сначала агент решал задачу «вхолостую» (Baseline), затем из его логов извлекали «гены» опыта (Extraction), после чего среду сбрасывали к исходному состоянию и запускали агента на той же задаче с подгруженными «генами» объёмом до 12 КБ (Gene-Augmented).
В среднем доля успешных решений выросла с 83,13% до 87,50% (+4,38 п.п.): у Claude Code прирост составил +2,50 п.п. (с 85,00% до 87,50%), а у Codex — +6,25 п.п. (с 81,25% до 87,50%), причём на Terminal-Bench 2.1 связка Codex + DeepSeek прыгнула сразу на +20 п.п. (с 70% до 90%). Но самым показательным оказался замер эффективности: средний расход токенов на задачу упал на 24,24% (с 1641,1 тыс. до 1243,3 тыс. токенов), а на 265 задачах, которые агент успешно решал в обоих режимах, расход снизился на 17,57%. В отдельных кейсах экономия была кратной: например, на задаче подсчёта токенов датасета в Terminal-Bench число обращений к модели упало со 112 до 17 вызовов, а расход токенов сократился на 86,5% — агент просто перестал блуждать по окружению вслепую.
Адаптации и экстраполяции
🔧 Техника: Секция
вCLAUDE.md→ страховка от зацикливания агента без установки внешних серверовДаже если не разворачивать сам движок Evolver, его главную находку — разделение позитивной процедуры (
Gene) и негативного опыта (AntiGene) — можно внедрить прямо в проектныйCLAUDE.mdилиAGENTS.md. Добавь правило в системный промпт агента:## Правило фиксации опыта (Exploration-to-Gene) Если в ходе задачи ты потратил больше 5 вызовов инструментов на тупиковую гипотезу или неработающую команду сборки, в конце ответа выведи блок: - **Gene (короткий путь):** какие 2-3 команды сразу ведут к решению. - **AntiGene (тупик):** какую команду или файл не нужно трогать в этом модуле и почему.
Ресурсы
Исследование: Evolver: Turning Agent Exploration into Evolving Capabilities (arXiv:2611.07595v1) Код и платформа: https://github.com/EvoMap/evolver , https://evomap.ai/ Авторы: Haoyang Zhang, Qumeng Sun, Xiao Zhang, Xiang Liu, Zhidong Fan, Junjie Wang (Infinite Evolution Lab, EvoMap)
