3,583 papers
arXiv:2610.22915 80 16 окт. 2026 г. FREE

RewardEngine: сначала критерии с проверками и «квитанциями», потом работа агента

КЛЮЧЕВАЯ СУТЬ
Отчёт выглядит отлично, процент выкупа в нём 92%, а по строкам выгрузки выходит 78%. Модель-судья кивает, потому что судит по общему впечатлению, а не по пересчёту. RewardEngine позволяет заставить агента сверять свою работу с исходными данными и показывать, где именно она врёт. Агент до сдачи работы пишет себе проверки, каждая из которых пересчитывает цифру по исходникам и выдаёт «квитанцию»: «ожидал 78%, получил 92% – провал». Фишка: сами проверки сначала проходят допрос на заведомо плохих и пограничных примерах. Только потом их замораживают. Итог: агент видит не «стало хуже», а «вот эта цифра не сходится с вот этими строками».
Адаптировать под запрос
⚡

TL;DR

RewardEngine — схема, где агент до сдачи работы составляет себе набор проверок. Часть проверок — жёсткие тесты «да/нет», часть — шкальные рубрики качества. Каждая проверка пересчитывает результат по исходным данным и возвращает «квитанцию»: «ожидал 78%, получил 92% — провал». Потом проверки испытывают на заведомо плохих и пограничных примерах, замораживают, и только после этого агент правит работу по ним.

Главная боль в том, что у открытых задач (отчёт по таблицам, разбор тикетов) нет готового правильного ответа. Модель-судья смотрит на «общее впечатление», и красивый отчёт с неверной цифрой проходит. Сам агент тоже не понимает, что именно чинить: ему говорят «стало лучше/хуже», а не «вот эта цифра не сходится с исходными строками». Дополнительный риск: проверка, которую написала сама модель, может быть кривой. Она читает не ту колонку или пропускает почти-правильный вариант.

Суть метода в трёх ходах. Строим проверки по задаче и первым черновикам. Атакуем их контрпримерами и чиним так, чтобы не сломать то, что уже работало. Используем замороженный набор: критик берёт до трёх проваленных проверок и даёт правки, а новая версия заменяет исходную только если она строго лучше и не провалила ничего из того, что исходная проходила.

🔬

Схема метода

ЭТАП 1. СТРОИМ НАГРАДУ (критерии + проверки)
  1a. Жюри (3 роли) пишет обязательства из задачи, до просмотра результатов
      → затем сверяет с первыми черновиками
  1b. Редьюсер сливает в критерии: тест (pass/fail) или рубрика (fail/partial/full)
  1c. Строитель привязывает к каждому критерию проверку,
      которая пересчитывает по источнику → вердикт + квитанция

ЭТАП 1.5. САМОАТАКА (контроль качества проверок)
  Строим примеры трёх видов: контрольный (должен пройти),
  ошибочный (нарушает критерий), пограничный (почти-промах)
  → эталонную метку ставит отдельный «слепой» судья
  → чиним проверку, только если: ничего из ранее верного не сломано,
    исправлена хотя бы одна ошибка, нет «неразрешённых» случаев
  → ЗАМОРАЖИВАЕМ набор

ЭТАП 2. РАБОТАЕМ ПО НАГРАДЕ (набор заморожен)
  Кандидат A: только задача  |  Кандидат B: правки по проваленным проверкам
  (критик берёт ≤3 проверки) |  Кандидат C: с дополнительной гипотезой
  → Жюри ранжирует по результатам и квитанциям
  → B или C заменяют A, только если строго лучше И не провалили то, что A проходил

ЭТАП 3. ОБНОВЛЯЕМ (только между раундами)
  Что нашли при использовании → в следующий набор проверок

В оригинале это система из множества вызовов модели. В чате или у агента её можно прогнать несколькими запросами или одним длинным промптом: так читатель получает ту же структуру без кода.

🚀

Пример применения

