3,583 papers
arXiv:2610.11678 84 8 окт. 2026 г. FREE

TRACE: диагностика падения скора агента — виноват агент или измерение

КЛЮЧЕВАЯ СУТЬ
Оценка агента упала на 0,25, хотя он делал ровно то же самое. В тесте инструментам просто сменили названия, а проверяющий код сверял имена, а не действия. Метод TRACE позволяет понять, кто виноват в падении: сам агент или тот, кто ставит оценку. TRACE пересчитывает оценку на тех же записях действий и не запускает агента заново. Записи действий (траектории) работают как улика. Если после правки правила разрыв исчез, виновата проверка. Если остался, виновато поведение агента.
Адаптировать под запрос
⚡

TL;DR

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

Главная находка: скор может упасть, хотя агент делает ровно то же самое. В контрольном опыте инструментам агента переименовали названия. Операции остались прежними, но проверяющий код сверял имена, а не действия, и оценка упала на 0,25. Вторая находка: одиночный прогон почти ничего не доказывает. Идентичный перезапуск меняет «прошёл/не прошёл» у 15–36% задач. Ещё один неприятный факт: два сильных LLM-судьи стабильны сами с собой, но на 57% одних и тех же записей спорят друг с другом. Один из них оценивает порядок действий, а не результат.

Метод решает это разделением вопросов. «Изменился ли общий скор?», «изменилось ли поведение агента?» и «изменилось ли суждение проверяющего на той же записи?» — это три разных вопроса, и отвечать на них нужно разными данными. Для практика это чек-лист: не сравнивай по одному прогону, смотри, что именно делал агент, и перепроверяй подозрительное правило пересчётом.


🔬

Схема метода

ШАГ 0: Контроли → (а) повтор без изменений = фон шума
                  (б) заведомо вредное изменение = «видит ли проверка эффект»
ШАГ 1: Парные прогоны → те же задачи, до и после изменения (несколько раз)
ШАГ 2: Сравнение скоров → разница, доля прохождений, сравнение с шумом повтора
ШАГ 3: Просмотр траекторий → поведение/результат изменились или нет?
ШАГ 4: Пересчёт оценки → те же траектории, исправленное правило
        разрыв исчез → виновато правило проверки
        разрыв остался → виновато поведение агента

Каждый шаг — отдельная операция над данными. Это не один промпт, а процесс из нескольких запросов или ручных проверок.


🚀

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

Задача: Команда продавца на маркетплейсе (условный Ozon) запустила агента для обработки возвратов. Его проверяют на 20 тестовых обращениях, оценка «прошёл/нет» выставляется автоматически. Разработчик переименовал инструменты в понятные: get_order стал fetch_order_details, refund стал issue_refund_to_customer. Доля успехов упала с 80% до 65%. Начальник уже просит откатить промпт.

Промпт (передаётся в чат вместе с выгрузкой логов):


Ты — аналитик качества агентов. Твоя задача — выяснить, чем вызвано падение оценки: 
изменением поведения агента или особенностями самой проверки. 
Не делай вывод по одной цифре.



Агент: обработка возвратов на маркетплейсе.
Что изменили: переименовали инструменты (get_order → fetch_order_details, 
refund → issue_refund_to_customer). Логика и аргументы инструментов не менялись.
Проверка: автоматический скрипт, ставит «прошёл/не прошёл».



Таблица А: 20 задач × 3 прогона ДО изменения (результат + трасса действий).
Таблица Б: 20 задач × 3 прогона ПОСЛЕ изменения (результат + трасса действий).
Таблица В: те же 20 задач, повторный прогон ДО изменения без правок.
[вставить таблицы]



