Одна задача в Claude Code – это спокойно. Две задачи в одной сессии – это уже риск: агент правит один и тот же файл под две разные цели, ветки путаются, а через час вы разбираете, где чей код. Ответ – не героически удерживать всё в голове, а физически развести задачи по отдельным папкам и веткам. Ровно для этого в git есть worktrees, а в Claude Code – субагенты и отдельные сессии.
Ниже – рабочая схема: как запустить несколько задач разом так, чтобы правки не сталкивались и проект оставался рабочим. Все команды проверены на git 2.39.5 и официальной документации Claude Code.
Зачем вообще параллелить
Причина одна и денежная: пока агент делает фичу, вы не сидите без дела, а параллельно чините баг или гоняете ревью. Три типовых сценария:
- Пишете большую фичу в одной ветке, но прилетел срочный хотфикс – его нельзя мешать с недоделанной фичей.
- Один агент реализует, второй в это же время исследует кодбазу или пишет тесты – они не должны драться за одни файлы.
- Хотите попробовать два подхода к одной задаче и сравнить, не теряя первый вариант.
Наивное решение – открыть два Claude Code в одной папке – ломается сразу: обе сессии видят одну рабочую директорию, одну ветку и перетирают правки друг друга. Нужна изоляция. Дальше – три уровня, от самого надёжного к самому лёгкому. Базовые команды и режимы — в обзоре Claude Code.
Шаг 1: git worktree – отдельная папка под каждую ветку
git worktree – встроенная фича git (с версии 2.5, 2015 год). Она даёт несколько рабочих директорий из одного репозитория: каждая на своей ветке, но все делят единую базу объектов – один клон, несколько рабочих папок. Никакого повторного git clone.
Базовая команда – добавить worktree на существующую ветку:
git worktree add ../wt-featurex feature-xЭто создаёт новую папку ../wt-featurex рядом с проектом и checkout-ит туда существующую ветку feature-x. Если ветку надо создать с нуля прямо здесь – флаг -b:
git worktree add -b hotfix ../wt-hotfix HEADСоздаётся новая ветка hotfix от текущего HEAD и сразу checkout-ится в папку ../wt-hotfix. А если опустить и имя ветки, и -b, git создаст ветку по имени папки:
git worktree add ../feature-loginЗдесь появится новая ветка feature-login (имя = basename папки) от HEAD. Посмотреть все worktrees – главный идёт первым, дальше связанные:
git worktree listЧто важно понять сразу: одну и ту же ветку нельзя держать в двух worktrees одновременно. Git это блокирует специально:
git worktree add ../wt-dup feature-x
# fatal: 'feature-x' is already checked out at '.../wt-featurex'Это защита, а не каприз: две папки на одной ветке привели бы к рассинхрону индекса. Каждой задаче – своя ветка. (Обойти через --force можно, но не нужно – это путь к тем самым конфликтам, от которых мы уходим.)
Шаг 2: запустить Claude Code в каждом worktree
Теперь самое главное – в каждой папке-ветке поднимаем свою сессию Claude Code. Заходите в первый worktree в одном терминале, во второй – в другом, и запускаете claude в каждом:
# Терминал 1
cd ../wt-featurex && claude
# Терминал 2
cd ../wt-hotfix && claudeДве независимые сессии, каждая видит только свою рабочую директорию и свою ветку. Агент в первом окне строит фичу, агент во втором чинит баг – их правки физически не пересекаются, потому что это разные папки. Это и есть та изоляция, ради которой всё затевалось.
Claude Code умеет управлять worktrees и сам. Флаг --worktree создаёт worktree и запускает сессию в нём одной командой:
claude --worktree feature-authClaude заведёт связанный worktree (по умолчанию внутри .claude/worktrees/) и стартует там. В другом терминале так же поднимаете вторую задачу – claude --worktree bugfix-123. Официальная рекомендация Claude Code ровно об этом: работать над фичей в одном терминале, пока Claude чинит баг в другом, «без коллизий правок».
Если предпочитаете видеть все команды git явно (полезно, когда только осваиваетесь) – держите под рукой гайд по командам Claude Code, там разобраны слэш-команды и приёмы работы в сессии, включая /resume для переключения между параллельными задачами.
Шаг 3: субагенты – параллельность внутри одной сессии
Worktrees разводят *задачи*. Внутри одной задачи параллелить помогают субагенты – специализированные ассистенты, каждый со своим контекстным окном. Смысл: побочная работа (поиск по коду, чтение логов, прогон тестов) уходит субагенту, он делает её в своём контексте и возвращает только итог – основной диалог не захламляется.
Субагент описывается файлом в .claude/agents/. Минимальный вид:
---
name: test-runner
description: Прогоняет тесты и чинит падения. Используй после изменений кода.
tools: Read, Grep, Glob, Bash
model: sonnet
---
Ты прогоняешь тесты проекта. Найди падающие тесты, определи причину
и предложи конкретные правки. Возвращай краткий итог, а не сырые логи.Поля name и description обязательны – по description Claude решает, когда делегировать задачу этому субагенту. tools и model опциональны: без tools субагент наследует все инструменты, model задаёт модель (сильную – на архитектуру, экономную – на массовую работу). Запустить можно явно: @agent-test-runner прогони тесты – или Claude сам делегирует по описанию.
Спавнит субагентов инструмент Agent (в версии 2.1.63 бывший Task переименован в Agent, старые ссылки работают как алиас). Для независимых исследований можно поднять несколько субагентов, чтобы они работали одновременно, а Claude потом сведёт результаты. Жёсткого лимита на число одновременных субагентов в документации нет – ограничивают токены и здравый смысл; глубина вложенности фиксирована (субагент на пятом уровне уже не может спавнить дальше).
Если субагенты правят код (а не только читают), их тоже стоит изолировать worktree. В Claude Code это делается флагом в описании субагента:
---
name: feature-builder
description: Реализует фичу в изоляции
isolation: worktree
---С isolation: worktree каждый запуск субагента получает временный worktree, который автоудаляется, если правок не осталось. Как устроена память и слои workspace, из которых субагенты читают контекст, – в отдельном разборе архитектуры памяти агента.
Грабли: где параллельность ломает проект
- Две задачи трогают один файл. Главный источник боли. Правило жёсткое: каждая параллельная задача владеет своим набором файлов. Два агента, редактирующие один файл, гарантированно перетрут правки друг друга – никакой git это задним числом не спасёт. Разбивайте работу по границам файлов, а не по «интересности».
- Одна ветка в двух worktrees. Не пытайтесь. Git блокирует не зря – заведите отдельную ветку под каждую задачу.
- Забытые worktrees копятся. После merge чистите:
git worktree remove ../wt-featurex(чистый – удалится сразу; с незакоммиченными правками попросит--force). Если папку удалили руками –git worktree pruneуберёт мёртвые метаданные. - Секреты не переносятся.
.envи прочие gitignored-файлы в новый worktree не копируются. Claude Code решает это файлом.worktreeinclude(синтаксис.gitignore) – перечислите там, что подтянуть в новые worktrees. - Токены масштабируются. Каждый субагент и каждая сессия жрут контекст и лимиты отдельно. Параллельность – это скорость за деньги, а не бесплатный обед. На платных тарифах держите расход под контролем.
FAQ
Чем субагенты отличаются от параллельных сессий?
Субагенты живут внутри одной сессии: каждый в своём контекстном окне, но итог возвращается в основной диалог, которым управляет главный агент. Отдельные сессии (claude в разных worktrees) – это полностью независимые процессы в разных папках-ветках, которые вообще не знают друг о друге. Субагенты – для параллельных кусков одной задачи; отдельные сессии – для параллельных разных задач.
Можно просто открыть два Claude Code в одной папке?
Технически да, но это прямой путь к сломанному проекту: обе сессии делят одну рабочую директорию и одну ветку, поэтому их правки перетирают друг друга. Именно для изоляции и нужны worktrees – каждая сессия получает свою папку и ветку.
Нужна ли отдельная ветка под каждый worktree?
Да. Git не даст держать одну ветку в двух worktrees одновременно – это защита от рассинхрона. Создавайте ветку под каждую задачу: либо заранее, либо флагом -b прямо в git worktree add -b <ветка> <папка>.
Сколько субагентов можно запустить параллельно?
Жёсткого числа в документации нет. Практический потолок задают токены (каждый субагент тратит контекст отдельно) и координация. Глубина вложенности ограничена: субагент на пятом уровне уже не спавнит дальше, и это не настраивается.
Как убрать worktree после слияния?
git worktree remove <папка> для чистого worktree. Если внутри незакоммиченные или неотслеживаемые файлы – git попросит --force. Worktrees, которые Claude Code завёл для субагентов, чистятся автоматически, если в них нет незакоммиченных правок.
Что дальше
Параллельная работа – это навык масштабирования: он окупается, когда задач становится больше, чем одна голова успевает вести последовательно. Начните с малого – разведите две реальные задачи по worktrees, поднимите в каждой свою сессию и почувствуйте разницу. Дальше добавляйте субагентов под рутину и настраивайте изоляцию.
Если хотите разбирать такие связки не в одиночку, а с командой, которая уже прошла эти грабли, – в сообществе EdgeLab мы собираем рабочие схемы параллельной разработки на Claude Code, делимся конфигами субагентов и разбираем реальные проекты участников. Приходите – быстрее выйдете на поток, где несколько задач идут разом и ничего не ломается.




