Гибридные агенты: латентные рассуждения без лишних токенов
Гибридные агенты выносят рассуждения в латентное пространство и сокращают токены на 35–55%. Плюсы по эффективности и цена в интерпретируемости.

Вот неудобная правда о LLM-агентах: большая часть генерируемых ими токенов — это дорогой балласт. Агент, решающий математическую задачу, с удовольствием напишет «давай перечитаю вопрос» и «пока что я выяснил, что...» по полной цене инференса, тратя те же вычисления на риторическое покашливание, что и на реальную арифметику. Латентные рассуждения — когда мышление происходит в скрытых состояниях модели, а не в тексте — всегда были очевидным решением, и новая статья о Hybrid Reasoning Agents показывает, что оно наконец стало практичным. Но у очевидного решения есть цена, которую в этой области никто не любит платить: больше нельзя прочитать, о чём думает модель.
Я годами наблюдал, как команды пытаются сделать цепочку рассуждений дешевле. Каждый подход упирается в одну и ту же стену, и стоит понять, почему гибридный подход устроен иначе — и почему я всё равно не стал бы его внедрять там, где не могу позволить себе тихий сбой.
Почему текстовая цепочка рассуждений расходует токены впустую
Цепочка рассуждений была действительно великим открытием. Позвольте модели расписать промежуточные шаги, и точность в математике, логике и многошаговых вопросах заметно вырастает. Проблема в том, что язык — ужасный формат сериализации для вычислений. Слова неточны, избыточны и, что критично для вашего счёта за инференс, последовательны.
Подумайте, что происходит, когда модель «пересказывает условие задачи» перед решением. Это несколько сотен токенов, генерируемых по одному, каждый из которых требует полного прохода вперёд, а информационная ценность близка к нулю — условие уже есть в контексте. Современные reasoning-модели полны такого. Кто видел трассировку рассуждений современной модели, видел абзацы самоуспокоения, пересказа и оговорок, которые инженер назвал бы шумом. В агентных задачах с вызовами инструментов ещё хуже: модель рассказывает, что собирается сделать, делает это, а потом рассказывает, что только что сделала.
На масштабе агентов экономика усугубляется. Агент, который делает десять вызовов инструментов, перед каждым из которых выдаёт многословную преамбулу, может тратить 80% бюджета токенов на повествование. Если вы платите за токены — а вы платите, — это реальные деньги. Это ещё и задержка, что критично для агентов, которых ждут люди. Это то же давление, что стоит за стремлением к более дешёвым и быстрым тарифам инференса: узкое место — не интеллект, а стоимость его выражения в словах.
Неудачные попытки: усечение, дистилляция и чисто латентные рассуждения
Область атаковала проблему с трёх направлений, и каждое из них сломалось поучительным образом.
Попытка 1: просто генерировать меньше токенов
Бюджетное ограничение (budget forcing), штрафы за длину, файн-тюнинги на лаконичные рассуждения — наивный подход заставить модель меньше думать текстом. Он работает до определённой точки, а затем точность резко падает. Подробная трассировка — не чистые потери; часть кажущейся избыточности несёт нагрузку. Слепое сжатие выбрасывает вычисления вместе с балластом, и снаружи не отличить одно от другого.
Попытка 2: чисто латентные рассуждения
Более элегантная идея: вообще не порождать токены мышления. Подавать выходные эмбеддинги модели обратно на вход — непрерывный «вектор мысли» вместо дискретных слов — и дать ей рассуждать внутренне много шагов, прежде чем выдать ответ. Исследования вроде COCONUT показали, что это может сравняться или превзойти текстовую цепочку рассуждений на некоторых задачах при доле проходов вперёд. Но у чисто латентных рассуждений для агентов две фатальные проблемы. Во-первых, внешний мир говорит текстом: API инструментов принимают строковые аргументы, поисковики — запросы, пользователи хотят ответы прозой. Модель, которая думает только векторами, всё равно должна переводить всё на границе, а именно там прячутся ошибки. Во-вторых — и вот об этом спорят — мышление становится чёрным ящиком. Вы полностью теряете трассировку рассуждений, которая сейчас остаётся нашим единственным более-менее пригодным окном в то, почему модель поступила именно так.
Попытка 3: паузы-токены и заполняющие вычисления
Более тихая линия работ пробовала вставлять бессмысленные «паузные» токены, чтобы дать модели дополнительные вычисления без дополнительного содержания. Результаты в лучшем случае смешанные, и из лаборатории это так и не вышло. Оказалось, что содержание промежуточных токенов важно для управления вычислениями, а не просто их наличие.
Что реально работает: гибридные агенты для рассуждений
В статье HybridAgent занимает прагматичную позицию, которой я хотел бы видеть больше в исследованиях: перестать выбирать между латентными и текстовыми рассуждениями и позволить модели переключаться между ними прямо в процессе генерации. Думать латентно, когда идёт внутреннее вычисление; переходить на текст, когда нужно вызвать инструмент, прочитать его ответ или объяснить что-то человеку.
Архитектура состоит из трёх частей, которые стоит понять. Лёгкий модуль под названием HybridLink отвечает за переходы: превращает финальное скрытое состояние латентного сегмента в то, с чего текстовый режим может продолжить, и наоборот. Непрерывная рабочая память хранит полный гибридный контекст между ходами, так что латентные мысли из первого хода остаются доступны на пятом, а не сворачиваются в текстовое резюме. А на стороне обучения — два этапа: HybridSFT учит основную модель вообще координироваться с HybridLink, а затем HybridRL с помощью обучения с подкреплением учит её, когда каждый режим стоит своей цены.
Эта последняя часть, по-моему, и есть настоящий вклад. Трудная задача никогда не была в вопросе «может ли модель рассуждать в латентном пространстве» — мы знали, что может. Трудность в политике: какие части задачи заслуживают дешёвых непрозрачных вычислений, а какие — дорогого проверяемого текста. Выучивать эту политику через RL, по реальным наградам за задачу, — вот как получить что-то, что работает, а не просто хорошо демонстрируется.
Заявленные цифры впечатляют: на 11 бенчмарках — математика, наука, медицина, поиск и агентные рассуждения — гибридный агент показывает примерно 10% прироста относительно и текстовых, и латентных базовых моделей, при сокращении токенов на 35–55%, ускорении инференса в 1,8–2,6 раза и примерно трёхкратной экономии. К результатам одной статьи стоит относиться с привычной долей скепсиса — бенчмарки регулярно упускают то, как выглядят реальные нагрузки, — но направление результата совпадает с теорией. Если бóльшая часть трассировки — балласт, то её удаление должно в основном убирать стоимость, а не способности.

