Git Worktrees
На этой странице
Hermes Agent часто используется в больших, долгоживущих репозиториях. Если вам нужно:
- Запускать несколько агентов параллельно над одним проектом, или
- Держать экспериментальные рефакторинги изолированными от основной ветки,
то worktrees Git — это самый безопасный способ дать каждому агенту собственную рабочую копию без дублирования всего репозитория.
На этой странице показано, как объединить worktrees с Hermes, чтобы каждый сеанс имел чистое, изолированное рабочее окружение.
Зачем использовать Worktrees с Hermes?¶
Hermes считает текущую рабочую директорию корнем проекта:
- CLI: директория, из которой вы запускаете
hermesилиhermes chat - Мессенджер-шлюзы: директория, заданная в
MESSAGING_CWD
Если запускать несколько агентов в одной и той же рабочей копии, их изменения могут мешать друг другу:
- Один агент может удалить или переписать файлы, которые использует другой.
- Становится сложнее понять, какие изменения относятся к какому эксперименту.
С worktrees каждый агент получает:
- Собственную ветку и рабочую директорию
- Собственную историю Checkpoint Manager для
/rollback
См. также: Checkpoints и /rollback.
Быстрый старт: создание Worktree¶
Из вашего основного репозитория (содержащего .git/) создайте новый worktree для ветки с новой функциональностью:
# Из корня основного репозитория
cd /path/to/your/repo
# Создайте новую ветку и worktree в ../repo-feature
git worktree add ../repo-feature feature/hermes-experiment
Это создаёт:
- Новую директорию:
../repo-feature - Новую ветку:
feature/hermes-experiment, развёрнутую в этой директории
Теперь вы можете перейти в новый worktree и запустить там Hermes:
Hermes будет:
- Считать
../repo-featureкорнем проекта. - Использовать эту директорию для файлов контекста, правок кода и инструментов.
- Использовать отдельную историю чекпоинтов для
/rollback, привязанную к этому worktree.
Запуск нескольких агентов параллельно¶
Вы можете создать несколько worktrees, каждый со своей веткой:
cd /path/to/your/repo
git worktree add ../repo-experiment-a feature/hermes-a
git worktree add ../repo-experiment-b feature/hermes-b
В отдельных терминалах:
Каждый процесс Hermes:
- Работает в своей ветке (
feature/hermes-avsfeature/hermes-b). - Записывает чекпоинты под разным хешем теневого репозитория (полученным из пути к worktree).
- Может независимо использовать
/rollback, не влияя на другой процесс.
Это особенно полезно, когда:
- Выполняются массовые рефакторинги.
- Опробуются разные подходы к одной и той же задаче.
- Одновременно используются сессии CLI и мессенджер-шлюза с одним вышестоящим репозиторием.
Безопасная очистка Worktrees¶
Когда эксперимент завершён:
- Решите, сохранить работу или отбросить её.
- Если хотите сохранить:
- Выполните слияние ветки в основную ветку как обычно.
- Удалите worktree:
Примечания:
git worktree removeоткажется удалять worktree с незакоммиченными изменениями, если не принудить его.- Удаление worktree не удаляет ветку автоматически; ветку можно удалить или оставить обычными командами
git branch. - Данные чекпоинтов Hermes в
~/.hermes/checkpoints/не удаляются автоматически при удалении worktree, но они обычно очень малы.
Рекомендации¶
- Один worktree на один эксперимент Hermes
- Создавайте выделенную ветку/worktree для каждого существенного изменения.
- Это позволяет держать диффы сфокусированными, а PR — небольшими и удобными для ревью.
- Называйте ветки по имени эксперимента
- Например,
feature/hermes-checkpoints-docs,feature/hermes-refactor-tests. - Коммитьте часто
- Используйте git-коммиты для отметки крупных вех.
- Используйте чекпоинты и /rollback как страховочную сетку для правок, сделанных инструментами, между коммитами.
- Избегайте запуска Hermes из корня голого репозитория при использовании worktrees
- Предпочитайте директории worktrees, чтобы у каждого агента была чёткая область видимости.
Использование hermes -w (автоматический режим Worktree)¶
У Hermes есть встроенный флаг -w, который автоматически создаёт одноразовый git worktree с собственной веткой. Вам не нужно настраивать worktrees вручную — просто перейдите в репозиторий и выполните:
Hermes:
- Создаст временный worktree в директории
.worktrees/внутри вашего репозитория. - Развернёт изолированную ветку (например,
hermes/hermes-<hash>). - Запустит полноценную CLI-сессию внутри этого worktree.
Это самый простой способ получить изоляцию через worktree. Можно также совместить с одиночным запросом:
Для параллельной работы агентов откройте несколько терминалов и запустите hermes -w в каждом — каждый вызов автоматически получит свой worktree и ветку.
Собираем всё вместе¶
- Используйте git worktrees, чтобы дать каждому сеансу Hermes свою чистую рабочую копию.
- Используйте ветки, чтобы фиксировать историю ваших экспериментов на высоком уровне.
- Используйте чекпоинты +
/rollback, чтобы восстанавливаться после ошибок внутри каждого worktree.
Эта комбинация даёт вам:
- Надёжные гарантии, что разные агенты и эксперименты не мешают друг другу.
- Быстрые итерационные циклы с лёгким восстановлением после неудачных правок.
-
Чистые, удобные для ревью пул-реквесты.
- Быстрый старт: создание Worktree
- Запуск нескольких агентов параллельно
- Безопасная очистка Worktrees
- Рекомендации
- Использование
hermes -w(автоматический режим Worktree) - Собираем всё вместе