Задача: Вы селлер на Wildberries. Агент (Claude Code или Cursor) получает выгрузку продаж за неделю и должен собрать отчёт для собственника: выручка, процент выкупа, топ-5 артикулов. Типовой провал: отчёт красивый, процент выкупа в нём 92%, а по строкам выгрузки получается 78%. Файл создан, форматирование на месте, судья-модель кивает.

Промпт:


Ты работаешь в режиме «сначала критерии, потом работа». Ты не сдаёшь отчёт, 
пока он не прошёл замороженный набор проверок.



Файл: wb_sales_week_42.csv (выгрузка продаж Wildberries, 18 400 строк).
Нужно: недельный отчёт для собственника в report.xlsx — выручка в рублях, 
процент выкупа, топ-5 артикулов по выручке, 3 вывода.
Период: 14–20 октября. Выкуп = выкупленные / заказанные штуки.



Три роли независимо пишут обязательства ДО просмотра результата:
- Jury_1 (бухгалтер): точность чисел и периода
- Jury_2 (собственник): что нужно для решения, чего не должно быть
- Jury_3 (скептик): где модель обычно ошибается в таких отчётах
Затем редьюсер сливает их в критерии. Каждый критерий:
- тип: TESTCASE (pass/fail) или RUBRIC (fail/partial/full с описанием якорей)
- источник: откуда обязательство
- проверка: как пересчитать из исходных строк CSV (не «выглядит верно»)
- формат вердикта: {критерий, вердикт, квитанция «ожидал X, получил Y»}
Если данных для проверки нет — вердикт «нет данных» (не fail). 
Если проверка сама сломалась — «проверка не выполнена».



Для каждой проверки придумай примеры трёх видов:
- control: корректный результат (проверка должна пройти)
- error: результат с нарушением (например, подправленная ячейка, 
  меняющая процент выкупа)
- boundary: почти-промах (например, 77,6% вместо 78%, или период 13–20 октября)
Эталонную метку каждому примеру ставь отдельно, не глядя на то, как устроена проверка.
Если проверка ошиблась — исправь. Исправление принимается, только если:
(а) все ранее верные случаи остались верными, (б) исправлен хотя бы один 
ошибочный случай, (в) не появилось случаев «нет решения».
После этого НАБОР ЗАМОРОЖЕН. Правила не менять до конца раунда.



1. Сделай отчёт только по задаче → кандидат A.
2. Прогони A по замороженному набору, выведи таблицу «критерий | вердикт | квитанция».
3. Critic: выбери не более 3 самых значимых проваленных проверок, 
   сформулируй правки со ссылкой на квитанции. Если неясно — задай вопрос или воздержись.
4. Исправь отчёт → кандидат B. Перепроверь.
5. Выбор: B заменяет A, только если он строго лучше И не провалил ни одной проверки, 
   которую проходил A. Иначе оставь A.



Итоговый отчёт, таблица проверок с квитанциями, 
список критериев, которые остались непроверенными.

Результат: Модель сначала выдаст список критериев от трёх «жюри» (например, формулу выкупа, период, сверку суммы выручки с исходными строками). Затем покажет примеры-атаки на свои же проверки и поправки к ним. Дальше будет таблица проверок по первому варианту отчёта с квитанциями вроде «ожидал / получил». В конце: правки по трём главным провалам, повторная проверка, решение «B заменил A» или «остался A» и список того, что проверить не удалось. Ключевой артефакт здесь таблица с квитанциями: по ней видно, где отчёт врёт.

🧠

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

Слабость. Когда модель оценивает результат «в целом», она судит по внешнему виду: порядку, оформлению, уверенному тону. Цифра 92% рядом с красивой таблицей выглядит убедительно. Если критерии придумывать на ходу, они подстраиваются под уже готовый ответ. Если проверку не испытывать, она может проверять не то.

Сильная сторона. Модель хорошо пересчитывает конкретное по источнику («возьми строки, посчитай долю») и хорошо придумывает контрпримеры. Ей легче найти способ сломать проверку, чем написать идеальную с первого раза.

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

