В терминале параллельность решается тем же способом, что и в редакторе, - отдельным рабочим деревом. Флаг запускает агента в собственном checkout под пользовательским каталогом деревьев, где они разложены по репозиторию и имени, а другой флаг задаёт корень репозитория. Разделение стоит понимать точно: один флаг определяет, где лежит проект, другой - где происходят правки. Их путают чаще всего, и из-за этого агент работает не с тем деревом, которое вы имели в виду.
Наивная схема - запускать несколько агентов в одном каталоге, потому что в терминале это ничего не стоит. Результат тот же, что и в редакторе: правки наступают друг на друга, а часть конфликтов не видит система контроля версий, потому что они семантические. Один агент переименовал функцию, второй в это же время добавил её вызов - текстового конфликта нет, сборка падает. Дерево на задачу - дешёвая страховка, и в терминале она естественна: каждый агент просто запускается со своим флагом.
Полезно один раз увидеть оба варианта запуска. Ниже - агент в новом дереве под задачу и агент с явно заданным корнем репозитория и именованным деревом. Именованные деревья стоит завести привычкой: имя, совпадающее с задачей, через день экономит минуту на вопрос, что это за дерево и можно ли его удалять.
Признак перепутанных флагов узнаваем. Агент отчитывается о готовых правках, а в основном рабочем каталоге ничего не изменилось: сборка идёт со старым кодом, история изменений чиста. Правки при этом никуда не делись - они лежат в дереве, о котором вы забыли. Поэтому первый вопрос при расхождении отчёта и наблюдаемого состояния не о модели, а о том, в каком дереве шла работа.
Есть флаг, позволяющий пропустить подготовку окружения в новом дереве, и с ним нужно быть аккуратным. Пропуск ускоряет старт, но делает проверки недостоверными: тесты без установленных зависимостей либо упадут по посторонней причине, либо, что хуже, отработают на старом состоянии и покажут зелёный результат, который ничего не значит. Использовать его разумно только там, где окружение подготовлено другим воспроизводимым способом, и это записано.
Главное различение здесь - сессия против checkout. Возобновление сессии восстанавливает разговор: цель, принятые решения, историю. Дерево восстанавливает состояние файловой системы: ветку, правки, установленные зависимости. Это две независимые оси, и восстановление одной без другой даёт странную картину: агент помнит замысел, но не видит своего кода, или видит код и не помнит, почему он такой.
Отсюда практический приём воспроизводимости: хранить вместе идентификатор сессии, коммит или дерево, модель и команды проверки. Четыре значения умещаются в одну строку заметки, но превращают вчерашнюю работу в воспроизводимую. Без них возврат к задаче через неделю начинается с археологии: какой ветке она соответствовала, какой моделью делалась и чем вы её проверяли - и восстановить это по одному только разговору обычно не удаётся.
Граница применимости у приёма есть. Дерево стоит подготовки окружения и места на диске, а в проектах с тяжёлой установкой зависимостей это минуты, а не секунды. Ради правки в одном файле заводить его незачем. Порог простой: дерево нужно там, где задачи идут параллельно или где прогон длинный и его нельзя прерывать чужими правками. Всё остальное спокойно делается в основном чекауте.
Инженерный вывод простой: в терминале изоляция даётся дешевле всего, и не пользоваться ею странно. Одно дерево на задачу, понятное имя, подготовленное окружение и записанная связка сессии с деревом - четыре привычки, которые снимают почти все вопросы параллельной работы. Остальное - обычная дисциплина git: вовремя сливать и вовремя удалять отработавшее.
Типичные провалы предсказуемы. Спутать флаг корня репозитория с флагом дерева и править не там. Пропустить подготовку окружения и получить недостоверные проверки. Возобновить сессию, забыв про дерево, и удивиться расхождению. И оставить деревья без имён, а потом бояться их удалять.
agent --worktree "обнови тест-раннер"
agent --workspace /srv/repos/my-app --worktree auth-fix "почини нестабильный тест авторизации"
# --skip-worktree-setup ускоряет старт, но делает проверки недостоверными