> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Генерация видео

Агенты OpenClaw создают видео по текстовым запросам, референсным изображениям или
существующим видео с помощью `video_generate`. Поддерживается шестнадцать серверных частей
провайдеров; агент автоматически выбирает подходящую на основе конфигурации и
доступных ключей API.

> [!NOTE]
>
> `video_generate` отображается, только если доступен хотя бы один провайдер
> генерации видео. Если этот инструмент отсутствует среди инструментов агента, задайте ключ API провайдера или
> настройте `agents.defaults.videoGenerationModel`.

У `video_generate` есть три режима выполнения, определяемые по референсным входным данным
в вызове:

* `generate` — без референсных медиафайлов (преобразование текста в видео).
* `imageToVideo` — одно или несколько референсных изображений.
* `videoToVideo` — одно или несколько референсных видео.

Провайдеры могут поддерживать любой набор этих режимов. Инструмент проверяет
активный режим перед отправкой и сообщает поддерживаемые режимы в `action=list`.

## Быстрый старт

**1. Настройте аутентификацию**

Задайте ключ API любого поддерживаемого провайдера:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
export GEMINI_API_KEY="your-key"
```

**2. Выберите модель по умолчанию (необязательно)**

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
```

**3. Обратитесь к агенту**

> Создай 5-секундное кинематографичное видео, в котором дружелюбный лобстер занимается сёрфингом на закате.

Агент автоматически вызывает `video_generate`. Добавлять инструмент в список разрешённых
не требуется.

## Как работает асинхронная генерация

Генерация видео выполняется асинхронно:

1. OpenClaw отправляет запрос провайдеру и сразу возвращает идентификатор задачи.
2. Провайдер обрабатывает задачу в фоновом режиме (обычно от 30 секунд до нескольких минут в зависимости от провайдера и разрешения; медленные провайдеры с очередями могут работать до истечения настроенного времени ожидания).
3. Когда видео готово, OpenClaw возобновляет тот же сеанс с внутренним событием завершения.
4. Агент сообщает о результате через обычный режим видимых ответов сеанса:
   автоматический итоговый ответ или `message(action="send")`, если сеанс требует
   использования инструмента сообщений. Если сеанс инициатора неактивен либо его возобновление завершается сбоем и
   созданный медиафайл по-прежнему отсутствует в ответе о завершении, OpenClaw отправляет
   идемпотентный прямой резервный ответ с медиафайлом.

