Разные агенты не должны захватывать одно и то же дерево.
«Изолировать по каталогу, координировать по идентификатору задачи». Два самолета, не мешают друг другу.
Сложная проблема с параллельными агентами
s09-s11 позволяет запускать несколько товарищей по команде одновременно, но есть подводный камень: Они все находятся в одном рабочем каталоге. Алиса меняет auth.py, а Боб одновременно меняет auth.py — конфликты git, путаница файлов и взаимное загрязнение тестов.
Решением s12 является git worktree: на одном и том же складе вы можете получать разные ветки в разных каталогах с помощью git worktree add. Каждый агент получает собственное рабочее дерево и работает в своем каталоге, невидимом друг для друга.
my-repo/ # Основное рабочее пространство (для лида) .worktrees/ alice-auth/ # каталог изоляции Алисы (ветвь: wt/alice-auth) bob-api/ # каталог изоляции Боба (ветвь: wt/bob-api) index.json # реестра рабочего дерева events.jsonl # Журнал событий жизненного цикла
Разделение труда в двух плоскостях
s12 Явно разделите систему на две плоскости:
<ул>.tasks/. Задача — это абстрактная единица того, «что делать», включая зависимости, владельца и статус. .worktrees/. Рабочее дерево — это физический контейнер «где это сделать», каталог + ветка. Они связаны двунаправленно через task.worktree и worktree.task_id.
Такое разделение позволяет: Повторно использовать механизм управления задачами, но изменить среду выполнения (например, не git Worktree, а Docker-контейнер). Или измените механизм задачи, но повторно используйте рабочее дерево (например, не файл JSON, а базу данных).
демонстрация жизненного цикла
Рассмотрите это полностью ниже: создать задачу → создать рабочее дерево → запустить команды → сохранить или удалить. Каждый шаг имеет запись журнала событий (events.jsonl), которая используется для наблюдения в рабочей среде.
keep vs remove
Когда рабочее дерево завершает свою миссию, есть два финала:
<ул>удалить: git worktree удалить --force, удалить каталог. Ветви также обычно убираются. Это эквивалентно «Я больше не хочу этого исследования». сохранить: отметьте только статус: сохранено в .worktrees/index.json, и физический каталог будет сохранен. Это эквивалентно: «Я получу этот результат, подожди, пока я его объединю». Общий режим: субагент запускает экспериментальный рефакторинг → работает с хорошими результатами → оставить → человеческая проверка → объединяется с основной веткой → удаляется вручную. Плохой эффект? Просто снимите и выбросьте.