Шаг 1. Шум. По таблицам А и В посчитай, у какой доли задач результат 
«прошёл/не прошёл» отличается между двумя идентичными прогонами.
Шаг 2. Разница. Посчитай изменение доли успехов между А и Б. 
Сравни его с шумом из шага 1. Скажи: разница больше шума или нет.
Шаг 3. Поведение. Для задач, где результат изменился, сравни трассы 
до и после: те же ли вызовы, те же ли аргументы, тот же ли итог для клиента? 
Раздели задачи на три группы: «поведение то же», «поведение изменилось», «неясно».
Шаг 4. Подозрение на проверку. Для группы «поведение то же, а оценка упала» 
опиши, какое правило проверки могло сработать иначе (например, сверка по имени инструмента). 
Предложи исправленное правило и покажи, как бы изменилась оценка 
при пересчёте на тех же трассах.
Шаг 5. Вывод. Раздели падение на две части: 
сколько объясняет проверка, сколько — реальное поведение. 
Напиши, какой дополнительный контроль нужен, чтобы утверждать это уверенно.

Результат: Модель пройдёт по шагам. Сначала даст оценку фонового шума: насколько сами повторы расходятся. Затем сравнит с падением и скажет, выходит ли оно за пределы шума. Потом разложит задачи на группы по поведению и укажет, где подозрительно правило проверки. В конце модель разделит падение на «виновата проверка» и «изменилось поведение», с оговорками, где данных мало.


🧠

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

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

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

Контроли делают вывод осмысленным. Повтор без изменений показывает, что 15–36% исходов меняются сами по себе. Без этого фона любое «упало на 5 пунктов» может быть шумом. Положительный контроль нужен для обратной ситуации. Если вы сделали заведомо вредное изменение и скор не отреагировал, ваша проверка слепа, и вывод «ничего не изменилось» ничего не стоит.

Рычаги управления: - Число повторов — больше повторов, точнее оценка шума. Для быстрой проверки хватит трёх на задачу. - Порог «прошёл» — меняйте его и смотрите, держится ли вывод при 0,55, 0,65 и 0,75. - Допуск эквивалентности — авторы взяли ±0,10. Для критичных задач берите уже. - Подозреваемое правило — подставьте своё (формат даты, регистр, порядок вызовов), и пересчёт покажет его вклад.


📋

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


Ты — аналитик качества агентов (или автоматизации с LLM). 
Твоя задача — разделить причины изменения оценки: поведение агента или правило проверки. 
Никаких выводов по одной цифре.



Система: {что_за_агент_или_процесс}
Что изменили: {изменение}
Как оценивают: {правило_проверки_или_судья}
Что ожидалось: {изменение_должно_влиять_на_результат_или_нет}



До изменения: {данные_до}
После изменения: {данные_после}
Повторный прогон без изменений: {данные_повтора}
Трассы действий (если есть): {трассы}



Шаг 1. Посчитай шум: доля задач, где два идентичных прогона дали разный итог.
Шаг 2. Посчитай изменение оценки до/после и сравни с шумом.
Шаг 3. Для задач с изменившимся итогом сравни трассы: вызовы, аргументы, результат для пользователя.
Шаг 4. Для случаев «поведение то же, оценка другая» назови правило проверки, которое могло сработать по-разному. 
       Предложи исправленное правило и пересчитай оценку на тех же трассах.
Шаг 5. Раздели падение: доля, объяснённая проверкой / доля, объяснённая поведением. 
       Назови, каких данных не хватает.



- Считай «средний балл» вместе с долей прохождений: низкий разрыв может означать провал в обоих случаях.
- Не называй причину доказанной, если разница не выходит за пределы шума.
- Если данных мало, скажи это прямо.

Что подставлять: {изменение} — одно конкретное изменение за раз (имена инструментов, формат вывода, формулировка задачи). {правило_проверки_или_судья} — как именно ставится оценка: скрипт, чек-лист, LLM-судья. {данные_*} — выгрузка результатов в виде таблицы. {трассы} — логи действий агента.

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

Вот шаблон диагностики изменения оценки (TRACE). Адаптируй под мою задачу: [опиши, что у тебя за агент/автоматизация и что изменилось]. 
Задавай вопросы, чтобы заполнить поля.

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

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