Рычаги управления промптом: - Число проверок у критика (≤3 в оригинале) → увеличьте для крупных задач, уменьшите для экономии токенов. Меньше — правки точнее. - Состав жюри → дайте ролям конкретные профили под вашу область (бухгалтер, юрист, клиент). Критерии станут разнообразнее. - Три вида контрпримеров (control / error / boundary) → boundary ловит «почти правильно». Не убирайте его, это самая частая реальная ошибка. - Статус «нет данных» → не превращает отсутствие доказательства в провал. Отличает «нарушено» от «не смог проверить». - Условие замены («строго лучше и ничего не сломал») → ослабьте, если хотите больше экспериментов; ужесточите, если важна стабильность.

📋

Шаблон промпта


Ты работаешь в режиме «сначала критерии, потом работа». Не сдавай результат, 
пока он не прошёл замороженный набор проверок.



{задача}
Входные данные: {файлы_или_текст}
Ограничения и определения: {период, формулы, формат, что считать успехом}



Три роли независимо пишут обязательства ДО просмотра результата:
- Jury_1 ({роль_1}): {на_что_смотрит}
- Jury_2 ({роль_2}): {на_что_смотрит}
- Jury_3 (скептик): где модели обычно ошибаются в такой задаче
Редьюсер сливает в критерии. Для каждого:
- тип: TESTCASE (pass/fail) или RUBRIC (fail/partial/full + описание каждого уровня)
- источник обязательства
- проверка: как пересчитать из исходных данных
- вердикт: {критерий, вердикт, квитанция «ожидал X, получил Y»}
Нет данных → «нет данных». Проверка сломалась → «проверка не выполнена». 
Оба статуса не равны fail.
Нерешённые обязательства оставь видимыми.



Для каждой проверки построй примеры: control (должен пройти), 
error (нарушает критерий), boundary (почти-промах).
Эталонные метки ставь отдельно, не опираясь на устройство проверки.
Если проверка ошиблась — исправь.
Принимай исправление, только если: 
  (1) все ранее верные случаи остались верными, 
  (2) исправлен минимум один ошибочный, 
  (3) нет случаев «нет решения».
После этого НАБОР ЗАМОРОЖЕН.



1. Кандидат A: выполни задачу, пока не опираясь на набор.
2. Прогони A по набору → таблица «критерий | вердикт | квитанция».
3. Critic: до {число_проверок} самых значимых провалов; правки со ссылкой 
   на квитанции. Если неясно — вопрос или воздержание.
4. Кандидат B: исправь и перепроверь.
5. B заменяет A, только если строго лучше И не провалил то, что проходил A.



Если при проверке найдены новые дефекты набора — запиши их для СЛЕДУЮЩЕГО раунда. 
Текущий набор не меняй.



Итог, таблица проверок с квитанциями, непроверенные критерии.

Что подставлять: {задача} — конкретное дело; {роль_1}, {роль_2} — два профиля людей, которые будут принимать работу; {число_проверок} — обычно 3.

🚀 Быстрый старт — вставьте в чат:

Вот шаблон RewardEngine. Адаптируй под мою задачу: [твоя задача]. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какие входные данные и определения у вас есть, кто принимает работу и какие ошибки для вас самые дорогие. Это нужно, чтобы роли жюри и проверки были привязаны к реальным критериям приёмки. Из шаблона она возьмёт структуру этапов и подгонит под вашу задачу.

⚠️

Ограничения

⚠️ Скромный эффект: на одном бенчмарке прирост среднего балла статистически неотличим от нуля (интервал включает ноль). На другом он заметен, но небольшой. Рассчитывать на «чудо» не стоит.

⚠️ Цена: система делает намного больше вызовов модели, чем один прогон. Авторы сознательно не сравнивали общую стоимость и равный бюджет. Возможно, часть выигрыша куплена токенами.

