7 760 статей
arXiv:2611.07595 84 5 нояб. 2026 г. FREE

Evolver: превращение истории поиска агента в переиспользуемые «гены» стратегий с экономией до четверти токенов

КЛЮЧЕВАЯ СУТЬ
Кодинг-агенты сжигают львиную долю бюджета на слепую разведку в репозитории, а после закрытия сессии весь найденный опыт пропадает. Фреймворк Evolver позволяет превращать сырые логи прошлых запусков в компактные карточки процедурной памяти и автоматически подгружать их в новые задачи. Фишка метода: опыт делится на три блока — алгоритм (Gene), пример (Capsule) и стоп-лист ошибок (AntiGene). Новые правила проходят карантин с проверкой, что экономит до четверти токенов без засорения контекста старыми диалогами.
Адаптировать под запрос
⚡

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)


📋 Дайджест исследования

Ключевая суть

Кодинг-агенты сжигают львиную долю бюджета на слепую разведку в репозитории, а после закрытия сессии весь найденный опыт пропадает. Фреймворк Evolver позволяет превращать сырые логи прошлых запусков в компактные карточки процедурной памяти и автоматически подгружать их в новые задачи. Фишка метода: опыт делится на три блока — алгоритм (Gene), пример (Capsule) и стоп-лист ошибок (AntiGene). Новые правила проходят карантин с проверкой, что экономит до четверти токенов без засорения контекста старыми диалогами.

Принцип работы

Сваливать старые логи в промпт вредно — агент путается в воде и тащит советы из одной задачи в другую, где они ломают сборку. В Evolver память работает как аптечка скорой помощи: строго до 12 КБ на сессию и с жёсткой инструкцией на каждой ампуле. Упакуй опыт в связку: условия применимости + точный маршрут команд + явный запрет тупиковых действий. Если на новых запусках ген стратегии раздувает расход токенов или ведёт к сбоям, система понижает его статус или отзывает из рабочей базы.

Почему работает

Длинные текстовые инструкции размывают внимание модели, а советы без чётких границ заставляют агента копировать чужие шаги в неподходящих модулях. Evolver решает это через жёсткую структуру из пяти полей внутри каждого блока Gene: краткая суть, условия применения, сигналы поиска, пошаговая процедура и план проверки. Явный блок AntiGene отсекает тупиковые ветки, на которых агент раньше застревал на 10+ шагов. В итоге модель пропускает слепой перебор файлов через grep и сразу бьёт в нужные точки кода.

Когда применять

Разработка с ИИ-агентами (Claude Code, Codex) → конкретно для повторяющихся задач по ремонту багов, сборке и деплою в сложных репозиториях, особенно когда агент раз за разом спотыкается на одних и тех же конфигах, линтерах или тестах. НЕ даёт скачка точности там, где базовый агент и так решает задачу с первой попытки — главный выигрыш здесь в экономии токенов и шагов.

Мини-рецепт

1. Опиши алгоритм в блоке : укажи точные пути к файлам и команды в , а также конкретную команду финальной проверки в .
2. Задай жёсткий фильтр в : напиши явно, при каких симптомах и в каких папках правило применять, а когда его нужно игнорировать.
3. Приложи живой кейс в : в 2 строках зафиксируй прошлый баг и применённое действие, которое быстро решило проблему.
4. Выпиши грабли в : перечисли команды, которые вешают сессию или ломают код (например, полная пересборка стенда), и держи общий объём правил в пределах 12 КБ.

Примеры

[ПЛОХО] : Вот лог нашей прошлой сессии на 500 строк, прочитай его и почини новый баг с кешбэком СБП похожим образом.
[ХОРОШО] : Используй память Evolver. Только для модуля billing-sbp и расчёта кешбэка1. Открой services/billing-sbp/internal/calc/engine.go без полного grep. 2. Запусти go test -v -racemake lint-sec SERVICE=billing-sbpКраш при отмене QRПроверка статуса до захвата мьютексаЗАПРЕЩЕНО запускать docker compose up --build всего стенда
Источник: Evolver: Turning Agent Exploration into Evolving Capabilities
ArXiv ID: 2611.07595 | Сгенерировано: 2026-11-08 18:47

Проблемы LLM