⚠️

Ограничения

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

⚠️ Мало задач — широкие интервалы: на 30 задачах в первом исследовании почти все интервалы включали ноль. Отсутствие эффекта там не означало, что его нет: данных просто не хватало. Единственный «явный» эффект при расширении выборки исчез.

⚠️ Проверено на узком наборе: основная часть опыта — один публичный бенчмарк (магазин и авиакомпания), четыре агента и синтетическая среда. Выводы про «переименование безопасно» нельзя переносить на любые инструменты и промпты.

⚠️ Оговорка по самим проверкам: дефект «сверка по имени» найден в простом самописном скрипте. Это не вывод про обученные модели-оценщики.

⚠️ Вводящие в заблуждение названия вредят: если имя инструмента противоречит тому, что он делает, награда падает у всех агентов. Нейтральные переименования безвредны, а ложные — нет.

⚠️ Судью нельзя проверять только на стабильность: повторяемость не равна валидности. Судья может стабильно оценивать не то (например, порядок шагов вместо результата).


🔍

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

Идея была простой: чтобы доверять диагностике, надо сначала проверить её там, где причина известна заранее. Автор собрал синтетический мир из 25 исследовательских задач (например, исправить learning rate или предотвратить утечку данных) и трёх агентов-«актёров» с заданным поведением: аккуратный, «заучивающий ответ» и жулик. Одно и то же переименование инструментов дало разный результат. У аккуратного агента оценка упала на 0,25, но после обратной подстановки имён разрыв стал нулём, то есть виновата проверка. У «заучивающего» разрыв остался (0,13): он реально выдавал неудачный отчёт. Разрыв у жулика был почти нулевой (0,006). Но это не «надёжность»: он одинаково плохо проходил оба варианта.

Затем перешли на реальные LLM-агенты в публичном τ²-bench: четыре агента, 30 задач, три условия (оригинал, переименование, переформатирование ответов). Увидели «эффект»: у Laguna оценка при переименовании выросла на 0,267. Авторы не поверили и перепроверили на 88 новых задачах по три прогона. Эффект исчез, и в 7 из 8 пар разница уложилась в ±0,10. Чтобы нули что-то значили, добавили положительный контроль: названия инструментов нарочно перемешали, но задачи остались решаемыми. Награда упала у всех агентов на 0,20–0,44, так что установка эффект видит.

Самое неожиданное — шум. Идентичный повтор менял результат у 14,7–16,3% задач и у 35,6% для Laguna. Значит, любые одиночные сравнения в таких бенчмарках ненадёжны. Судьи (GPT-6.1 Sol и Claude Opus 5.5) на 118 фиксированных траекториях были устойчивы к форме подачи: разница укладывалась в их собственный шум. Но друг с другом расходились на 57% записей. Claude согласился с эталоном в 95% случаев, GPT — в 38%, и в основном придирался к процедуре, например к нескольким вызовам инструментов за один ход. Вывод для практики: контролируйте шум, смотрите на траектории и не путайте стабильность с правильностью.


💡

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

🔧 Техника: добавить в рубрику судьи фразу про исход → меньше придирок к процедуре

Авторы не проверяли это сами, но их находка подсказывает ход. Один судья наказывал за процедуру, хотя бенчмарк засчитывал успех. Если вы используете LLM-судью, явно пропишите, что оценивается:

Оценивай только итоговый результат для пользователя: 
решена ли задача и корректны ли итоговые данные. 
Не снижай оценку за порядок действий, число вызовов инструментов 
и стиль, если результат верный. 
Если порядок действий критичен (безопасность, необратимые операции), отметь это отдельным пунктом.

Это гипотеза, её нужно проверить на своей выборке: возьмите 20 записей, пропустите через старую и новую рубрику и сравните с человеческой оценкой.

Экстраполяция: проверка описаний инструментов в инструкции агенту

