Вики · Веер делегирования
Веер
Веер — это параллельная работа. Проблема веера не в том, чтобы запустить несколько агентов, а в том, что они правят одно дерево файлов. Рабочая копия git (worktree) — отдельный каталог со своими файлами и своей веткой, разделяющий с основным репозиторием историю и удалённые ветки. Правки в одной копии физически не задевают другую.
Запуск
claude --worktree feature-auth # или -wКопия создаётся в .claude/worktrees/<имя>/ в корне репозитория, на новой ветке worktree-<имя>. Без имени оно сгенерируется само. Запустите команду с другим именем во втором терминале — получите вторую изолированную сессию.
Добавьте .claude/worktrees/ в .gitignore, иначе содержимое копий будет висеть в основном чекауте как неотслеживаемые файлы.
Копия — свежий чекаут, поэтому окружение в ней надо поднимать заново. Чтобы гитигнорируемые файлы вроде .env копировались автоматически, положите в корень проекта файл .worktreeinclude с шаблонами в синтаксисе .gitignore: копируется только то, что и совпало с шаблоном, и при этом гитигнорировано.
Агент умеет входить в копию сам, инструментом EnterWorktree — по просьбе «работай в отдельной копии». Выход из копии за пределы .claude/worktrees/ всегда спрашивает подтверждение, и это подтверждение не отключается ни правилом, ни «больше не спрашивать».
Что именно запрещено внутри копии
Пока сессия изолирована, Claude Code блокирует четыре класса действий, и знать их полезно, потому что отказы выглядят как ошибки инструмента:
- правка файлов по пути в основном чекауте;
- команда с рабочим каталогом в основном чекауте — или с каталогом, который нельзя проверить;
- перенаправление git в основной чекаут: через
git -C,--git-dir, переменныеGIT_DIR/GIT_WORK_TREEилиcdперед вызовом git; - непроверяемая форма команды — конструкции, которые нельзя проследить, не выполняя: раскрытие скобок, heredoc с неэкранированным разделителем. Эта проверка не отключается.
Те же проверки распространяются на всех субагентов изолированной сессии.
Субагенты в своих копиях
Субагент получает собственную копию, если попросить «используй worktree для агентов» или прописать в его описании:
---
name: refactorer
description: Механические правки по многим файлам
isolation: worktree
---Пустая копия удаляется автоматически, когда субагент закончил. Копия с изменениями остаётся до периодической уборки, которая её не тронет, пока в ней есть работа (Тени).
База ветки
Новые копии ответвляются от ветки по умолчанию репозитория — так задумано, чтобы стартовать с чистого состояния, совпадающего с удалённым. Настройка worktree.baseRef принимает два значения: "fresh" (по умолчанию) и "head" — ответвиться от вашего текущего HEAD вместе с неотправленными коммитами. Имя ветки в этой настройке указать нельзя; для конкретной ветки создавайте копию руками через git worktree add.
Отдельная форма — ответвиться от пул-реквеста: claude --worktree "#1234". Кавычки обязательны, иначе оболочка примет # за начало комментария.
Что копии делят с основным чекаутом
- Каталог
.git— команды git из копии пишут в общий.git, и песочница это разрешает, поэтомуgit commitизнутри копии работает (Круг дозволенного). - Плагины проектного уровня — переустанавливать в каждой копии не нужно.
- Сохранённые одобрения прав — ответ «да, больше не спрашивать» пишется в
.claude/settings.local.jsonосновного чекаута и действует во всех копиях, переживая удаление той, где вы его дали.
Уборка
При выходе из интерактивной сессии Claude Code смотрит, есть ли в копии работа: изменённые или неотслеживаемые файлы, новые коммиты. Чистая безымянная копия удаляется вместе с веткой автоматически; именованная спросит. Копия с работой всегда спрашивает.
У прогонов -p вопроса при выходе нет, поэтому их копии остаются. Убрать вручную: git worktree remove, а если git отказывается из-за блокировки — сначала git worktree unlock.
Веер — не единственный способ
Копии решают одну задачу: изоляцию файлов. Разделить работу внутри одной сессии — это Тени. Переключаться между несколькими разговорами и ветвить их — это Долгая сессия и точки возврата. Выбирайте по тому, что именно мешает: конфликт файлов, переполнение котла или потеря нити.
Сверено по
Прокачаться: юниты