Что такое делегирование в Hermes Agent
Делегирование — это механизм, позволяющий агенту создавать изолированные дочерние агенты (субагенты) для выполнения подзадач параллельно. Вместо того чтобы решать все задачи последовательно в одном контексте, агент может разделить работу между несколькими субагентами, каждый из которых работает независимо с собственной сессией терминала и контекстом.
Инструмент delegate_task
Основной инструмент делегирования — delegate_task. Он принимает следующие параметры:
goal— чёткое описание цели для субагента (обязательный параметр)context— дополнительный контекст: файлы, инструкции, ссылки на кодtoolsets— массив инструментов, доступных субагенту (например,["terminal", "file"])role— роль:"leaf"(по умолчанию) или"orchestrator"modelиprovider— переопределение модели для экономии средствmax_iterations— лимит ходов (по умолчанию 50)
Параллельные задачи
Когда агент вызывает delegate_task с массивом задач, субагенты запускаются параллельно. По умолчанию одновременно может работать до 3 субагентов (max_concurrent_children). Каждый субагент получает:
- Собственную сессию терминала, изолированную от родителя
- Свежий контекст разговора, не содержащий истории родителя
- Доступ только к разрешённым инструментам
Роли: orchestrator vs leaf
По умолчанию все субагенты имеют роль leaf — они не могут делегировать задачи дальше. Это предотвращает бесконечную рекурсию.
Роль orchestrator позволяет дочернему агенту сохранять инструмент delegate_task и создавать собственных субагентов. Это полезно для многоуровневых рабочих процессов: исследование → синтез, или параллельная оркестрация подзадач. Глубина вложенности регулируется параметром max_spawn_depth (по умолчанию 1, максимум 3).
Важно: при max_spawn_depth: 3 и 3 параллельных субагентах на каждом уровне дерево может содержать до 27 одновременных leaf-агентов, что значительно увеличивает расход токенов.
Изолированность и ограничения
Субагенты не могут использовать следующие инструменты:
clarify— субагенты не взаимодействуют с пользователемmemory— нет записи в общую памятьsend_message— нельзя отправлять сообщения в мессенджерыcode_execution— субагенты должны рассуждать пошагово
Leaf-субагенты дополнительно заблокированы от вызова delegate_task.
Конфигурация
Параметры делегирования настраиваются в ~/.hermes/config.yaml:
max_iterations— максимальное число ходов на субагента (по умолчанию 50)max_concurrent_children— число параллельных субагентов (по умолчанию 3)max_spawn_depth— глубина дерева делегирования (1–3)child_timeout_seconds— тайм-аут простоя субагента (по умолчанию 600 секунд)modelиprovider— переопределение модели для субагентов
Важные свойства
delegate_taskявляется синхронным — он блокирует родителя до завершения всех детей- Прерывание родителя приводит к отмене всех активных субагентов
- Субагенты наследуют API-ключи и пул учётных данных родителя
- В контекст родителя попадает только итоговая сводка, что экономит токены