26 октября на arXiv вышла работа The Trinity: Capability-Driven Recursive Self-Improvement for Multimodal Agents. Авторов 21, на странице Hugging Face указан Национальный университет Сингапура.

Через два дня статья стала второй работой дня на Hugging Face Papers и собрала почти 400 голосов. Заявка в аннотации громкая: агент четыре итерации подряд улучшает сам себя и прибавляет в среднем 34 пункта на 28 обучающих бенчмарках и 26 — на 18 новых, которых при обучении не видел. Среди новых — два настоящих робота.

При этом веса модели не меняются вообще: внутри замороженная Claude Opus 5, ни одного шага градиента за всю работу. Улучшается обвязка (harness) — код вокруг модели, который решает, что ей показать, что запомнить и когда остановиться. А учится эта обвязка не на самих бенчмарках, а на упрощённых мирах, которые система строит себе сама. Слова «рекурсивное самоулучшение» звучат как заявка на прорыв, но заголовочные +34 и +26 складываются из нескольких частей, и не все они показывают то, что обещает аннотация. Настоящая находка в работе тоже есть, только не там, где её ждёшь.

В этой статье мы разберём, как устроена The Trinity: дерево способностей, три роли, самодельные симуляции и роутер. Потом посмотрим на цифры и отдельно на то, из чего сложены 26 пунктов на новых задачах.

▍ Обвязка вместо весов

Модель сама по себе в игру не играет и роботом не управляет. Кто-то должен превратить кадр с камеры в промпт, сохранить сделанные ходы, проверить ответ и решить, звать модель ещё раз или хватит. Всё это и есть обвязка.

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

Авторы описывают обвязку как конфигурацию из шести протоколов:

Протокол

За что отвечает

Perception

что из наблюдения показать модели и в каком виде

Memory

что переносить между шагами

Inference

как строить и проверять гипотезы

Planning

как раскладывать цель на шаги

Orchestration

какие вызовы и в каком порядке делать

Loop

когда повторять, когда сдавать ответ

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

Стартовая обвязка без выученных модулей называется Base Harness, она же Prime Agent. Вся работа о том, как из неё за четыре итерации вырастает набор специализированных обвязок.

Работают над этим три роли, отсюда и название:

  • Evolver разбирает задачи на требования, строит дерево способностей и предлагает правки модулей по траекториям.

  • Creator строит упрощённые миры, на которых эти способности можно тренировать.

  • Explorer играет в этих мирах и на своих ошибках наращивает модули.

Все трое — одна и та же замороженная модель в разных шляпах.

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

▍ Дерево способностей

Главная идея работы в том, что задачи надо группировать не по внешности, а по тому, что они требуют от агента. ARC-AGI-3 и Micromouse выглядят как задачи из разных миров: абстрактные головоломки и мышь в лабиринте. Но обе ломаются об одно и то же: агент неточно читает наблюдение и теряет состояние.

Evolver сначала приводит каждый бенчмарк к общей спецификации: цель, наблюдения, действия, обратная связь, критерий завершения, бюджет. Затем Explorer прогоняет базовую обвязку на обучающих задачах, а Evolver разбирает траектории и размечает, на каком шаге и почему всё пошло не так.

Категории способностей предлагают независимые агенты, судья сводит их в один список, рецензенты проверяют определения и покрытие. Вышло 30 типов дефектов, собранных в шесть способностей:

Код

Способность

Что в неё входит

PST

Perception & State Tracking

прочитать протокол действий, привязать наблюдения к состоянию, помнить пройденное

HCI

Hypothesis & Counterpart Inference

держать гипотезы, ставить различающие пробы, моделировать соперника

CFR

Constraint Checking & Feedback Repair

проверять ограничения до хода, замечать, что метод не сходится

GVT

Goal Commitment & Value Trade-off

решаться на ответ по уликам, расходовать бюджет, взвешивать варианты по очкам

VEA

Video Evidence Acquisition

выбирать, какие кадры и области смотреть

VC

Video Comprehension