Пока задача выполняется, повторные вызовы `video_generate` в том же
сеансе возвращают текущий статус задачи вместо запуска новой
генерации. Используйте `action: "status"`, чтобы проверить статус без запуска новой
генерации, либо `openclaw tasks list` / `openclaw tasks show <lookup>` из
CLI (см. [Фоновые задачи](https://docs2.openclaw.ai/ru/automation/tasks.md)).

Вне запусков агента с поддержкой сеансов (например, при прямых вызовах инструмента)
инструмент переключается на встроенную генерацию и возвращает конечный путь к медиафайлу
в том же ходе.

Если провайдер возвращает байты, созданные видеофайлы сохраняются в управляемом OpenClaw
хранилище медиафайлов. Ограничение по умолчанию составляет 16MB (общее ограничение для
видеофайлов); `agents.defaults.mediaMaxMb` повышает его для более крупных результатов. Если
провайдер также возвращает URL размещённого результата, OpenClaw доставляет этот URL вместо
завершения задачи с ошибкой, если локальное сохранение отклоняет слишком большой файл.

### Жизненный цикл задачи

| Состояние | Значение |
| - | - |
| `queued` | Задача создана и ожидает принятия провайдером. |
| `running` | Провайдер выполняет обработку (обычно от 30 секунд до нескольких минут в зависимости от провайдера и разрешения). |
| `succeeded` | Видео готово; агент возобновляет работу и публикует его в беседе. |
| `failed` | Ошибка провайдера или истечение времени ожидания; агент возобновляет работу с подробностями ошибки. |

Проверьте статус из CLI:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw tasks list
openclaw tasks show <lookup>
openclaw tasks cancel <lookup>
```

## Поддерживаемые провайдеры

| Провайдер | Модель по умолчанию | Текст | Референсное изображение | Референсное видео | Аутентификация |
| - | - | :-: | - | - | - |
| Alibaba | `wan2.6-t2v` | ✓ | Да (удалённый URL) | Да (удалённый URL) | `MODELSTUDIO_API_KEY` |
| BytePlus (1.0) | `seedance-1-0-pro-250528` | ✓ | До 2 изображений (только модели I2V; первый и последний кадры) | - | `BYTEPLUS_API_KEY` |
| BytePlus Seedance 1.5 | `seedance-1-5-pro-251215` | ✓ | До 2 изображений (первый и последний кадры через роль) | - | `BYTEPLUS_API_KEY` |
| BytePlus Seedance 2.0 | `dreamina-seedance-2-0-260128` | ✓ | До 9 референсных изображений | До 3 видео | `BYTEPLUS_API_KEY` |
| ComfyUI | `workflow` | ✓ | 1 изображение | - | `COMFY_API_KEY` или `COMFY_CLOUD_API_KEY` |
| DeepInfra | `Pixverse/Pixverse-T2V` | ✓ | - | - | `DEEPINFRA_API_KEY` |
| fal | `fal-ai/minimax/video-01-live` | ✓ | 1 изображение; до 9 при преобразовании референса в видео с помощью Seedance | До 3 видео при преобразовании референса в видео с помощью Seedance | `FAL_KEY` |
| Google | `veo-3.1-fast-generate-preview` | ✓ | 1 изображение | 1 видео | `GEMINI_API_KEY` |
| MiniMax | `MiniMax-Hailuo-2.3` | ✓ | 1 изображение | - | `MINIMAX_API_KEY` или OAuth MiniMax |
| OpenAI | `sora-2` | ✓ | 1 изображение | 1 видео | `OPENAI_API_KEY` |
| OpenRouter | `google/veo-3.1-fast` | ✓ | До 4 изображений (первый/последний кадр или референсы) | - | `OPENROUTER_API_KEY` |
| Qwen | `wan2.6-t2v` | ✓ | Да (удалённый URL) | Да (удалённый URL) | `QWEN_API_KEY` |
| Runway | `gen4.5` | ✓ | 1 изображение | 1 видео | `RUNWAYML_API_SECRET` |
| Together | `Wan-AI/Wan2.2-T2V-A14B` | ✓ | Только `Wan-AI/Wan2.2-I2V-A14B` | - | `TOGETHER_API_KEY` |
| Vydra | `veo3` | ✓ | 1 изображение (`kling`) | - | `VYDRA_API_KEY` |
| xAI | `grok-imagine-video` | ✓ | Classic: 1 первый кадр или 7 референсов; 1.5: 1 кадр | Classic: 1 видео | `XAI_API_KEY` |

Некоторые провайдеры принимают дополнительные или альтернативные переменные окружения
для ключей API. Подробности см. на отдельных [страницах провайдеров](#related).

Выполните `video_generate action=list`, чтобы проверить доступные провайдеры, модели и
режимы выполнения во время работы.

### Матрица возможностей

Явный контракт режимов, используемый `video_generate`, контрактными тестами и
общей проверкой в реальной среде:

| Провайдер | `generate` | `imageToVideo` | `videoToVideo` | Общие текущие проверки в реальной среде |
| - | :-: | :-: | :-: | - |
| Alibaba | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; `videoToVideo` пропущен, поскольку этому провайдеру требуются удалённые URL видео `http(s)` |
| BytePlus | ✓ | ✓ | - | `generate`, `imageToVideo` |
| ComfyUI | ✓ | ✓ | - | Не входит в общую проверку; проверка конкретных рабочих процессов выполняется тестами Comfy |
| DeepInfra | ✓ | - | - | `generate`; нативные схемы видео DeepInfra в контракте плагина предназначены для преобразования текста в видео |
| fal | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; `videoToVideo` — только при преобразовании референса в видео с помощью Seedance |
| Google | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; общий `videoToVideo` пропущен, поскольку текущая проверка Gemini/Veo с входными данными в буфере не принимает такие данные |
| MiniMax | ✓ | ✓ | - | `generate`, `imageToVideo` |
| OpenAI | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; общий `videoToVideo` пропущен, поскольку этому пути организации/входных данных сейчас требуется доступ провайдера к редактированию видео |
| OpenRouter | ✓ | ✓ | - | `generate`, `imageToVideo` |
| Qwen | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; `videoToVideo` пропущен, поскольку этому провайдеру требуются удалённые URL видео `http(s)` |
| Runway | ✓ | ✓ | ✓ | `generate`, `imageToVideo`; `videoToVideo` выполняется, только если выбрана модель `runway/gen4_aleph` |
| Together | ✓ | ✓ | - | `generate`, `imageToVideo` |
| Vydra | ✓ | ✓ | - | `generate`; общий `imageToVideo` пропущен, поскольку встроенный `veo3` поддерживает только текст, а встроенному `kling` требуется удалённый URL изображения |
| xAI | ✓ | ✓ | ✓ | Classic поддерживает все режимы; Video 1.5 поддерживает только преобразование изображения в видео; удалённый входной файл MP4 исключает `videoToVideo` из общей проверки |

## Параметры инструмента

### Обязательные

**prompt** `string` *required*

Текстовое описание видео, которое нужно создать. Обязательно для `action: "generate"`.

### Входные данные контента

**image** `string`

Одно референсное изображение (путь или URL).

**images** `string[]`

Несколько референсных изображений (до 9).

**imageRoles** `string[]`

Необязательные подсказки ролей для каждой позиции, соответствующие объединённому списку изображений.
Канонические значения: `first_frame`, `last_frame`, `reference_image`.

**video** `string`

Одно референсное видео (путь или URL).

**videos** `string[]`

Несколько референсных видео (до 4).

**videoRoles** `string[]`

Необязательные подсказки ролей для каждой позиции, соответствующие объединённому списку видео.
Каноническое значение: `reference_video`.

**audioRef** `string`

Одна референсная аудиозапись (путь или URL). Используется для фоновой музыки или
в качестве голосового референса, если провайдер поддерживает входные аудиоданные.

**audioRefs** `string[]`

Несколько референсных аудиозаписей (до 3).

**audioRoles** `string[]`

Необязательные подсказки ролей для каждой позиции, соответствующие объединённому списку аудиозаписей.
Каноническое значение: `reference_audio`.

> [!NOTE]
>
> Подсказки ролей передаются провайдеру без изменений. Канонические значения берутся из
> объединения `VideoGenerationAssetRole`, но провайдеры могут принимать дополнительные
> строки ролей. Массивы `*Roles` не должны содержать больше элементов, чем
> соответствующий список референсов; ошибки смещения на единицу завершаются с понятным сообщением об ошибке.
> Используйте пустую строку, чтобы оставить позицию незаданной. Для xAI задайте для каждого изображения роль
> `reference_image`, чтобы использовать режим генерации `reference_images`; не указывайте
> роль или используйте `first_frame` для преобразования одного изображения в видео.

### Управление стилем

**aspectRatio** `string`

Подсказка соотношения сторон, например `1:1`, `16:9`, `9:16`, `adaptive` или значение, специфичное для провайдера. OpenClaw нормализует или игнорирует неподдерживаемые значения в зависимости от провайдера.

**resolution** `string`

Подсказка разрешения, например `360P`, `480P`, `540P`, `720P`, `768P`, `1080P`, `4K` или значение, специфичное для провайдера. OpenClaw нормализует или игнорирует неподдерживаемые значения в зависимости от провайдера.

**durationSeconds** `number`

Целевая длительность в секундах (округляется до ближайшего значения, поддерживаемого провайдером).

**size** `string`

Подсказка размера, если провайдер её поддерживает.

**audio** `boolean`

Включает генерируемый звук в выходных данных, если это поддерживается. Не следует путать с `audioRef*` (входные данные).

**watermark** `boolean`

Включает или отключает водяной знак провайдера, если это поддерживается.

`adaptive` — специальное значение, специфичное для провайдера: оно передаётся без изменений
провайдерам, которые объявляют `adaptive` в своих возможностях (например, BytePlus
Seedance использует его для автоматического определения соотношения сторон по размерам
входного изображения). Провайдеры, которые его не объявляют, отображают это значение через
`details.ignoredOverrides` в результате инструмента, чтобы отбрасывание было заметно.

### Расширенные параметры

**action** `"generate" | "status" | "list"` (default: generate)

`"status"` возвращает текущую задачу сеанса; `"list"` проверяет провайдеров.

**model** `string`

Переопределение провайдера/модели (например, `runway/gen4.5`).

**filename** `string`

Подсказка имени выходного файла.

**timeoutMs** `number`

Необязательный тайм-аут операции провайдера в миллисекундах. Если он не указан, OpenClaw использует `agents.defaults.videoGenerationModel.timeoutMs`, если этот параметр настроен; в противном случае используется заданное автором плагина значение провайдера по умолчанию, если оно существует.

**providerOptions** `object`

Специфичные для провайдера параметры в виде объекта JSON (например, `{"seed": 42, "draft": true}`).
Провайдеры, объявляющие типизированную схему, проверяют ключи и типы; неизвестные
ключи или несоответствия приводят к пропуску кандидата при резервном переключении. Провайдеры без
объявленной схемы получают параметры без изменений. Выполните `video_generate action=list`,
чтобы узнать, что принимает каждый провайдер.

> [!NOTE]
>
> Не все провайдеры поддерживают все параметры. OpenClaw нормализует длительность до
> ближайшего значения, поддерживаемого провайдером, и преобразует подсказки геометрии,
> например размер в соотношение сторон, если резервный провайдер предоставляет другой
> набор элементов управления. Полностью неподдерживаемые переопределения по возможности
> игнорируются и сообщаются как предупреждения в результате инструмента. Жёсткие ограничения
> возможностей (например, слишком большое количество референсных входных данных) приводят к ошибке до отправки.
> В результатах инструмента указываются применённые настройки; `details.normalization` содержит все
> преобразования запрошенных значений в применённые.

Референсные входные данные определяют режим выполнения:

* Нет референсных медиафайлов -> `generate`
* Есть референсное изображение -> `imageToVideo`
* Есть референсное видео -> `videoToVideo`
* Референсные входные аудиоданные **не** изменяют определённый режим; они применяются
  поверх режима, выбранного референсными изображениями/видео, и работают только
  с провайдерами, которые объявляют `maxInputAudios`.

Смешивание референсных изображений и видео не является стабильной общей возможностью.
Предпочтительно использовать один тип референсов на запрос.

#### Резервное переключение и типизированные параметры

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

* Активный кандидат, не объявляющий `maxInputAudios` (или `0`), пропускается, если
  запрос содержит аудиореференсы; затем проверяется следующий кандидат. Та же
  проверка применяется к количеству референсных изображений и видео относительно
  `maxInputImages`/`maxInputVideos`.
* Если `maxDurationSeconds` активного кандидата меньше запрошенного `durationSeconds`
  и список `supportedDurationSeconds` не объявлен, кандидат пропускается.
* Если запрос содержит `providerOptions`, а активный кандидат явно
  объявляет типизированную схему `providerOptions`, кандидат пропускается, если переданные ключи
  отсутствуют в схеме или типы значений не совпадают. Провайдеры без
  объявленной схемы получают параметры без изменений (обратно совместимая
  сквозная передача). Провайдер может полностью отказаться от параметров провайдера,
  объявив пустую схему (`capabilities.providerOptions: {}`), что
  приводит к такому же пропуску, как при несоответствии типов.

Первая причина пропуска в запросе записывается в журнал на уровне `warn`, чтобы операторы видели,
когда основной провайдер был пропущен; последующие пропуски записываются на уровне `debug`, чтобы
не перегружать журнал при длинных цепочках резервного переключения. Если пропущены все кандидаты,
сводная ошибка включает причину пропуска каждого из них.

## Действия

| Действие | Что оно делает |
| - | - |
| `generate` | По умолчанию. Создаёт видео по заданному описанию и необязательным референсным входным данным. |
| `status` | Проверяет состояние выполняемой задачи создания видео для текущего сеанса, не запуская новую генерацию. |
| `list` | Показывает доступных провайдеров, модели и их возможности. |

## Выбор модели

OpenClaw определяет модель в следующем порядке:

1. **Параметр инструмента `model`** — если агент указывает его в вызове.
2. **`videoGenerationModel.primary`** из конфигурации.
3. **`videoGenerationModel.fallbacks`** по порядку.
4. **Автоматическое определение** — провайдеры с действительными данными аутентификации, начиная с
   текущего провайдера по умолчанию, а затем остальные провайдеры в алфавитном
   порядке.

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

Задайте `agents.defaults.mediaGenerationAutoProviderFallback: false`, чтобы использовать
только явно указанные записи `model`, `primary` и `fallbacks`.

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "google/veo-3.1-fast-generate-preview",
        fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
        timeoutMs: 180000, // необязательное переопределение тайм-аута запроса провайдера для отдельного инструмента
      },
    },
  },
}
```

## Примечания о провайдерах

> [accordion] Alibaba
>
> Использует асинхронную конечную точку DashScope / Model Studio. Референсные изображения и
> видео должны быть удалёнными URL-адресами `http(s)`.

> [accordion] BytePlus (1.0)
>
> Идентификатор провайдера: `byteplus`.
>
> Модели: `seedance-1-0-pro-250528` (по умолчанию),
> `seedance-1-0-pro-t2v-250528`, `seedance-1-0-pro-fast-251015`,
> `seedance-1-0-lite-t2v-250428`, `seedance-1-0-lite-i2v-250428`.
>
> Модели T2V (`*-t2v-*`) не принимают входные изображения; модели I2V и
> универсальные модели `*-pro-*` поддерживают одно референсное изображение (первый
> кадр). Передайте изображение позиционно или задайте `role: "first_frame"`.
> При передаче изображения идентификаторы моделей T2V автоматически заменяются
> соответствующим вариантом I2V.
>
> Поддерживаемые ключи `providerOptions`: `seed` (число), `draft` (логическое значение —
> принудительно устанавливает 480p), `camera_fixed` (логическое значение).

> [accordion] BytePlus Seedance 1.5
>
> Требуется плагин [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark)
> (внешний, не входит в комплект). Идентификатор провайдера: `byteplus-seedance15`. Модель:
> `seedance-1-5-pro-251215`.
>
> Использует унифицированный API `content[]`. Поддерживает не более 2 входных изображений
> (`first_frame` + `last_frame`). Все входные данные должны быть удалёнными URL-адресами `https://`.
> Задайте `role: "first_frame"` / `"last_frame"` для каждого изображения или
> передайте изображения позиционно.
>
> `aspectRatio: "adaptive"` автоматически определяет соотношение сторон по входному изображению.
> `audio: true` сопоставляется с `generate_audio`. `providerOptions.seed`
> (число) передаётся без изменений.

> [accordion] BytePlus Seedance 2.0
>
> Требуется плагин [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark)
> (внешний, не входит в комплект). Идентификатор провайдера: `byteplus-seedance2`. Модели:
> `dreamina-seedance-2-0-260128`,
> `dreamina-seedance-2-0-fast-260128`.
>
> Использует унифицированный API `content[]`. Поддерживает до 9 референсных изображений,
> 3 референсных видео и 3 референсных аудиозаписей. Все входные данные должны быть удалёнными
> URL-адресами `https://`. Задайте `role` для каждого ресурса — поддерживаемые значения:
> `"first_frame"`, `"last_frame"`, `"reference_image"`,
> `"reference_video"`, `"reference_audio"`.
>
> `aspectRatio: "adaptive"` автоматически определяет соотношение сторон по входному изображению.
> `audio: true` сопоставляется с `generate_audio`. `providerOptions.seed`
> (число) передаётся без изменений.

> [accordion] ComfyUI
>
> Локальное или облачное выполнение на основе рабочих процессов. Поддерживает
> преобразование текста в видео и изображения в видео через настроенный граф.

> [accordion] fal
>
> Использует поток с очередью для длительных задач. По умолчанию OpenClaw ожидает до 20
> минут, прежде чем считать выполняющуюся задачу в очереди fal
> просроченной. Большинство видеомоделей fal
> принимают одну ссылку на изображение. Модели Seedance 2.0 для преобразования
> референсов в видео принимают до 9 изображений, 3 видео и 3 аудиореференсов,
> но не более 12 файлов референсов суммарно.

> [accordion] Google (Gemini / Veo)
>
> Поддерживает один референс в виде изображения или видео. Запросы на создание аудио
> игнорируются с предупреждением при использовании пути Gemini API, поскольку этот API отклоняет
> параметр `generateAudio` для текущей генерации видео Veo.

> [accordion] MiniMax
>
> Только один референс в виде изображения. MiniMax принимает разрешения `768P` и `1080P`;
> запросы, например `720P`, перед отправкой нормализуются до ближайшего
> поддерживаемого значения.

> [accordion] OpenAI
>
> Передаётся только переопределение `size`. Другие переопределения стиля
> (`aspectRatio`, `resolution`, `audio`, `watermark`) игнорируются
> с предупреждением.

> [accordion] OpenRouter
>
> Использует асинхронный API `/videos` от OpenRouter. OpenClaw отправляет
> задачу, опрашивает `polling_url` и загружает либо `unsigned_urls`, либо содержимое
> задачи через документированную конечную точку. Встроенное значение по умолчанию `google/veo-3.1-fast`
> заявляет длительности 4/6/8 секунд, разрешения `720P`/`1080P` и
> соотношения сторон `16:9`/`9:16`.

> [accordion] Qwen
>
> Использует тот же бэкенд DashScope, что и Alibaba. Входные референсы должны быть удалёнными
> URL-адресами `http(s)`; локальные файлы отклоняются заранее.

> [accordion] Runway
>
> Поддерживает локальные файлы через URI данных. Для преобразования видео в видео требуется
> `runway/gen4_aleph`. При запусках только с текстом доступны соотношения сторон `16:9` и `9:16`.

> [accordion] Together
>
> Только один референс в виде изображения.

> [accordion] Vydra
>
> Использует `https://www.vydra.ai/api/v1` напрямую, чтобы избежать перенаправлений,
> при которых теряются данные аутентификации. `veo3` встроена только для преобразования текста в видео; для `kling`
> требуется удалённый URL-адрес изображения.

> [accordion] xAI
>
> Модель `grok-imagine-video` по умолчанию поддерживает преобразование текста в видео,
> одного изображения первого кадра в видео, до 7 входных данных `reference_image` через
> `reference_images` xAI, а также удалённое редактирование и расширение видео. При генерации по умолчанию
> используется `480P`; при преобразовании одного изображения в видео наследуется соотношение сторон исходника,
> если `aspectRatio` не указан. При редактировании и расширении видео наследуется геометрия входного файла,
> а переопределения соотношения сторон и разрешения не принимаются. Расширение принимает 2-10
> секунд.
>
> `grok-imagine-video-1.5` предназначена только для преобразования изображения в видео: укажите ровно одно изображение.
> Она поддерживает 1-15 секунд и `480P`, `720P` или `1080P`, по умолчанию
> используется `480P`; не указывайте `aspectRatio`, чтобы унаследовать соотношение сторон исходного изображения. Предварительный
> и датированные идентификаторы 1.5 проходят ту же проверку и передаются
> без изменений.

## Режимы возможностей провайдеров

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

```typescript theme={"theme":{"light":"min-light","dark":"min-dark"}}
capabilities: {
  generate: {
    maxVideos: 1,
    maxDurationSeconds: 10,
    supportsResolution: true,
  },
  imageToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputImages: 1,
    maxInputImagesByModel: { "provider/reference-to-video": 9 },
    maxDurationSeconds: 5,
  },
  videoToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputVideos: 1,
    maxDurationSeconds: 5,
  },
}
```

Плоских совокупных полей, таких как `maxInputImages` и `maxInputVideos`,
**недостаточно** для объявления поддержки режимов преобразования. Провайдеры должны
явно объявлять `generate`, `imageToVideo` и `videoToVideo`, чтобы тесты
в реальной среде, контрактные тесты и общий инструмент `video_generate` могли
детерминированно проверять поддержку режимов.

Если одна модель провайдера поддерживает больше входных референсов, чем
остальные, используйте `maxInputImagesByModel`, `maxInputVideosByModel` или
`maxInputAudiosByModel` вместо увеличения ограничения для всего режима.

## Тесты в реальной среде

Опциональное тестирование в реальной среде для общих встроенных провайдеров:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
```

Обёртка репозитория:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
pnpm test:live:media video
```

По умолчанию этот файл тестов в реальной среде использует уже экспортированные переменные окружения провайдеров
с приоритетом перед сохранёнными профилями аутентификации и выполняет безопасную для выпуска дымовую проверку:

* `generate` для каждого провайдера в проверке, кроме FAL.
* Односекундный запрос с лобстером.
* Ограничение числа операций для каждого провайдера из
  `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` (по умолчанию `180000`).

FAL включается отдельно, поскольку задержка очереди на стороне провайдера может занимать
основную часть времени выпуска:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
pnpm test:live:media video --video-providers fal
```

Установите `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1`, чтобы также запускать объявленные
режимы преобразования, которые общая проверка может безопасно тестировать с локальными медиафайлами:

* `imageToVideo`, когда `capabilities.imageToVideo.enabled`.
* `videoToVideo`, когда `capabilities.videoToVideo.enabled` и
  провайдер или модель принимает в общей проверке локальный видеофайл на основе буфера.

На данный момент общий тестовый маршрут `videoToVideo` в реальной среде охватывает `runway`, только если
выбрано `runway/gen4_aleph`.

## Конфигурация

Укажите модель генерации видео по умолчанию в конфигурации OpenClaw:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "qwen/wan2.6-t2v",
        fallbacks: ["qwen/wan2.6-r2v-flash"],
      },
    },
  },
}
```

Или через CLI:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"
```

## Связанные материалы

* [Alibaba Model Studio](https://docs2.openclaw.ai/ru/providers/alibaba.md)
* [Фоновые задачи](https://docs2.openclaw.ai/ru/automation/tasks.md) — отслеживание задач асинхронной генерации видео
* [BytePlus](https://docs2.openclaw.ai/ru/concepts/model-providers.md#byteplus-international)
* [ComfyUI](https://docs2.openclaw.ai/ru/providers/comfy.md)
* [Справочник по конфигурации](https://docs2.openclaw.ai/ru/gateway/config-agents.md#agent-defaults)
* [fal](https://docs2.openclaw.ai/ru/providers/fal.md)
* [Google (Gemini)](https://docs2.openclaw.ai/ru/providers/google.md)
* [MiniMax](https://docs2.openclaw.ai/ru/providers/minimax.md)
* [Модели](https://docs2.openclaw.ai/ru/concepts/models.md)
* [OpenAI](https://docs2.openclaw.ai/ru/providers/openai.md)
* [Qwen](https://docs2.openclaw.ai/ru/providers/qwen.md)
* [Runway](https://docs2.openclaw.ai/ru/providers/runway.md)
* [Together AI](https://docs2.openclaw.ai/ru/providers/together.md)
* [Обзор инструментов](https://docs2.openclaw.ai/ru/tools.md)
* [Vydra](https://docs2.openclaw.ai/ru/providers/vydra.md)
* [xAI](https://docs2.openclaw.ai/ru/providers/xai.md)
