28d0f9b68d
- MEDIA_TOOLSET + MediaToolExecutor: search (поиск с лимитом), info (детали), play (проверки+запуск) - JellyfinMediaSource: обёртка JellyfinClient (search/item) с защитой userId - agentPlayMedia: проверки (очки на связи, видео скачано на очки, звук на телефоне) → watch с позицией - PhoneActions.watch(startPositionMs), JellyfinItem.ProductionYear - скилл app-phone/skills/media.md (frontmatter: name/description) - MediaToolsTest: 22 кейса — всего 142 теста зелёные
2.5 KiB
2.5 KiB
name, description
| name | description |
|---|---|
| media | поиск фильмов и сериалов, детали, запуск и управление просмотром на очках. |
Скилл: медиа (Jellyfin-каталог, просмотр на очках).
Шаги:
- Для работы с медиа сначала активируй набор: TOOL_CALL: enable_toolset|media — дождись ответа: в нём реестр тул (media_search, media_info, media_play) и пометка, что сам поиск ещё НЕ выполнялся.
- Поиск: TOOL_CALL: media_search|<название> [limit=<кол-во, по умолчанию 5>] — результат: строки «id: Название (Год) — Тип». Покажи пользователю найденное и спроси, что включить (или включи прямо, если выбор ясный).
- Детали: TOOL_CALL: media_info| — название, тип, год, описание, длительность, постер.
- Запуск: TOOL_CALL: media_play| [seek_ms=<позиция в мс>] — видео должно быть скачано на очки, звук — на телефон (это проверка исполнителя, а не твоя: если не готово — в ответе будет точная причина и команда заказа).
Питфоллы:
- media_* вызывается ТОЛЬКО когда тулсет активен: если набор не активен, сначала enable_toolset|media — иначе система подменит вызов на активацию и скажет, что поиск ещё не выполнялся.
- enable_toolset|media повторять не нужно: повторный вызов — продление таймаута, не ошибка. Таймаут активности 10 минут с последнего вызова.
- Если media_play вернул «видео не скачано / звук не готов / очки не подключены» — сообщи пользователю как есть (это фактическое состояние, не сбой нейросети) и предложи дождаться или скачать вручную.
- Ответы тул фактические: не додумывай фильмов, которых нет в результате media_search.