раздел 08 · подстраница 2

Как Claude решает делегировать

Субагент сам не запустится. Его должен позвать главный Claude. Делегирование запускается тремя способами - автоматически по описанию, явно через @имя или ручным указанием от вас.

Три способа триггера

1. Автоматический - по description во frontmatter

Главный Claude при каждом сообщении сканирует список доступных агентов и сравнивает их description с тем, что попросил пользователь. Если совпало - агент запускается без вопросов.

Поэтому description - это не комментарий "для красоты", а реальный seed для матчинга. Пишите его как триггер:

description: Запускать когда пользователь просит ревью кода,
  сказал "проверь diff", "ревью изменений" или хочет апрув перед коммитом.

2. Явный вызов - через @имя_агента

В чате вы пишете прямо:

> @code-reviewer проверь последний коммит

Это работает всегда, даже если description агента не сматчился. Используйте, когда автоматика молчит.

3. Ручное направление от пользователя

Можно сказать словами:

> делегируй задачу субагенту researcher: найди топ-5 ORM для Python
> по состоянию на 2025, со сравнением.

Главный Claude увидит ключевое слово "делегируй" и сам найдёт подходящего по имени.

Что НЕ работает

  • description: "общий помощник" - слишком размыто, Claude не сматчит ни на что.
  • description: "code review" - короткое и без контекста, Claude не поймёт, когда именно запускать.
  • Куча агентов с пересекающимся описанием - Claude путается, какого выбрать.

Что работает

Конкретные триггеры с реальными словами пользователя:

description: Запускать когда пользователь просит "написать тесты",
  "покрыть тестами", "добавить test coverage". Пишет pytest для бэкенда
  и vitest для фронта. НЕ запускать для модификации существующих тестов.

Заметили НЕ запускать - это тоже сигнал. Описывает, когда агента НЕ нужно дёргать.

Как проверить, что Claude видит агента

Просто спросите:

> какие субагенты тебе доступны сейчас?

Главный Claude перечислит все агенты из .claude/agents/ (проектные) и ~/.claude/agents/ (глобальные). Если ваш агент не в списке - проверьте имя файла и YAML.

Изоляция контекста

Когда субагент запускается, он получает:

  • Свой системный промпт (тело .md-файла)
  • Конкретную задачу от главного Claude (одно сообщение)
  • НЕ получает - историю переписки главного Claude, его CLAUDE.md, его контекст

Это нарочно. Агент должен работать "с чистой головой". Иначе зачем разделять?

После окончания агент возвращает главному Claude только финальный отчёт. Главный сам решает, что с этим делать дальше.

Антипаттерны

  • Ожидать, что агент "помнит" предыдущий разговор. Не помнит. Контекст изолирован.
  • Делегировать слишком мелкие задачи. Запуск агента - это полный цикл (контекст, токены, время). Для "поменяй переменную" - не нужно.
  • Цепочки агент-вызывает-агента глубже 2 уровней. Контроль теряется быстро.

Полезные ссылки

  • Subagents docs - официальная документация
  • Task tool - механизм, через который запускаются агенты