глоссарий
что такое изоляция worktree?
TL;DR
Изоляция через worktree означает, что каждый ИИ-агент получает свою копию вашего кода, в своей ветке и в своей папке. Тогда агенты могут править одни и те же файлы одновременно, не перезаписывая друг друга. Ваш основной checkout остаётся нетронутым, пока вы не сделаете merge. Pane настраивает это автоматически для каждой панели.
Изоляция через worktree означает, что каждый ИИ-агент работает в своей копии вашего кода, в своей ветке и в своей папке. Тогда несколько агентов могут менять одни и те же файлы одновременно, не перезаписывая друг друга, а ваш основной checkout остаётся нетронутым, пока вы не сделаете merge.
проблема
Агенты в одной общей папке рано или поздно перезапишут друг друга.
Вы просите агента A переписать страницу входа, а агента B добавить регистрацию. Обоим нужно изменить auth.ts. В одной общей папке агент B сохраняет свою версию и молча затирает правки агента A. Ни один агент этого не замечает, а вы узнаёте позже.
Поэтому несколько агентов в одном каталоге это лотерея. Всё работает, пока двое из них не тронут один файл, и тогда чья-то работа теряется.
решение
Один worktree на агента: раздельные файлы и ветки, общая история.
Дайте каждому агенту свой git worktree: отдельную папку с отдельной веткой и общей историей. Агент A работает в одном, агент B в другом, и оба могут править auth.ts, потому что правят разные копии.
my-project/ ← main branch, untouched
my-project/worktrees/
├─ login-rewrite/ ← agent A, branch login-rewrite
└─ signup-flow/ ← agent B, branch signup-flowчто изолировано
Файлы, ветка и оболочка раздельные. История, remote и объекты git общие.
| изолировано | общее |
|---|---|
| Файлы и незакоммиченные изменения | Git-история и коммиты |
| Ветка | Удалённый репозиторий (origin) |
| Состояние shell и переменные окружения | Конфигурация git |
| Рабочий каталог | Хранилище объектов (экономит место) |
как Pane это делает
Pane автоматически создаёт и убирает worktree для каждой панели.
Когда вы создаёте панель, Pane выдаёт ей заранее подготовленный worktree, создаёт новую ветку, копирует ваши файлы .env, настройки агентов и node_modules и запускает там агента. Когда вы архивируете панель, Pane проверяет, нет ли несохранённой работы, и удаляет worktree. Вам никогда не придётся вводить git worktree add самим.
что изоляция не покрывает
Worktree разделяют файлы агентов. Они не ограничивают то, что агент может делать.
Worktree это папка, а не песочница. Агенты по-прежнему работают с правами вашего пользователя, поэтому один из них может прочитать файлы другого worktree по пути, выйти в сеть или изменить что-то за пределами репозитория. На практике агенты остаются в своей рабочей папке, но если вам нужны жёсткие ограничения, запускайте их в контейнере или виртуальной машине.
Некоторые вещи общие за пределами git: база данных вашего приложения, порт сервера разработки, глобальный кеш пакетов. Pane выдаёт каждой панели свой блок портов в PANE_PORT; для баз данных используйте скрипт настройки или инструмент, который создаёт отдельную базу для каждого worktree.
связанные материалы
Источники
- Исправления
- Если что-то здесь неверно или устарело, сообщите нам, и мы исправим это и обновим дату вверху. Открыть задачу на GitHub
- Источники
частые вопросы
Автор: Parsa Khazaeepoul, сооснователь Pane. .