tools.media, порядок резервного переходу та інтеграцію з конвеєром відповіді.
Цілі
- Необов’язково: попередньо стискати вхідні медіа в короткий текст для швидшої маршрутизації + кращого розбору команд.
- Зберігати доставку оригінальних медіа до моделі (завжди).
- Підтримувати API провайдерів і резервні варіанти CLI.
- Дозволяти кілька моделей з упорядкованим резервним переходом (помилка/розмір/тайм-аут).
Загальна поведінка
Select per-capability
Для кожної ввімкненої можливості (зображення/аудіо/відео) вибрати вкладення за політикою (типово: перше).
Огляд конфігурації
tools.media підтримує спільні моделі та перевизначення для окремих можливостей:
Top-level keys
Top-level keys
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 - керування відлунням транскрипту аудіо (
echoTranscript, типовоfalse;echoFormat) - необов’язковий список
modelsдля окремої можливості (має пріоритет перед спільними моделями) - політика
attachments(mode,maxAttachments,prefer) scope(необов’язкове обмеження за каналом/chatType/ключем сесії)
- типові значення (
tools.media.concurrency: максимальна кількість паралельних запусків можливостей (типово 2).
Записи моделей
Кожен записmodels[] може бути провайдером або CLI:
- Provider entry
- CLI entry
Облікові дані провайдера (apiKey)
Розуміння медіа провайдера використовує те саме визначення автентифікації провайдера, що й звичайні
виклики моделі: профілі автентифікації, змінні середовища, потім
models.providers.<providerId>.apiKey.
Записи tools.media.*.models[] не приймають вбудоване поле apiKey. Значення
provider у записі медіамоделі, наприклад openai або moonshot, повинно
мати облікові дані, доступні через одне зі стандартних джерел автентифікації провайдера.
Мінімальний приклад:
Типові значення та обмеження
Рекомендовані типові значення:maxChars: 500 для зображень/відео (коротко, зручно для команд)maxChars: не задано для аудіо (повний транскрипт, якщо ви не встановите ліміт)maxBytes:- зображення: 10MB
- аудіо: 20MB
- відео: 50MB
Rules
Rules
- Якщо медіа перевищує
maxBytes, ця модель пропускається, і пробується наступна модель. - Аудіофайли менші за 1024 байти вважаються порожніми/пошкодженими та пропускаються перед транскрипцією через провайдера/CLI; контекст вхідної відповіді отримує детермінований транскрипт-заповнювач, щоб агент знав, що нотатка була замалою.
- Якщо модель повертає більше ніж
maxChars, вихід обрізається. promptтипово має просте “Describe the .” плюс рекомендаціюmaxChars(лише зображення/відео).- Якщо активна основна модель зображень уже нативно підтримує бачення, OpenClaw пропускає блок резюме
[Image]і натомість передає оригінальне зображення в модель. - Якщо основна модель Gateway/WebChat є лише текстовою, вкладення зображень зберігаються як винесені посилання
media://inbound/*, щоб інструменти зображень/PDF або налаштована модель зображень усе ще могли їх перевірити, замість втрати вкладення. - Явні запити
openclaw infer image describe --model <provider/model>відрізняються: вони запускають цього провайдера/модель із підтримкою зображень напряму, включно з посиланнями Ollama, такими якollama/qwen2.5vl:7b. - Якщо
<capability>.enabled: true, але моделі не налаштовані, OpenClaw пробує активну модель відповіді, коли її провайдер підтримує цю можливість.
Автовизначення розуміння медіа (типово)
Якщоtools.media.<capability>.enabled не встановлено в false і ви не налаштували моделі, OpenClaw автовизначає в такому порядку та зупиняється на першому робочому варіанті:
agents.defaults.imageModel
Основні/резервні посилання
agents.defaults.imageModel (лише зображення).
Надавайте перевагу посиланням provider/model. Голі посилання уточнюються з налаштованих записів моделей провайдерів із підтримкою зображень лише тоді, коли збіг унікальний.Local CLIs (audio only)
Локальні CLI (якщо встановлені):
sherpa-onnx-offline(потребуєSHERPA_ONNX_MODEL_DIRз encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; використовуєWHISPER_CPP_MODELабо вбудовану tiny-модель)whisper(Python CLI; автоматично завантажує моделі)
Provider auth
- Налаштовані записи
models.providers.*, які підтримують можливість, пробуються перед вбудованим порядком резервного переходу. - Провайдери конфігурації лише для зображень з моделлю, здатною працювати із зображеннями, автоматично реєструються для розуміння медіа, навіть якщо вони не є вбудованим Plugin постачальника.
- Розуміння зображень Ollama доступне, коли його явно вибрано, наприклад через
agents.defaults.imageModelабоopenclaw infer image describe --model ollama/<vision-model>.
- Аудіо: OpenAI → Groq → xAI → Deepgram → OpenRouter → Google → SenseAudio → ElevenLabs → Mistral
- Зображення: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Відео: Google → Qwen → Moonshot
Виявлення бінарних файлів працює за принципом найкращої спроби на macOS/Linux/Windows; переконайтеся, що CLI є в
PATH (ми розгортаємо ~), або задайте явну CLI-модель із повним шляхом до команди.Підтримка проксі через середовище (моделі провайдерів)
Коли ввімкнено розуміння медіа на основі провайдера для аудіо та відео, OpenClaw враховує стандартні змінні середовища вихідного проксі для HTTP-викликів провайдера:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Можливості (необов’язково)
Якщо ви задаєтеcapabilities, запис запускається лише для цих типів медіа. Для спільних списків OpenClaw може вивести типові значення:
openai,anthropic,minimax: зображенняminimax-portal: зображенняmoonshot: зображення + відеоopenrouter: зображення + аудіоgoogle(Gemini API): зображення + аудіо + відеоqwen: зображення + відеоmistral: аудіоzai: зображенняgroq: аудіоxai: аудіоdeepgram: аудіо- Будь-який каталог
models.providers.<id>.models[]з моделлю, здатною працювати із зображеннями: зображення
capabilities явно, щоб уникнути неочікуваних збігів. Якщо ви пропустите capabilities, запис придатний для списку, у якому він з’являється.
Матриця підтримки провайдерів (інтеграції OpenClaw)
| Можливість | Інтеграція провайдера | Примітки |
|---|---|---|
| Зображення | OpenAI, OpenAI Codex OAuth, Codex app-server, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, провайдери конфігурації | Plugin постачальників реєструють підтримку зображень; openai/* може використовувати маршрутизацію за API-ключем або Codex OAuth; codex/* використовує обмежений хід Codex app-server; MiniMax і MiniMax OAuth обидва використовують MiniMax-VL-01; провайдери конфігурації з підтримкою зображень реєструються автоматично. |
| Аудіо | OpenAI, Groq, xAI, Deepgram, OpenRouter, Google, SenseAudio, ElevenLabs, Mistral | Транскрипція провайдера (Whisper/Groq/xAI/Deepgram/OpenRouter STT/Gemini/SenseAudio/Scribe/Voxtral). |
| Відео | Google, Qwen, Moonshot | Розуміння відео провайдером через Plugin постачальників; розуміння відео Qwen використовує стандартні кінцеві точки DashScope. |
Примітка MiniMax
- Розуміння зображень для
minimax,minimax-cn,minimax-portalіminimax-portal-cnнадходить від медіапровайдераMiniMax-VL-01, яким володіє Plugin. - Автоматична маршрутизація зображень продовжує використовувати
MiniMax-VL-01, навіть якщо застарілі метадані чату MiniMax M2.x заявляють підтримку вхідних зображень.
Настанови щодо вибору моделі
- Віддавайте перевагу найсильнішій моделі останнього покоління, доступній для кожної медіаможливості, коли важливі якість і безпека.
- Для агентів з увімкненими інструментами, які обробляють ненадійні вхідні дані, уникайте старіших або слабших медіамоделей.
- Тримайте принаймні один резервний варіант для кожної можливості, щоб забезпечити доступність (якісна модель + швидша/дешевша модель).
- Резервні CLI-варіанти (
whisper-cli,whisper,gemini) корисні, коли API провайдера недоступні. - Примітка щодо
parakeet-mlx: з--output-dirOpenClaw читає<output-dir>/<media-basename>.txt, коли формат виводу —txt(або не вказаний); формати, відмінні відtxt, повертаються до stdout.
Політика вкладень
Параметрattachments для кожної можливості керує тим, які вкладення обробляються:
Чи обробляти перше вибране вкладення, чи всі вкладення.
Обмежує кількість оброблених вкладень.
Перевага вибору серед кандидатних вкладень.
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 у цьому шляху повертається до відрендерених зображень сторінок, OpenClaw передає ці зображення сторінок моделям відповіді з підтримкою зору й залишає заповнювач
[PDF content rendered to images]у файловому блоці.
Приклади конфігурації
- Спільні моделі + перевизначення
- Лише аудіо + відео
- Лише зображення
- Один мультимодальний запис
Вивід статусу
Коли виконується розуміння медіа,/status містить короткий рядок підсумку:
Примітки
- Розуміння працює за принципом найкращої спроби. Помилки не блокують відповіді.
- Вкладення все одно передаються моделям, навіть коли розуміння вимкнене.
- Використовуйте
scope, щоб обмежити, де виконується розуміння (наприклад, лише приватні повідомлення).