Урок 10 / 14

10. Agent Teams (экспериментально)

Если subagents — это «отправил помощника в командировку, дождался результата», то Agent Teams — это «собрал команду из нескольких разработчиков, дал им task list и они работают параллельно,

Если subagents — это «отправил помощника в командировку, дождался результата», то Agent Teams — это «собрал команду из нескольких разработчиков, дал им task list и они работают параллельно, общаясь между собой». Принципиально другая архитектура. На апрель 2026 — экспериментальная фича Claude Code.


10.1. Что это и чем отличается от subagents

🧪 Из docs (agent-teams): «Agent teams let you coordinate multiple Claude Code instances working together. One session acts as the team lead … Teammates work independently … and communicate directly with each other».

SubagentsAgent Teams
Кто кого запускаетГлавный → subagent (один направление)Lead создаёт teammates, teammates общаются друг с другом
КонтекстИзолирован, возвращается только summaryУ каждого teammate свой, но есть shared task list и mailbox
ДлительностьОдна задача → ответ → конецДолгоживущие, до выполнения всего task list
КоммуникацияНетMailbox (адресные сообщения) + общий task list
ПараллелизмДа, но независимоДа, со зависимостями (Task A blocks Task B)
СтоимостьСредняяВысокая (каждый teammate — отдельный Claude instance)
РелизStableЭкспериментально (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)

📘 Версия: появилось в Claude Code v2.1.32 (релиз вместе с Opus 4.6, февраль 2026).

⚠️ Это реальная фича, не выдумка. В исходном твиттер-треде она названа правильно. Но статус — экспериментальный, поведение и API могут поменяться.


10.2. Как включить

export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
claude

После этого появляется команда /team.


10.3. Архитектура


10.4. Жизненный цикл задачи


10.5. Как создаются teammates

В Lead-сессии команда:

/team add implementer --description "writes code per spec"
/team add tester --description "writes vitest"
/team add reviewer --description "code review"

Каждый teammate — это отдельный Claude Code процесс с собственной сессией, model, MCP, tools. Lead инициирует их через специальный механизм harness’а, передаёт ссылку на shared state (task list, mailbox).

Teammates могут быть основаны на subagent-определениях (использовать существующие .claude/agents/*.md как профиль).


10.6. Mailbox: коммуникация между teammates

📘 Каждый teammate имеет «inbox». Через UpdateMailbox (внутренний tool) могут отправлять адресные сообщения:

implementer → tester:
  "Я закончил DELETE-эндпоинт в apps/api/src/routes/trips.ts:120.
   Идемпотентность не реализована — намеренно, обсудили в PR."

tester → implementer:
  "Тест 'returns 404 on missing id' падает: возвращается 500.
   Можешь глянуть?"

Hook TeammateIdle срабатывает когда teammate ждёт сообщения (нет open tasks). Lead может вмешаться, переназначить или добавить задачу.


10.7. File locks

Чтобы избежать конфликтов, teammate может «лочить» файлы перед редактированием:

implementer.lock(["apps/api/src/routes/trips.ts"])
implementer.edit(...)
implementer.unlock(["apps/api/src/routes/trips.ts"])

Если другой teammate попробует Edit залоченный файл — получит ошибку и должен либо подождать, либо отправить mailbox-запрос.


10.8. Hooks для team

Появляются дополнительные lifecycle-события:

  • TaskCreated — кто-то создал задачу.
  • TaskCompleted — задача готова.
  • TeammateIdle — teammate простаивает.

Можно использовать для уведомлений, авто-перераспределения, метрик.


10.9. Стоимость

⚠️ Каждый teammate — отдельный Claude instance со своим префиксом. 4 teammates на Opus с большим CLAUDE.md = 4× стоимость subagent’а × N turn’ов каждого.

📘 Документация прямо предупреждает: «token usage scales with the number of active teammates … For routine tasks, a single session is more cost-effective».

💡 Когда команда оправдана:

✅ Большая фича с явно параллельными частями (frontend + backend + миграция + тесты). ✅ Долгий рефакторинг, разбиваемый на независимые блоки. ✅ Нужно реально много рук одновременно (например, мигрировать 30 файлов по одному паттерну).

Не оправдана:

  • Маленькая правка («добавь поле в форму») — обычной сессии хватит.
  • Browse / анализ — это subagent.
  • Когда вы не понимаете, как декомпозировать — Lead вынужден гонять все teammates по очереди, теряя смысл.

10.10. Пример: фича для Travel Agent через team

Задача: «добавить функцию шаринга маршрута через короткие ссылки (/t/abc123)».

Декомпозиция Lead’ом на task list:

Task 1: schema migration "shareable_links" table
Task 2: backend endpoints POST/GET /share, POST /trips/:id/share, blockedBy=[1]
Task 3: frontend share button + modal, blockedBy=[]
Task 4: e2e test для шаринга, blockedBy=[2,3]
Task 5: PR description + changelog, blockedBy=[2,3,4]

Teammates:

  • db-eng — Task 1 (модель: sonnet, tools: Read/Edit/Bash для drizzle).
  • backend-eng — Task 2 (sonnet, MCP: postgres, hooks: format).
  • frontend-eng — Task 3 (sonnet, не нужны MCP для авиа/отелей).
  • qa — Task 4 (sonnet, доступ к Bash для playwright).
  • pr-writer — Task 5 (haiku, только Read + git).

Lead мониторит, при простое (TeammateIdle) даёт мелкие follow-up задачи. По завершении Task 5 — gh pr create готов.

⚠️ Для такой фичи в обычной сессии можно потратить 15-20 минут на ~25.Черезteam—теже1520минутреальноговремени,но2-5. Через team — те же 15-20 минут реального времени, но 10-20 счёт. Покупаете распараллеливание людей, а не машинного времени.


10.11. Отладка team-сценариев

КомандаЧто показывает
/team statusЖивые teammates, их текущие задачи, mailbox-инбоксы
/team tasksПолный task list со статусами
/team logs <name>Транскрипт сессии конкретного teammate
/team kill <name>Завершить teammate (если завис)
/team disbandРаспустить команду (но сохранить артефакты)

10.12. Best practices

Декомпозиция от Lead. Lead использует opus (или включите opusplan в Lead-сессии) — он лучше всех планирует.

Teammates на sonnet или haiku. Они исполнители, дорогая модель — overkill.

Задавайте зависимости. Без blockedBy все стартуют параллельно и могут конфликтовать на общем стейте.

Малые задачи. Чем атомарнее, тем меньше конфликтов локов и меньше потерь при ошибке teammate’а.

Используйте TeammateIdle hook для логирования / метрик.

Лочьте файлы. Без локов два teammate могут переписать друг друга.

Не используйте teams для browse/анализа — для этого subagent’ы дешевле.

Не давайте всем teammates bypassPermissions — это «5 рук с правом писать что угодно». Минимум одна должна быть с ask.

Не запускайте >4-5 teammates — координация становится дороже работы.


Дальше → 11. Модели и pricing