#Команды агентов
Продвинутый уровень · Факультатив · около 20 минут плюс время запуска · Нужно: Выбор паттерна оркестрации · Сверено с Claude Code v2.1.285 (stable) 09.10.2026
Примечание
«Команды агентов — экспериментальная функция, по умолчанию отключённая» (Orchestrate teams of Claude Code sessions).
#Цель
К концу этого факультатива вы сможете набрать команду агентов из собственных определений субагентов, показать, что команда сформировалась, и остановить её участников по имени.
#Что понадобится
- Урок Выбор паттерна оркестрации и определения субагентов, которые вы написали в уроке Делегируйте задачу своему субагенту.
- Один из ваших репозиториев с папкой
.practice/, подготовленной, как описано в уроке 1 Начального уровня. - macOS, Linux или WSL 2 и
jq: хуки, которые ведут журнал команды, — это команды оболочки, использующие его. - Интерактивная сессия: при запуске
-pClaude не создаёт участников команды (Enable agent teams). Режим отображения по умолчанию — in-process, когда участники работают внутри вашего терминала, — работает в любом терминале (Choose a display mode). - Расход лимита: большой. Каждый участник — отдельный экземпляр Claude с собственным окном контекста, и расход токенов растёт с числом активных участников (Token usage). Экономный вариант: в разборе примера измените один небольшой файл, в задании «Ваша очередь» запустите двух участников и останавливайте участников сразу после их отчёта.
#Идея
Команда агентов — это несколько сессий Claude Code, работающих вместе. Ваша сессия — ведущий: она создаёт участников, каждого в собственном окне контекста. Участники пишут друг другу напрямую, и вы можете написать любому из них, тогда как субагенты в основном возвращают результат вызвавшему (Compare with subagents).
Участник загружает ваш CLAUDE.md, MCP-серверы и скиллы плюс промпт создания от ведущего, но не разговор ведущего, поэтому задачу несёт промпт (Context and communication). Назовите в нём определение субагента — и участник будет работать с tools и инструкциями этого определения, а также с его model, если в промпте создания не указана другая; участник in-process вдобавок получает SendMessage, так что даже участник только для чтения может связаться с остальными (Use subagent definitions for teammates).
Команды «расходуют значительно больше токенов, чем одна сессия» (Token usage), а участники делят ваше рабочее дерево (Choose an approach). Используйте их там, где окупаются независимые точки зрения: ревью через разные призмы или спор конкурирующих гипотез.
#Разбор примера
- Скачайте в свой репозиторий двух ревьюеров только для чтения из примера команд агентов этого руководства. Прочитайте их, прежде чем использовать:
mkdir -p .claude/agents
for a in security-reviewer test-reviewer; do
curl -fsSL "https://raw.githubusercontent.com/wesammustafa/Claude-Code-Everything-You-Need-to-Know/main/examples/advanced/electives/agent-teams/dot-claude/agents/$a.md" -o ".claude/agents/$a.md"
done
grep -H '^tools:' .claude/agents/security-reviewer.md .claude/agents/test-reviewer.md
Каждая строка заканчивается на tools: Read, Grep, Glob: ревьюеры могут читать файлы, но не могут их править или запускать команды, включая git. Инструментов поиска Grep и Glob в macOS, Linux и WSL по умолчанию нет; субагент, который их перечисляет и не указывает Bash, получает их обратно (Glob tool behavior). Оба задают model: sonnet. Если здесь уже открыта сессия, а .claude/agents/ только что появилась, перезапустите её: Claude Code следит только за папками агентов, существовавшими на момент старта сессии (Write subagent files).
2. Возьмите изменение, над которым работаете, или сделайте одноразовое: измените один отслеживаемый исходный файл так, как сделало бы реальное изменение, — например функцию, которая читает пользовательский ввод, — без нового теста. Не коммитьте его. Ревьюеры не могут запустить git diff, поэтому сохраните изменение туда, где они смогут его прочитать:
git diff > .practice/a-teams.diff
- Сохраните это как
.practice/a-teams.json:
{
"env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" },
"teammateMode": "in-process",
"hooks": {
"TeammateIdle": [
{ "hooks": [ { "type": "command", "command": "jq -r '.teammate_name' >> \"$CLAUDE_PROJECT_DIR/.practice/a-teams-teammates.txt\"" } ] }
]
}
}
Файл включает команды агентов только для сессий, запущенных с ним (Enable agent teams, Claude spawns teammates instead of subagents), а teammateMode держит участников в режиме отображения in-process, который описывают эти шаги (teammateMode). Его хук TeammateIdle записывает имя каждого участника в .practice/a-teams-teammates.txt, когда тот собирается перейти в простой.
4. Запустите ведущего с этим файлом:
CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude --settings .practice/a-teams.json
--settings применяет ключи файла поверх ваших настроек только для этой сессии (CLI reference). Переменная даёт сессии инструменты Task на любой модели; без неё Claude Code предоставляет их только на старых моделях, перечисленных в Task tool availability, и участники координируются сообщениями вместо общего списка задач. Выполните /context: среди пользовательских субагентов будут security-reviewer и test-reviewer (See what loaded into context).
5. Попросите команду. Дайте каждому участнику одну призму, как в параллельном ревью кода из документации, а также имя и тип агента:
Create an agent team to review the change saved in .practice/a-teams.diff and the files it touches.
Spawn two teammates: one named security, using the security-reviewer agent type, and one named
tests, using the test-reviewer agent type. When both have reported, write one combined report
to .practice/a-teams-review.md.
Claude Code запускает участников, не спрашивая подтверждения (How Claude starts agent teams). На панели агентов под промптом появляется строка для каждого. Субагенты показываются на той же панели, так что одна панель не доказывает, что сформировалась команда (Start your first agent team): это доказывает журнал из шага 7. Ctrl+T переключает список задач (Talk to teammates directly). Промпт не называет модель, поэтому каждый участник работает на model своего определения, если только вы не задали CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 (Specify teammates and models). Когда оба отчитаются, ведущий напишет объединённый отчёт (формулировки у вас будут другими); одобрите запись, если Claude Code спросит.
6. Остановите участников по имени:
Ask the security and tests teammates to shut down.
Каждый участник соглашается и выходит или отклоняет просьбу с объяснением (Shut down teammates); если кто-то отказался, прочитайте причину и попросите снова. Участник, чья строка исчезла с панели, скрыт, а не остановлен, так что назовите и его в просьбе (Start your first agent team). Затем выйдите из сессии. Claude Code удаляет конфигурацию команды при завершении сессии и сохраняет её список задач для возобновлённых сессий, так что отдельного шага очистки нет (Architecture). 7. Прочитайте журнал:
sort -u .practice/a-teams-teammates.txt
В нём security и tests — значит, команда сформировалась.
#Ваша очередь
Отладьте проблему с конкурирующими гипотезами, как в примере Investigate with competing hypotheses из документации. Выберите в своём репозитории реальный баг или странное поведение, причину которого вы не знаете и которое можно объяснить, читая код. Напишите определение исследователя только для чтения, например скопировав test-reviewer.md в .claude/agents/hypothesis-tester.md и переписав его. Запустите новую сессию тем же способом, чтобы ведущий начал с чистого листа, и попросите его создать из вашего определения трёх участников, каждый из которых отвечает за одну гипотезу и пишет остальным, оспаривая их теории. Экономный вариант: два участника.
Критерии приёмки:
- У вашего определения свои
nameиdescription,model: sonnetи однострочныйtools:, в котором толькоRead,GrepиGlob, как в строках двух ревьюеров и в примере только для чтения из документации (Quickstart: create your first subagent). Определение без строкиtoolsнаследует все инструменты, доступные субагентам (Frontmatter reference). - Каждый участник работает по вашему определению под именем, которое вы выбрали в промпте создания.
- Ведущий сохраняет выжившее объяснение и отброшенные теории в
.practice/a-teams-debate.md. - Никакие отслеживаемые файлы не меняются, кроме вашего изменения из разбора примера.
- Вы просите каждого участника по имени остановиться.
#Проверка
Факультатив пройден, когда выполнено всё это:
- Каждое определение, которое использовал участник, — только для чтения. Эта команда ничего не выводит, если у каждого однострочный
tools:только сRead,GrepиGlob(подставьте имя файла своего определения):
for f in .claude/agents/security-reviewer.md .claude/agents/test-reviewer.md .claude/agents/hypothesis-tester.md; do
grep -qxE 'tools: *(Read|Grep|Glob)( *, *(Read|Grep|Glob))* *' "$f" || echo "$f: tools: names more than Read, Grep and Glob, or is missing"
done
- Сформировалась команда, а не только субагенты:
sort -u .practice/a-teams-teammates.txtперечисляет все выбранные вами имена участников. - Оба результата сохранены:
ls .practice/a-teams-review.md .practice/a-teams-debate.mdпоказывает оба файла. - Команды не изменили ни одного отслеживаемого файла:
git diff | diff - .practice/a-teams.diffничего не выводит. - Самопроверка (не тестируется): отчёт о споре говорит, какие теории участники отбросили и почему, и вы попросили каждого участника по имени остановиться.
Если журнала участников нет, команда не сформировалась: запустите ведущего командой из шага 4 и явно попросите команду агентов. Если git diff отличается от сохранённого изменения, ведущий или участник отредактировал отслеживаемый файл: прочитайте разницу, отмените эту правку и проверьте строку tools: каждого определения. Закончив, оставьте изменение или откатите одноразовое через git restore <file>.
#Осторожно
- Участники стартуют в вашем режиме разрешений, кроме
dontAsk, а если вы работаете с--dangerously-skip-permissions, то и каждый участник тоже. Их запросы разрешений появляются в вашей сессии, и отвечать на них вам (Permissions). Пока команды включены, субагент, которого называет Claude, запускается как участник, так что команда может сложиться, даже если вы её не просили: этот факультатив включает команды только для сессий, запущенных с--settings, а не в ваших пользовательских или проектных настройках (Enable agent teams). - Каждый активный участник продолжает тратить токены, пока не выйдет или пока не закончится сессия. Держите команды маленькими, указывайте Sonnet в определениях, пишите сфокусированные промпты создания и останавливайте участников, когда их работа сделана (Agent team token costs).
- Два участника, правящие один и тот же файл, затирают работу друг друга, так что дайте каждому свои файлы (Avoid file conflicts). А
/resumeи/rewindне возвращают участников in-process: после возобновления попросите ведущего создать новых (Limitations).
#Что дальше
- Enforce quality gates with hooks: хуки
TeammateIdle,TaskCreatedиTaskCompleted, завершающиеся с кодом 2, заставляют участника продолжать работу или не дают создать либо завершить задачу, пока ваше правило не выполнено. - Have teammates plan before implementing: планирование только для чтения для команд, которые меняют код. Claude Code одобряет каждый план по мере поступления, без ревью со стороны ведущего; правки и команды участника по-прежнему проходят через ваши запросы разрешений.
- Choose a display mode: каждый участник в собственной панели tmux или iTerm2 вместо панели in-process.
Источники: Orchestrate teams of Claude Code sessions · Run agents in parallel · Create custom subagents · Hooks reference · Tools reference · All settings · CLI reference · Debug your configuration · Manage costs effectively
Назад к оглавлению Продвинутого уровня · Тема: Субагенты и параллельная работа · Застряли на уроке?