Чаты в Git worktree
Git worktree — ещё один рабочий каталог того же репозитория, в котором открыта своя ветка. Файлы в разных worktree независимы, поэтому два агента могут одновременно работать над разными задачами и не перезаписывают правки друг друга.
Плагин Veai позволяет выбрать worktree, в котором начнётся чат, и создать новый worktree, не выходя из чата. Все чаты, в каком бы worktree они ни шли, остаются в одном окне проекта.
Когда это нужно:
- вы хотите параллельно поручить агентам две независимые задачи на разных ветках;
- нужно, чтобы агент пробовал рискованные правки не в рабочей ветке;
- вы просматриваете чужую ветку и не хотите переключать ветку в основном каталоге.
Что нужно
- В корне открытого проекта лежит Git-репозиторий. Если его нет, селектора worktree нет.
- В IDE включён плагин Git (он идёт в составе IDE).
- Если в проекте несколько Git-репозиториев, в списке показаны worktree только того репозитория, что лежит в корне проекта.
Выбрать worktree для нового чата
Селектор worktree находится в нижней строке под полем ввода: кнопка с иконкой ветки и именем каталога worktree. При открытии проекта выбран сам проект (основной worktree).
- Нажмите на селектор. Откроется список всех worktree репозитория. У каждого справа бледным цветом показана ветка. Если HEAD не привязан к ветке, написано
detached. Текущий выбор отмечен. - Выберите нужный worktree.
- Напишите первое сообщение. Чат начнётся в выбранном worktree: агент запустится с его каталогом как рабочим, читает и правит файлы только там.

Что важно знать:
- Выбор влияет только на то, где начнётся следующий чат. Уже открытые чаты не меняются.
- Выбранный worktree одинаков во всех местах чата проекта: в окне чата и во вкладках редактора.
- После первого сообщения worktree закрепляется за чатом. Селектор у такого чата показывает его worktree и не открывается. Сменить worktree начатого чата нельзя: откройте новый чат в другом worktree.
- Список читается при каждом открытии. Worktree, добавленные или удалённые вне плагина (например, командой
git worktree add), появятся при следующем открытии списка. Если выбранный worktree исчез, выбирается проект.
Выбор worktree не переключает окружение самой IDE. Упоминания @, навигация по коду, инструменты IDE и редактор продолжают работать с проектом, который открыт в окне. Агент работает в выбранном worktree, а чтобы смотреть и править его файлы в редакторе, откройте этот worktree в IDE как проект.
Создать новый worktree
- Откройте список worktree и нажмите последнюю строку
New Worktree. Внизу окна чата откроется панель. - Заполните поля:
Branch— имя новой ветки или существующая локальная ветка. Список предлагает текущие локальные ветки;From— ветка или коммит, от которых создаётся новая ветка. По умолчаниюHEAD. Поле видно только для новой ветки: если вы выбрали существующую, оно скрыто;Directory— каталог нового worktree. Пока вы его не меняли, плагин предлагает каталог рядом с проектом по шаблону<имя проекта>-<ветка>; косая черта в имени ветки заменяется на дефис.
- Нажмите
CreateилиEnterв любом поле. Пока идёт создание, показаноCreating worktree….

После создания новый worktree выбран в селекторе, панель закрыта, окно проекта то же.
Новый worktree сразу виден в списке worktree IDE без перезапуска, а при открытии его как проекта IDE не спросит о доверии.
Чего не будет:
- Каталог должен быть пустым или не существовать. Если это файл или в каталоге что-то лежит, плагин не создаёт worktree и пишет:
The destination is a fileилиThe destination directory is not empty. - Если не заполнена ветка или каталог, плагин попросит их ввести:
Enter a branch name,Enter a directory. - Если Git вернул ошибку (например, ветка уже занята другим worktree), в панели показан вывод Git, а выбранным остаётся прежний worktree.
- Несохранённые документы плагин сохраняет перед созданием: ветка начнётся с содержимого на диске.
Cancel закрывает панель без изменений.
Как отличить чат другого worktree
Если чат идёт не в основном worktree, после его названия в квадратных скобках стоит имя каталога worktree, например Fix login [feature-x]. Так же подписана вкладка редактора. У чатов основного worktree отметки нет.
Чаты любого worktree открываются в окне текущего проекта. Отдельные окна проекта не создаются.
История по worktree
В окне истории чаты сгруппированы по worktree:
- одна группа на каждый worktree репозитория, в том числе пустые; первой идёт группа проекта;
- заголовок группы показывает имя worktree, ветку (или
detached) и число чатов. Клик по шеврону или свободному месту группы сворачивает и разворачивает её. Свёрнутое состояние запоминается для проекта; - в списке видны чаты всех агентов, у каждого указан агент. Для остановленного агента показываются уже известные чаты без его запуска;
- у группы есть действие
New chat: оно открывает новый чат сразу в этом worktree; - поле
Search chatsищет по названию и ветке группы (показывает группу целиком) и по названию чата или агента. Если ничего нет, написаноNo chats match.
Подробнее об истории — в «История и вкладки».
Если worktree удалили
Worktree удаляют средствами IDE или Git — плагин их не удаляет. Чаты удалённого worktree остаются в истории:
- группа помечена
(removed); - чат открывается и показывает сообщения, но новых сообщений не принимает: в нём написано
Worktree <имя> was removed.; - если агент не может загрузить такую сессию, сообщений не будет, но отметка об удалении останется;
- у группы нет действия
New chat, зато естьDelete worktree chats from history— удаляет все её чаты после подтверждения.
Агент Veai не загружает сессию, у которой не осталось рабочего каталога, поэтому её содержимое иногда не удаётся показать.
Чего плагин не делает
- не открывает worktree отдельным проектом или окном;
- не удаляет, не сливает и не чистит worktree — это делает IDE или Git;
- не меняет worktree начатого чата;
- не работает с worktree вложенных репозиториев, кроме репозитория в корне проекта.