Авторы показали, что вводящие в заблуждение имена инструментов вредят всем агентам. Из этого можно собрать самопроверку для файла инструкций (CLAUDE.md, AGENTS.md):

Перед тем как использовать инструмент, сверь его название с описанием. 
Если название и описание расходятся (например, «delete» делает архивацию), 
остановись и сообщи об этом, не выбирай по названию.

Это вывод по мотивам статьи, а не её результат. Авторы тестировали именно перемешанные имена, но не такую инструкцию.


🔗

Ресурсы

  • Работа: «TRACE: Diagnosing Verifier Brittleness in Agentic Evaluation», AI Measurement Science Workshop at COLM 2026.
  • Автор: Radhika Gaonkar, Prime Intellect.
  • Бенчмарки и среды: τ²-bench (Barres et al., 2026), ResearchOpsEnv (синтетическая среда из 25 задач, созданная авторами).
  • Связанные работы: Krakovna et al. (2020) о specification gaming, Gao et al. (2023) о переоптимизации моделей награды, Zhu et al. (2025) об аудите бенчмарков агентов, Ribeiro et al. (2020) о поведенческом тестировании.

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

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

Оценка агента упала на 0,25, хотя он делал ровно то же самое. В тесте инструментам просто сменили названия, а проверяющий код сверял имена, а не действия. Метод TRACE позволяет понять, кто виноват в падении: сам агент или тот, кто ставит оценку. TRACE пересчитывает оценку на тех же записях действий и не запускает агента заново. Записи действий (траектории) работают как улика. Если после правки правила разрыв исчез, виновата проверка. Если остался, виновато поведение агента.

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

Четыре шага, каждый отвечает на свой вопрос. 1. Два контроля. Повтор без изменений показывает, сколько результат шумит сам по себе. Заведомо вредное изменение показывает, видит ли проверка реальный эффект. 2. Парные прогоны. Те же задачи идут до и после изменения, по нескольку раз. 3. Просмотр записей. Смотришь вызовы, аргументы и итог для пользователя. Меняется ли поведение или только цифра? 4. Пересчёт. Прогоняешь те же записи через исправленное правило. «Упала общая оценка», «изменилось поведение» и «изменилось суждение проверяющего» — три разных вопроса, и отвечать на них нужно разными данными. Это как врач, который не лечит по одной цифре на градуснике. Сначала он проверяет, не врёт ли сам градусник.

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

Оценка всегда состоит из трёх частей: агент, среда и проверяющий. Когда цифра меняется, мы автоматически виним агента. А простая проверка по именам, формату или шаблону на деле измеряет форму, а не результат. Жесть: идентичный перезапуск без единой правки переворачивает «прошёл/не прошёл» у 15–36% задач. Падение на 5 пунктов после одного прогона может оказаться просто шумом. Запись действий нельзя оспорить: если действия и итог те же, а оценка другая, виновата проверка, и для этого не нужен ни один новый запуск агента. С LLM-судьями (большими языковыми моделями в роли проверяющих) похожая история. Два сильных судьи стабильны сами с собой, но на 57% одних и тех же записей спорят друг с другом. Один из них оценивал порядок шагов, а не результат. Стабильность не равна правильности. Позитивный контроль нужен для обратной ситуации. Сделал заведомо вредное изменение, а оценка не дрогнула? Значит, проверка слепая, и вывод «ничего не изменилось» ничего не стоит.

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

Оценка агентов и автоматизаций на базе LLM → разбор падения или скачка оценки после правки промпта, переименования инструментов, смены формата вывода или модели, особенно когда оценку ставит скрипт или LLM-судья, а записи действий сохранены. НЕ подходит, если у тебя один прогон на задачу и нет записей действий. Тогда получишь только гипотезу. Малые выборки тоже слабое место: на 30 задачах почти все интервалы включали ноль, а единственный «явный» эффект исчез при расширении выборки. Дефект «сверка по имени» нашли в простом самописном скрипте, а не в обученных судьях. Вводящие в заблуждение названия инструментов реально вредят, так что «переименование безопасно» верно только для нейтральных имён.

