15 сентября 2026 года IBM Research в посте Your Agent Aced the Task. Will It Do It Again? на Hugging Face разобрала, почему агент сдаёт задачу на репетиции и валится на той же в проде. Если у вас бот, skill или контур с tool call, это про повтор одного запроса, а не про новый id модели в чате.
На AppWorld test_normal ReAct-агент на GPT-4.1 в среднем закрыл 77.4% прогонов из пяти. Задачи, которые он закрыл все пять раз подряд, это уже 53.0%. Разрыв 24.4 пункта. На сложных задачах авторы доводят его до 30 пунктов. Среднее прячет флаки, а человек с тем же промптом получает то успех, то другой путь и ошибку.
Mean@5 77.4% и Pass^5 53.0%
Большинство таблиц отдают Mean@k: прогнали бенчмарк k раз, усреднили. Часто k=3, иногда 1. Это ответ на вопрос «насколько агент хорош в среднем». Вопрос пользователя другой: сработает ли тот же запрос ещё раз. Для него нужен Pass^k, доля задач, где агент успешен на всех k прогонах.
Pass^k и привычный Pass@k звучат похоже и спрашивают противоположное. Pass@k оптимистичен: хватит одного успеха из k, если результат можно проверить и перезапустить. Pass^k пессимистичен: должны пройти все попытки. Всегда Pass^k ≤ Mean@k ≤ Pass@k. Авторы называют разницу Mean@k минус Pass^k consistency gap.
77.4% на GPT-4.1 выглядит сильно. 53.0% на тех же пяти прогонах уже другая история: почти четверть бенчмарка состоит из задач, которые агент иногда решает, иногда нет, хотя формулировка не меняется. Это не «мало параметров». Способный агент может быть нестабильным на том же шаге.
Почему шаг переворачивается при temperature 0
Каждый выбор агента (какой API дернуть, какой аргумент подставить, повторять ли вызов) выходит из распределения по следующим токенам. Острое распределение почти целиком сидит на одном токене, и от прогона к прогону выпадает то же. Плоское размазывает массу по нескольким почти равным вариантам, и победитель близок к орлянке.
В траектории таких решений десятки. Малый шанс переворота на шаге складывается в большой шанс, что какой-то прогон пойдёт иначе. Отсюда разрыв в 24 пункта. Жадное декодирование и фиксированный seed говорят, как из распределения достать токен. Про форму распределения они молчат. На хостед-эндпоинте вероятности чуть плывут от запроса к запросу: тот же промпт, та же модель, temperature 0.0, а ничья сегодня разрешается в одну сторону, завтра в другую. В этом посте ReAct крутили именно при temperature 0.0, так что речь не про обычный sampling.
Consistency Analyzer
В апреле IBM Research уже выкладывала ALTK-Evolve: прошлые траектории агента превращаются в переиспользуемые guidelines и подмешиваются в контекст на инференсе. Средний успех от этого рос. Вопрос «сдаст ли ту же задачу все пять раз» там тоже не ставили. 15 сентября в открытый репозиторий AgentToolkit/altk-evolve добавили новый тип правил, consistency guidelines, и диагностику под них: Consistency Analyzer.
Анализатор берёт одну записанную траекторию. По каждому решению он делает один офлайн-вызов модели с k completions, по умолчанию k=5, на уже записанном контексте. Новых tool call нет, окружение заново не крутят, задачу целиком не переигрывают. На выходе scorecard: какие шаги готовы перевернуться на следующем прогоне. Ground truth не нужен. Логиты и внутренности модели тоже: диагностика чёрный ящик, хватает трейса, который у вас и так есть.
Помеченные шаги становятся кандидатами в том же формате, в котором ALTK-Evolve уже хранит и достаёт правила. Пример из AppWorld, задача про подсчёт активностей в bucket list из SimpleNote. Guideline 1: считать checkbox-маркеры якорным regex по строке, а не подстрокой, потому что в легенде заголовка тот же символ часто повторяется. Guideline 2: не идти дальше, пока поиск заметки не проверен на несколько совпадений. Это не trivia одной задачи. Нестабильный подсчёт строк и непроверенный поиск всплывают на многих сценариях. Анализатор целится в неуверенность, не в уже случившуюся ошибку: ловит шаги, которые в этом прогоне случайно прошли.
Разрыв 24.4 пункта до 12.0
Оценка: AppWorld test_normal, 168 задач, тот же ReAct на GPT-4.1. Consistency guidelines собрали с одной базовой траектории на задачу и проверили на пяти свежих прогонах. Pass^5 вырос с 53.0% до 69.0% (+16.0 пункта на той же задаче). Mean@5 с 77.4% до 81.0%. Разрыв между «выглядит способным» и «на него можно опереться» сузился с 24.4 до 12.0 пункта. Почти треть ранее нестабильных задач стала проходиться на каждом прогоне.
Средний и сложный ярусы дали больше всего: Medium +22.9 пункта, Hard +14.3. Easy +12.2, там и так было меньше места. Mean@5 нигде не просел. Это было жёсткое требование: поднять Pass^5 ценой среднего значило бы просто переложить флаки в другую клетку таблицы.
Соседняя задача и gpt-oss-120b
Правила, снятые с одной траектории, не затыкают только её. На другой, но родственной задаче того же сценария AppWorld Pass^5 всё ещё +13.0 пункта, на 3 пункта ниже same-task. На более слабой gpt-oss-120b same-task Pass^5 вырос с 10.1% до 16.1% (+6.0). Перенос на похожую задачу дал +8.7, больше, чем на исходной. Похоже, ловятся повторяемые дыры, а не запоминается один прогон.
Методика целиком лежит в отчёте arXiv:2609.08832. Весов новой модели нет, Linux-пакета нет, id в чужом API не появилось: это открытый toolkit поверх уже существующего агента. Доступ из России в посте не описан.
Если агент уже крутит один и тот же сценарий (сверка платежа, проверка пункта в договоре, разбор тикета), я бы не делал из среднего 77% вывод, что контур стабилен. Имеет смысл смотреть Pass^k рядом с Mean@k, хотя бы при k=3. Более крупная модель поднимает среднее и не обязан закрывать разрыв. Диагностика здесь не просит ни оценщика, ни живой повтор задачи: один лишний вызов на шаг решения по уже записанному трейсу. В прод с новым контуром в тот же вечер я бы не скакал. Сначала репозиторий и свои траектории, потом стейджинг, и только потом бот, которым пользуются люди.