читать кадры по порядку, считать, склеивать события

У каждой обучающей задачи есть набор требуемых способностей. Набор сортируется в заранее зафиксированном порядке и превращается в путь, а из путей собирается префиксное дерево. Задачи с общим префиксом делят общие узлы.

Да, тот самый trie из курса по структурам данных, только вместо букв — способности.

Получилось дерево из 11 узлов глубиной до трёх. В одном узле оказались, например, AdaPlanBench, подбор мастер-ключей, Memory Maze, бильярд Pooltool и текстовые квесты TextQuests.

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

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

▍ Самодельные миры

Учить обвязку прямо на бенчмарках плохо по двум причинам. Они дорогие и шумные: в той же The Long Dark агент долго бродит по снегу, прежде чем станет понятно, чему он научился. И на них легко выучить не способность, а конкретную игру.

Поэтому для каждого узла дерева Creator строит упрощённый мир, в котором нужна ровно эта комбинация способностей и ничего лишнего. Авторы называют это Capability-Driven Real2Sim2Real: из настоящих задач вытаскиваются требования, под них делается симуляция, а перенос измеряется снова на настоящих задачах. Миры выходят примерно такие:

  • два робота возят ящики через ворота, которые открыты, только пока напарник стоит на связанной плите;

  • нужно забрать марки и посылку и вернуться, причём ворота на обратном пути закрываются;

  • среди несущих элементов надо найти дефектные рядом с похожими на дефектные;

  • за ограниченный бюджет надо купить только те сегменты записи, на которых посылку передают из рук в руки.

Красоты в этих мирах нет: Creator прямо запрещено тратить силы на эстетику. Зато есть три фильтра, и они интереснее самих миров.

  1. Никаких подсказок. В задание на мир попадают требования узла и публичные спецификации задач. Раскладки уровней целевых бенчмарков и готовые решения исключены.

  2. Проверка хостом. Набор верификаторов проверяет, что мир привязан к своему узлу, запускается, корректно меняет состояние, рисуется и вообще проходим.

  3. Отбор по сложности. Explorer прогоняет мир замороженной обвязкой. Мир принимается, только если результат попал в заранее заданную среднюю полосу. Слишком лёгкий или непроходимый уровень возвращается на перенастройку.

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

Creator при этом учится сам: каждый мир, завёрнутый верификатором, превращается в правило для его собственной обвязки. К концу у него 25 модулей, и 14 из них выучены именно на отклонённых мирах.

Всего за четыре итерации построено 44 уровня, по одному на узел за итерацию.

▍ Дерево обвязок и рекурсия

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

  1. Explorer проходит принятые миры с текущей обвязкой: унаследованные от родителя модули плюс свои локальные.

  2. Evolver сравнивает удачные и неудачные траектории и предлагает правки локальных модулей.

  3. Хост проверяет каждую правку: есть ли под ней улики из траекторий, свой ли модуль меняет узел, соблюдён ли интерфейс, сходится ли версия предка, проходят ли типизированные проверки входа и выхода.

  4. Принятые правки меняют состояние узла, отклонённые не меняют ничего. Законченный узел передаёт состояние детям, соседние ветки развиваются независимо.

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

А вот локальные правки принимаются по другому правилу: проверяется обоснованность и исполнимость, а роста счёта не требуется.

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

К четвёртой итерации у Explorer накапливается 29 модулей. Названия у них канцелярские до умиления: Joint Gate Planning, Proposal Validation and Milestone Scheduling или Return Reachability Under Asymmetric Gates.

У Creator есть Commitment Cost Arithmetic Audit и Submission Budget and Repeated Rejection Guard. Модель пишет себе должностные инструкции, и по названиям видно, на чём она обжигалась.

▍ Роутер

После четырёх итераций обвязок много, а новая задача одна, и кто-то должен выбрать. Этим занимается Capability-Aware Harness Router.

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

Память устроена просто: очередь на 20 000 записей, из неё достаётся не больше 10 записей с косинусной близостью от 0,5. Выбор роутер обязан зафиксировать до запуска и с обоснованием.

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

