Документация/Агент
Задача в отдельной копии проекта
Как дать каждой задаче агента свою копию проекта и свою ветку, чтобы несколько агентов работали параллельно и не мешали друг другу.
Обычно все чаты проекта работают в одной папке. Если два агента одновременно правят одни и те же файлы, правки пересекаются. Чтобы этого не случалось, каждой новой задаче можно дать свою копию проекта на своей ветке git. Работа остаётся в копии, пока вы не перенесёте её в проект. В git такая копия называется worktree, и в приложении встречаются оба названия.
По умолчанию функция выключена.
Как включить
- Откройте настройки: шестерёнка в шапке окна или ⌘ , на macOS (Ctrl Alt S на Windows и Linux).
- Слева в группе «Подключения» выберите «Git-аккаунты». Подключать git-аккаунт для этой функции не нужно.
- В блоке «Задачи агента» включите «Отдельная копия проекта на каждую задачу».
- Ниже появится пункт «Где хранить копии». Выберите место, варианты — в таблице.
| Вариант | Куда ложатся копии |
|---|---|
| «В проекте» (по умолчанию) | <проект>/.koder/worktrees/<задача>. Git основной копии их не видит: приложение само добавляет папку в .git/info/exclude |
| «В домашней папке» | ~/.koder-worktrees/<проект>/<задача>, на системном диске, отдельно от проекта |
| «Своя папка…» | Папка, которую вы выберете в системном диалоге |
Новое место подействует только на новые задачи. Копии, созданные раньше, останутся, где были.
Как это работает
- Включите функцию и начните новый чат в git-проекте.
- Отправьте первое сообщение. В ленте мелькнёт «Создаю копию проекта для задачи…».
- Приложение создаёт ветку вида
koder/task-20261112-143005(в имени дата и время начала задачи) и на ней копию проекта. Основа копии — коммит, на котором сейчас стоит проект. - Агент работает только в копии: там он читает и правит файлы, там запускает команды. Следующие сообщения этого чата уходят в ту же копию.
Слева от названия такого чата стоит значок папки с веткой, выделенный цветом. Наведите на него указатель, и подсказка покажет, где работает агент: «Агент работает в worktree «…»: <путь>». Там же видны основная копия и ветка.
Чаты, начатые до включения функции, по-прежнему работают в самом проекте.
Важно
В копию попадает только то, что сохранено в git. Незакоммиченных правок и файлов из .gitignore
(например, установленных зависимостей или .env) в копии не будет. Если они нужны задаче, закоммитьте правки
заранее или попросите агента поставить зависимости в копии.
Если копию удалили вручную
Если папку копии удалили, а ветка осталась, приложение при следующем сообщении восстановит копию из ветки задачи и скажет об этом. Если пропала и ветка, сообщение уйдёт в новый чат с новой копией. Прежний чат останется, но переписка из него в новый не перейдёт.
Как перенести работу в проект
Работа агента лежит в ветке koder/task-…. Если агент не закоммитил правки, слияние их не перенесёт. Сначала
попросите агента сделать коммит или откройте копию и закоммитьте их сами. Затем перенесите работу в свою ветку обычным
слиянием git: в Git-клиенте приложения (кнопка «Git» в шапке окна) или так, как вы привыкли.
В Git-клиенте видны все копии репозитория: они собраны в группе «Worktree» в списке веток. Щёлкните копию, и она откроется как проект. Подробнее о ветках и слиянии — в разделе Git.
Пока чат есть, копия остаётся на диске. Когда перенесёте работу, удалите чат: коммиты задачи уже есть в вашей ветке, и если в копии нет незакоммиченных правок, приложение само удалит копию вместе с веткой.
Что происходит при удалении чата
- Копия пустая (нет изменённых файлов и коммитов, которых нет в проекте) — приложение само удалит её вместе с веткой.
- В копии есть работа — появится окно «В копии задачи есть работа». В нём видно, сколько файлов изменено и сколько
коммитов нет в проекте. Выберите:
- «Оставить копию» — чат удалится, а копия и ветка останутся. Их можно найти в Git-клиенте, в группе «Worktree»;
- «Удалить вместе с изменениями» — копия, ветка и работа в них удалятся насовсем.
Ограничения
- Нужен git-репозиторий хотя бы с одним коммитом. В обычной папке или в репозитории без коммитов задача выполняется в самом проекте.
- Если копию создать не удалось, приложение скажет: «Не удалось создать worktree для задачи — она выполняется в проекте».
- Каждая копия занимает на диске столько же места, сколько полный набор файлов проекта.
- Функция работает и с проектом на сервере по SSH: копию приложение создаёт на сервере.
Что дальше
- Git — ветки, слияние, публикация.
- Список чатов и параллельные задачи — как вести несколько чатов одновременно.
- Изменения сессии — как проверить правки агента перед слиянием.
Обновлено · Нашли неточность? Напишите на support@devmachine.ai или в Telegram.