Как выглядят латентные рассуждения в коде
Механически приём проще, чем кажется. В текстовом режиме вы семплируете токен, эмбеддите его и подаёте обратно на вход. В латентном режиме семплирование пропускается, и выходной вектор модели — возможно, пропущенный через небольшую проекцию — сразу подаётся обратно как следующий вход. Специальный управляющий токен или обученный гейт решает, в каком вы режиме. Схематично:
def hybrid_step(hidden_state, mode_gate, hybrid_link):
mode = mode_gate(hidden_state) # learned: LATENT or TEXT
if mode == LATENT:
# No sampling. Feed the continuous thought back in.
next_input = hybrid_link.latent_in(hidden_state)
return next_input, None # nothing human-readable emitted
# TEXT mode: normal autoregression
logits = lm_head(hidden_state)
token = sample(logits)
next_input = hybrid_link.text_in(embed(token))
return next_input, token # inspectable output
Настоящая система добавляет рабочую память и механизмы обучения, но это и есть ядро цикла. Обратите внимание, что это значит для вашего стека обслуживания: латентные шаги — это всё равно полноценные проходы вперёд. Вы экономите на количестве токенов — длине вывода, росте контекста, давлении на KV-кэш от длинных трассировок, — а не на вычислениях на шаг. Ускорение инференса в 2 с лишним раза получается в основном за счёт более коротких последовательностей и меньшего авторегрессивного декодирования текста, а не за счёт бесплатного мышления. Один комментатор статьи предложил пойти дальше и запускать латентный путь параллельно с генерацией текста, раз уж проход вперёд всё равно оплачивается. Это действительно интересная идея, и она показывает, насколько молодо это пространство проектирования.
Цена интерпретируемости, которую никто не хочет платить
Теперь о том, что я был бы недобросовестным пропустить. Трассировка рассуждений — не просто удобство для отладки, это механизм безопасности. Когда агент делает что-то странное в продакшене, первое, что вы делаете, — читаете его трассировку. Когда исследователи согласованности ищут обманчивое поведение, они смотрят, не противоречат ли рассуждения финальному ответу. Перенесите рассуждения в векторы — и оба этих процесса погаснут.
В статье говорится, что непрерывная рабочая память делает латентные мысли «непосредственно проверяемыми». Я бы отнёс это к разряду «технически верно, практически вводит в заблуждение». Векторы можно исследовать так же, как любое скрытое состояние: пробинг-классификаторами, декодерными проекциями, анализом ближайших соседей в пространстве эмбеддингов. Это инструменты исследовательского уровня, а не рабочий процесс дежурного инженера. Разница как между чтением лог-файла и подключением отладчика к дампу памяти. Некоторые из нас давно скептически относятся к завышенным обещаниям интерпретируемости, и буфер рабочей памяти не меняет фундаментальной асимметрии: текст читаем для любого, латентные состояния читаемы почти ни для кого.
Есть и менее обсуждаемый режим отказа: тихое распространение ошибок. В текстовой трассировке ошибочный промежуточный шаг виден и иногда сам себя исправляет — модели замечают собственные ошибки, перечитывая их. Ошибочная латентная мысль распространяется через рабочую память без всякого текстового следа. Финальный ответ агента выглядит одинаково гладко, независимо от того, было ли латентное обдумывание корректным или мусорным. Для команд, которые запускают агентов в продакшене, это напрямую связано с компромиссом между сдерживанием и мониторингом: гибридные агенты подталкивают к сдерживанию, потому что мониторить стало намного сложнее.
В обсуждении статьи открыто отмечали, что латентные рассуждения в некоторых частях исследовательского сообщества были неофициально под запретом именно по этим причинам. Этот запрет явно снят. Я не думаю, что это автоматически плохо, но те, кто радуется цифрам эффективности, должны честно признавать, что платят за них интерпретируемостью.
Разрыв между статьёй и вашей видеокартой
Код, веса и данные открыты, и это действительно здорово. Но это же быстро дало суровую проверку реальностью. Уже через несколько часов практики, запускавшие опубликованные модели локально, сообщили о деградировавшем поведении: одна квантованная сборка на 8B застряла, бесконечно повторяя один и тот же абзац текстового рассуждения в ответ на «кто такой папа римский», а сборка на 14B зацикливалась на вариациях одного и того же абзаца пять минут при рутинной задаче «найди и суммируй», с которой сопоставимые модели справляются без проблем.
Возможно, это артефакты квантования или несовпадения чат-шаблонов — поддержка совершенно новой архитектуры в llama.cpp всегда лотерея. Но я подозреваю, что сбой с зацикливанием не случаен. Переключение режимов — выученное поведение, а выученное поведение первым ломается при квантовании и сдвиге распределения. Модель, чья политика переключения между латентным и текстом немного сбита, не падает громко; она падает тем, что никогда не решает перестать думать. Для продакшен-агента это гораздо более неприятный режим отказа, чем неверный ответ, потому что он бесконечно сжигает бюджет. Если вы сегодня строите агентные циклы, это ещё один аргумент в пользу жёстких лимитов на ходы и токены вокруг каждого вызова модели — той дисциплины, о которой говорится в разборе того, как агентные CLI структурируют свои циклы, — независимо от того, какую парадигму рассуждений вы выбираете.

