AmigaОбучение ИИ
Модуль 3 · Настройка · урок 9 из 13

Субагенты

11 мин чтения▶ есть видеоверсия

В уроке про контекст мы несколько раз говорили: «отдайте это субагенту». Пора разобраться, что это такое. Субагенты — способ разделить работу на изолированные контексты: основной разговор остаётся чистым, а шумные или специализированные задачи выполняются отдельно. В этом уроке — как они устроены, какие есть из коробки и как написать свой.

Что такое субагент

Субагент — это отдельный запуск Claude с собственным контекстным окном, собственной системной инструкцией и, при желании, ограниченным набором инструментов. Основной агент передаёт ему задачу, субагент работает — читает файлы, запускает команды — и возвращает в основной разговор только итоговый отчёт. Все промежуточные чтения и выводы команд остаются в его окне и не засоряют ваше.

Отсюда три свойства, ради которых субагентов используют:

  • Изоляция контекста. Исследование на пятьдесят файлов не попадает в основной разговор.
  • Специализация. У субагента своя инструкция: «ты ревьюер безопасности», «ты запускаешь тесты и разбираешь падения».
  • Ограничение инструментов. Ревьюеру можно дать только чтение и поиск — он физически не сможет ничего изменить.

Субагент не видит историю основного разговора. Он получает системную инструкцию, текст задачи, файлы CLAUDE.md и снимок состояния git. Это надо учитывать при постановке задачи: всё, что он должен знать, нужно передать явно. Исключение — субагент-«форк», который стартует с копией текущего разговора.

Встроенные субагенты

Claude Code поставляется с несколькими субагентами, которых не нужно настраивать.

Explore — только чтение, без правок. Для поиска файлов и исследования кода. Чтобы работать быстро и дёшево, он пропускает загрузку CLAUDE.md и git-статуса. Именно его Claude выбирает, когда вы пишете «используй субагента, чтобы разобраться…».

Plan — тоже только чтение, используется в режиме планирования для исследования перед составлением плана.

general-purpose — со всеми инструментами, для сложных многошаговых задач, включая правки кода.

Есть и служебные: claude-code-guide отвечает на вопросы о самом Claude Code, statusline-setup настраивает строку состояния.

Вызвать субагента можно обычным языком:

text
используй субагента, чтобы выяснить, как в проекте обновляется токен
и есть ли готовые утилиты для OAuth

Claude сам выберет подходящего по описанию. Если нужен конкретный — упомяните его через @: @agent-security-reviewer проверь изменения в auth. Упоминание гарантирует вызов именно этого субагента.

По умолчанию субагенты работают в фоне: основной агент продолжает работу, а запросы на разрешения от субагента всплывают в основной сессии. Список запущенных показывает /list-agents, остановить все фоновые — Ctrl+X Ctrl+K.

Свой субагент: формат файла

Субагент — это markdown-файл с YAML-заголовком. Место хранения определяет область:

Путь Область
.claude/agents/ Проект, в git, для всей команды
~/.claude/agents/ Все ваши проекты, только вы

Обе папки сканируются рекурсивно, так что субагентов можно раскладывать по подпапкам. Минимальный файл:

markdown
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---

You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.

Обязательны два поля. name — идентификатор латиницей в нижнем регистре с дефисами. description — когда Claude должен делегировать этому субагенту; по нему модель решает, кого вызвать, поэтому пишите конкретно и коротко. Текст после заголовка — системная инструкция субагента.

Необязательные поля, которые пригодятся чаще других:

  • tools — список разрешённых инструментов через запятую. Без поля субагент наследует все. disallowedTools — наоборот, список запрещённых.
  • modelsonnet, opus, haiku или inherit. Для простых задач haiku заметно дешевле.
  • permissionMode — режим прав субагента: default, acceptEdits, plan и другие.
  • maxTurns — предел шагов, после которого субагент остановится с частичным результатом.
  • memory — постоянная память субагента (user, project или local), чтобы он накапливал знания между сессиями.
  • skills — навыки, которые загружаются в контекст субагента при старте.