▍ Что получилось

Набор задач пёстрый. В обучающей части 28 бенчмарков: ARC-AGI-3, Mastermind, шахматные задачи, кубик Рубика, Micromouse, бильярд, Among Us, Codenames, The Long Dark.

В новой части 18: NetHack, Crafter, Hanabi, покер, PHYRE, Video-MME-v2, ALE-Bench и два робота. Все оценки приведены к шкале 0–100 и усредняются по бенчмаркам с равным весом.

Итоговая траектория:

Базовая обвязка

Итерация 1

Итерация 4

Обучающие, 28 бенчмарков

39,06

63,80

73,16

Новые, 18 бенчмарков

37,45

53,53

63,61

Отсюда и берутся +34 и +26 из аннотации. Большая часть прироста случается на первой итерации, следующие три добавляют ещё около 9 и 10 пунктов. Рекурсия работает, но с убывающей отдачей, и до «взрыва интеллекта» здесь как минимум ещё несколько статей.

На отдельных бенчмарках картина неровная. Ниже выборка из приложения статьи, полная таблица по всем 46 бенчмаркам — там же:

Бенчмарк

Часть

База

Итерация 4

Pallet Rack Inspection

обучающая

0

59,3

Chess Tactics

обучающая

66,7

100

ARC-AGI-3

обучающая

22,4

53,6

Memory Maze

обучающая

0

11,1

PHYRE

новая

42

90

Video-MME-v2

новая

48,4

80

ALE-Bench

новая

81,3

91,9

Hanabi

новая

0

20

Crafter

новая

51

60

Memory Maze поднялся с нуля до 11,1, что при девяти эпизодах похоже на один пройденный. Eleusis за три итерации даже слегка просел, с 82,2 до 81,1.

Для ориентира авторы прогнали на 16 новых бенчмарках без роботов две сторонние системы: Codex набрал 47,5, DeepSeek — 46,2, The Trinity — 64,1. Но на Crafter и DiG-bench она осталась ниже обеих: у Codex на Crafter 82,7 против 60.

Самая зрелищная часть — про роботов. В задаче SOON гуманоид Unitree G1 должен подойти к столу рядом с белым вентилятором и протянуть к нему руку, допуск 30 см.

В CaP-X робот AlohaMini2 должен поднять три перевёрнутых стаканчика и доложить, есть ли под ними кубик, какого он цвета и где лежит. Успех в процентах:

Обвязка

SOON, симуляция

CaP-X, симуляция

SOON, робот

CaP-X, робот

Базовая

0

10

0

0

Итерация 1

20

20

20

20

Итерация 2

20

30

20

20

Итерация 3

80

40

60

40

Итерация 4

80

60

60

60

За каждым числом стоит 10 эпизодов, так что 60% на живом роботе — это шесть удач из десяти.

Модули при этом выучены на симуляционных версиях тех же задач из обучающей части. Так что «новое» для роботов означает перенос из симулятора в железо, а не незнакомую задачу.

Есть и неожиданный побочный эффект: улучшенная обвязка дешевле. На обучающих бенчмарках базовая тратит 582,5 млн токенов, четвёртая итерация — 496,7 млн, на 15% меньше. Агент, который знает, что делать, меньше мечется.

▍ Из чего сложены 26 пунктов

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

Просто в аннотацию попала самая верхняя ступенька. Вот вся лестница для новых бенчмарков:

Конфигурация

Новые, 18 бенчмарков

Прирост к базе

Базовая обвязка

37,45

Итерация 1, только модули

47,26

+9,8

Итерация 1, только навыки

48,67

+11,2

Итерация 1, модули и навыки

53,53

+16,1

Итерация 4, настоящий роутер

60,96

+23,5

Итерация 4, идеальный выбор обвязки

63,61

+26,2

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

На новых бенчмарках тоже. Получается, что «невиданную» задачу агент к моменту экзамена пять раз уже повидал.