⚠️ Не ловит забытые требования: если ни одна роль жюри не придумала нужное обязательство, проверка его не увидит. Авторы это признают.

⚠️ Эталонные метки — тоже суждения модели: их точность не измеряли. Ошибочная метка закрепляется так же крепко, как верная, потому что правка не должна её «ломать».

⚠️ Заморозка не спасает от обмана метрики: фиксированная проверка тоже может быть «перехитрена» агентом. Стабильность цели не равна правильности цели.

⚠️ Стабильность vs качество: простая «всегда принимай правку критика» даёт больше полностью успешных серий из трёх запусков, чем выбор по набору. Выбор повышает средний балл, но немного жертвует стабильностью.

⚠️ Не проверено: обучение с подкреплением на таких наградах и «мета-цикл» улучшения самого способа строить проверки авторы не оценивали.

🔍

Как исследовали

Идея была простой: открытая задача не имеет правильного ответа, значит, агент должен сам выучить критерии, как студент перед незнакомым экзаменом. Проверили на двух бенчмарках: WorkBuddy Bench Office (50 офисных задач со смешанными файлами) и Claw-Eval (104 версии задач из 68 сценариев с исполняемой средой). Скрытые ответы и оценки грейдера системе не показывали.

Сравнивали итоговый результат («выбрано по награде») с чистым Baseline, с «всегда брать ревизию», с равномерным случайным выбором и с Oracle, который всегда берёт лучшего по настоящему грейдеру. На Claw-Eval средний балл вырос на ~2 пункта (интервал не включает ноль), доля серий «три успеха из трёх» выросла с 78,4% до 83,7%, число провалов упало на 37,5%. На WorkBuddy серии «три из трёх» выросли с 45% до 54%, но по среднему баллу интервал включал ноль.

Отдельно проверили: насколько порядок кандидатов по замороженной награде совпадает с порядком грейдера. Совпадение — около 82% и 80% пар. Выбор по награде отыгрывает 26–39% разрыва между случайным выбором и идеальным.

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

💡

Адаптации и экстраполяции

🔧 Техника: убрать этап выбора A/B → оставить только «чек-лист и правка»

Для рутинных задач, где вы и так делаете одну версию, возьмите Stage1 + Stage1_5 + шаг «Critic ≤3 → правка» и удалите кандидатов A/B/C. Получается облегчённая версия: дешевле, но защиты от «правка сделала хуже» меньше. Верните условие замены, если задача критична.

Экстраполяция: правило в CLAUDE.md / AGENTS.md

Перед сдачей любого отчёта, таблицы или документа: (1) составь список проверяемых обязательств по задаче, отдельно жёсткие (да/нет) и качественные (по шкале); (2) для каждого пересчитай значение из исходных данных и запиши «ожидал X, получил Y»; (3) не меняй критерии после просмотра результата; (4) исправь не более трёх главных провалов; (5) если правка ломает то, что уже проходило, откати её; (6) в конце перечисли, что проверить не удалось.

Это перенос принципов статьи (критерии до результата, квитанции, заморозка, запрет регрессии) в постоянную инструкцию агенту. В самой статье такой вариант отдельно не проверяли.

🔗

Ресурсы

  • Работа: RewardEngine: Reward-Centric Self-Evolution for Open-Ended Tool Agents. В предоставленном фрагменте указана аффилиация Ji Qi (Department of Statistics and Data Science, CUHK); полный список авторов не приведён.
  • Бенчмарки: WorkBuddy Bench Office (Tencent Youtu Lab et al., 2026); Claw-Eval (Ye et al., 2026).
  • Близкие работы из текста: EvoRubrics (Ding et al., 2026) — rubric co-evolution; Self-Refine, Reflexion, CRITIC, TextGrad; Stechly et al., 2025 о том, что часть эффекта «критики» объясняется простым повторным запросом.

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

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

