tools.media, kolejność fallbacków oraz integrację z potokiem odpowiedzi.
Cele
- Opcjonalnie: wstępnie przetwarzaj przychodzące media na krótki tekst, aby przyspieszyć routing i poprawić parsowanie poleceń.
- Zawsze zachowuj dostarczenie oryginalnych mediów do modelu.
- Obsługuj API dostawców i fallbacki CLI.
- Pozwalaj na wiele modeli z uporządkowanym fallbackiem (błąd/rozmiar/timeout).
Zachowanie wysokiego poziomu
Wybierz według możliwości
Dla każdej włączonej możliwości (obraz/audio/wideo) wybierz załączniki zgodnie z polityką (domyślnie: pierwszy).
Wybierz model
Wybierz pierwszy kwalifikujący się wpis modelu (rozmiar + możliwość + uwierzytelnianie).
Fallback przy niepowodzeniu
Jeśli model zawiedzie lub media są zbyt duże, przejdź awaryjnie do następnego wpisu.
Przegląd konfiguracji
tools.media obsługuje modele współdzielone oraz nadpisania dla poszczególnych możliwości:
Klucze najwyższego poziomu
Klucze najwyższego poziomu
tools.media.models: lista modeli współdzielonych (użyjcapabilitiesdo bramkowania).tools.media.image/tools.media.audio/tools.media.video:- wartości domyślne (
prompt,maxChars,maxBytes,timeoutSeconds,language) - nadpisania dostawcy (
baseUrl,headers,providerOptions) - opcje audio Deepgram przez
tools.media.audio.providerOptions.deepgram - kontrolki echa transkrypcji audio (
echoTranscript, domyślniefalse;echoFormat) - opcjonalna lista
modelsdla danej możliwości (preferowana przed modelami współdzielonymi) - polityka
attachments(mode,maxAttachments,prefer) scope(opcjonalne bramkowanie według kanału/chatType/klucza sesji)
- wartości domyślne (
tools.media.concurrency: maksymalna liczba współbieżnych uruchomień możliwości (domyślnie 2).
Wpisy modeli
Każdy wpismodels[] może być typu dostawca albo CLI:
- Wpis dostawcy
- Wpis CLI
Dane uwierzytelniające dostawcy (apiKey)
Rozumienie mediów przez dostawcę używa tego samego rozwiązywania uwierzytelniania dostawcy co zwykłe wywołania modeli: profili uwierzytelniania, zmiennych środowiskowych, a następnie models.providers.<providerId>.apiKey.
Wpisy tools.media.*.models[] nie akceptują pola inline apiKey. Wartość provider we wpisie modelu mediów, taka jak openai lub moonshot, musi mieć dane uwierzytelniające dostępne przez jedno ze standardowych źródeł uwierzytelniania dostawcy.
Minimalny przykład:
Wartości domyślne i limity
Zalecane wartości domyślne:maxChars: 500 dla obrazu/wideo (krótkie, przyjazne poleceniom)maxChars: nieustawione dla audio (pełna transkrypcja, chyba że ustawisz limit)maxBytes:- obraz: 10MB
- audio: 20MB
- wideo: 50MB
Reguły
Reguły
- Jeśli media przekraczają
maxBytes, ten model jest pomijany i próbowany jest następny model. - Pliki audio mniejsze niż 1024 bajty są traktowane jako puste/uszkodzone i pomijane przed transkrypcją przez dostawcę/CLI; przychodzący kontekst odpowiedzi otrzymuje deterministyczny zastępczy tekst transkrypcji, aby agent wiedział, że notatka była zbyt mała.
- Jeśli model zwróci więcej niż
maxChars, wynik zostanie przycięty. promptdomyślnie to proste „Describe the .” oraz wskazówkamaxChars(tylko obraz/wideo).- Jeśli aktywny główny model obrazu już natywnie obsługuje wizję, OpenClaw pomija blok podsumowania
[Image]i zamiast tego przekazuje oryginalny obraz do modelu. - Jeśli główny model Gateway/WebChat jest wyłącznie tekstowy, załączniki obrazów są zachowywane jako odciążone odwołania
media://inbound/*, aby narzędzia obrazów/PDF lub skonfigurowany model obrazu nadal mogły je zbadać, zamiast utracić załącznik. - Jawne żądania
openclaw infer image describe --model <provider/model>są inne: uruchamiają bezpośrednio tego dostawcę/model obsługujący obraz, w tym odwołania Ollama takie jakollama/qwen2.5vl:7b. - Jeśli
<capability>.enabled: true, ale nie skonfigurowano modeli, OpenClaw próbuje użyć aktywnego modelu odpowiedzi, gdy jego dostawca obsługuje daną możliwość.
Automatyczne wykrywanie rozumienia mediów (domyślnie)
Jeślitools.media.<capability>.enabled nie jest ustawione na false i nie skonfigurowano modeli, OpenClaw wykrywa automatycznie w tej kolejności i zatrzymuje się na pierwszej działającej opcji:
agents.defaults.imageModel
Główne/fallbackowe odwołania
agents.defaults.imageModel (tylko obraz).
Preferuj odwołania provider/model. Nagie odwołania są kwalifikowane z wpisów skonfigurowanych modeli dostawców obsługujących obraz tylko wtedy, gdy dopasowanie jest jednoznaczne.Lokalne CLI (tylko audio)
Lokalne CLI (jeśli zainstalowane):
sherpa-onnx-offline(wymagaSHERPA_ONNX_MODEL_DIRz encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; używaWHISPER_CPP_MODELlub dołączonego modelu tiny)whisper(Python CLI; pobiera modele automatycznie)
Uwierzytelnianie dostawcy
- Skonfigurowane wpisy
models.providers.*, które obsługują daną możliwość, są próbowane przed dołączoną kolejnością fallbacków. - Dostawcy skonfigurowani tylko dla obrazów z modelem obsługującym obraz automatycznie rejestrują się do rozumienia mediów, nawet gdy nie są dołączonym Pluginem dostawcy.
- Rozumienie obrazów Ollama jest dostępne po jawnym wybraniu, na przykład przez
agents.defaults.imageModellubopenclaw infer image describe --model ollama/<vision-model>.
- Audio: OpenAI → Groq → xAI → Deepgram → OpenRouter → Google → SenseAudio → ElevenLabs → Mistral
- Obraz: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Wideo: Google → Qwen → Moonshot
Wykrywanie binariów działa na zasadzie best-effort w macOS/Linux/Windows; upewnij się, że CLI znajduje się w
PATH (rozwijamy ~) albo ustaw jawny model CLI z pełną ścieżką polecenia.Obsługa środowiska proxy (modele dostawców)
Gdy włączone jest rozumienie mediów oparte na dostawcy dla audio i wideo, OpenClaw honoruje standardowe wychodzące zmienne środowiskowe proxy dla wywołań HTTP dostawcy:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Możliwości (opcjonalnie)
Jeśli ustawiszcapabilities, wpis uruchamia się tylko dla tych typów mediów. Dla list współdzielonych OpenClaw może wywnioskować wartości domyślne:
openai,anthropic,minimax: obrazminimax-portal: obrazmoonshot: obraz + wideoopenrouter: obraz + audiogoogle(Gemini API): obraz + audio + wideoqwen: obraz + wideomistral: audiozai: obrazgroq: audioxai: audiodeepgram: audio- Dowolny katalog
models.providers.<id>.models[]z modelem obsługującym obraz: obraz
capabilities jawnie, aby uniknąć zaskakujących dopasowań. Jeśli pominiesz capabilities, wpis kwalifikuje się dla listy, w której się znajduje.
Macierz obsługi dostawców (integracje OpenClaw)
| Możliwość | Integracja dostawcy | Uwagi |
|---|---|---|
| Obraz | OpenAI, OpenAI Codex OAuth, Codex app-server, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, dostawcy z konfiguracji | Pluginy dostawców rejestrują obsługę obrazów; openai/* może używać routingu przez klucz API lub Codex OAuth; codex/* używa ograniczonego przebiegu Codex app-server; MiniMax i MiniMax OAuth używają MiniMax-VL-01; dostawcy z konfiguracji obsługujący obraz rejestrują się automatycznie. |
| Audio | OpenAI, Groq, xAI, Deepgram, OpenRouter, Google, SenseAudio, ElevenLabs, Mistral | Transkrypcja dostawcy (Whisper/Groq/xAI/Deepgram/OpenRouter STT/Gemini/SenseAudio/Scribe/Voxtral). |
| Wideo | Google, Qwen, Moonshot | Rozumienie wideo przez dostawcę za pośrednictwem Pluginów dostawców; rozumienie wideo Qwen używa punktów końcowych Standard DashScope. |
Uwaga MiniMax
- Rozumienie obrazów dla
minimax,minimax-cn,minimax-portaliminimax-portal-cnpochodzi z należącego do pluginu dostawcy multimediówMiniMax-VL-01. - Automatyczne routowanie obrazów nadal używa
MiniMax-VL-01, nawet jeśli starsze metadane czatu MiniMax M2.x deklarują wejście obrazu.
Wskazówki dotyczące wyboru modelu
- Preferuj najsilniejszy dostępny model najnowszej generacji dla każdej funkcji multimedialnej, gdy liczą się jakość i bezpieczeństwo.
- W przypadku agentów z włączonymi narzędziami, obsługujących niezaufane dane wejściowe, unikaj starszych/słabszych modeli multimedialnych.
- Zachowaj co najmniej jeden model zapasowy dla każdej funkcji, aby zapewnić dostępność (model jakościowy + szybszy/tańszy model).
- Modele zapasowe CLI (
whisper-cli,whisper,gemini) są przydatne, gdy API dostawców są niedostępne. - Uwaga dotycząca
parakeet-mlx: z--output-dirOpenClaw odczytuje<output-dir>/<media-basename>.txt, gdy format wyjściowy totxt(lub nie został określony); formaty inne niżtxtwracają do stdout.
Zasady załączników
attachments dla poszczególnych funkcji kontroluje, które załączniki są przetwarzane:
Czy przetwarzać pierwszy wybrany załącznik, czy wszystkie.
Ogranicza liczbę przetwarzanych załączników.
Preferencja wyboru spośród kandydujących załączników.
mode: "all", wyjścia są oznaczane jako [Image 1/2], [Audio 2/2] itd.
Zachowanie wyodrębniania załączników plikowych
Zachowanie wyodrębniania załączników plikowych
- Wyodrębniony tekst pliku jest opakowywany jako niezaufana treść zewnętrzna, zanim zostanie dołączony do promptu multimedialnego.
- Wstrzyknięty blok używa jawnych znaczników granicznych, takich jak
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>, i zawiera wiersz metadanychSource: External. - Ta ścieżka wyodrębniania załączników celowo pomija długi baner
SECURITY NOTICE:, aby uniknąć rozrastania promptu multimedialnego; znaczniki graniczne i metadane nadal pozostają. - Jeśli plik nie ma tekstu możliwego do wyodrębnienia, OpenClaw wstrzykuje
[No extractable text]. - Jeśli PDF wraca do renderowanych obrazów stron w tej ścieżce, OpenClaw przekazuje te obrazy stron do modeli odpowiedzi obsługujących widzenie i zachowuje placeholder
[PDF content rendered to images]w bloku pliku.
Przykłady konfiguracji
- Modele współdzielone + nadpisania
- Tylko audio + wideo
- Tylko obraz
- Pojedynczy wpis multimodalny
Wynik statusu
Gdy działa rozumienie multimediów,/status zawiera krótki wiersz podsumowania:
Uwagi
- Rozumienie działa na zasadzie best-effort. Błędy nie blokują odpowiedzi.
- Załączniki nadal są przekazywane do modeli, nawet gdy rozumienie jest wyłączone.
- Użyj
scope, aby ograniczyć miejsca, w których działa rozumienie (np. tylko DM-y).