Без навыков модули первой итерации дают +9,8, и именно это число честнее всего описывает перенос. Сами навыки без единого выученного модуля дают даже чуть больше.

На это обратили внимание и в обсуждении на Hugging Face: попросили сравнение без подготовки и цену этих попыток. Для четвёртой итерации я такого сравнения в статье не нашёл, как и ответа на вопрос, получали ли такую же подготовку Codex и DeepSeek.

Роутер. Итоговые 73,16 и 63,61 совпадают со строкой Oracle в таблице роутинга до сотых. Судя по этому, заголовочный результат посчитан для случая, когда каждой задаче досталась лучшая для неё обвязка.

Настоящий роутер недобирает 1,9 пункта на обучающих и 2,65 на новых, а случайный выбор даёт 46,2. Роутер хороший, но в аннотации не он.

Роботы. Среднее по 18 новым бенчмаркам включает две роботозадачи, на которых база набирает ноль. Без них база 42,13, финал 64,06, прирост +21,9. Обе цифры в статье есть, просто в разных местах, и при первом чтении два разных базовых уровня сбивают с толку.

Дерево. Самая интересная абляция сравнивает способы организовать обучение, без навыков:

Организация

Учится на

Обвязок

Обучающие

Новые

Токены на обучение, млн

Одна общая обвязка

бенчмарки

1

53,04

42,92

582,5

По доменам задач

бенчмарки

15

51,17

40,82

278,3

По способностям, плоско

бенчмарки

6

49,25

39,43

136,9

Дерево способностей

бенчмарки

10

53,44

42,31

211,6

Дерево способностей

симуляции

10

56,95

47,26

405,7

На настоящих задачах дерево по качеству не отличается от одной общей обвязки: 53,44 против 53,04, а на новых даже чуть хуже. Его польза в другом: то же качество получается за треть токенов.

Весь выигрыш по качеству приносят симуляции: +3,5 на обучающих и почти +5 на новых, ценой вдвое большего числа токенов. То есть главное в работе — не дерево из названия, а самодельные миры: учиться на упрощённом оказалось полезнее, чем на самих бенчмарках.

Это и есть самый неожиданный результат статьи.

Модули. Если дать базовой обвязке подходящий по способности модуль, она прибавляет 19,4 пункта, если неподходящий — 1. Значит, работает содержание модуля, а не сам факт длинного промпта.

А вот если у финальной обвязки отнять подходящий модуль, она теряет всего 2,7: к четвёртой итерации модули сильно дублируют друг друга.

▍ Мелкий шрифт

Остальное, что стоит знать, прежде чем пересказывать цифры из аннотации:

  • Модель одна. Переносятся ли выученные модули на другую модель, особенно более слабую, не проверялось.

  • Выборки маленькие. Разброса по запускам в основном тексте я не увидел, а эпизодов местами совсем мало: 9 в Memory Maze, по 10 на каждого робота.

  • Часть сред собрали агенты. Девять обучающих сред воссозданы по правилам, найденным поиском, и авторы признают, что качество здесь зависит от того, что нашлось.

  • Роботы сравниваются не один к одному. Обвязки разных итераций отличаются интерфейсами и правилами зачёта, вплоть до «поднять или сдвинуть стаканчик», и авторы сами пишут, что вклад модулей от вклада навыков там не отделён.

  • Кода нет. В репозитории обещали выложить его в течение недели после 28 октября, но на момент написания там только README, картинки и PDF.

▍ Итоги

Результат — с 39 до 73 пунктов на обучающих бенчмарках за четыре итерации и на 15% меньше токенов, без единого шага градиента.

С новыми задачами скромнее: заявленные +26 включают пять пробных попыток, идеальный выбор обвязки и двух роботов с нулевой базой, а без подготовки модули первой итерации дают +9,8. Ну и Memory Maze: после 29 модулей и игры в напёрстки руками робота агент, судя по всему, всё ещё не находит выход в восьми попытках из девяти.

Статья на arXiv и Страница проекта