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

Оркестрация конструктора сайтов v2

Site Builder Orchestration v2 (внедрена в Gratis AI Agent v1.4.0) — это движок, который обеспечивает многоэтапное создание сайтов. Когда вы просите агента «создать сайт ресторана» или «сделать портфолио с блогом», оркестратор разбивает эту общую цель на структурированный план, определяет необходимые плагины для его выполнения, выполняет каждый шаг последовательно, отслеживает прогресс и автономно восстанавливается в случае ошибок.


Как это работает

1. Генерация плана

Когда агент получает инструкцию по созданию сайта, он вызывает возможность create_site_plan для получения JSON плана сайта. План описывает:

  • Цель — что должен делать готовый сайт
  • Фазы — упорядоченные группы шагов (например, Настройка, Типы контента, Дизайн, Контент)
  • Шаги — отдельные вызовы возможностей внутри каждой фазы
  • Требования к плагинам — плагины, которые должны быть активны для выполнения определенных шагов
  • Резервные варианты — альтернативные шаги, если основной шаг завершится неудачей

Пример плана (сокращенный)

{
"plan_id": "plan_restaurant_001",
"goal": "Создать сайт ресторана с онлайн-меню, формой бронирования и страницей контактов",
"phases": [
{
"id": "setup",
"label": "Настройка",
"steps": [
{ "ability": "install_ability", "params": { "slug": "gratis-ai-agent-woocommerce" } },
{ "ability": "register_post_type", "params": { "slug": "menu-item", "singular_label": "Позиция меню", "plural_label": "Позиции меню" } },
{ "ability": "register_taxonomy", "params": { "slug": "menu-section", "singular_label": "Раздел меню", "plural_label": "Разделы меню", "post_types": ["menu-item"] } }
]
},
{
"id": "design",
"label": "Дизайн",
"steps": [
{ "ability": "apply_theme_json_preset", "params": { "preset": "warm-editorial" } },
{ "ability": "inject_custom_css", "params": { "css": ".menu-item { border-radius: 8px; }", "label": "restaurant-ui" } }
]
},
{
"id": "navigation",
"label": "Навигация",
"steps": [
{ "ability": "create_menu", "params": { "name": "Основная навигация", "location": "primary" } },
{ "ability": "add_menu_item", "params": { "menu_id": "__ref:create_menu.menu_id", "type": "custom", "title": "Меню", "url": "/menu-items/" } },
{ "ability": "add_menu_item", "params": { "menu_id": "__ref:create_menu.menu_id", "type": "custom", "title": "Забронировать столик", "url": "/book/" } }
]
}
],
"plugin_requirements": [
{ "slug": "contact-form-7", "reason": "Необходим для форм бронирования и контактов" }
]
}

2. Обнаружение плагинов

Прежде чем начнется выполнение, оркестратор сканирует plugin_requirements плана и проверяет, какие плагины уже активны. Если плагины отсутствуют, он:

  1. Ищет в реестре с помощью recommend_plugin наилучшее совпадение
  2. Просит агента подтвердить рекомендацию
  3. Запускает установку, если рекомендация одобрена (или если автоматическая установка включена в настройках)

Сбои при обнаружении плагинов не являются критическими — оркестратор помечает затронутые шаги как skipped (пропущенные) и продолжает работу с остальной частью плана.

3. Выполнение плана

Оркестратор вызывает execute_site_plan с ID плана. Выполнение происходит фаза за фазой, шаг за шагом:

  • Ссылки на шаги (__ref: префикс) — шаги могут ссылаться на результаты предыдущих шагов. В приведенном выше примере __ref:create_menu.menu_id заменяется на menu_id, возвращенный шагом create_menu.
  • Параллельные шаги — шаги в одной и той же фазе, которые не зависят друг от друга, выполняются одновременно, если установлен флаг parallel.
  • Таймаут шага — каждый шаг имеет индивидуальный таймаут (по умолчанию: настройка Ability Timeout). Шаг, который превысил таймаут, помечается как failed (неудачный), и план продолжается.

4. Отслеживание прогресса

Вызовите get_plan_progress в любое время, чтобы проверить статус выполнения:

{
"plan_id": "plan_restaurant_001",
"status": "in_progress",
"phases_total": 4,
"phases_complete": 2,
"steps_total": 14,
"steps_complete": 8,
"steps_failed": 1,
"steps_skipped": 0,
"current_step": "add_menu_item",
"elapsed_seconds": 42
}