Отчёт выглядит отлично, процент выкупа в нём 92%, а по строкам выгрузки выходит 78%. Модель-судья кивает, потому что судит по общему впечатлению, а не по пересчёту. RewardEngine позволяет заставить агента сверять свою работу с исходными данными и показывать, где именно она врёт. Агент до сдачи работы пишет себе проверки, каждая из которых пересчитывает цифру по исходникам и выдаёт «квитанцию»: «ожидал 78%, получил 92% – провал». Фишка: сами проверки сначала проходят допрос на заведомо плохих и пограничных примерах. Только потом их замораживают. Итог: агент видит не «стало хуже», а «вот эта цифра не сходится с вот этими строками».

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

Метод работает как приёмка на заводе. Сначала пишут чертёж проверок. Потом проверяют сами проверки на браке. Только после этого партию пускают в работу. 1. Строим. Три роли (например, бухгалтер, собственник, скептик) независимо пишут обязательства до просмотра результата. Потом их сливают в критерии: жёсткий тест «да/нет» или шкальная рубрика (провал / частично / полностью). У каждого критерия есть проверка, которая пересчитывает по исходным данным. 2. Атакуем. На каждую проверку придумываем три примера: контрольный (должен пройти), ошибочный (должен провалиться) и пограничный (почти-промах вроде 77,6% вместо 78%). Правку проверки принимаем, только если ничего из ранее верного не сломалось. 3. Используем. Набор заморожен. Агент делает черновик A. Критик берёт до трёх главных провалов и даёт правки по квитанциям. Получается версия B. Версия B заменяет A, только если она строго лучше и не провалила ничего из того, что A проходил. Это как ремонт без права ломать то, что уже работало.

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

Модель, которая оценивает результат «в целом», ведётся на оформление и уверенный тон. Если критерии придумывать после готового ответа, они подстраиваются под него. Здесь критерии фиксируются до просмотра работы. Две сильные стороны модели используются по назначению. Она хорошо пересчитывает конкретное («возьми строки, посчитай долю»). И ей проще сломать чужую проверку контрпримером, чем написать идеальную с первого раза. Квитанция превращает расплывчатое «плохо» в конкретную задачу: критик видит, какую цифру и по каким строкам чинить. Заморозка набора защищает от «сдвига цели»: нельзя поменять линейку и объявить, что стало лучше. Теперь без розовых очков. Эффект скромный. На одном бенчмарке прирост среднего балла неотличим от нуля, на другом заметен, но небольшой. Авторы не сравнивали стоимость при равном бюджете, а вызовов модели тут намного больше. Часть выигрыша может быть просто куплена токенами. Ценность тут в структуре и квитанциях, а не в чуде.

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

Открытые задачи с исходными данными, где нет готового правильного ответа → отчёты по таблицам и выгрузкам, разбор тикетов, сводки по документам, особенно когда красивый результат уже подводил из-за неверной цифры или периода. Не подходит для коротких задач без источника для сверки: нечего пересчитывать. Также не стоит запускать на мелочах, где токены дороже ошибки. Метод не поймает забытое требование: если ни одна роль не вспомнила нужное обязательство, проверки его не увидят.

Мини-рецепт

1. Дай жёсткие определения: файл, период, формулу. Например, «выкуп = выкупленные / заказанные штуки». Без этого проверять нечего.
2. Назови трёх приёмщиков: два профиля тех, кто принимает работу (бухгалтер, собственник), и скептика, который знает, где модели обычно врут.
3. Потребуй пересчёт, а не «выглядит верно»: каждая проверка берёт исходные строки и пишет «ожидал X, получил Y».
4. Заведи два запасных статуса: «нет данных» и «проверка не выполнена». Ни один из них не равен провалу.
5. Устрой проверкам допрос: для каждой придумай контрольный, ошибочный и пограничный примеры. Метки пусть ставит отдельно, не глядя на устройство проверки.
6. Чини без регрессии: правка проверки принимается, только если всё, что было верно, осталось верным.
7. Заморозь набор: до конца раунда правила не трогай.
8. Сделай черновик A, прогони, возьми до 3 провалов: критик правит по квитанциям, получается B.
9. Поставь условие замены: B вытесняет A, только если строго лучше и не провалил то, что A проходил. Новые дефекты набора записывай на следующий раунд.