ПроблемаСутьКак обойти
Агент начинает разведку проекта с нуля в каждой новой сессииПри закрытии диалога найденные пути к файлам и рабочие команды пропадают. В похожей задаче агент снова тратит десятки шагов на слепой поиск. Он наступает на старые ошибки окружения и впустую сжигает токеныУпакуй опыт прошлой сессии в карточку из трёх блоков: короткий алгоритм действий, живой пример и список запрещённых тупиковых шагов. Подгружай эту карточку на старте похожих задач
Агент слепо копирует старые инструкции в неподходящие задачиДаёшь модели большой файл правил или старые логи целиком. В новой задаче совет из другого модуля сбивает модель с толку. Агент выполняет лишние команды и ломает сборку там, где нужен другой подходДобавь в начало каждого правила жёсткий фильтр применимости: явно укажи признаки задачи, когда следовать инструкции, и случаи, когда её нужно полностью игнорировать

Методы

МетодСуть
Карточка опыта: маршрут, пример и стоп-лист ошибокПосле сложной сессии сожми переписку в компактный блок памяти до 12 КБ. Включи в него фильтр применимости , точные шаги , команду проверки , один пример и список тупиков . Почему работает: Короткий маршрут заменяет слепой поиск по проекту. Фильтр применимости защищает от переноса совета в чужую задачу, а стоп-лист отсекает заведомо ложные ветки. Когда применять: Повторяющиеся задачи в одном репозитории или сложной среде. Когда не работает: Разовые уникальные задачи без общей структуры

Тезисы

ТезисКомментарий
Запрет тупиковых шагов экономит больше ресурсов, чем общие советыНа разведке агент теряет основную часть бюджета в ложных направлениях: запускает тяжёлые сборки или ищет файлы не в тех папках. Явный список прошлых провалов сразу отсекает эти циклы. Применяй: После каждой долгой отладки дописывай в промпт блок "Не делать" с командами, которые завели в тупик
Правила без границ применимости ухудшают работу при росте базы знанийКогда в промпте накапливается много советов без условий включения, модель путает контексты. Совет для одного микросервиса начинает вредить в соседнем. Применяй: Начинай каждую инструкцию в памяти с пары условий: "Применять только если..." и "Игнорировать если..."
📖 Простыми словами

Evolver: Turning Agent Exploration into Evolving Capabilities

arXiv: 2611.07595

Суть Evolver в том, что он лечит главную болезнь кодинг-агентов — «память золотой рыбки». Сейчас нейронки типа Claude Code либо каждый раз изобретают велосипед, тратя твои деньги и время на одни и те же ошибки, либо тонут в гигабайтах старых логов, где полезный совет погребен под тонной мусора. Эта штука работает как внешняя процедурная память: она выжимает из прошлых сессий сухой остаток, превращая хаотичный опыт в компактные инструкции, которые агент подхватывает на лету.

Это как если бы ты каждый раз учил стажера варить кофе с нуля, а потом просто выдал ему шпаргалку с секретами, где написано: «не перегрей молоко» и «вот эта кнопка западает». Вместо того чтобы пересказывать всю историю кофейни, ты даешь ему четкий алгоритм, пример идеальной чашки и список того, за что его уволят. Агент перестает тупить в знакомых ситуациях, потому что у него в кармане всегда лежит готовый рецепт, проверенный на практике.

Технически это упаковано в три сущности: Gene (сам алгоритм действий), Capsule (живой пример, как это сработало) и AntiGene (список граблей, на которые наступать нельзя). Вместо того чтобы скармливать модели «воду» из документации, Evolver подгружает эти «гены» через хуки или протокол MCP именно тогда, когда они нужны. Если агент чинит баг в базе данных, он не вспоминает, как верстать кнопки, а берет конкретный Gene для работы с SQL, где уже прописаны все нюансы твоего кривого конфига.

Тестировали это на кодинге, но принцип универсален: любая сложная деятельность, где есть повторяющиеся сценарии, может быть «оцифрована» таким образом. Это переход от тупого хранения истории чатов к эволюции навыков. Сегодня ты научил агента обходить специфичный линтер, завтра он сохранил это как «ген», и послезавтра любой другой агент в твоей команде уже знает это по умолчанию. SEO для кода уходит в прошлое, наступает эра процедурных знаний.

Короче: хватит надеяться, что модель «сама вспомнит» контекст из длинного промпта — это не работает и жрет токены. Нужно переходить на структурированный опыт, где каждая удача и каждый провал превращаются в полезную мутацию. Либо ты внедряешь такие системы памяти, либо твой агент так и будет тратить по 50 шагов на поиск конфига, который лежит у него под носом. 6 элементов Evolver делают нейронку умнее с каждым запуском, а не просто заставляют её быстрее ошибаться.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с