| name | restaurant_booking |
| description | Оркестратор автоматического бронирования ресторанов: нормализует список ресторанов, формирует задачу для агента-исполнителя и валидирует результат. |
| version | 1.0.0 |
| type | extension |
| entry | plugin.py |
| runtime | python3 |
| permissions | ["tool"] |
| when_to_use | Используй, когда нужно забронировать ресторан: нормализовать и отранжировать список ресторанов, сформировать задачу на бронирование (дата, время, гости, имя, телефон) и проверить итоговый статус. Корректно обрабатывает: нет слота, только телефон, капча/блокер, неполные данные. |
Restaurant Booking
Оркестратор для автоматизации бронирования ресторанов. Скилл готовит задачу для агента-исполнителя и проверяет результат — сам веб-навигацию не выполняет, это делает агент, которому передаётся scenario.task.
Приоритет — быстро, дёшево, однозначно. По умолчанию все инструменты возвращают компактный JSON и короткий текст задачи. Полный вывод — только при detail="full".
Принцип работы
normalize_restaurants — принять список ресторанов, нормализовать, вернуть ранжированный шортлист.
make_scenario — сформировать задачу на бронирование; scenario.task — это готовая инструкция для агента-исполнителя.
- Агент-исполнитель открывает сайт, заполняет форму, возвращает отчёт.
validate_result — проверить отчёт агента, вернуть вердикт.
Агент-исполнитель должен действовать по задаче точно:
- открыть сайт/карточку ресторана;
- убедиться, что ресторан совпадает;
- заполнить дату, время, гостей, имя, телефон, комментарий;
- сверить поля перед отправкой;
- классифицировать финальный экран;
- вернуть компактные доказательства;
- не объявлять успех без подтверждения.
Остановка с корректным статусом ожидается при: нет данных, только телефон, блокер.
Инструменты
normalize_restaurants
Нормализует произвольные строки ресторанов в компактную схему, определяет канал бронирования и блокеры.
Вывод по умолчанию:
{"status":"ok","count":1,"restaurants":[{"name":"...","url":"...","channel":"online_form"}]}
detail="full" — только для отладки.
make_scenario
Формирует воспроизводимый сценарий бронирования.
Вывод по умолчанию содержит только:
id
type
restaurant
booking
input
task
expect
pool
rules
report_keys
scenario.task — прямая инструкция для агента-исполнителя.
validate_result
Проверяет отчёт агента-исполнителя, возвращает компактный вердикт:
{"status":"ok","verdict":"PASS","score":95,"final_status":"created_waiting_confirmation","critical":[],"warnings":[],"recommendation":"ok"}
detail="full" — только при нужной диагностике по чекам.
Статусы бронирования
confirmed — бронь явно подтверждена
created_waiting_confirmation — заявка создана, ожидает звонка/смс/ручного подтверждения
not_available — запрошенный слот недоступен
alternative_proposed — предложен ближайший слот или альтернатива
needs_clarification — не хватает обязательных данных, форма не отправлена
phone_only — онлайн-бронирование недоступно, только по телефону
technical_blocker — капча / логин / антибот / сломанная форма
unknown_manual_check — финальное состояние неясно, успех не заявлен
Токены и скорость
- Режим по умолчанию —
compact.
- Вывод — минифицированный JSON.
- Входящий список полностью обрабатывается и ранжируется, агенту возвращается только шортлист.
- Шортлист по умолчанию — 8 строк, максимум — 20. Это ограничение вывода, не качества отбора.
- Ограничение ввода: 2000 строк, 1 МБ — защита от случайных огромных запросов.
- Таймауты:
normalize_restaurants — 5 с, make_scenario и validate_result — 3 с.
- Нет сети, нет записи на диск, нет секретов. Веб-навигацию выполняет агент-исполнитель, а не этот скилл.
Модель безопасности
- Нет
net: скилл не открывает сайты ресторанов — это задача агента-исполнителя.
- Нет
read_settings: ключи и секреты не читаются.
- Нет
fs: состояние в рантайме не пишется.
- Ограниченные размеры ввода и вывода.
- Не изменяет
~/Ouroboros/repo.
Установка
Штатный путь — через каталог OuroborosHub в десктопе:
Skills -> Marketplace -> OuroborosHub -> restaurant_booking -> Install
После установки скилл лежит в:
~/Ouroboros/data/skills/ouroboroshub/restaurant_booking/
Дальше — обычный жизненный цикл: дождаться review_skill PASS и нажать Enable на карточке. Грантов и ключей скилл не требует (permissions: [tool], env_from_settings: []).
Альтернативный путь для разработки — положить руками в ~/Ouroboros/data/skills/external/restaurant_booking/ и вызвать review_skill / Enable через UI.