Делегирование

Что такое делегирование в 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-ключи и пул учётных данных родителя
  • В контекст родителя попадает только итоговая сводка, что экономит токены