Subagents — это специализированные AI-помощники, которые обрабатывают определённые типы задач. Используйте один, когда побочная задача заполнит основной разговор результатами поиска, логами или содержимым файлов, на которые вы больше не будете ссылаться: subagent выполняет эту работу в собственном контексте и возвращает только резюме. Определите пользовательский subagent, когда вы постоянно порождаете одного и того же рабочего с одинаковыми инструкциями. Каждый subagent работает в собственном контекстном окне с пользовательским системным приглашением, специфическим доступом к инструментам и независимыми разрешениями. Когда Claude встречает задачу, соответствующую описанию subagent, он делегирует её этому subagent, который работает независимо и возвращает результаты. Чтобы увидеть экономию контекста на практике, визуализация контекстного окна проходит через сессию, где subagent обрабатывает исследование в собственном отдельном окне.Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Subagents работают в рамках одной сессии. Чтобы запустить множество независимых сессий параллельно и отслеживать их из одного места, см. background agents. Для сессий, которые взаимодействуют друг с другом, см. agent teams.
- Сохранять контекст, отделяя исследование и реализацию от основного разговора
- Применять ограничения, ограничивая доступ subagent к определённым инструментам
- Переиспользовать конфигурации в проектах с помощью subagents уровня пользователя
- Специализировать поведение с помощью сфокусированных системных приглашений для конкретных областей
- Контролировать затраты, маршрутизируя задачи на более быстрые и дешёвые модели, такие как Haiku
- Встроенные subagents
- Как создать свой собственный
- Полные параметры конфигурации
- Паттерны работы с subagents
- Forked subagents
- Примеры subagents
Встроенные subagents
Claude Code включает встроенные subagents, которые Claude автоматически использует при необходимости. Каждый наследует разрешения родительского разговора с дополнительными ограничениями на инструменты.- Explore
- Plan
- General-purpose
- Other
Быстрый агент, доступный только для чтения, оптимизированный для поиска и анализа кодовых баз.
- Model: Haiku (быстрый, низкая задержка)
- Tools: Инструменты только для чтения (запрещён доступ к инструментам Write и Edit)
- Purpose: Обнаружение файлов, поиск кода, исследование кодовой базы
Quickstart: создание вашего первого subagent
Subagents определяются в файлах Markdown с YAML frontmatter. Вы можете создавать их вручную или использовать команду/agents.
Это пошаговое руководство проведёт вас через создание subagent уровня пользователя с помощью команды /agents. Subagent проверяет код и предлагает улучшения для кодовой базы.
Выберите местоположение
Переключитесь на вкладку Library, выберите Create new agent, затем выберите Personal. Это сохранит subagent в
~/.claude/agents/, чтобы он был доступен во всех ваших проектах.Генерируйте с помощью Claude
Выберите Generate with Claude. При появлении запроса опишите subagent:Claude генерирует идентификатор, описание и системное приглашение для вас.
Выберите инструменты
Для проверяющего, доступного только для чтения, отмените выбор всего, кроме Read-only tools. Если вы оставите все инструменты выбранными, subagent наследует все инструменты, доступные основному разговору.
Выберите модель
Выберите, какую модель использует subagent. Для этого примера агента выберите Sonnet, который обеспечивает баланс между возможностями и скоростью анализа паттернов кода.
Выберите цвет
Выберите цвет фона для subagent. Это помогает вам определить, какой subagent работает в пользовательском интерфейсе.
Настройте память
Выберите User scope, чтобы дать subagent постоянный каталог памяти в
~/.claude/agent-memory/. Subagent использует это для накопления идей в разговорах, таких как паттерны кодовой базы и повторяющиеся проблемы. Выберите None, если вы не хотите, чтобы subagent сохранял обучение.Сохраните и попробуйте
Просмотрите сводку конфигурации. Нажмите Claude делегирует вашему новому subagent, который сканирует кодовую базу и возвращает предложения по улучшению.
s или Enter для сохранения, или нажмите e для сохранения и редактирования файла в вашем редакторе. Subagent доступен немедленно. Попробуйте:Настройка subagents
Используйте команду /agents
Команда/agents открывает интерфейс с вкладками для управления subagents. Вкладка Running показывает активные subagents и позволяет вам открывать или останавливать их. Вкладка Library позволяет вам:
- Просматривать все доступные subagents (встроенные, пользовательские, проектные и из plugins)
- Создавать новые subagents с помощью управляемой установки или генерации Claude
- Редактировать существующую конфигурацию subagent и доступ к инструментам
- Удалять пользовательские subagents
- Видеть, какие subagents активны при наличии дубликатов
claude agents. Например, claude agents | cat выводит агентов, сгруппированных по источнику, и указывает, какие переопределены определениями с более высоким приоритетом.
Выберите область subagent
Subagents — это файлы Markdown с YAML frontmatter. Сохраняйте их в разных местах в зависимости от области. Когда несколько subagents имеют одно и то же имя, выигрывает местоположение с более высоким приоритетом.| Location | Scope | Priority | Как создать |
|---|---|---|---|
| Managed settings | Организация | 1 (наивысший) | Развёрнуто через managed settings |
--agents CLI flag | Текущая сессия | 2 | Передайте JSON при запуске Claude Code |
.claude/agents/ | Текущий проект | 3 | Интерактивно или вручную |
~/.claude/agents/ | Все ваши проекты | 4 | Интерактивно или вручную |
Директория agents/ plugin | Где включен plugin | 5 (наименьший) | Установлено с plugins |
.claude/agents/) идеальны для subagents, специфичных для кодовой базы. Проверьте их в систему контроля версий, чтобы ваша команда могла использовать и улучшать их совместно.
Project subagents обнаруживаются путём прохода вверх от текущей рабочей директории. Директории, добавленные с помощью --add-dir, предоставляют доступ только к файлам и не сканируются на наличие subagents. Чтобы поделиться subagents в проектах, используйте ~/.claude/agents/ или plugin.
User subagents (~/.claude/agents/) — это личные subagents, доступные во всех ваших проектах.
CLI-определённые subagents передаются как JSON при запуске Claude Code. Они существуют только для этой сессии и не сохраняются на диск, что делает их полезными для быстрого тестирования или скриптов автоматизации. Вы можете определить несколько subagents в одном вызове --agents:
- macOS, Linux, WSL
- Windows PowerShell
--agents принимает JSON с теми же полями frontmatter, что и файловые subagents: description, prompt, tools, disallowedTools, model, permissionMode, mcpServers, hooks, maxTurns, skills, initialPrompt, memory, effort, background, isolation и color. Используйте prompt для системного приглашения, эквивалентного телу markdown в файловых subagents.
Managed subagents развёртываются администраторами организации. Поместите файлы markdown в .claude/agents/ внутри директории managed settings, используя тот же формат frontmatter, что и project и user subagents. Managed определения имеют приоритет над project и user subagents с тем же именем.
Plugin subagents поступают из plugins, которые вы установили. Они появляются в /agents рядом с вашими пользовательскими subagents. См. справку по компонентам plugin для деталей создания plugin subagents.
По соображениям безопасности plugin subagents не поддерживают поля frontmatter
hooks, mcpServers или permissionMode. Эти поля игнорируются при загрузке агентов из plugin. Если они вам нужны, скопируйте файл агента в .claude/agents/ или ~/.claude/agents/. Вы также можете добавить правила в permissions.allow в settings.json или settings.local.json, но эти правила применяются ко всей сессии, а не только к plugin subagent.tools и model, с телом определения добавленным в качестве дополнительных инструкций к системному приглашению товарища. См. agent teams для того, какие поля frontmatter применяются на этом пути.
Напишите файлы subagent
Файлы subagent используют YAML frontmatter для конфигурации, за которым следует системное приглашение в Markdown:Subagents загружаются при запуске сессии. Если вы добавляете или редактируете файл subagent напрямую на диск, перезагрузите сессию для его загрузки. Subagents, созданные через интерфейс
/agents, вступают в силу немедленно без перезагрузки.cd не сохраняются между вызовами инструментов Bash или PowerShell и не влияют на рабочую директорию основного разговора. Чтобы дать subagent изолированную копию репозитория вместо этого, установите isolation: worktree.
Поддерживаемые поля frontmatter
Следующие поля могут использоваться в YAML frontmatter. Требуются толькоname и description.
| Field | Required | Description |
|---|---|---|
name | Yes | Уникальный идентификатор, использующий строчные буквы и дефисы. Hooks получают это значение как agent_type. Имя файла не должно совпадать |
description | Yes | Когда Claude должен делегировать этому subagent |
tools | No | Инструменты, которые может использовать subagent. Наследует все инструменты, если опущено. Чтобы предварительно загрузить Skills в контекст, используйте поле skills вместо перечисления Skill здесь |
disallowedTools | No | Инструменты для запрета, удалённые из унаследованного или указанного списка |
model | No | Модель для использования: sonnet, opus, haiku, полный ID модели (например, claude-opus-4-7), или inherit. По умолчанию inherit |
permissionMode | No | Режим разрешений: default, acceptEdits, auto, dontAsk, bypassPermissions или plan. Игнорируется для plugin subagents |
maxTurns | No | Максимальное количество агентских ходов перед остановкой subagent |
skills | No | Skills для предварительной загрузки в контекст subagent при запуске. Полное содержимое skill инжектируется, а не просто описание. Subagents по-прежнему могут вызывать неперечисленные project, user и plugin skills через инструмент Skill |
mcpServers | No | MCP servers доступные этому subagent. Каждая запись — это либо имя сервера, ссылающееся на уже настроенный сервер (например, "slack"), либо встроенное определение с именем сервера в качестве ключа и полной конфигурацией MCP server в качестве значения. Игнорируется для plugin subagents |
hooks | No | Lifecycle hooks в области этого subagent. Игнорируется для plugin subagents |
memory | No | Область постоянной памяти: user, project или local. Включает кросс-сессионное обучение |
background | No | Установите на true, чтобы всегда запускать этот subagent как фоновую задачу. По умолчанию: false |
effort | No | Уровень усилий, когда этот subagent активен. Переопределяет уровень усилий сессии. По умолчанию: наследуется из сессии. Параметры: low, medium, high, xhigh, max; доступные уровни зависят от модели |
isolation | No | Установите на worktree, чтобы запустить subagent во временном git worktree, дав ему изолированную копию репозитория. Worktree автоматически очищается, если subagent не вносит изменения |
color | No | Цвет отображения для subagent в списке задач и транскрипте. Принимает red, blue, green, yellow, purple, orange, pink или cyan |
initialPrompt | No | Автоматически отправляется как первый ход пользователя, когда этот агент работает как основной агент сессии (через --agent или параметр agent). Commands и skills обрабатываются. Добавляется в начало любого предоставленного пользователем приглашения |
Выберите модель
Полеmodel контролирует, какую AI модель использует subagent:
- Model alias: Используйте один из доступных псевдонимов:
sonnet,opusилиhaiku - Full model ID: Используйте полный ID модели, такой как
claude-opus-4-7илиclaude-sonnet-4-6. Принимает те же значения, что и флаг--model - inherit: Используйте ту же модель, что и основной разговор
- Omitted: Если не указано, по умолчанию
inherit(использует ту же модель, что и основной разговор)
model для этого конкретного вызова. Claude Code разрешает модель subagent в этом порядке:
- Переменная окружения
CLAUDE_CODE_SUBAGENT_MODEL, если установлена - Параметр
modelдля конкретного вызова - Frontmatter
modelопределения subagent - Модель основного разговора
Контролируйте возможности subagent
Вы можете контролировать, что могут делать subagents, через доступ к инструментам, режимы разрешений и условные правила.Доступные инструменты
Subagents могут использовать любой из внутренних инструментов Claude Code. По умолчанию subagents наследуют все инструменты из основного разговора, включая MCP инструменты. Чтобы ограничить инструменты, используйте полеtools (список разрешений) или поле disallowedTools (список запретов). Этот пример использует tools для исключительного разрешения Read, Grep, Glob и Bash. Subagent не может редактировать файлы, писать файлы или использовать какие-либо MCP инструменты:
disallowedTools для наследования каждого инструмента из основного разговора, кроме Write и Edit. Subagent сохраняет Bash, MCP инструменты и всё остальное:
disallowedTools применяется первым, затем tools разрешается против оставшегося пула. Инструмент, указанный в обоих, удаляется.
Ограничьте, какие subagents могут быть порождены
Когда агент работает как основной поток сclaude --agent, он может порождать subagents, используя инструмент Agent. Чтобы ограничить, какие типы subagent он может порождать, используйте синтаксис 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.
Область MCP servers для subagent
Используйте полеmcpServers для предоставления subagent доступа к MCP серверам, которые недоступны в основном разговоре. Встроенные серверы, определённые здесь, подключаются при запуске subagent и отключаются при его завершении. Строковые ссылки используют соединение родительской сессии.
Поле
mcpServers применяется в обоих контекстах, где может работать файл агента:- Как subagent, порождённый через инструмент Agent или @-упоминание
- Как основная сессия, запущенная с
--agentили параметромagent
.mcp.json и файлов настроек..mcp.json (stdio, http, sse, ws), ключевые по имени сервера.
Чтобы исключить MCP сервер из основного разговора полностью и избежать того, чтобы описания его инструментов потребляли контекст там, определите его встроенным здесь, а не в .mcp.json. Subagent получает инструменты; родительский разговор — нет.
Режимы разрешений
ПолеpermissionMode контролирует, как subagent обрабатывает запросы разрешений. Subagents наследуют контекст разрешений из основного разговора и могут переопределить режим, кроме случаев, когда режим родителя имеет приоритет, как описано ниже.
| Mode | Behavior |
|---|---|
default | Стандартная проверка разрешений с запросами |
acceptEdits | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или additionalDirectories |
auto | Auto mode: классификатор AI оценивает каждый вызов инструмента и записи в защищённые директории |
dontAsk | Автоматически отклонять запросы разрешений (явно разрешённые инструменты по-прежнему работают) |
bypassPermissions | Пропустить все проверки разрешений |
plan | Режим плана (исследование только для чтения) |
bypassPermissions или acceptEdits, это имеет приоритет и не может быть переопределено. Если родитель использует auto mode, subagent наследует auto mode и любой permissionMode в его frontmatter игнорируется: классификатор оценивает вызовы инструментов subagent с теми же правилами блокировки и разрешения, что и родительская сессия.
Предварительная загрузка skills в subagents
Используйте полеskills для инжекции содержимого skill в контекст subagent при запуске. Это даёт subagent знания в области без необходимости открывать и загружать skills во время выполнения.
Skill из списка tools или добавьте его в disallowedTools.
Вы не можете предварительно загружать skills, которые устанавливают disable-model-invocation: true, поскольку предварительная загрузка берёт из того же набора skills, который Claude может вызывать. Если указанный skill отсутствует или отключен, Claude Code пропускает его и регистрирует предупреждение в журнал отладки.
Это противоположность запуску 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 строк или 25KB
MEMORY.mdв каталоге памяти, в зависимости от того, что меньше, с инструкциями по курированиюMEMORY.md, если она превышает этот лимит. - Инструменты Read, Write и Edit автоматически включаются, чтобы subagent мог управлять своими файлами памяти.
Советы по постоянной памяти
-
project— рекомендуемая область по умолчанию. Это делает знания subagent доступными для совместного использования через систему контроля версий. Используйтеuser, когда знания subagent широко применимы в проектах, илиlocal, когда знания не должны проверяться в систему контроля версий. - Попросите 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
Для более динамического контроля использования инструментов используйтеPreToolUse hooks для проверки операций перед их выполнением. Это полезно, когда вам нужно разрешить некоторые операции инструмента, блокируя другие.
Этот пример создаёт subagent, который разрешает только запросы к базе данных только для чтения. Hook PreToolUse запускает скрипт, указанный в command, перед каждым выполнением команды Bash:
shell: powershell к записи hook, как показано в запуске hooks в PowerShell.
Отключите конкретные 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 и очищаются при его завершении.Frontmatter hooks срабатывают, когда агент порождается как subagent через инструмент Agent или @-упоминание, и когда агент работает как основной агент сессии через
--agent или параметр agent. В случае основной сессии они запускаются вместе с любыми hooks, определёнными в settings.json.| 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.
Явно вызывайте subagents
Когда автоматического делегирования недостаточно, вы можете запросить subagent самостоятельно. Три паттерна переходят от одноразового предложения к сессионному по умолчанию:- Естественный язык: назовите subagent в вашем приглашении; Claude решает, делегировать ли
- @-упоминание: гарантирует, что subagent запустится для одной задачи
- Сессионный уровень: вся сессия использует системное приглашение, ограничения инструментов и модель этого subagent через флаг
--agentили параметрagent
@ и выберите subagent из автодополнения, так же как вы упоминаете файлы. Это гарантирует, что запустится конкретный subagent, а не оставляет выбор Claude:
<plugin-name>:<agent-name>. Именованные фоновые subagents, в настоящее время работающие в сессии, также появляются в автодополнении, показывая их статус рядом с именем. Вы также можете ввести упоминание вручную без использования средства выбора: @agent-<name> для локальных subagents или @agent-<plugin-name>:<agent-name> для plugin subagents.
Запустите всю сессию как subagent. Передайте --agent <name> для запуска сессии, где основной поток сам принимает системное приглашение, ограничения инструментов и модель этого subagent:
--system-prompt это делает. Файлы CLAUDE.md и память проекта по-прежнему загружаются через обычный поток сообщений. Имя агента появляется как @<name> в заголовке запуска, чтобы вы могли подтвердить, что он активен.
Это работает с встроенными и пользовательскими subagents, и выбор сохраняется при возобновлении сессии.
Для plugin-предоставленного subagent передайте имя с областью: claude --agent <plugin-name>:<agent-name>.
Чтобы сделать это по умолчанию для каждой сессии в проекте, установите agent в .claude/settings.json:
Запустите subagents в переднем плане или фоне
Subagents могут работать в переднем плане (блокирующий) или фоне (параллельный):- Foreground subagents блокируют основной разговор до завершения. Запросы разрешений передаются вам по мере их возникновения.
- Background subagents работают параллельно, пока вы продолжаете работать. Они работают с разрешениями, уже предоставленными в сессии, и автоматически отклоняют любой вызов инструмента, который иначе потребовал бы запроса. Если фоновый subagent нуждается в уточняющих вопросах, этот вызов инструмента не удаётся, но subagent продолжает работу.
- Попросить Claude “run this in the background”
- Нажать Ctrl+B для фонового выполнения работающей задачи
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS на 1. См. Environment variables.
Когда fork mode включен, каждый spawn subagent работает в фоне независимо от поля background. Forks по-прежнему выводят запросы разрешений в вашем терминале по мере их возникновения; именованные subagents автоматически отклоняют всё, что иначе потребовало бы запроса, как описано выше.
Распространённые паттерны
Изолируйте высокообъёмные операции
Одно из наиболее эффективных применений 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 агента. Claude использует инструментSendMessage с ID агента в качестве поля to для возобновления его. Инструмент SendMessage доступен только при включении agent teams через CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
Чтобы возобновить subagent, попросите Claude продолжить предыдущую работу:
SendMessage, он автоматически возобновляется в фоне без необходимости нового вызова Agent.
Вы также можете попросить Claude ID агента, если хотите ссылаться на него явно, или найти ID в файлах транскрипта в ~/.claude/projects/{project}/{sessionId}/subagents/. Каждый транскрипт сохраняется как agent-{agentId}.jsonl.
Транскрипты subagent сохраняются независимо от основного разговора:
- Компактирование основного разговора: Когда основной разговор компактируется, транскрипты subagent не затрагиваются. Они сохраняются в отдельных файлах.
- Сохранение сессии: Транскрипты subagent сохраняются в пределах их сессии. Вы можете возобновить subagent после перезагрузки Claude Code, возобновив ту же сессию.
- Автоматическая очистка: Транскрипты очищаются на основе параметра
cleanupPeriodDays(по умолчанию: 30 дней).
Auto-compact
Subagents поддерживают автоматическое компактирование, используя ту же логику, что и основной разговор. По умолчанию auto-compact срабатывает при приблизительно 95% ёмкости. Чтобы срабатывание компактирования произошло раньше, установитеCLAUDE_AUTOCOMPACT_PCT_OVERRIDE на более низкий процент (например, 50). См. environment variables для деталей.
События компактирования регистрируются в файлах транскрипта subagent:
preTokens показывает, сколько токенов было использовано перед компактированием.
Разветвление текущего разговора
Разветвленные subagents являются экспериментальными и требуют Claude Code v2.1.117 или позже. Поведение и конфигурация могут измениться в будущих выпусках. Включите их, установив переменную окружения
CLAUDE_CODE_FORK_SUBAGENT на 1. Переменная учитывается в интерактивном режиме и через SDK или claude -p.- Claude порождает fork всякий раз, когда он иначе использовал бы general-purpose subagent. Именованные subagents, такие как Explore, по-прежнему порождаются как раньше.
- Каждый spawn subagent работает в фоне, будь то fork или именованный subagent. Установите
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSна1, чтобы сохранить spawns синхронными. - Команда
/forkпорождает fork вместо действия как псевдоним для/branch.
/fork за которым следует директива. Claude Code называет fork из первых слов директивы. Следующий пример разветвляет разговор для черновика тестовых случаев, пока вы продолжаете с реализацией в основной сессии:
Наблюдение и управление работающими forks
Работающие forks появляются в панели ниже входа приглашения, с одной строкой для основной сессии и одной для каждого fork. Используйте эти клавиши для взаимодействия с панелью:| Key | Action |
|---|---|
↑ / ↓ | Перемещение между строками |
Enter | Откройте транскрипт выбранного fork и отправьте ему последующие сообщения |
x | Отклоните завершённый fork или остановите работающий |
Esc | Верните фокус на входное приглашение |
Как forks отличаются от именованных subagents
Fork наследует всё, что основная сессия имеет в момент его порождения. Именованный subagent начинает с собственного определения.| Fork | Named subagent | |
|---|---|---|
| Context | Полная история разговора | Свежий контекст с приглашением, которое вы передаёте |
| System prompt and tools | Такие же как основная сессия | Из определения файла subagent |
| Model | Такая же как основная сессия | Из поля model subagent |
| Permissions | Запросы выводятся в вашем терминале | Автоматически отклонены при запуске в фоне |
| Prompt cache | Общий с основной сессией | Отдельный кэш |
isolation: "worktree", чтобы редактирования файлов fork были написаны в отдельный git worktree вместо вашего checkout.
Ограничения
УстановкаCLAUDE_CODE_FORK_SUBAGENT=1 включает fork mode в интерактивных сессиях, non-interactive mode и Agent SDK. Fork не может порождать дальнейшие forks.
Примеры subagents
Эти примеры демонстрируют эффективные паттерны для создания subagents. Используйте их как отправные точки или генерируйте настроенную версию с Claude.Проверяющий кода
Subagent только для чтения, который проверяет код без его модификации. Этот пример показывает, как спроектировать сфокусированный subagent с ограниченным доступом к инструментам (нет Edit или Write) и подробным приглашением, которое точно указывает, что искать и как форматировать выход.Отладчик
Subagent, который может как анализировать, так и исправлять проблемы. В отличие от проверяющего кода, этот включает Edit, потому что исправление ошибок требует модификации кода. Приглашение предоставляет чёткий рабочий процесс от диагностики к проверке.Специалист по данным
Специализированный subagent для работы анализа данных. Этот пример показывает, как создавать subagents для специализированных рабочих процессов вне типичных задач кодирования. Он явно устанавливаетmodel: sonnet для более способного анализа.
Валидатор запросов к базе данных
Subagent, который разрешает доступ Bash, но проверяет команды для разрешения только запросов SQL только для чтения. Этот пример показывает, как использоватьPreToolUse hooks для условной валидации, когда вам нужен более тонкий контроль, чем предоставляет поле tools.
command в конфигурации hook:
shell: powershell к записи hook. См. запуск hooks в PowerShell.
Hook получает JSON через stdin с командой Bash в tool_input.command. Код выхода 2 блокирует операцию и передаёт сообщение об ошибке обратно Claude. См. Hooks для деталей кодов выхода и Hook input для полной схемы входных данных.
Следующие шаги
Теперь, когда вы понимаете subagents, изучите эти связанные функции:- Распространяйте subagents с помощью plugins для совместного использования subagents в командах или проектах
- Запустите Claude Code программно с помощью Agent SDK для CI/CD и автоматизации
- Используйте MCP servers для предоставления subagents доступа к внешним инструментам и данным