Несколько агентов в одном проекте: как работать с Git worktree
Neaptide · 20 сентября 2026 г. · 8 мин чтения · Обновлено: 3 октября 2026 г.
Как разделить задачи ИИ-агентов через Git worktree: рабочие каталоги, ветки, окружение, проверка и объединение изменений.
В этой статье

Два агента в одной рабочей папке мешают друг другу. Один чинит форму, второй перестраивает компонент, а тесты тем временем проверяют смесь недоделанных правок. Git worktree разводит файлы: у каждой задачи появляется своя папка и своя ветка.
Worktree — дополнительная рабочая копия того же Git-репозитория. История у копий общая, ветка и рабочие файлы у каждой свои, поэтому несколько изменений можно вести одновременно. Как это устроено и какие есть команды, описано в руководстве Git.
Какие задачи можно распараллелить
Начните с двух независимых изменений. Скажем, первый агент исправляет обработку ошибки в форме заявки, второй обновляет текст справки. Если же обоим придётся менять схему данных или один общий компонент, сначала договоритесь об интерфейсе, а зависимую часть сделайте по очереди.
| Подходит для двух задач | Лучше определить порядок заранее |
|---|---|
| Исправление формы и текст документации | Изменение API и зависящий от него интерфейс |
| Тесты разных независимых модулей | Два рефакторинга одного компонента |
| Исследование ошибки и отдельная правка текста | Миграция данных и код для новой схемы |
Раздельные папки не дают недоделанным файлам перемешаться, но логических противоречий не снимают. Два изменения могут слиться в Git без единого конфликта и всё равно сломать поведение приложения.
Создаём две рабочие копии
Для примера нужен репозиторий, в котором есть хотя бы один коммит. Команды выполняйте из его основной папки. Веток и соседних каталогов с такими именами ещё быть не должно.
git status --short
git worktree add -b ai/form-fix ../project-form HEAD
git worktree add -b ai/docs-update ../project-docs HEAD
git worktree listОбе копии начинаются с текущего коммита HEAD. Незакоммиченные изменения из исходной папки в них не попадут. Если они нужны обеим задачам, сначала подготовьте согласованную исходную версию. Только не коммитьте чужую недоделанную работу ради этой инструкции.
Откройте два терминала, в каждом перейдите в свой каталог и запустите агента. Для Claude Code:
cd ../project-form
claudeВо втором терминале откройте `../project-docs`. Claude Code умеет и сам создавать рабочую копию при запуске: `claude --worktree <имя>` кладёт её в `.claude/worktrees/` внутри репозитория. Подробности есть в инструкции по параллельным сессиям. Ручной способ хорош тем, что папки и ветки видны независимо от клиента.
Что сообщить каждому агенту
Укажите ожидаемый результат и файлы, которые можно менять. Для первого агента подойдёт такой запрос:
Исправь сообщение об ошибке отправки заявки. Работай в текущем worktree. Найди форму и её тесты, сохрани успешную отправку. Не меняй структуру API и документацию. Покажи diff и результаты проверок. Не объединяй ветки.
Второму поручите обновить справку и отдельно оговорите, что код формы трогать нельзя. Задания здесь учебные. Пути, команды и критерии проверки возьмите из своего проекта.
Проверьте окружение каждой копии. Зависимости, скорее всего, придётся ставить заново, а личные конфигурационные файлы, которых нет в Git (тот же `.env`), копировать вручную. Двум серверам разработки нужны разные порты. Если оба работают с одной тестовой базой, разделите данные или не запускайте одновременно сценарии, которые её меняют.
Как принять результат
Diff каждой задачи смотрите отдельно. Сначала сверьте его с поручением, потом загляните в результаты тестов. Проверенные изменения закоммитьте, каждое в своей ветке.
Вливайте ветки в выбранную интеграционную по одной. После второго слияния ещё раз пройдите общий пользовательский сценарий: зелёные тесты в двух отдельных ветках ничего не говорят о том, как изменения работают вместе.
Если возникли конфликты, сначала решите, какое поведение должно остаться. Не просите агента механически принять все изменения одной стороны: так легко потерять кусок другой задачи.
Когда удалять worktree
Сначала убедитесь, что нужные изменения сохранены и приняты, а в папке нет несохранённых файлов. Затем из основной рабочей копии выполните:
git worktree remove ../project-form
git worktree remove ../project-docsБез `--force` Git откажется удалять worktree, в котором остались незакоммиченные изменения или неотслеживаемые файлы. Не добавляйте флаг только затем, чтобы ошибка исчезла. Ветки после удаления рабочих копий остаются на месте. Что делать с ними, решайте отдельно.