Сессии и проекты¶
Проект — это контейнер: он объединяет сессии, рабочий каталог, план, инварианты и реестр git-репозиториев. Сессия — отдельный диалог с агентом; она может жить и без проекта.
Коротко
Проект отвечает за «где и над чем работаем» — каталог, репозитории, план, общий контекст. Сессия — за «что и как обсуждаем» — диалог, todo и режим.
Проект как контейнер¶
Сессии ссылаются на проект, а проект владеет общими для группы данными:
| Что хранит проект | Назначение |
|---|---|
| Сессии | Все диалоги проекта; список можно фильтровать по проекту |
| Рабочий каталог | Папка, в которой работают файловые, shell- и git-инструменты |
| План | План работ проекта с приоритетами и зависимостями |
| Контекст | Инварианты проекта и лог работ — попадают в контекст агента |
| Репозитории | Реестр git-репозиториев проекта |
| Оформление | Имя, описание, иконка и цвет карточки проекта |
У проекта есть владелец и участники с ролями: кто-то управляет проектом и его каталогом, кто-то может редактировать содержимое, а кто-то — только смотреть. Права на уровне сервера определяются ролевой моделью.
Сессия и проект¶
- Сессия создаётся с проектом или без него — привязка к проекту необязательна.
- Привязку и перенос можно сделать в интерфейсе (в том числе перетаскиванием)
или через API:
PATCH /api/v2/sessions/:idс полемproject_id.
Сессия без проекта¶
Работа без проекта — штатный сценарий, а не ошибка:
- Агент всегда знает свой контекст: есть проект или нет, какой рабочий каталог используется и какие ограничения действуют.
- В сессии без проекта доступны диалог и todo, но нет плана проекта.
- Если задача требует плана или длительной работы с файлами, агент подскажет завести проект или привязать сессию к существующему. Сделать это можно и самому — во вкладке «Проект».
Когда стоит создать проект
Если работа выходит за рамки одной короткой задачи, заведите проект: появятся план, общий рабочий каталог и реестр репозиториев.
Рабочий каталог проекта (workspace)¶
Workspace — это папка, в которой агент читает и пишет файлы, запускает команды и работает с git. У проекта он либо задан явно, либо используется рабочий каталог по умолчанию.
| Режим | Кто владеет файловой системой | Как задаётся каталог |
|---|---|---|
| Серверный (managed) | Сервер | Каталог создаётся автоматически под корнем рабочих пространств; имя выводится из названия проекта. Путь виден, но не выбирается вручную |
| Локальный (standalone) | Пользователь | По умолчанию тоже автоматически, но доступен ручной выбор и создание каталога через диалог |
- Каталог создаётся автоматически — ошибка «каталог не найден» не возникает.
- В локальном режиме можно выбрать произвольный абсолютный путь. Выход за пределы «безопасного» корня требует явного подтверждения; в серверном режиме он запрещён.
Гейт рабочего каталога
Файловые, shell- и git-инструменты доступны только когда у проекта задан рабочий каталог. Пока его нет, инструменты остаются в подсказке модели, но отклоняются — сначала задайте каталог. Относительные пути разрешены только внутри workspace.
Реестр git-репозиториев¶
У проекта может быть несколько git-репозиториев. Клонирование или инициализация автоматически добавляет запись в реестр, а список репозиториев показывает их все.
- Репозитории живут внутри рабочего каталога проекта (допускается вложенность).
- Git-инструменты принимают относительный
repo_path— какой репозиторий взять за текущий. Абсолютный путь или выход через..отклоняются. - В интерфейсе на вкладке Git видны назначение, тип, URL, SSH-ключ и время последнего обновления; там же можно клонировать, инициализировать, пересканировать и убрать запись из реестра.
- Удаление записи из реестра не удаляет локальный каталог — файлы остаются.
SSH-ключи агентов¶
Для приватных репозиториев используются SSH-ключи:
- Ключ хранится на агента и может быть привязан сразу к нескольким агентам.
- Секреты ключей шифруются при хранении; в промптах и журналах ключи маскируются.
- Поддерживаются ключи с парольной фразой.
- Если репозиторий использует SSH-адрес, а ключ не задан, операция завершится явной ошибкой, а не молчаливым сбоем.
HTTPS или SSH
Публичные репозитории можно клонировать по HTTPS без ключа. Для приватных по SSH привяжите ключ к агенту в разделе настроек агентов.
Перенос сессии между проектами¶
Сессию можно перенести в другой проект — перетаскиванием или через API:
- Todo остаётся с сессией.
- План берётся от нового проекта: ссылки todo на пункты старого плана игнорируются, если таких пунктов в новом плане нет.
- Интерфейс обновляет список проектов и дерево файлов, открытые вкладки сохраняют несохранённые правки.
- У сессии без проекта todo есть, плана нет.