Когда делегировать
Делегирование подзадач субагентам — ключевая возможность Hermes Agent. Оно позволяет выполнять несколько задач параллельно, изолировать контекст и экономить итерации основного агента. Вот основные ситуации, когда делегирование уместно:
- Параллельные независимые задачи — когда нужно исследовать несколько тем, проверить несколько файлов или протестировать несколько подходов одновременно.
- Изоляция контекста — когда задача требует «свежего взгляда» без накопленных в беседе предположений.
- Мультифайловая работа — рефакторинг затрагивающий множество файлов, где каждый субагент отвечает за свой набор файлов.
- Ресурсоёмкий анализ — когда задача требует длительного рассуждения и не должна загромождать контекст основного агента.
Паттерн: параллельный ресёрч
Самый распространённый паттерн. Запускаете несколько субагентов одновременно, каждый изучает свой аспект темы. Пример: один субагент ищет информацию о ценах конкурентов, другой — об отзывах пользователей, третий — о технических особенностях продукта.
Ключевые правила:
- Каждый субагент получает чёткую цель и список источников.
- Используйте toolset
["web"]для веб-исследований — это ограничивает субагента только поиском и извлечением контента. - Результаты собираются автоматически, основной агент синтезирует итоговый отчёт.
Паттерн: ревью кода
Делегируйте ревью кода субагенту с toolset ["file"] (только чтение, без shell). Субагент анализирует файлы и возвращает список проблем, не имея возможности случайно изменить что-либо. Основной агент затем принимает решение о том, какие изменения вносить.
Для более глубокого ревью с запуском тестов используйте ["terminal", "file"] — субагент сможет запустить тесты и линтеры.
Паттерн: мультифайловый рефакторинг
Когда нужно обновить десятки файлов по одному шаблону — разбейте работу между субагентами. Каждый получает свой набор файлов с чётким описанием изменений:
- Цель — конкретное описание, что изменить (не «пофикси баг», а «в строке 47 файла api/handlers.py замени вызов old_func на new_func»).
- Контекст — абсолютные пути к файлам, корень проекта, команда запуска тестов.
- Toolsets —
["terminal", "file"]для работы с кодом.
Важно: каждый субагент получает собственную сессию терминала. Они могут работать с одной директорией проекта, если редактируют разные файлы. Если два субагента могут затронуть один файл — обработайте этот файл самостоятельно.
Паттерн: сбор данных и анализ
Двухшаговый подход. Сначала execute_code выполняет механический сбор данных (десятки последовательных запросов), затем субагент проводит аналитическую работу с чистым контекстом. Это часто самый эффективный паттерн — код дёшево обрабатывает рутинные запросы, а субагент фокусируется на рассуждениях.
Настройка инструментов (Toolsets)
Выбирайте набор инструментов в зависимости от задачи:
["web"]— только веб-поиск и извлечение контента.["terminal", "file"]— работа с кодом: shell и файловые операции.["terminal", "file", "web"]— полный набор для комплексных задач.["file"]— только чтение файлов, без shell (для анализа).
Ограничение toolsets удерживает субагента в фокусе и предотвращает случайные побочные эффекты.
Ограничения и настройка
- По умолчанию 3 параллельных субагента — настраивается через
max_concurrent_childrenв config.yaml. - Каждый субагент — отдельная сессия с собственным терминалом и рабочей директорией.
- Нет истории беседы — субагент видит только цель и контекст, переданные при вызове.
- 50 итераций по умолчанию — для простых задач можно уменьшить через
max_iterations. - Не durable — если основной агент прерван, все дочерние задачи отменяются. Для долгосрочной работы используйте
cronjobили фоновые процессы.
Советы
- Будьте конкретны в целях — «пофикси баг» слишком расплывчато. «Исправь TypeError в api/handlers.py строка 47» — достаточно для работы.
- Указывайте абсолютные пути — субагенты не знают структуру вашего проекта.
- Проверяйте результаты — субагент возвращает саммари. Если он говорит «тесты проходят», проверьте это сами.
- Используйте делегирование для изоляции контекста — формулирование задачи для субагента заставляет вас чётко артикулировать проблему.