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

Паттерн рабочего пространства

Назначение

Создание выделенной директории рабочего пространства для выполнения workflow. Все рабочие файлы (планы, результаты, отчёты, резервные копии) хранятся в одном месте, сохраняя чистоту проекта.

Структура

./moira-ws/{workspace-name}/
├── process-id.txt # ID выполнения workflow для восстановления
├── development-plan.md # Планы и спецификации
├── step-1/ # Результаты конкретных шагов
│ └── step-results.md
├── *.backup.json # Файлы резервных копий
└── ... # Прочие рабочие файлы

Расположение рабочего пространства

Все рабочие пространства создаются в поддиректории ./moira-ws/ текущего проекта:

./moira-ws/{workspace-name}/

НЕ создавайте рабочие пространства в корне проекта (./feature-name/) или в других местах. Всегда используйте ./moira-ws/ для единообразия.

Соглашение об именовании

Формат: {short-name}-{YYYYMMDD}-{HHMM}

  • short-name: Краткое описание задачи (макс. 20 символов, kebab-case)
  • Дата и время создания

Примеры:

  • wmf-edit-20251211-2145
  • auth-fix-20251212-0930
  • api-refactor-20251215-1400

Реализация

Владелец рабочего пространства

Существующая ранняя ответственность определяет канонический путь рабочего пространства и возвращает его как глобальный workspace_path. Нода, единственная задача которой выбрать или создать директорию, добавляет ход, но не добавляет суждения.

Если стабильные файлы берутся из default-значений реестра workflow, сразу после этого владельца разместите ноду materialize. Она создаёт директорию назначения и распаковывает все объявленные файлы из одного ограниченного архива, удерживая на этом маршруте их тела вне контекста агента:

{
"id": "materialize-workspace-bootstrap",
"type": "materialize",
"basePath": "{{workspace_path}}",
"files": [
{ "path": "process-id.txt", "from": "workspace_process_id_file" },
{ "path": "workflow-reference.md", "from": "workflow_reference" },
{ "path": "plans/.keep", "content": "" }
],
"connections": { "success": "create-plan" }
}

Указанные записи реестра служат источником истины для стабильного содержимого workflow. Владелец содержательной работы по-прежнему записывает динамические контракты задачи, анализ, планы и отчёты в том же ходе, где определяет их содержание. Возвращённый путь сам по себе ничего не доказывает: completion condition первого потребителя должна требовать существования и полноты нужных файлов.

Полный контракт объявления, архива, путей, безопасности и ошибок описан в разделе Материализация файлов.

Использование пути рабочего пространства

Ссылайтесь на {{workspace_path}} в последующих директивах:

{
"directive": "Save development plan to {{workspace_path}}development-plan.md"
}
{
"directive": "Create step results in {{workspace_path}}step-{{current_step}}/step-results.md"
}

Что хранить в рабочем пространстве

Включайте:

  • process-id.txt — ID выполнения для восстановления workflow
  • Планы и спецификации (файлы .md)
  • Результаты и отчёты по шагам
  • Резервные копии перед редактированием
  • Временные результаты анализа

Исключайте:

  • Исходный код проекта
  • node_modules или зависимости
  • Большие бинарные файлы
  • Секреты и учётные данные

Настройка Git

Добавьте ./moira-ws/ в .gitignore:

# Рабочие пространства Moira workflow
moira-ws/

Рабочие пространства — это временные рабочие директории, которые не следует коммитить.

Восстановление

При прерывании workflow агент может:

  1. Прочитать process-id.txt из рабочего пространства
  2. Возобновить выполнение по сохранённому ID процесса
  3. Продолжить с последнего завершённого шага
{
"directive": "Check for existing workspace in ./moira-ws/\nIf found, read process-id.txt and resume workflow"
}

Пример Workflow Management Flow

Workflow Management Flow определяет workspace_path, материализует два стабильных файла для обеих веток и затем выбирает создание или редактирование:

get-action-type
-> materialize-workspace-bootstrap
-> route-action-type
| create -> gather-workflow-requirements
| edit -> prepare-edit-workflow

Архив записывает process-id.txt и workflow-authoring-reference.md. Владельцы веток create и edit затем записывают свои требования и provenance, не дублируя стабильные файлы.

Перевод ручного bootstrap

Перенесите стабильные тела workflow в default-значения строковых записей реестра и доставляйте их одной нодой materialize. Удалите из директив агента только соответствующие инструкции записи статических файлов. Динамические файлы оставьте ответственности, определяющей их содержание, а её completion condition должна проверять необходимые файлы на диске.

Связанные паттерны