Создание сессий и совместная работа в Git
Две функции, которые работают в паре: вынесение подзадач в независимые дочерние сессии (при необходимости — в изолированных рабочих деревьях git) и графическое слияние, которое объединяет параллельные ветки. Вместе они позволяют нескольким агентам одновременно работать с одним репозиторием.
1. Что такое создание дочерних сессий
Из любой сессии можно выделить подзадачу. VelaTerm создаёт новую дочернюю сессию под текущим узлом (дерево становится иерархическим: родительская → дочерняя → следующая дочерняя сессия), при необходимости выделяет ей изолированное рабочее дерево git и отправляет описание задачи как первое сообщение новой сессии. Новый агент начинает работу сразу после запуска, без дополнительных пояснений.
В результате в дереве появляется настоящая сессия с собственным процессом: за ней можно наблюдать, отвечать ей, открывать её повторно и возобновлять в любой момент. Это не скрытая фоновая задача.
Если работу нужно спланировать, выполнить и проверить силами разных агентов, используйте вместо этого рабочий процесс планирования и выполнения; см. Планирование и выполнение.
2. Способы создания
| Способ | Кто использует | Рабочее дерево |
|---|---|---|
Команда vspawn "task" | Вы или скрипт в любой сессии | По умолчанию выключено; --worktree включает его |
Команда vspawn-tree "task" | То же | Всегда включено |
/vspawn task в Claude Code, $vspawn task в Codex | Вы просите агента; сначала он превращает задачу в самодостаточный промпт | По умолчанию выключено |
/vspawn-tree task в Claude Code, $vspawn-tree task в Codex | То же | Всегда включено |
Обе команды доступны в каждой сессии, которую запускает VelaTerm. Для навыков агентов нужны Vela Skills: нажмите «Установить» в разделе «Настройки ▸ Общие», затем начните новый диалог Claude Code или Codex, чтобы агент их подхватил. Агенты вызывают эти навыки, только когда вы об этом просите.
Новая сессия не видит диалог, из которого она создана. Когда вы используете навык, агент записывает в задачу цель, относящиеся к делу файлы, уже сделанные выводы, ограничения и критерии приёмки. Когда вы запускаете команду сами, включите эти сведения в текст задачи.
3. Каталог, агент и модель
- Каталог. Дочерняя сессия запускается в каталоге, где выполняется команда; этот же репозиторий используется для рабочего дерева. Чтобы использовать другой проект, передайте
--cwd <path>, напримерvspawn-tree --cwd /work/project "fix the parser". Это важно в коллекции, у которой нет собственной папки проекта. Навыки добавляют--cwd, когда из диалога однозначно понятно, о каком репозитории идёт речь. - Агент. Дочерняя сессия использует того же агента, что и текущая; из обычного терминала запускается Claude Code. Флаги
--claude,--codex,--copilotили--kiroвыбирают другого агента, а карточка подтверждения предлагает все типы агентов. - Модель и глубина рассуждения. Параметры
--model <name>и--effort <level>задают модель и глубину рассуждения дочерней сессии, напримерvspawn --model opus --effort high "port the parser". Названия моделей должны относиться к агенту, который будет запущен. Значение, которое агент не поддерживает, отклоняется ещё до создания сессии. Без этих параметров дочерняя сессия с тем же типом агента наследует аргументы запуска и параметр разрешений родительской; дочерняя сессия другого типа использует значения по умолчанию этого агента из раздела «Настройки ▸ Агенты». - Вид. Дочерняя сессия, которая поддерживает вид беседы, открывается в том же виде, что и родительская, если та тоже его поддерживает; в остальных случаях она открывается в виде по умолчанию для своего агента.
Все параметры перечислены в главе Команды сессий, §3.
4. Подтверждение перед запуском
По умолчанию каждый запрос на создание дочерней сессии сначала показывает карточку подтверждения с заголовком «Запуск дочерней сессии». Карточка не забирает фокус у сессии, в которой вы работаете, а системное уведомление («Дочерняя сессия ожидает подтверждения») сообщает, что она ждёт вашего решения.
- На карточке показаны запросившая сессия и её каталог («Исходная сессия»), «Описание задачи», которое станет первым сообщением дочерней сессии, «Параметры запуска» («Тип сессии», «Модель», «Уровень рассуждения») и выбор в поле «Рабочий каталог»: «Текущий каталог» или «Отдельное рабочее дерево».
- Варианты моделей предлагает выбранный агент. Если список недоступен, идентификатор модели можно ввести вручную. Если оставить в поле значение «По умолчанию у агента», используется собственная настройка агента.
- Обычный терминал открывается в рабочем каталоге; описание задачи в нём не выполняется.
- «Запустить сессию» (или ⌘Enter / Ctrl+Enter) запускает дочернюю сессию; «Отмена» отклоняет запрос. Следующие запросы ждут в очереди, и карточка показывает, сколько их осталось («Других запросов на проверку: N»).
Чтобы запускать сессии без карточки, выключите параметр «Подтверждать запуск дочерних сессий» в разделе «Настройки ▸ Поведение» или добавьте --yes к отдельной команде.
5. Рабочие деревья: параллельная работа без конфликтов
С рабочим деревом дочерняя сессия работает в новой ветке в собственном каталоге, изолированно от основного рабочего пространства и от других дочерних сессий. Это рекомендуемая схема, когда несколько агентов одновременно изменяют один репозиторий. Новые рабочие деревья создаются из текущего коммита и не содержат незакоммиченных изменений. Если для запущенной сессии не удаётся создать рабочее дерево, она использует исходный каталог.
Сессия, работающая в рабочем дереве, отмечена небольшим значком на её иконке в боковой панели; наведите на него указатель, чтобы увидеть имя и путь рабочего дерева.
Другие способы работы с рабочими деревьями:
- «Новая сессия worktree…» в меню проекта, группы или сессии открывает окно создания, где для параметра «Worktree» выбран вариант «Новый». Введите «Имя worktree»: оно используется для каталога и ветки. В этом же окне сессию можно привязать к существующему рабочему дереву («Существующий») или выбрать вариант «Без».
- «Переместить в worktree…» в меню группы привязывает группу к новому или существующему рабочему дереву. Сессии, созданные в группе после этого, используют это рабочее дерево; сессии, которые уже были в группе, сохраняют свой каталог. У группы с рабочим деревом есть также пункт «Сведения о группе».
Подменю Git у сессии или группы, каталог которой является репозиторием git, содержит следующие пункты:
| Пункт | Назначение |
|---|---|
| «Показать изменения…» | Показывает изменения в рабочем дереве: список файлов и diff |
| «Слияние…» | Открывает окно слияния (§6) |
| «Копировать путь к рабочему дереву», «Открыть папку рабочего дерева» | Доступны для сессий и групп, привязанных к рабочему дереву |
| «Удалить рабочее дерево…» | Позволяет выбрать рабочее дерево этого репозитория и удалить его каталог с диска; вариант «Удалить принудительно (с потерей незакоммиченных изменений)» удаляет его даже при наличии незакоммиченных изменений |
После удаления привязанного рабочего дерева меню сессии или группы предлагает «Преобразовать в обычную сессию» или «Преобразовать в обычную группу»: привязка снимается, и сессия снова запускается в каталоге проекта.
При удалении сессии, в поддереве которой есть рабочие деревья, окно подтверждения предлагает удалить и эти рабочие деревья.
6. Слияние: графическое слияние в Git
Когда работа завершена, выполните слияние. Для любой сессии или группы, каталог которой является репозиторием git (с рабочим деревом или без него), выберите «Git ▸ Слияние…», чтобы открыть окно «Слияние веток»:
- Выберите обе ветки. Укажите исходную ветку («Исходная ветка») и целевую («Целевая ветка»); кнопка «Поменять направление» меняет их местами. В этом же окне можно слить ветку дочерней сессии обратно в основную или влить основную ветку в дочернюю, чтобы обновить её.
- Перед подтверждением окно показывает изменения, которые слияние внесёт в целевую ветку.
- Слияние выполняется в том рабочем дереве, где извлечена целевая ветка. Если целевая ветка нигде не извлечена, слияние невозможно; сначала извлеките её.
- Если в рабочем дереве исходной ветки есть незакоммиченные изменения, они сначала фиксируются коммитом с введённым вами сообщением («Закоммитить и слить»).
- Если при слиянии возникают конфликты, VelaTerm оставляет их на месте и сообщает, где их разрешить. Разрешите их в терминале этого рабочего дерева (или поручите это агенту), затем создайте коммит.
Слияние не удаляет рабочее дерево. Когда оно больше не нужно, удалите его пунктом «Git ▸ Удалить рабочее дерево…».
7. Типичный порядок работы
- В основной сессии обсудите задачу с Claude Code, затем выполните
/vspawn-tree refactor the checkout module(требуются Vela Skills). - Проверьте задачу на карточке подтверждения и нажмите «Запустить сессию». Дочерняя сессия запускается в собственном рабочем дереве и появляется в боковой панели под родительской; пока она работает, её точка статуса зелёная.
- Продолжайте работу в основной сессии. Когда дочерняя сессия задаёт вопрос или завершает работу, её точка меняет цвет и появляется уведомление.
- Проверьте работу дочерней сессии, затем выберите «Git ▸ Слияние…», чтобы слить её ветку с основной.
- Удалите рабочее дерево пунктом «Git ▸ Удалить рабочее дерево…», затем архивируйте дочернюю сессию, чтобы сохранить запись о проделанной работе.