Быстрый старт: отправь модели Вот шаблон RewardEngine. Адаптируй под мою задачу: [задача]. Задавай вопросы, чтобы заполнить поля. и вставь шаблон. Она сама спросит про данные, приёмщиков и самые дорогие ошибки.

Примеры

[ПЛОХО] : Собери недельный отчёт для собственника из wb_sales_week_42.csv: выручка, процент выкупа, топ-5 артикулов. Проверь, что всё верно.
[ХОРОШО] : Работай в режиме «сначала критерии, потом работа». Файл: wb_sales_week_42.csv, 18 400 строк, период 14–20 октября. Выкуп = выкупленные / заказанные штуки. Шаг 1: три роли (бухгалтер, собственник, скептик) до просмотра результата пишут обязательства. Слей их в критерии: тест «да/нет» или рубрика «провал / частично / полностью». Для каждого дай проверку, которая пересчитывает по строкам CSV и пишет «ожидал X, получил Y». Шаг 2: к каждой проверке придумай контрольный, ошибочный и пограничный примеры (77,6% вместо 78%, период 13–20 октября). Исправляй проверку, только если ничего ранее верного не сломалось. Потом набор заморожен. Шаг 3: сделай отчёт A, прогони по набору, выведи таблицу «критерий | вердикт | квитанция». Возьми до 3 главных провалов, исправь, получи B. B заменяет A, только если строго лучше и не провалил то, что проходил A. В конце покажи список критериев, которые проверить не удалось. Уникальная фишка видна в таблице: вместо «отчёт выглядит хорошо» получаешь строку вроде «процент выкупа: ожидал 78%, получил 92% – провал».
Источник: RewardEngine: Reward-Centric Self-Evolution for Open-Ended Tool Agents
ArXiv ID: 2610.22915 | Сгенерировано: 2026-10-19 08:20

Проблемы LLM

ПроблемаСутьКак обойти
Модель-судья оценивает по впечатлению, а не по фактамПросишь проверить отчёт, текст или таблицу. Судья смотрит на оформление, порядок и уверенный тон. Красивый результат с неверной цифрой проходит. Ещё хуже: оценка «лучше/хуже» не говорит, что именно чинить. Это касается любой открытой задачи без готового эталонаНе проси оценку «в целом». Проси проверки, которые пересчитывают по исходным данным. Пусть каждая проверка пишет итог так: ожидал 78%, получил 92% — провал. Такая запись показывает, что и где не сходится

Методы