Полный список полей — в документации. Не обязательно писать файл руками: попросите Claude — «создай субагента test-runner в .claude/agents/, который запускает тесты, разбирает падения и предлагает исправления; только чтение и Bash».

Пример: раннер тестов для Flutter

Прогон тестов Flutter-приложения даёт длинный вывод, а разбор падений требует чтения нескольких файлов. Хороший кандидат для субагента:

markdown
---
name: flutter-test-runner
description: Runs Flutter tests and diagnoses failures. Use after changes to lib/ or test/ when the user asks to verify or fix tests.
tools: Read, Grep, Glob, Bash
model: sonnet
maxTurns: 15
---

You run `flutter test` (or `flutter test <path>` when a path is given),
read the output, and for each failure find the cause in lib/ or test/.

Report back:
1. Total passed/failed.
2. For each failure: test name, file:line, one-sentence cause,
   proposed fix (do not apply it).
Keep the report under 40 lines. Do not paste raw test output.

Вызов: «используй flutter-test-runner для test/features/orders». В основной разговор вернётся отчёт на сорок строк вместо нескольких тысяч строк вывода. Заметьте последнюю инструкцию — без неё субагент склонен вставлять сырой вывод, и весь выигрыш по контексту пропадает.

Аналогичные субагенты уместны для Python (pytest с разбором трейсбеков), для Node (vitest, линтер) и для сборки: «собери проект, если упало — найди причину и опиши».

Когда субагент — правильный выбор

Документация выделяет типичные случаи.

  • Исследование большой кодовой базы. Вопрос требует прочитать много файлов, а вам нужен только вывод.
  • Многословные операции. Тесты, логи, загрузка документации.
  • Проверка чужой работы. Ревьюер в свежем контексте не предвзят к коду, который написал основной агент. Об этом был урок про ревью.
  • Параллельная работа. Несколько субагентов могут работать над независимыми частями одновременно, а основной агент собирает результаты.

Когда субагент не нужен: короткая задача с понятным ответом. Запуск субагента сам по себе стоит контекста и времени — для «прочитай этот файл и ответь» это лишнее.

Один нюанс: описания всех субагентов загружаются в основной контекст, чтобы модель могла выбирать. Держите description коротким и не плодите десятки субагентов «на всякий случай».

Субагент как основной агент

Файл субагента можно использовать и как конфигурацию основной сессии: claude --agent code-reviewer запустит Claude Code с инструкцией и ограничениями этого субагента. Это удобно для ролевых сессий — например, сессия только для ревью, в которой физически отключены инструменты записи. Для скриптов субагентов можно передать флагом --agents в виде JSON, не создавая файлов.

Попробуйте сами

10–15 мин на рабочем месте
  1. Попросите основного агента: «используй субагента, чтобы описать, как в проекте устроена обработка ошибок». Сравните /context до и после с тем, что было бы при прямом исследовании.
  2. Создайте в .claude/agents/ субагента-раннера тестов для своего стека по образцу выше. Вызовите его на реальном падающем тесте и оцените отчёт: достаточно ли информации, чтобы исправить?
  3. Закоммитьте субагента в репозиторий и попросите коллегу вызвать его в своей сессии. Обсудите, что стоит поправить в описании.

Коротко

  • Субагент — отдельный Claude со своим контекстом, инструкцией и инструментами; в основной разговор возвращается только отчёт.
  • Встроенные: Explore (чтение), Plan (планирование), general-purpose (всё). Вызов — обычным языком или через @agent-имя.
  • Свой субагент — markdown с YAML-заголовком в .claude/agents/ (проект) или ~/.claude/agents/ (личный).
  • Обязательны name и description; tools, model, maxTurns ограничивают поведение.
  • Используйте для исследований, многословных операций, независимого ревью и параллельной работы.
  • Субагент не видит историю разговора — всё нужное передавайте в задаче.

