sidebar_position: 3 sidebar_label: "Git Worktrees" title: "Git Worktrees" description: "Run multiple Hermes agents safely on the same repository using git worktrees and isolated checkouts" lang: ru
Рабочие деревья Git
Агент Hermes часто используется в крупных и долгоживущих репозиториях. Когда вы хотите:
- Запускайте несколько агентов параллельно в одном проекте или
- Держите экспериментальные рефакторинги изолированными от основной ветки.
Git worktrees — это самый безопасный способ предоставить каждому агенту собственную проверку без дублирования всего репозитория.
На этой странице показано, как объединить рабочие деревья с Hermes, чтобы каждый сеанс имел чистый изолированный рабочий каталог.
Зачем использовать рабочие деревья с Hermes?
Hermes рассматривает текущий рабочий каталог как корень проекта:
- CLI: каталог, в котором вы запускаете
hermesилиhermes chat. - Шлюзы обмена сообщениями: каталог, заданный
MESSAGING_CWD.
Если вы запустите несколько агентов в одной кассе, их изменения могут мешать друг другу:
- Один агент может удалять или перезаписывать файлы, которые использует другой.
- Становится сложнее понять, какие изменения относятся к какому эксперименту.
Благодаря рабочим деревьям каждый агент получает:
- Своя собственная ветка и рабочий каталог
- Собственная история Checkpoint Manager** для
/rollback.
См. также: Проверочные точки и /rollback.
Быстрый старт: создание рабочего дерева
В главном репозитории (содержащем .git/) создайте новое рабочее дерево для функциональной ветки:
# From the main repo root
cd /path/to/your/repo
# Create a new branch and worktree in ../repo-feature
git worktree add ../repo-feature feature/hermes-experiment
Это создает:
- Новый каталог:
../repo-feature. - В этом каталоге извлечена новая ветка:
feature/hermes-experiment.
Теперь вы можете cd войти в новое рабочее дерево и запустить там Hermes:
cd ../repo-feature
# Start Hermes in the worktree
hermes
Гермес будет:
- См.
../repo-featureкак корень проекта. - Используйте этот каталог для контекстных файлов, изменений кода и инструментов.
- Используйте отдельную историю контрольных точек для
/rollback, ограниченную этим рабочим деревом.
Параллельный запуск нескольких агентов
Вы можете создать несколько рабочих деревьев, каждое со своей веткой:
cd /path/to/your/repo
git worktree add ../repo-experiment-a feature/hermes-a
git worktree add ../repo-experiment-b feature/hermes-b
В отдельных терминалах:
# Terminal 1
cd ../repo-experiment-a
hermes
# Terminal 2
cd ../repo-experiment-b
hermes
Каждый процесс Гермеса:
- Работает в собственной ветке (
feature/hermes-avsfeature/hermes-b). — Записывает контрольные точки под другим хешем теневого репозитория (полученным из пути рабочего дерева). - Можно использовать
/rollbackнезависимо, не затрагивая друг друга.
Это особенно полезно, когда:
- Выполнение пакетного рефакторинга.
- Пробовать разные подходы к одной и той же задаче. — Сопряжение сеансов CLI + шлюза с одним и тем же восходящим репозиторием.
Безопасная очистка рабочих деревьев
Когда вы закончите эксперимент:
- Решите, оставить работу или отказаться от нее.
- Если вы хотите сохранить его:
- Объедините ветку с основной веткой, как обычно.
- Удалите рабочее дерево:
cd /path/to/your/repo
# Remove the worktree directory and its reference
git worktree remove ../repo-feature
Примечания:
git worktree removeоткажется удалить рабочее дерево с незафиксированными изменениями, если вы не сделаете это принудительно.- Удаление рабочего дерева не автоматически удаляет ветку; вы можете удалить или сохранить ветку, используя обычные команды
git branch. - Данные контрольной точки Hermes под
~/.hermes/checkpoints/не удаляются автоматически при удалении рабочего дерева, но обычно они очень малы.
Лучшие практики
- Одно рабочее дерево на эксперимент Гермеса
- Создайте специальную ветку/рабочее дерево для каждого существенного изменения.
- Благодаря этому различия будут сфокусированы, а PR будут небольшими и легко проверяемыми.
- Назовите ветки после эксперимента
- например
feature/hermes-checkpoints-docs,feature/hermes-refactor-tests. - Часто совершайте коммиты
- Используйте git-коммиты для контрольных точек высокого уровня.
- Используйте checkpoints and /rollback в качестве страховки для промежуточного редактирования с помощью инструментов.
- Избегайте запуска Hermes из чистого корня репозитория при использовании рабочих деревьев
- Вместо этого отдавайте предпочтение каталогам рабочего дерева, чтобы каждый агент имел четкую область действия.
Использование hermes -w (режим автоматического рабочего дерева)
Hermes имеет встроенный флаг -w, который автоматически создает одноразовое рабочее дерево git с собственной веткой. Вам не нужно настраивать рабочие деревья вручную — просто cd в свой репозиторий и запустите:
cd /path/to/your/repo
hermes -w
Гермес будет:
- Создайте временное рабочее дерево под
.worktrees/внутри вашего репозитория. - Проверьте изолированную ветку (например,
hermes/hermes-<hash>). - Запустите полный сеанс CLI внутри этого рабочего дерева.
Это самый простой способ обеспечить изоляцию рабочего дерева. Вы также можете объединить его с одним запросом:
hermes -w -q "Fix issue #123"
Для параллельных агентов откройте несколько терминалов и запустите hermes -w в каждом — каждый вызов автоматически получает собственное рабочее дерево и ветвь.
Собираем все вместе
- Используйте git Worktrees, чтобы предоставить каждому сеансу Hermes собственную чистую проверку. – Используйте ветви, чтобы сохранить историю ваших экспериментов на высоком уровне.
- Используйте контрольные точки +
/rollbackдля устранения ошибок внутри каждого рабочего дерева.
Эта комбинация дает вам:
- Надежные гарантии того, что разные агенты и эксперименты не наступят друг на друга.
- Быстрые циклы итераций с легким восстановлением после неправильных изменений.
- Чистые, проверяемые запросы на включение.