МетодСуть
Проверки с пересчётом и «квитанцией» — видно, где работа врётПеред работой попроси составить список критериев. Для каждого укажи тип: жёсткий тест (да/нет) или шкала (провал / частично / полностью, с описанием каждого уровня). Для каждого критерия задай способ проверки: «пересчитай из исходных строк». Формат ответа: критерий, вердикт, ожидал X, получил Y. Добавь два отдельных статуса: «нет данных» и «проверка не выполнена». Они не равны провалу. Иначе «не смог проверить» путается с «нарушено». Для полноты пусть критерии пишут несколько ролей: бухгалтер, заказчик, скептик. Скептик ищет, где модель обычно ошибается. Почему работает: модель хорошо считает конкретное по источнику и плохо оценивает всё сразу. Квитанция даёт точную цель для правки. Когда да: есть исходные данные, цифры, факты, формат. Когда нет: чисто субъективные оценки вроде «красиво» или «интересно». Забытые требования метод не поймает. Если ни одна роль их не назвала, проверки их не увидят
Испытание проверок на заведомых примерах — защита от кривых проверокПроверку тоже пишет модель, и она может ошибаться. Например, берёт не ту колонку или пропускает почти-правильный вариант. Попроси придумать для каждой проверки три примера. Первый: верный результат, проверка должна пройти. Второй: результат с явной ошибкой, проверка должна провалиться. Третий: почти-промах, например 77,6% вместо 78% или период на один день длиннее. Правильный ответ для каждого примера пусть определяет отдельный вызов, который не видит устройство проверки. Если проверка ошиблась, чини её. Принимай правку, только если всё ранее верное осталось верным и исправлен хотя бы один случай. Почему работает: модели легче сломать проверку, чем написать идеальную с первого раза. Пограничные примеры ловят самую частую реальную ошибку: «почти правильно». Не убирай их. Когда нет: одноразовая простая задача. Это лишние вызовы и расходы. Метки примеров тоже ставит модель, и их точность не гарантирована
Правка принимается только без отката назад — стабильный цикл доработкиСделай первый вариант (A). Прогони по проверкам. Пусть критик выберет до 3 самых важных провалов и предложит правки со ссылкой на квитанции. Получится вариант B. Новая версия заменяет старую, только если она строго лучше и не провалила ничего из того, что старая проходила. Иначе оставь A. Если критику неясно, пусть задаст вопрос или воздержится. Почему работает: при исправлении одного места легко сломать другое. Правило «ничего не потеряно» не даёт ходить по кругу. Мало правок за раз делают их точнее. Рычаги: больше проверок у критика для крупных задач, меньше для экономии. Условие замены ослабляй ради экспериментов и ужесточай ради стабильности. Минус: простое «всегда принимай правку критика» чаще даёт полностью успешные серии. Выбор по набору поднимает средний балл, но чуть теряет в стабильности
📖 Простыми словами

RewardEngine: Reward-Centric Self-Evolution for Open-EndedToolAgents

arXiv: 2610.22915

Нейросети чудовищно близоруки, когда оценивают свою же работу. Если агент выдал красивый отчёт с ровными таблицами и бодрым тоном, он свято верит, что всё сделал правильно, даже если внутри полная лажа. Модель оценивает фасад, а не суть: видит процент выкупа 92% вместо реальных 78% и сама себе ставит пять с плюсом. Подход RewardEngine ломает эту привычку: агент обязан составить правила проверки до того, как начнёт гордиться результатом.

Это как нанять прораба, который сдаёт кривую стену только потому, что обои поклеены ровно и пахнет свежим ремонтом. Если дать ему рулетку постфактум, он просто натянет её так, чтобы цифры сошлись с его косяком. Единственный способ не остаться в дураках — заставить его составить жёсткий чек-лист замеров до стройки, проверить этот чек-лист на прочность и намертво зафиксировать, чтобы смухлевать уже не вышло.

В основе системы две вещи: бинарные тесты да-нет и подробные шкальные рубрики качества. Каждая проверка не просто верит тексту, а сама лезет в сырые данные и выдаёт квитанцию об ошибке: ждали 78%, получили 92% — провал. Причём эти проверки сначала гоняют через стресс-тесты на заведомо битых данных, убеждаются, что сито работает, замораживают критерии и только потом пускают агента переделывать выводы.

В примере гоняли отчёты для селлеров маркетплейсов, но принцип универсален. Схема идеально ложится на генерацию кода, аналитику данных и работу в Cursor или Claude Code — везде, где модель любит галлюцинировать с умным видом. Если агент заранее пишет формулы валидации под конкретную задачу, пересчитывает факты и не может переписать правила на ходу, ошибки вычищаются моментально.

Хватит надеяться, что модель исправится от наивной просьбы «проверь себя ещё раз». Она не проверит, она просто увереннее соврёт. Заставляй агента фиксировать критерии приёмки до финиша и требовать пруфы по исходникам. Либо ты выстраиваешь для него систему проверок с квитанциями, либо продолжаешь принимать красиво отформатированный бред.

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

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

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