Рабочие деревья Git
Агент Hermes часто используется в крупных и долгоживущих репозиториях. Когда вы хотите:
- Запускайте несколько агентов параллельно в одном проекте или
- Держите экспериментальные рефакторинги изолированными от основной ветки.
Git worktrees — это самый безопасный способ предоставить каждому агенту собственную проверку без дублирования всего репозитория.
На этой странице показано, как объединить рабочие деревья с Hermes, чтобы каждый сеанс имел чистый изолированный рабочий каталог.
Зачем использовать рабочие деревья с Hermes?
Hermes рассматривает текущий рабочий каталог как корень проекта:
- CLI: каталог, в котором вы запускаете
hermesилиhermes Chat. - Шлюзы обмена сообщениями: каталог, заданный
terminal.cwdв~/.hermes/config.yaml
Если вы запустите несколько агентов в одной кассе, их изменения могут мешать друг другу:
- Один агент может удалять или перезаписывать файлы, которые использует другой.
- Становится сложнее понять, какие изменения относятся к какому эксперименту.
Благодаря рабочим деревьям каждый агент получает:
- Своя собственная ветка и рабочий каталог
- Собственная история диспетчера контрольных точек** для
/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.
Теперь вы можете перейти в новое рабочее дерево и запустить там 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-a вместо Feature/hermes-b). — Записывает контрольные точки под другим хешем теневого репозитория (полученным из пути рабочего дерева).
- Можно использовать
/rollbackнезависимо, не затрагивая другие.
This is especially useful when:
- Выполнение пакетного рефакторинга.
- Пробовать разные подходы к одной и той же задаче. — Сопряжение сеансов 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 /path/to/your/repo
hermes -w
Гермес будет:
- Создайте временное рабочее дерево в разделе
.worktrees/внутри вашего репозитория. - Проверьте изолированную ветку (например,
hermes/hermes-<hash>). - Запустите полный сеанс CLI внутри этого рабочего дерева.
Это самый простой способ обеспечить изоляцию рабочего дерева. Вы также можете объединить его с одним запросом:
hermes -w -z "Fix issue #123"
Для параллельных агентов откройте несколько терминалов и запустите в каждом hermes -w — каждый вызов автоматически получает собственное рабочее дерево и ветвь.
Собираем все вместе
- Используйте git Worktrees, чтобы предоставить каждому сеансу Hermes собственную чистую проверку. – Используйте ветви, чтобы сохранить историю ваших экспериментов на высоком уровне.
- Используйте контрольные точки +
/rollbackдля устранения ошибок внутри каждого рабочего дерева.
Эта комбинация дает вам:
- Надежные гарантии того, что разные агенты и эксперименты не наступят друг на друга.
- Быстрые циклы итераций с легким восстановлением после неправильных изменений.
- Чистые, проверяемые запросы на включение.
Developing the UI surfaces across worktrees
Поверхности TypeScript (ui-tui/, apps/desktop/) нуждаются в node_modules, который новый npm ci для каждого рабочего дерева дублирует в каждой ветке. Если вы взломали TUI или настольное приложение из нескольких рабочих деревьев, см. TUI и рабочий стол из рабочих деревьев для получения информации о помощниках htui/hgui, которые разделяют одну установку по символической ссылке.