Розуміння медіа - вхідні дані (2026-01-17)
OpenClaw може підсумовувати вхідні медіа (зображення/аудіо/відео) до запуску конвеєра відповіді. Він автоматично визначає, коли доступні локальні інструменти або ключі провайдерів, і може бути вимкнений або налаштований. Якщо розуміння вимкнено, моделі, як і раніше, отримують оригінальні файли/URL. Поведінку медіа, специфічну для постачальника, реєструють плагіни постачальників, тоді як core OpenClaw відповідає за спільну конфігураціюtools.media, порядок fallback і
інтеграцію з конвеєром відповідей.
Цілі
- Необов’язково: попередньо стисло обробляти вхідні медіа в короткий текст для швидшої маршрутизації та кращого розбору команд.
- Завжди зберігати доставку оригінальних медіа до моделі.
- Підтримувати API провайдерів і CLI fallback.
- Дозволяти кілька моделей із впорядкованим fallback (помилка/розмір/тайм-аут).
Поведінка на високому рівні
- Зібрати вхідні вкладення (
MediaPaths,MediaUrls,MediaTypes). - Для кожної ввімкненої можливості (image/audio/video) вибрати вкладення згідно з політикою (типово: перше).
- Вибрати перший придатний запис моделі (розмір + можливість + auth).
- Якщо модель завершується помилкою або медіа надто велике, перейти до наступного запису.
- У разі успіху:
Bodyстає блоком[Image],[Audio]або[Video].- Для аудіо задається
{{Transcript}}; під час розбору команди використовується текст підпису, якщо він є, інакше — транскрипт. - Підписи зберігаються як
User text:усередині блока.
Огляд конфігурації
tools.media підтримує спільні моделі плюс перевизначення для кожної можливості:
tools.media.models: спільний список моделей (використовуйтеcapabilitiesдля обмеження).tools.media.image/tools.media.audio/tools.media.video:- типові значення (
prompt,maxChars,maxBytes,timeoutSeconds,language) - перевизначення провайдера (
baseUrl,headers,providerOptions) - параметри аудіо Deepgram через
tools.media.audio.providerOptions.deepgram - керування echo для транскриптів аудіо (
echoTranscript, типовоfalse;echoFormat) - необов’язковий список
modelsдля конкретної можливості (має пріоритет перед спільними моделями) - політика
attachments(mode,maxAttachments,prefer) scope(необов’язкове gating за channel/chatType/session key)
- типові значення (
tools.media.concurrency: максимальна кількість паралельних запусків можливостей (типово 2).
Записи моделей
Кожен записmodels[] може бути provider або CLI:
{{MediaDir}}(каталог, що містить медіафайл){{OutputDir}}(тимчасовий каталог, створений для цього запуску){{OutputBase}}(базовий шлях до тимчасового файла без розширення)
Типові значення та обмеження
Рекомендовані типові значення:maxChars: 500 для image/video (коротко, зручно для команд)maxChars: не задано для аудіо (повний транскрипт, якщо ви не встановите обмеження)maxBytes:- image: 10MB
- audio: 20MB
- video: 50MB
- Якщо медіа перевищує
maxBytes, ця модель пропускається, і пробується наступна модель. - Аудіофайли, менші за 1024 bytes, вважаються порожніми/пошкодженими і пропускаються до транскрибування через provider/CLI.
- Якщо модель повертає більше ніж
maxChars, результат обрізається. - Для
promptтиповим є просте “Describe the .” плюс вказівка щодоmaxChars(лише для image/video). - Якщо активна основна image model уже нативно підтримує vision, OpenClaw
пропускає блок підсумку
[Image]і натомість передає оригінальне зображення в модель. - Якщо
<capability>.enabled: true, але моделі не налаштовано, OpenClaw пробує активну модель відповіді, якщо її провайдер підтримує цю можливість.
Автовизначення розуміння медіа (типово)
Якщоtools.media.<capability>.enabled не встановлено в false і ви не
налаштували моделі, OpenClaw виконує автовизначення в такому порядку і зупиняється на першому
працюючому варіанті:
- Активна модель відповіді, якщо її провайдер підтримує цю можливість.
agents.defaults.imageModelprimary/fallback refs (лише для image).- Локальні CLI (лише для audio; якщо встановлено)
sherpa-onnx-offline(потребуєSHERPA_ONNX_MODEL_DIRз encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; використовуєWHISPER_CPP_MODELабо вбудовану tiny model)whisper(CLI Python; автоматично завантажує моделі)
- Gemini CLI (
gemini) з використаннямread_many_files - Автентифікація провайдера
- Налаштовані записи
models.providers.*, що підтримують цю можливість, пробуються до вбудованого порядку fallback. - Провайдери конфігурації лише для image з image-capable model автоматично реєструються для розуміння медіа, навіть якщо вони не є вбудованим vendor plugin.
- Вбудований порядок fallback:
- Audio: OpenAI → Groq → Deepgram → Google → Mistral
- Image: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Video: Google → Qwen → Moonshot
- Налаштовані записи
PATH (ми розгортаємо ~), або задайте явну CLI model з повним шляхом до команди.
Підтримка proxy environment (моделі провайдерів)
Коли ввімкнено розуміння медіа через провайдера для audio та video, OpenClaw враховує стандартні змінні середовища вихідного проксі для HTTP-викликів провайдера:HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Можливості (необов’язково)
Якщо ви задаєтеcapabilities, запис виконується лише для цих типів медіа. Для спільних
списків OpenClaw може вивести типові значення:
openai,anthropic,minimax: imageminimax-portal: imagemoonshot: image + videoopenrouter: imagegoogle(Gemini API): image + audio + videoqwen: image + videomistral: audiozai: imagegroq: audiodeepgram: audio- Будь-який каталог
models.providers.<id>.models[]з image-capable model: image
capabilities явно, щоб уникнути несподіваних збігів.
Якщо capabilities пропущено, запис придатний для списку, в якому він розміщений.
Матриця підтримки провайдерів (інтеграції OpenClaw)
| Можливість | Інтеграція провайдера | Примітки |
|---|---|---|
| Image | OpenAI, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, config providers | Vendor plugins реєструють підтримку image; MiniMax і MiniMax OAuth обидва використовують MiniMax-VL-01; image-capable config providers реєструються автоматично. |
| Audio | OpenAI, Groq, Deepgram, Google, Mistral | Транскрибування через провайдера (Whisper/Deepgram/Gemini/Voxtral). |
| Video | Google, Qwen, Moonshot | Розуміння video через vendor plugins; розуміння video у Qwen використовує стандартні ендпоїнти DashScope. |
- Розуміння image у
minimaxіminimax-portalпоходить із plugin-owned медіапровайдераMiniMax-VL-01. - Вбудований текстовий каталог MiniMax як і раніше починається лише з тексту; явні
записи
models.providers.minimaxматеріалізують image-capable M2.7 chat refs.
Рекомендації щодо вибору моделі
- Надавайте перевагу найсильнішій доступній моделі останнього покоління для кожної медіаможливості, коли важливі якість і безпека.
- Для агентів з увімкненими інструментами, які працюють із недовіреним вводом, уникайте старіших/слабших медіамоделей.
- Тримайте принаймні один fallback для кожної можливості для доступності (якісна модель + швидша/дешевша модель).
- CLI fallback (
whisper-cli,whisper,gemini) корисні, коли API провайдерів недоступні. - Примітка щодо
parakeet-mlx: із--output-dirOpenClaw читає<output-dir>/<media-basename>.txt, коли формат виводу —txt(або не задано); формати, відмінні відtxt, резервно використовують stdout.
Політика вкладень
Параметрattachments для кожної можливості керує тим, які вкладення обробляються:
mode:first(типово) абоallmaxAttachments: обмеження кількості оброблюваних вкладень (типово 1)prefer:first,last,path,url
mode: "all", результати мають мітки [Image 1/2], [Audio 2/2] тощо.
Поведінка витягування файлових вкладень:
- Витягнутий текст файлу обгортається як недовірений зовнішній вміст перед тим, як додається до медіапромпта.
- Вставлений блок використовує явні маркери меж на кшталт
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>і містить рядок метаданихSource: External. - Цей шлях витягування вкладень навмисно не містить довгого банера
SECURITY NOTICE:, щоб не роздувати медіапромпт; маркери меж і метадані все одно зберігаються. - Якщо файл не містить тексту, який можна витягти, OpenClaw вставляє
[No extractable text]. - Якщо PDF у цьому шляху резервно переходить до рендерингу сторінок у зображення, медіапромпт зберігає
заповнювач
[PDF content rendered to images; images not forwarded to model], оскільки цей крок витягування вкладень передає текстові блоки, а не відрендерені зображення PDF.
Приклади конфігурації
1) Спільний список моделей + перевизначення
2) Лише Audio + Video (image вимкнено)
3) Необов’язкове розуміння image
4) Єдиний мультимодальний запис (явні capabilities)
Вивід статусу
Коли виконується розуміння медіа,/status містить короткий підсумковий рядок:
Примітки
- Розуміння — best-effort. Помилки не блокують відповіді.
- Вкладення все одно передаються моделям, навіть коли розуміння вимкнено.
- Використовуйте
scope, щоб обмежити, де запускається розуміння (наприклад, лише в DM).