Видеоверсия

Сценарий озвучки · 510 слов, ≈ 4 мин

В уроке про контекст мы несколько раз говорили: отдайте это субагенту. Пора разобраться, что это такое, какие субагенты есть из коробки и как написать свой.

Субагент — это отдельный запуск Claude с собственным контекстным окном, собственной инструкцией и, при желании, ограниченным набором инструментов. Основной агент передаёт ему задачу. Субагент читает файлы, запускает команды и возвращает в основной разговор только итоговый отчёт. Все промежуточные чтения остаются в его окне.

Отсюда три свойства. Изоляция контекста: исследование на пятьдесят файлов не попадает в ваш разговор. Специализация: у субагента своя роль — ревьюер, раннер тестов. И ограничение инструментов: ревьюеру можно дать только чтение, и он физически не сможет ничего изменить.

Важно: субагент не видит историю основного разговора. Он получает инструкцию, текст задачи, файл клод-эм-дэ и состояние git. Всё, что он должен знать, передавайте явно.

Из коробки есть несколько субагентов. Explore — только чтение, для поиска и исследования кода; он работает быстро и пропускает загрузку лишнего. Plan — тоже только чтение, для режима планирования. И general-purpose — со всеми инструментами, для сложных многошаговых задач. Вызвать субагента можно обычным языком: «используй субагента, чтобы выяснить, как обновляется токен». Claude сам выберет подходящего. Если нужен конкретный — упомяните его через собачку и слово «эйджент», тогда вызов гарантирован. По умолчанию субагенты работают в фоне, а их запросы на разрешения всплывают в основной сессии.

Теперь свой субагент. Это markdown-файл с заголовком в формате ямл. Лежит либо в папке агентов внутри папки точка-клод проекта — тогда он в git и доступен команде, либо в такой же папке в вашей домашней директории — тогда он ваш для всех проектов. Обязательных поля два: имя латиницей и описание — когда Claude должен делегировать этому субагенту. По описанию модель решает, кого вызвать, поэтому пишите конкретно и коротко. Текст после заголовка — системная инструкция. Из необязательных полей чаще всего нужны список инструментов, модель — для простых задач подойдёт дешёвая, и предел шагов, после которого субагент остановится.

Писать файл руками не обязательно: попросите Claude создать субагента с нужной ролью, и он сделает это сам.

Пример. Прогон тестов Flutter-приложения даёт длинный вывод, а разбор падений требует чтения нескольких файлов. Делаем субагента: описание — запускает тесты Flutter и диагностирует падения; инструменты — чтение, поиск и командная оболочка; инструкция — запусти тесты, для каждого падения найди причину, верни отчёт: сколько прошло, сколько упало, для каждого падения — файл, строка, причина и предлагаемое исправление. И важная последняя строка: не вставляй сырой вывод, отчёт до сорока строк. Без неё субагент склонен вставлять весь вывод, и выигрыш по контексту пропадает. То же уместно для Python, для Node и для сборки.

Когда субагент — правильный выбор? Исследование большой кодовой базы, когда нужен только вывод. Многословные операции: тесты, логи, документация. Проверка чужой работы в свежем контексте. Параллельная работа над независимыми частями. Когда не нужен? Для короткой задачи с понятным ответом: запуск субагента сам стоит контекста и времени. И не плодите десятки субагентов на всякий случай — их описания загружаются в основной контекст.

И последнее. Файл субагента можно использовать как конфигурацию основной сессии: флаг «эйджент» при запуске откроет Claude Code с его инструкцией и ограничениями. Удобно для ролевых сессий — например, сессии только для ревью, где отключена запись.

В следующем уроке — навыки: как упаковать повторяющиеся инструкции и процедуры так, чтобы они загружались по запросу.

Отметка хранится только в вашем браузере