Если вам нужны несколько агентов, работающих параллельно и взаимодействующих друг с другом, см. agent teams. Subagents работают в рамках одной сессии; agent teams координируют работу в отдельных сессиях.
- Сохранять контекст, отделяя исследование и реализацию от основного разговора
- Применять ограничения, ограничивая доступ subagent к определённым инструментам
- Переиспользовать конфигурации в разных проектах с помощью subagents уровня пользователя
- Специализировать поведение с помощью сфокусированных системных промптов для конкретных областей
- Контролировать затраты, маршрутизируя задачи на более быстрые и дешёвые модели, такие как Haiku
Встроенные subagents
Claude Code включает встроенные subagents, которые Claude автоматически использует при необходимости. Каждый наследует разрешения родительского разговора с дополнительными ограничениями на инструменты.- Explore
- Plan
- General-purpose
- Other
Быстрый агент, доступный только для чтения, оптимизированный для поиска и анализа кодовых баз.
- Model: Haiku (быстрый, низкая задержка)
- Tools: Инструменты только для чтения (запрещён доступ к инструментам Write и Edit)
- Purpose: Обнаружение файлов, поиск кода, исследование кодовой базы
Quickstart: создание вашего первого subagent
Subagents определяются в файлах Markdown с YAML frontmatter. Вы можете создавать их вручную или использовать команду/agents.
Это пошаговое руководство проведёт вас через создание subagent уровня пользователя с помощью команды /agent. Subagent проверяет код и предлагает улучшения для кодовой базы.
Создайте нового агента уровня пользователя
Выберите Create new agent, затем выберите User-level. Это сохранит subagent в
~/.claude/agents/, чтобы он был доступен во всех ваших проектах.Генерируйте с помощью Claude
Выберите Generate with Claude. При появлении запроса опишите subagent:Claude генерирует системный промпт и конфигурацию. Нажмите
e, чтобы открыть его в редакторе, если вы хотите его настроить.Выберите инструменты
Для проверяющего, доступного только для чтения, отмените выбор всего, кроме Read-only tools. Если вы оставите все инструменты выбранными, subagent наследует все инструменты, доступные основному разговору.
Выберите модель
Выберите, какую модель использует subagent. Для этого примера агента выберите Sonnet, который обеспечивает баланс между возможностями и скоростью анализа паттернов кода.
Выберите цвет
Выберите цвет фона для subagent. Это помогает вам определить, какой subagent работает в пользовательском интерфейсе.
Настройка subagents
Используйте команду /agents
Команда/agents предоставляет интерактивный интерфейс для управления subagents. Запустите /agents для:
- Просмотра всех доступных subagents (встроенные, пользовательские, проектные и из плагинов)
- Создания новых subagents с помощью управляемой установки или генерации Claude
- Редактирования существующей конфигурации subagent и доступа к инструментам
- Удаления пользовательских subagents
- Просмотра активных subagents при наличии дубликатов
claude agents. Это показывает агентов, сгруппированных по источнику, и указывает, какие переопределены определениями с более высоким приоритетом.
Выберите область subagent
Subagents — это файлы Markdown с YAML frontmatter. Сохраняйте их в разных местах в зависимости от области. Когда несколько subagents имеют одно и то же имя, выигрывает местоположение с более высоким приоритетом.| Location | Scope | Priority | Как создать |
|---|---|---|---|
--agents CLI flag | Текущая сессия | 1 (наивысший) | Передайте JSON при запуске Claude Code |
.claude/agents/ | Текущий проект | 2 | Интерактивно или вручную |
~/.claude/agents/ | Все ваши проекты | 3 | Интерактивно или вручную |
Директория agents/ плагина | Где плагин включён | 4 (наименьший) | Установлено с plugins |
.claude/agents/) идеальны для subagents, специфичных для кодовой базы. Проверьте их в систему контроля версий, чтобы ваша команда могла использовать и улучшать их совместно.
User subagents (~/.claude/agents/) — это личные subagents, доступные во всех ваших проектах.
CLI-defined subagents передаются как JSON при запуске Claude Code. Они существуют только для этой сессии и не сохраняются на диск, что делает их полезными для быстрого тестирования или скриптов автоматизации:
--agents принимает JSON с теми же полями frontmatter, что и файловые subagents: description, prompt, tools, disallowedTools, model, permissionMode, mcpServers, hooks, maxTurns, skills и memory. Используйте prompt для системного промпта, эквивалентного телу markdown в файловых subagents. Полный формат JSON см. в справочнике CLI.
Plugin subagents поступают из плагинов, которые вы установили. Они появляются в /agents рядом с вашими пользовательскими subagents. Подробности о создании subagents плагинов см. в справочнике компонентов плагинов.
Напишите файлы subagent
Файлы subagent используют YAML frontmatter для конфигурации, за которым следует системный промпт в Markdown:Subagents загружаются при запуске сессии. Если вы создаёте subagent путём ручного добавления файла, перезагрузите сессию или используйте
/agents для немедленной загрузки.Поддерживаемые поля frontmatter
Следующие поля можно использовать в YAML frontmatter. Требуются толькоname и description.
| Field | Required | Description |
|---|---|---|
name | Yes | Уникальный идентификатор, использующий строчные буквы и дефисы |
description | Yes | Когда Claude должен делегировать этому subagent |
tools | No | Tools, которые может использовать subagent. Наследует все инструменты, если опущено |
disallowedTools | No | Инструменты для запрета, удалённые из унаследованного или указанного списка |
model | No | Model для использования: sonnet, opus, haiku или inherit. По умолчанию inherit |
permissionMode | No | Permission mode: default, acceptEdits, dontAsk, bypassPermissions или plan |
maxTurns | No | Максимальное количество агентских ходов перед остановкой subagent |
skills | No | Skills для загрузки в контекст subagent при запуске. Полное содержимое навыка внедряется, а не просто становится доступным для вызова. Subagents не наследуют skills из родительского разговора |
mcpServers | No | MCP servers, доступные этому subagent. Каждая запись — это либо имя сервера, ссылающееся на уже настроенный сервер (например, "slack"), либо встроенное определение с именем сервера в качестве ключа и полной конфигурацией MCP server в качестве значения |
hooks | No | Lifecycle hooks, ограниченные этим subagent |
memory | No | Persistent memory scope: user, project или local. Включает кросс-сессионное обучение |
background | No | Установите на true, чтобы всегда запускать этот subagent как background task. По умолчанию: false |
isolation | No | Установите на worktree, чтобы запустить subagent во временном git worktree, предоставляя ему изолированную копию репозитория. Worktree автоматически очищается, если subagent не вносит изменения |
Выберите модель
Полеmodel контролирует, какую AI model использует subagent:
- Model alias: Используйте один из доступных псевдонимов:
sonnet,opusилиhaiku - inherit: Используйте ту же модель, что и основной разговор
- Omitted: Если не указано, по умолчанию используется
inherit(использует ту же модель, что и основной разговор)
Контролируйте возможности subagent
Вы можете контролировать, что могут делать subagents, через доступ к инструментам, режимы разрешений и условные правила.Доступные инструменты
Subagents могут использовать любой из внутренних инструментов Claude Code. По умолчанию subagents наследуют все инструменты из основного разговора, включая MCP инструменты. Чтобы ограничить инструменты, используйте полеtools (список разрешений) или поле disallowedTools (список запретов):
Ограничьте, какие subagents могут быть порождены
Когда агент работает как основной поток сclaude --agent, он может порождать subagents, используя инструмент Agent. Чтобы ограничить, какие типы subagents он может порождать, используйте синтаксис Agent(agent_type) в поле tools.
В версии 2.1.63 инструмент Task был переименован в Agent. Существующие ссылки
Task(...) в настройках и определениях агентов по-прежнему работают как псевдонимы.worker и researcher могут быть порождены. Если агент попытается породить любой другой тип, запрос не удастся, и агент увидит только разрешённые типы в своём промпте. Чтобы заблокировать конкретные агенты, разрешив все остальные, используйте permissions.deny.
Чтобы разрешить порождение любого subagent без ограничений, используйте Agent без скобок:
Agent полностью опущен из списка tools, агент не может порождать никакие subagents. Это ограничение применяется только к агентам, работающим как основной поток с claude --agent. Subagents не могут порождать других subagents, поэтому Agent(agent_type) не имеет эффекта в определениях subagent.
Режимы разрешений
ПолеpermissionMode контролирует, как subagent обрабатывает запросы разрешений. Subagents наследуют контекст разрешений из основного разговора, но могут переопределить режим.
| Mode | Behavior |
|---|---|
default | Стандартная проверка разрешений с запросами |
acceptEdits | Автоматически принимать редактирование файлов |
dontAsk | Автоматически отклонять запросы разрешений (явно разрешённые инструменты по-прежнему работают) |
bypassPermissions | Пропустить все проверки разрешений |
plan | Режим плана (исследование только для чтения) |
bypassPermissions, это имеет приоритет и не может быть переопределено.
Предварительно загружайте skills в subagents
Используйте полеskills для внедрения содержимого skill в контекст subagent при запуске. Это даёт subagent знания в области без необходимости обнаруживать и загружать skills во время выполнения.
Это противоположно запуску skill в subagent. С
skills в subagent, subagent контролирует системный промпт и загружает содержимое skill. С context: fork в skill, содержимое skill внедряется в агента, который вы указываете. Оба используют одну и ту же базовую систему.Включите постоянную память
Полеmemory даёт subagent постоянную директорию, которая сохраняется между разговорами. Subagent использует эту директорию для накопления знаний с течением времени, таких как паттерны кодовой базы, инсайты отладки и архитектурные решения.
| Scope | Location | Используйте, когда |
|---|---|---|
user | ~/.claude/agent-memory/<name-of-agent>/ | subagent должен помнить обучение во всех проектах |
project | .claude/agent-memory/<name-of-agent>/ | знания subagent специфичны для проекта и доступны для совместного использования через систему контроля версий |
local | .claude/agent-memory-local/<name-of-agent>/ | знания subagent специфичны для проекта, но не должны проверяться в систему контроля версий |
- Системный промпт subagent включает инструкции по чтению и записи в директорию памяти.
- Системный промпт subagent также включает первые 200 строк
MEMORY.mdв директории памяти с инструкциями по курированиюMEMORY.md, если она превышает 200 строк. - Инструменты Read, Write и Edit автоматически включаются, чтобы subagent мог управлять своими файлами памяти.
Советы по постоянной памяти
-
user— рекомендуемая область по умолчанию. Используйтеprojectилиlocal, когда знания subagent применимы только к конкретной кодовой базе. - Попросите subagent проверить его память перед началом работы: “Review this PR, and check your memory for patterns you’ve seen before.”
- Попросите subagent обновить его память после завершения задачи: “Now that you’re done, save what you learned to your memory.” С течением времени это создаёт базу знаний, которая делает subagent более эффективным.
-
Включите инструкции по памяти непосредственно в файл markdown subagent, чтобы он активно поддерживал свою собственную базу знаний:
Условные правила с hooks
Для более динамического контроля использования инструментов используйте hooksPreToolUse для проверки операций перед их выполнением. Это полезно, когда вам нужно разрешить некоторые операции инструмента, блокируя другие.
Этот пример создаёт subagent, который разрешает только запросы к базе данных только для чтения. Hook PreToolUse запускает скрипт, указанный в command, перед каждым выполнением команды Bash:
Отключите конкретные subagents
Вы можете предотвратить использование Claude конкретных subagents, добавив их в массивdeny в ваших settings. Используйте формат Agent(subagent-name), где subagent-name соответствует полю name subagent.
--disallowedTools:
Определите hooks для subagents
Subagents могут определять hooks, которые запускаются во время жизненного цикла subagent. Есть два способа настройки hooks:- В frontmatter subagent: Определите hooks, которые запускаются только во время активности этого subagent
- В
settings.json: Определите hooks, которые запускаются в основной сессии при запуске или остановке subagents
Hooks в frontmatter subagent
Определите hooks непосредственно в файле markdown subagent. Эти hooks запускаются только во время активности этого конкретного subagent и очищаются при его завершении. Поддерживаются все hook events. Наиболее распространённые события для subagents:| Event | Matcher input | Когда это срабатывает |
|---|---|---|
PreToolUse | Имя инструмента | Перед использованием инструмента subagent |
PostToolUse | Имя инструмента | После использования инструмента subagent |
Stop | (none) | Когда subagent завершается (преобразуется в SubagentStop во время выполнения) |
PreToolUse и запускает linter после редактирования файлов с помощью PostToolUse:
Stop в frontmatter автоматически преобразуются в события SubagentStop.
Hooks уровня проекта для событий subagent
Настройте hooks вsettings.json, которые реагируют на события жизненного цикла subagent в основной сессии.
| Event | Matcher input | Когда это срабатывает |
|---|---|---|
SubagentStart | Имя типа агента | Когда subagent начинает выполнение |
SubagentStop | Имя типа агента | Когда subagent завершается |
db-agent и скрипт очистки при остановке любого subagent:
Работа с subagents
Поймите автоматическое делегирование
Claude автоматически делегирует задачи на основе описания задачи в вашем запросе, поляdescription в конфигурациях subagent и текущего контекста. Чтобы поощрить активное делегирование, включите фразы вроде “use proactively” в поле description вашего subagent.
Вы также можете явно запросить конкретный subagent:
Запускайте subagents в foreground или background
Subagents могут работать в foreground (блокирующий) или background (параллельный):- Foreground subagents блокируют основной разговор до завершения. Запросы разрешений и уточняющие вопросы (такие как
AskUserQuestion) передаются вам. - Background subagents работают параллельно, пока вы продолжаете работать. Перед запуском Claude Code запрашивает разрешения на инструменты, которые потребуются subagent, обеспечивая необходимые одобрения заранее. После запуска subagent наследует эти разрешения и автоматически отклоняет всё, что не было предварительно одобрено. Если background subagent нужно задать уточняющие вопросы, этот вызов инструмента не удастся, но subagent продолжает работу.
- Попросить Claude “run this in the background”
- Нажать Ctrl+B для фонового выполнения работающей задачи
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS на 1. См. Environment variables.
Распространённые паттерны
Изолируйте высокообъёмные операции
Одно из наиболее эффективных применений subagents — изоляция операций, которые производят большой объём выходных данных. Запуск тестов, получение документации или обработка файлов журналов может потребить значительный контекст. Делегируя эти операции subagent, подробный выход остаётся в контексте subagent, в то время как только релевантное резюме возвращается в основной разговор.Запускайте параллельное исследование
Для независимых исследований порождайте несколько subagents для одновременной работы:Цепочка subagents
Для многошаговых рабочих процессов попросите Claude использовать subagents последовательно. Каждый subagent завершает свою задачу и возвращает результаты Claude, который затем передаёт релевантный контекст следующему subagent.Выберите между subagents и основным разговором
Используйте основной разговор, когда:- Задача требует частого взаимодействия или итеративного уточнения
- Несколько фаз имеют значительный общий контекст (планирование → реализация → тестирование)
- Вы вносите быстрое, целевое изменение
- Задержка имеет значение. Subagents начинают с нуля и могут потребовать время для сбора контекста
- Задача производит подробный выход, который вам не нужен в основном контексте
- Вы хотите применить конкретные ограничения на инструменты или разрешения
- Работа самодостаточна и может вернуть резюме
/btw вместо subagent. Он видит ваш полный контекст, но не имеет доступа к инструментам, и ответ отбрасывается, а не добавляется в историю.
Subagents не могут порождать других subagents. Если ваш рабочий процесс требует вложенного делегирования, используйте Skills или цепочку subagents из основного разговора.
Управляйте контекстом subagent
Возобновите subagents
Каждый вызов subagent создаёт новый экземпляр со свежим контекстом. Чтобы продолжить работу существующего subagent вместо начала с нуля, попросите Claude возобновить его. Возобновлённые subagents сохраняют полную историю разговора, включая все предыдущие вызовы инструментов, результаты и рассуждения. Subagent продолжает ровно там, где остановился, а не начинает с нуля. Когда subagent завершается, Claude получает его ID агента. Чтобы возобновить subagent, попросите Claude продолжить предыдущую работу:~/.claude/projects/{project}/{sessionId}/subagents/. Каждый транскрипт сохраняется как agent-{agentId}.jsonl.
Транскрипты subagent сохраняются независимо от основного разговора:
- Compaction основного разговора: Когда основной разговор сжимается, транскрипты subagent не затрагиваются. Они сохраняются в отдельных файлах.
- Persistence сессии: Транскрипты subagent сохраняются в пределах их сессии. Вы можете возобновить subagent после перезагрузки Claude Code, возобновив ту же сессию.
- Автоматическая очистка: Транскрипты очищаются на основе параметра
cleanupPeriodDays(по умолчанию: 30 дней).
Auto-compaction
Subagents поддерживают автоматическое сжатие, используя ту же логику, что и основной разговор. По умолчанию auto-compaction срабатывает при примерно 95% ёмкости. Чтобы срабатывание произошло раньше, установитеCLAUDE_AUTOCOMPACT_PCT_OVERRIDE на более низкий процент (например, 50). Подробности см. в environment variables.
События сжатия регистрируются в файлах транскриптов subagent:
preTokens показывает, сколько токенов было использовано перед сжатием.
Примеры subagents
Эти примеры демонстрируют эффективные паттерны для создания subagents. Используйте их как отправные точки или генерируйте настроенную версию с Claude.Проверяющий код
Subagent, доступный только для чтения, который проверяет код без его модификации. Этот пример показывает, как спроектировать сфокусированный subagent с ограниченным доступом к инструментам (без Edit или Write) и подробный промпт, который точно указывает, что искать и как форматировать выход.Debugger
Subagent, который может как анализировать, так и исправлять проблемы. В отличие от проверяющего кода, этот включает Edit, потому что исправление ошибок требует модификации кода. Промпт предоставляет чёткий рабочий процесс от диагностики к проверке.Специалист по данным
Специализированный subagent для работы анализа данных. Этот пример показывает, как создавать subagents для специализированных рабочих процессов вне типичных задач кодирования. Он явно устанавливаетmodel: sonnet для более способного анализа.
Валидатор запросов к базе данных
Subagent, который разрешает доступ Bash, но проверяет команды, чтобы разрешить только запросы SQL только для чтения. Этот пример показывает, как использовать hooksPreToolUse для условной валидации, когда вам нужен более тонкий контроль, чем предоставляет поле tools.
command в конфигурации hook:
tool_input.command. Код выхода 2 блокирует операцию и передаёт сообщение об ошибке обратно Claude. Подробности см. в Hooks и Hook input для полной схемы входных данных.
Следующие шаги
Теперь, когда вы понимаете subagents, изучите эти связанные функции:- Распространяйте subagents с помощью плагинов для совместного использования subagents в командах или проектах
- Запускайте Claude Code программно с помощью Agent SDK для CI/CD и автоматизации
- Используйте MCP servers для предоставления subagents доступа к внешним инструментам и данным