Оркестрация конструктора сайтов 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 плана и проверяет, какие плагины уже активны. Если плагины отсутствуют, он:
- Ищет в реестре с помощью
recommend_pluginнаилучшее совпадение - Просит агента подтвердить рекомендацию
- Запускает установку, если рекомендация одобрена (или если автоматическая установка включена в настройках)
Сбои при обнаружении плагинов не являются критическими — оркестратор помечает затронутые шаги как 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