Мини-рецепт

1. Замерь шум: прогони те же задачи без изменений минимум 3 раза. Посмотри, у какой доли задач итог скачет сам.
2. Сломай нарочно: сделай заведомо вредное изменение. Если оценка не просела, чини проверку, а не агента.
3. Прогони до и после: одни и те же задачи, по 3 повтора на каждую версию.
4. Сравни с шумом: падение меньше фона повтора? Тогда причину не называй.
5. Открой записи действий: разложи задачи на группы «поведение то же», «поведение изменилось», «неясно».
6. Назови подозреваемого: сверка по имени инструмента, формат даты, регистр или порядок вызовов.
7. Пересчитай: прогони те же записи через исправленное правило. Не меняй порог «прошёл»: проверь, что вывод держится при 0,55, 0,65 и 0,75.
8. Раздели падение: сколько объясняет проверка, сколько реальное поведение. Скажи прямо, каких данных не хватает.

Примеры

[ПЛОХО] : Оценка агента возвратов упала с 80% до 65% после переименования инструментов. Почему он стал хуже?
[ХОРОШО] : Ты аналитик качества агентов. Не делай вывод по одной цифре. Что изменили: get_order переименован в fetch_order_details, refund в issue_refund_to_customer, логика прежняя. Проверка: скрипт ставит «прошёл/не прошёл». Данные: таблица А (20 задач, 3 прогона до), таблица Б (3 прогона после), таблица В (повтор до без правок). Шаг 1: посчитай долю задач, где А и В дают разный итог. Шаг 2: сравни падение А→Б с этим шумом. Шаг 3: для изменившихся задач сравни вызовы, аргументы и итог для клиента. Шаг 4: для группы «поведение то же, оценка упала» назови правило проверки, которое сработало иначе, предложи исправление и пересчитай оценку на тех же записях. Шаг 5: раздели падение на «виновата проверка» и «изменилось поведение». В плохом запросе модель начнёт гадать про «ухудшение агента». В хорошем она сначала проверит, не врёт ли сама проверка. Скрипт, сверявший имена инструментов, в таком случае вскроется на шаге 4.
Источник: TRACE: Diagnosing Verifier Brittleness in Agentic Evaluation
ArXiv ID: 2610.11678 | Сгенерировано: 2026-10-09 05:00

Проблемы LLM

ПроблемаСутьКак обойти
Оценка агента упала, хотя он делает то же самоеТы поменял имена инструментов, формат вывода или формулировку. Автоматическая проверка сверяет форму: имя вызова, шаблон, порядок шагов. Агент выполняет те же действия и получает тот же итог. Но проверка видит «другое» и ставит «не прошёл». Ты думаешь, что агент стал хуже, и откатываешь удачное изменение. Это касается любых проверок по строкам, регистру, формату или порядку вызововСохрани записи действий агента (вызовы, аргументы, итог). Для задач с упавшей оценкой сравни записи до и после. Если действия и итог те же, виновата проверка. Исправь правило и пересчитай оценку на тех же записях
Один прогон агента ничего не доказываетАгент и проверка дают разные итоги даже без изменений. Повторный запуск тех же задач переворачивает «прошёл/не прошёл» у заметной доли задач (порядка 15–36%). Падение на 5–10 пунктов легко оказывается шумом. Ты делаешь вывод по случайной цифреЗапусти те же задачи на старой версии ещё раз, без правок. Посмотри, у какой доли задач итог поменялся. Это фон шума. Считай изменение значимым, только если оно заметно больше фона. Для быстрой проверки хватит трёх прогонов на задачу

Методы

