Компания Nous Research пересекла категориальный архитектурный рубеж 15 июня 2026 года, выпустив поддержку асинхронных подуктов для Hermes Agent — автономного агента с открытым исходным кодом, который в настоящее время лидирует в мировых еженедельных рейтингах токенов OpenRouter. До сих пор модель делегирования «родитель-потомок» этого агента на практике была последовательной: когда родительский агент передавал работу дочернему агенту, разговор родителя «замораживался» до завершения каждой делегированной задачи. Новый набор инструментов async_delegation — отслеживаемый в GitHub Issue #5586 — устраняет это ограничение. Фоновые подукты теперь выполняются как внутрипроцессные потоки, немедленно возвращают идентификатор задачи и завершаются, не удерживая родительскую сессию в заложниках. Существующие пользователи могут получить обновление, выполнив команду hermes update.
Это изменение имеет значение не только для удобства рабочего процесса. Предыдущая блокирующая архитектура означала, что Hermes, несмотря на то что с момента запуска в феврале 2026 года он был построен на модели делегирования «родитель-потомок», не мог функционировать как по-настоящему конкурентная среда исполнения для нескольких агентов. Делегирование было доступно, но каждая делегированная задача на время своего выполнения возвращала весь рабочий процесс к последовательному исполнению. Это тот же самый «бутылочное горлышко», которое исторически отличало фреймворки агентов с открытым исходным кодом от корпоративных платформ оркестровки — и Nous Research только что его устранила.
Почему блокирующая архитектура была структурной, а не случайной
Система делегирования Hermes Agent сосредоточена вокруг инструмента под названием delegate_task, который порождает дочерние агенты — подукты — для распределения работы по параллельным задачам. Каждый подук получает свой собственный новый сеанс связи, свою собственную терминальную сессию и свой собственный набор инструментов. Только итоговое резюме возвращается родителю; промежуточные вызовы инструментов и рассуждения остаются в контексте потомка. Эта изоляция сохраняет контекстное окно родителя «легким», что важно в длительных сеансах, которые со временем порождают множество задач.
Исходный delegate_task был синхронным: родитель входил в вызов инструмента и оставался там «замороженным», пока все потомки не завершатся. Сеанс, который одновременно отправлял задачу на исследование и задачу по документированию, должен был ждать завершения одной, прежде чем другая могла даже начаться. Пользователи не могли задать родителю последующий вопрос, перенаправить запущенную задачу или начать третью задачу, пока выполнялись первые две. Каждое делегирование, независимо от того, насколько логически независимой была работа от родительского диалога, приводило к полной остановке.
Это не было незначительной проблемой пользовательского опыта (UX). Это было структурное ограничение на класс рабочих процессов, которые могла обслуживать платформа. Задачи с долгосрочным горизонтом — аудит кодовой базы, многоэтапные исследования, параллельное составление документации — не могли выполняться параллельно с родительским сеансом, который их контролировал. Архитектура приводила к последовательному поведению агента, который архитектурно был спроектирован для параллелизма.
Как async_delegation работает «под капотом»
Набор инструментов async_delegation решает проблему блокировки, отправляя фоновые агенты в виде внутрипроцессных потоков, а не выполняя их внутри вызова инструмента родителя. Родитель вызывает delegate_task_async, немедленно получает task_id и продолжает обработку сообщений. Дочерний агент выполняется независимо, используя те же механизмы AIAgent, учетные данные и наборы инструментов, что и синхронный путь — модель исполнения меняется, но гарантии изоляции и возможностей остаются прежними.
Набор инструментов охватывает полный жизненный цикл асинхронного подукта:
delegate_task_async порождает фоновый агент и немедленно возвращает идентификатор задачи, освобождая родителя для продолжения работы. check_task предоставляет неблокирующий опрос статуса, который возвращает текущее состояние и недавний вывод запущенной задачи без необходимости ожидания со стороны родителя. steer_task внедряет сообщение в запущенную задачу, позволяя родителю или пользователю перенаправить работу «на лету». collect_task блокирует выполнение до завершения задачи, а затем возвращает полный результат — используется, когда родителю явно необходимо дождаться вывода, прежде чем продолжить. cancel_task останавливает запущенную задачу. list_tasks возвращает все асинхронные задачи, активные в сеансе.
Управление учетными данными не изменилось. Подукты наследуют ключ API родителя, конфигурацию провайдера и пул учетных данных, включая логику ротации ключей, которая автоматически обрабатывает лимиты скорости (rate limits). Маршрутизация подуктов к различным, менее дорогим моделям через config.yaml остается доступной — это рычаг оптимизации затрат, который становится более полезным, когда несколько подуктов могут работать параллельно.
Чем управляет разработчик во время работы подуктов
Операционный сдвиг значителен. Теперь разработчик может запустить длительный аудит безопасности в виде фонового подукта, вернуться в родительский чат, чтобы задать несвязанный вопрос или начать вторую задачу, и проверить статус через check_task или оверлей /agents в терминальном пользовательском интерфейсе (TUI), когда это удобно. TUI предоставляет древовидное представление всех запущенных и завершенных подуктов в реальном времени, обеспечивая видимость делегированной работы без необходимости приостановки родительского диалога.
Стирринг (Steering) — это дополнение, которое больше всего меняет модель надзора. steer_task позволяет пользователю внедрить новую инструкцию в запущенный подук — перенаправить область действия, добавить ограничение или отменить ветвь работы — не дожидаясь завершения задачи и не прекращая ее полностью. Это было невозможно при синхронной архитектуре, где у родителя не было канала связи с запущенным потомком.
Основное ограничение текущей реализации — это долговечность (durability): асинхронные подукты работают в рамках одного сеанса и не сохраняются между границами сеансов. Nous Research отслеживает сохранение данных между обращениями в отдельном GitHub issue, #4949, в рамках спецификации Agent Conversation Protocol, которая позволит асинхронному делегированию пережить перезапуск сеанса. Эта работа все еще находится в процессе; на данный момент асинхронные подукты ограничены временем жизни сеанса, который их запустил.
Где останавливается рекурсия: Безопасность и пределы глубины
По умолчанию подукты не могут сами порождать дальнейшие подукты. Набор инструментов делегирования заблокирован для дочерних элементов самого нижнего уровня, чтобы предотвратить неограниченную рекурсию. Для команд, создающих вложенные многоагентные конвейеры — где агенты-оркестраторы координируют агентов-исполнителей, которые, в свою очередь, координируют подукты-исполнители — режим оркестратора (orchestrator mode) открывает более глубокое вложение через настраиваемый параметр max_spawn_depth. По умолчанию структура остается плоской: родитель может порождать множество подуктов, но эти подукты не могут делегировать дальнейшие задачи, если это явно не настроено.
Это ограничение также сужает поверхность агентных систем, в которых один скомпрометированный или некорректно работающий подук может распространять ошибки по нескольким уровням иерархии. Исследователи безопасности и команды корпоративного управления все чаще отмечают неограниченную рекурсию агентов как вектор риска; блокировка делегирования, порожденного потомками, по умолчанию является архитектурной защитой, а не произвольным ограничением.
Конкурентные агенты теперь — базовое требование: Что это значит для отрасли
Сроки выпуска этого обновления ставят его в прямой диалог с тем, что коммерческие платформы предлагают в качестве базовой функциональности. OpenAI Codex, который в собственной технической документации описывается как предназначенный для оркестровки нескольких агентов, выполняющих задачи параллельно в изолированных средах, предлагает параллельное развертывание агентов с момента своего первоначального запуска. AgentCore от Amazon Web Services, который сейчас находится в предварительной версии в четырех регионах, обеспечивает параллельное выполнение агентов с управляемыми сеансами исполнения с сохранением состояния. Обе платформы рассматривают неблокирующую многоагентную конкурентность как ожидаемую базу, а не как премиальную функцию.
Hermes Agent, который собрал более 193 000 звезд на GitHub с момента запуска в феврале 2026 года и теперь лидирует в глобальных рейтингах агентов OpenRouter с примерно 4,94 триллионами еженедельных токенов, закрыл этот разрыв одним дополнением к набору инструментов. Базовый уровень с открытым исходным кодом для конкурентной многоагентной оркестровки сместился. Команды, оценивающие, стоит ли им разрабатывать на базе Hermes или мигрировать на коммерческую облачную платформу, теперь обнаружат, что различие между блокировкой и конкурентностью больше не разделяет их.
Более широкое следствие архитектурное: Hermes сменил категорию. То, что ранее функционировало как способный постоянный агент с возможностями делегирования, теперь функционирует как конкурентная среда исполнения для нескольких агентов. Это меняет то, какие рабочие процессы вообще возможны — а не только то, как быстро они выполняются — и делает это на платформе, которая остается бесплатной, имеет лицензию MIT и может быть размещена пользователем самостоятельно.
Часто задаваемые вопросы
Что такое асинхронные подукты в Hermes Agent?
Асинхронные подукты — это дочерние агенты, которые родительский Hermes Agent порождает для обработки делегированных задач без блокировки родительского диалога. В предыдущей синхронной модели родитель «замирал» до завершения работы всех потомков. С набором инструментов async_delegation каждый потомок выполняется как внутрипроцессный фоновый поток, немедленно возвращает идентификатор задачи, и родительский сеанс продолжает работу без перерыва.
Как включить асинхронные подукты в Hermes Agent?
Существующие пользователи Hermes могут получить доступ к асинхронным подуктам, выполнив команду hermes update в терминале. Набор инструментов async_delegation затем становится доступен через стандартный интерфейс делегирования, с дополнительными командами для проверки статуса, управления запущенными задачами и сбора результатов.
Как async_delegation Hermes Agent соотносится с конкурентностью OpenAI Codex?
Обе системы теперь поддерживают неблокирующее параллельное развертывание агентов. OpenAI Codex выполняет задачи в изолированных облачных «песочницах» и доступен по подписке. Hermes Agent запускает подукты как внутрипроцессные потоки на собственной инфраструктуре пользователя и имеет лицензию MIT без требования подписки. Ключевое архитектурное различие — это модель владения и развертывания: Codex управляется из облака, в то время как Hermes размещается пользователем самостоятельно и является агностиком к моделям.
Каковы ограничения асинхронных подуктов в Hermes Agent?
Асинхронные подукты привязаны к текущему сеансу и не сохраняются между границами сеансов. По умолчанию подукты не могут сами порождать дальнейшие подукты — этот блок рекурсии является намеренным ограничением безопасности. Режим оркестратора открывает вложенное делегирование через настраиваемую максимальную глубину порождения для команд, создающих иерархические многоагентные конвейеры.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Eloise Jones