Пользователи WP-CLI могут отслеживать прогресс с помощью:

wp gratis-ai-agent plan status plan_restaurant_001

5. Восстановление после ошибок

Если шаг завершается неудачей, оркестратор проверяет наличие резервного варианта (fallback), определенного в плане:

  • Резервный вариант доступен — пытаются выполнить резервный шаг немедленно. Если он успешен, выполнение продолжается. Если он также завершается неудачей, шаг помечается как failed, и выполнение продолжается со следующим шагом.
  • Резервный вариант отсутствует — шаг помечается как failed. Некритические шаги пропускаются; критические шаги (отмеченные required: true) останавливают текущую фазу и инициируют попытку восстановления на уровне фазы.

Агент сообщает обо всех сбоях в итоговом резюме плана и может предложить ручные шаги по устранению неполадок для невосстановимых ошибок.


Возможности плана сайта

create_site_plan

Генерирует структурированный план сайта на основе описания цели на естественном языке.

Параметры

ПараметрТипОбязательноОписание
goalstringДаОписание желаемого сайта на естественном языке
stylestringНетПредпочтительный визуальный стиль: minimal, bold, professional, playful. По умолчанию: агент выбирает на основе цели
pluginsarrayНетСписок слагов плагинов, которые нужно включить в план. Оркестратор автоматически добавляет необходимые плагины.
dry_runbooleanНетЕсли true, возвращает JSON плана без сохранения или выполнения. По умолчанию false

Возвращает { "plan_id": "plan_restaurant_001", "phases": 4, "steps": 14, "plugin_requirements": 1 }


execute_site_plan

Начинает выполнение ранее сгенерированного плана сайта.

Параметры

ПараметрТипОбязательноОписание
plan_idstringДаID плана для выполнения
auto_install_pluginsbooleanНетЕсли true, автоматически устанавливает необходимые плагины без подтверждения. По умолчанию false
max_retriesintegerНетКоличество попыток повторить неудачный шаг перед переходом к следующему. По умолчанию 1

Возвращает { "execution_id": "exec_001", "status": "started" }


get_plan_progress

Возвращает текущий статус выполнения плана сайта.

Параметры

ПараметрТипОбязательноОписание
plan_idstringДаID плана для запроса

Возвращает объект прогресса, описанный в Отслеживание прогресса выше.


handle_plan_error

Вручную устраняет неудачный шаг и возобновляет выполнение плана со следующего шага. Используйте это, когда автоматическое восстановление было невозможно, и вы хотите вмешаться.

Параметры

ПараметрТипОбязательноОписание
plan_idstringДаID плана
step_idstringДаID неудачного шага
resolutionstringДаОдин из вариантов: skip (пропустить и продолжить), retry (повторить шаг немедленно) или mark_done (считать выполненным без повторного запуска)

Возвращает { "success": true, "plan_id": "plan_restaurant_001", "resumed_from": "add_menu_item" }


Сравнение v1 и v2

Функцияv1v2
Многофазные планыНетДа
Ссылки на результаты шагов (__ref:)НетДа
Обнаружение плагиновВручнуюАвтоматически
API отслеживания прогрессаНетДа
Восстановление после ошибокСбой и остановкаРезервный вариант + продолжение
Параллельное выполнение шаговНетДа (опционально для каждой фазы)
Команды плана WP-CLIНетДа
Интеграция бенчмаркингаНетДа (q-restaurant-website)

Команды плана WP-CLI

wp gratis-ai-agent plan create

Генерирует план сайта на основе описания цели.

wp gratis-ai-agent plan create "Build a restaurant website with an online menu, booking form, and contact page" [--dry-run] [--output=json]

wp gratis-ai-agent plan execute

Выполняет ранее сгенерированный план.

wp gratis-ai-agent plan execute plan_restaurant_001 [--auto-install-plugins]

wp gratis-ai-agent plan status

Показывает текущий прогресс для выполняющегося или завершенного плана.

wp gratis-ai-agent plan status plan_restaurant_001

wp gratis-ai-agent plan list

Выводит список всех планов сайтов (ожидающие, выполняющиеся и завершенные).

wp gratis-ai-agent plan list [--status=<status>] [--format=table|json|csv]

wp gratis-ai-agent plan reset

Сбрасывает неудачный план в статус pending, чтобы его можно было повторно выполнить с самого начала.

wp gratis-ai-agent plan reset plan_restaurant_001