МетодСуть
Пересчёт оценки на тех же записях — найти виновника паденияНе запускай агента заново. Возьми готовые записи действий и примени к ним исправленное правило проверки. Разрыв исчез: виновата проверка. Разрыв остался: изменилось поведение агента. Почему работает: записи фиксированы, меняется только правило. Значит, влияние правила видно отдельно от агента. Это дёшево и однозначно. Шаги: 1) выдели задачи, где итог изменился; 2) сравни вызовы, аргументы и результат для пользователя; 3) раздели на «поведение то же», «изменилось», «неясно»; 4) для первой группы назови правило, которое могло сработать иначе, и пересчитай. Подставляй своё подозрение: формат даты, регистр, порядок вызовов. Можно попросить модель разделить падение на долю «проверка» и долю «поведение». Не работает: если записей действий нет. Тогда получишь только гипотезу
Два контроля перед выводом — повтор и заведомо вредное изменениеПервый контроль: повтор без изменений. Он показывает, сколько результат шумит сам по себе. Второй: нарочно сломай что-то важное (убери нужный инструмент, испорти инструкцию). Посмотри, упала ли оценка. Почему работает: первый контроль защищает от ложной тревоги, второй от ложного спокойствия. Если вредное изменение не двигает оценку, проверка слепа. Тогда вывод «ничего не изменилось» ничего не стоит. Применяй: прежде чем сказать «изменение безопасно», убедись, что проверка вообще замечает поломки. Рычаги: больше повторов дают точнее оценку шума. Меняй порог «прошёл» и смотри, держится ли вывод. Для критичных задач бери узкий допуск «разница несущественна»

Тезисы

ТезисКомментарий
Стабильный судья не обязательно правильныйМодель-судья может давать одинаковую оценку при каждом запуске. Но при этом оценивать не то, что нужно: например, порядок шагов, а не результат. Два сильных судья, каждый стабильный сам с собой, могут сильно спорить на одних и тех же записях. Повторяемость показывает только отсутствие шума, но не то, что мерят верное. Применяй: проверяй судью не только повтором. Дай ему записи с известным итогом, включая «разные шаги, один результат». Смотри, оценивает ли он результат. Сравни двух судей на одних записях
📖 Простыми словами

TRACE: Diagnosing Verifier Brittleness inAgenticEvaluation

arXiv: 2610.11678

Твой AI-агент внезапно пробил дно по метрикам: например, успешность рухнула с 80% до 65%. Первая реакция — паника, ведь кажется, что модель отупела или сломался промпт. Но в большинстве случаев проблема не в логике агента, а в хрупком верификаторе — автоматическом тестере, который оценивает форму вместо сути. Ты просто переименовал инструмент, агент сработал идеально, но проверяющий скрипт завалил задачу, потому что ждал строго старое название.

Это как душная училка, которая ставит двойку за правильный ответ в задаче только потому, что ты написал «5 рублей» вместо каноничного «5 руб.». Агент блестяще решил проблему клиента и оформил возврат, но тестер ослеп: он искал команду getorder, а увидел fetchorder_details. Формально тест завален, но на деле лажает не агент, а система оценки.

Чтобы не чинить то, что не ломалось, исследователи выкатили протокол TRACE. Он разбирает проблему в четыре шага: ты делаешь парные прогоны на одних и тех же данных, сравниваешь реальные траектории действий и пересчитываешь оценку по исправленному правилу прямо на старых записях, не сжигая бюджет на перезапуск LLM. Туда же добавляют контроль шума (чтобы понять, насколько модель флуктуирует сама по себе) и заведомо вредную правку — это банальная проверка, способен ли тестер вообще заметить реальный косяк.

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

Короче: если график метрик пошел вниз, не спеши переписывать логику или откатывать релиз. Сначала проверь, не страдает ли ерундой твой собственный судья. Фреймворк TRACE экономит часы отладки и бережет нервы инженеров. Иначе ты рискуешь забраковать рабочую модель просто из-за кривого автотеста, который зацепился за запятую.

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

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

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