Стоит ли вам обращать внимание? Прагматичный вердикт
Да, но как ориентир, а не как зависимость. Мое честное мнение:
- Аргумент об эффективности реален и структурен. Текст — плохая среда для внутренних вычислений, и по мере роста горизонта задач агентов налог токенов на повествование будет только расти. Какая-то форма латентных рассуждений придёт в продакшен-модели, нравится нам это или нет; можно сказать, что непрозрачный подход «сводки рассуждений», который используют ведущие лаборатории, уже является шагом по этому пути.
- Цена интерпретируемости тоже реальна и сейчас недооценена. Если вашему сценарию нужен аудит того, почему агент действовал, — медицина, финансы, всё регулируемое, — текстовые трассировки являются функцией, от которой отказываться можно только на свой страх и риск.
- Нынешние артефакты — исследовательского уровня. Зацикливание на простых промптах, неопределённое поведение при квантовании и политика переключения режимов, которую нельзя легко проверить, — это не то, что ставят за клиентский API.
- Гибридная рамка — правильная. Чисто латентные рассуждения никогда не выдержали бы контакта с API инструментов и пользователями; чисто текстовые не выдержат контакта со счётом за инференс. Выученная граница между ними — куда всё это и придёт.
Более глубокая мысль в том, что «мышление словами» всегда было случайностью того, как мы обучали эти модели, а не законом мышления. Нет никакой теоремы о том, что язык — правильная зернистость машинного мышления; удивительно лишь то, что он работал так хорошо. Гибридные агенты для рассуждений — первый достоверный набросок того, что придёт следом: модели, которые обдумывают приватно и говорят только тогда, когда говорить — их работа. Сможем ли мы построить это будущее, не потеряв способности проверять работу машины, — по-моему, самый важный открытый вопрос в проектировании агентов прямо сейчас.


