Перейти к основному содержимому

Git Worktrees

VibeOS часто используется в больших, долгоживущих репозиториях. Когда вам нужно:

  • Запускать несколько агентов параллельно в одном проекте, или
  • Держать экспериментальные рефакторинги изолированными от основной ветки,

Worktrees в Git — это самый безопасный способ дать каждому агенту собственную копию без дублирования всего репозитория.

Эта страница показывает, как объединить worktrees с VibeOS, чтобы каждый сеанс имел чистую, изолированную рабочую директорию.

Зачем использовать Worktrees с VibeOS?​

VibeOS считает текущую рабочую директорию корнем проекта:

  • CLI: директория, в которой вы запускаете vibeos или vibeos chat
  • Шлюзы обмена сообщениями: директория, заданная terminal.cwd в ~/.vibeos/config.yaml

Если вы запускаете несколько агентов в одной и той же копии, их изменения могут мешать друг другу:

  • Один агент может удалить или перезаписать файлы, которые использует другой.
  • Становится сложнее понять, какие изменения относятся к какому эксперименту.

С worktrees каждый агент получает:

  • Собственную ветку и рабочую директорию
  • Собственную историю Checkpoint Manager для /rollback

См. также: Checkpoints и /rollback.

Быстрый старт: создание Worktree​

Из основного репозитория (содержащего .git/) создайте новый worktree для ветки с функцией:

# Из корня основного репозитория
cd /path/to/your/repo

# Создайте новую ветку и worktree в ../repo-feature
git worktree add ../repo-feature feature/vibeos-experiment

Это создаст:

  • Новую директорию: ../repo-feature
  • Новую ветку: feature/vibeos-experiment, извлечённую в этой директории

Теперь вы можете перейти в новый worktree и запустить там VibeOS:

cd ../repo-feature

# Запустите VibeOS в worktree
vibeos

VibeOS будет:

  • Считать ../repo-feature корнем проекта.
  • Использовать эту директорию для файлов контекста, правок кода и инструментов.
  • Использовать отдельную историю контрольных точек для /rollback, ограниченную этим worktree.

Запуск нескольких агентов параллельно​

Вы можете создать несколько worktrees, каждый со своей веткой:

cd /path/to/your/repo

git worktree add ../repo-experiment-a feature/vibeos-a
git worktree add ../repo-experiment-b feature/vibeos-b

В отдельных терминалах:

# Терминал 1
cd ../repo-experiment-a
vibeos

# Терминал 2
cd ../repo-experiment-b
vibeos

Каждый процесс VibeOS:

  • Работает в своей ветке (feature/vibeos-a vs feature/vibeos-b).
  • Записывает контрольные точки под другим хешем теневого репозитория (производным от пути worktree).
  • Может использовать /rollback независимо, не влияя на другой.

Это особенно полезно, когда:

  • Выполняются пакетные рефакторинги.
  • Опробуются разные подходы к одной задаче.
  • Сочетаются сеансы CLI и шлюзов против одного вышестоящего репозитория.

Безопасная очистка Worktrees​

Когда вы закончили эксперимент:

  1. Решите, сохранить или отбросить работу.
  2. Если хотите сохранить:
    • Слейте ветку в основную ветку как обычно.
  3. Удалите worktree:
cd /path/to/your/repo

# Удалите директорию worktree и её ссылку
git worktree remove ../repo-feature

Примечания:

  • git worktree remove откажется удалять worktree с незафиксированными изменениями, если вы не принудите это.
  • Удаление worktree не удаляет автоматически ветку; вы можете удалить или сохранить ветку с помощью обычных команд git branch.
  • Данные контрольных точек VibeOS в ~/.vibeos/checkpoints/ не удаляются автоматически при удалении worktree, но они обычно очень малы.

Лучшие практики​

  • Один worktree на эксперимент VibeOS
    • Создавайте выделенную ветку/worktree для каждого существенного изменения.
    • Это сохраняет диффы сфокусированными, а PR — небольшими и удобными для ревью.
  • Называйте ветки по эксперименту
    • Например, feature/vibeos-checkpoints-docs, feature/vibeos-refactor-tests.
  • Фиксируйте изменения часто
    • Используйте git-коммиты для ключевых этапов.
    • Используйте контрольные точки и /rollback как страховочную сетку для правок, сделанных инструментами между ними.
  • Избегайте запуска VibeOS из корня голого репозитория при использовании worktrees
    • Вместо этого используйте директории worktree, чтобы у каждого агента была чёткая область действия.

Использование vibeos -w (режим автоматического Worktree)​

VibeOS имеет встроенный флаг -w, который автоматически создаёт одноразовый git worktree с собственной веткой. Вам не нужно настраивать worktrees вручную — просто перейдите в свой репозиторий и выполните:

cd /path/to/your/repo
vibeos -w

VibeOS:

  • Создаст временный worktree в .worktrees/ внутри вашего репозитория.
  • Извлечёт изолированную ветку (например, vibeos/vibeos-<hash>`).
  • Запустит полный сеанс CLI внутри этого worktree.

Это самый простой способ получить изоляцию worktree. Вы также можете объединить его с одним запросом:

vibeos -w -z "Исправить проблему #123"

Для параллельных агентов откройте несколько терминалов и выполните vibeos -w в каждом — каждый вызов получает свой собственный worktree и ветку автоматически.

Собираем всё вместе​

  • Используйте git worktrees, чтобы дать каждому сеансу VibeOS собственную чистую копию.
  • Используйте ветки, чтобы фиксировать высокоуровневую историю ваших экспериментов.
  • Используйте контрольные точки + /rollback, чтобы восстанавливаться после ошибок внутри каждого worktree.

Эта комбинация даёт вам:

  • Надёжные гарантии, что разные агенты и эксперименты не мешают друг другу.
  • Быстрые циклы итераций с лёгким восстановлением после неудачных правок.
  • Чистые, удобные для ревью пул-реквесты.