Nodes and media
Comprensione dei contenuti multimediali
OpenClaw può riassumere i contenuti multimediali in ingresso (immagini/audio/video) prima dell'esecuzione della pipeline di risposta. Rileva automaticamente quando sono disponibili strumenti locali o chiavi dei provider e può essere disabilitato o personalizzato. Se la comprensione è disattivata, i modelli ricevono comunque i file/URL originali come di consueto.
Il comportamento multimediale specifico del fornitore viene registrato dai plugin del fornitore, mentre il core di OpenClaw gestisce la configurazione condivisa tools.media, l'ordine di fallback e l'integrazione della pipeline di risposta.
Obiettivi
- Facoltativo: pre-elaborare i contenuti multimediali in ingresso in testo breve per un instradamento più rapido e un parsing dei comandi migliore.
- Conservare la consegna dei contenuti multimediali originali al modello (sempre).
- Supportare API dei provider e fallback CLI.
- Consentire più modelli con fallback ordinato (errore/dimensione/timeout).
Comportamento ad alto livello
Raccogli allegati
Raccogli gli allegati in ingresso (MediaPaths, MediaUrls, MediaTypes).
Seleziona per capacità
Per ogni capacità abilitata (immagine/audio/video), seleziona gli allegati in base alla policy (predefinito: primo).
Scegli modello
Scegli la prima voce modello idonea (dimensione + capacità + autenticazione).
Fallback in caso di errore
Se un modello non riesce o il contenuto multimediale è troppo grande, passa alla voce successiva.
Applica blocco di successo
In caso di successo:
Bodydiventa un blocco[Image],[Audio]o[Video].- L'audio imposta
{{Transcript}}; il parsing dei comandi usa il testo della didascalia quando presente, altrimenti la trascrizione. - Le didascalie vengono conservate come
User text:all'interno del blocco.
Se la comprensione non riesce o è disabilitata, il flusso di risposta continua con il corpo originale + allegati.
Panoramica della configurazione
tools.media supporta modelli condivisi più override per capacità:
Chiavi di primo livello
tools.media.models: elenco di modelli condivisi (usacapabilitiesper limitare).tools.media.image/tools.media.audio/tools.media.video:- valori predefiniti (
prompt,maxChars,maxBytes,timeoutSeconds,language) - override dei provider (
baseUrl,headers,providerOptions) - opzioni audio Deepgram tramite
tools.media.audio.providerOptions.deepgram - controlli di eco della trascrizione audio (
echoTranscript, predefinitofalse;echoFormat) - elenco
modelsper capacità facoltativo (preferito prima dei modelli condivisi) - policy
attachments(mode,maxAttachments,prefer) scope(gating facoltativo per canale/chatType/chiave sessione)
- valori predefiniti (
tools.media.concurrency: esecuzioni concorrenti massime per capacità (predefinito 2).
{ tools: { media: { models: [ /* shared list */ ], image: { /* optional overrides */ }, audio: { /* optional overrides */ echoTranscript: true, echoFormat: '📝 "{transcript}"', }, video: { /* optional overrides */ }, }, },}Voci modello
Ogni voce models[] può essere provider o CLI:
Voce provider
{ type: "provider", // default if omitted provider: "openai", model: "gpt-5.5", prompt: "Describe the image in <= 500 chars.", maxChars: 500, maxBytes: 10485760, timeoutSeconds: 60, capabilities: ["image"], // optional, used for multi-modal entries profile: "vision-profile", preferredProfile: "vision-fallback",}Voce CLI
{ type: "cli", command: "gemini", args: [ "-m", "gemini-3-flash", "--allowed-tools", "read_file", "Read the media at {{MediaPath}} and describe it in <= {{MaxChars}} characters.", ], maxChars: 500, maxBytes: 52428800, timeoutSeconds: 120, capabilities: ["video", "image"],}I template CLI possono usare anche:
{{MediaDir}}(directory contenente il file multimediale){{OutputDir}}(directory temporanea creata per questa esecuzione){{OutputBase}}(percorso base del file temporaneo, senza estensione)
Valori predefiniti e limiti
Valori predefiniti consigliati:
maxChars: 500 per immagine/video (breve, adatto ai comandi)maxChars: non impostato per audio (trascrizione completa a meno che tu non imposti un limite)maxBytes:- immagine: 10MB
- audio: 20MB
- video: 50MB
Regole
- Se il contenuto multimediale supera
maxBytes, quel modello viene saltato e viene provato il modello successivo. - I file audio più piccoli di 1024 byte vengono trattati come vuoti/corrotti e saltati prima della trascrizione provider/CLI; il contesto di risposta in ingresso riceve una trascrizione segnaposto deterministica in modo che l'agente sappia che la nota era troppo piccola.
- Se il modello restituisce più di
maxChars, l'output viene troncato. promptusa come valore predefinito un semplice "Describe the {media}." più le indicazioni dimaxChars(solo immagine/video).- Se il modello immagine primario attivo supporta già nativamente la visione, OpenClaw salta il blocco di riepilogo
[Image]e passa invece l'immagine originale al modello. - Se un modello primario Gateway/WebChat è solo testo, gli allegati immagine vengono conservati come riferimenti
media://inbound/*esternalizzati, così gli strumenti immagine/PDF o il modello immagine configurato possono ancora ispezionarli invece di perdere l'allegato. - Le richieste esplicite
openclaw infer image describe --model <provider/model>sono diverse: eseguono direttamente quel provider/modello con capacità immagine, inclusi riferimenti Ollama comeollama/qwen2.5vl:7b. - Se
<capability>.enabled: truema non sono configurati modelli, OpenClaw prova il modello di risposta attivo quando il suo provider supporta la capacità.
Rilevamento automatico della comprensione multimediale (predefinito)
Se tools.media.<capability>.enabled non è impostato su false e non hai configurato modelli, OpenClaw rileva automaticamente in questo ordine e si ferma alla prima opzione funzionante:
Modello di risposta attivo
Modello di risposta attivo quando il suo provider supporta la capacità.
agents.defaults.imageModel
Riferimenti primario/fallback di agents.defaults.imageModel (solo immagine).
Preferisci riferimenti provider/model. I riferimenti semplici vengono qualificati dalle voci dei modelli provider configurati con capacità immagine solo quando la corrispondenza è univoca.
CLI locali (solo audio)
CLI locali (se installate):
sherpa-onnx-offline(richiedeSHERPA_ONNX_MODEL_DIRcon encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; usaWHISPER_CPP_MODELo il modello tiny incluso)whisper(CLI Python; scarica automaticamente i modelli)
CLI Gemini
gemini che usa read_many_files.
Autenticazione provider
- Le voci
models.providers.*configurate che supportano la capacità vengono provate prima dell'ordine di fallback incluso. - I provider di configurazione solo immagine con un modello con capacità immagine si registrano automaticamente per la comprensione multimediale anche quando non sono un plugin fornitore incluso.
- La comprensione immagini Ollama è disponibile quando selezionata esplicitamente, ad esempio tramite
agents.defaults.imageModeloopenclaw infer image describe --model ollama/<vision-model>.
Ordine di fallback incluso:
- Audio: OpenAI → Groq → xAI → Deepgram → OpenRouter → Google → SenseAudio → ElevenLabs → Mistral
- Immagine: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Video: Google → Qwen → Moonshot
Per disabilitare il rilevamento automatico, imposta:
{ tools: { media: { audio: { enabled: false, }, }, },}Supporto dell'ambiente proxy (modelli provider)
Quando la comprensione multimediale audio e video basata su provider è abilitata, OpenClaw rispetta le variabili d'ambiente proxy in uscita standard per le chiamate HTTP ai provider:
HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Se non sono impostate variabili d'ambiente proxy, la comprensione multimediale usa l'uscita diretta. Se il valore del proxy è malformato, OpenClaw registra un avviso e torna al recupero diretto.
Capacità (facoltativo)
Se imposti capabilities, la voce viene eseguita solo per quei tipi di contenuto multimediale. Per gli elenchi condivisi, OpenClaw può inferire i valori predefiniti:
openai,anthropic,minimax: immagineminimax-portal: immaginemoonshot: immagine + videoopenrouter: immagine + audiogoogle(API Gemini): immagine + audio + videoqwen: immagine + videomistral: audiozai: immaginegroq: audioxai: audiodeepgram: audio- Qualsiasi catalogo
models.providers.<id>.models[]con un modello con capacità immagine: immagine
Per le voci CLI, imposta capabilities esplicitamente per evitare corrispondenze inattese. Se ometti capabilities, la voce è idonea per l'elenco in cui compare.
Matrice di supporto dei provider (integrazioni OpenClaw)
| Capacità | Integrazione provider | Note |
|---|---|---|
| Immagine | OpenAI, OpenAI Codex OAuth, Codex app-server, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, provider config | I plugin del fornitore registrano il supporto immagini; openai-codex/* usa l'impianto del provider OAuth; codex/* usa un turno limitato del Codex app-server; MiniMax e MiniMax OAuth usano entrambi MiniMax-VL-01; i provider di configurazione con capacità immagine si registrano automaticamente. |
| Audio | OpenAI, Groq, xAI, Deepgram, OpenRouter, Google, SenseAudio, ElevenLabs, Mistral | Trascrizione provider (Whisper/Groq/xAI/Deepgram/OpenRouter STT/Gemini/SenseAudio/Scribe/Voxtral). |
| Video | Google, Qwen, Moonshot | Comprensione video provider tramite plugin del fornitore; la comprensione video Qwen usa gli endpoint Standard DashScope. |
Guida alla selezione dei modelli
- Preferisci il modello più potente di ultima generazione disponibile per ogni capacità multimediale quando qualità e sicurezza sono importanti.
- Per agenti con strumenti abilitati che gestiscono input non attendibili, evita modelli multimediali più vecchi/deboli.
- Mantieni almeno un fallback per capacità per garantire disponibilità (modello di qualità + modello più rapido/economico).
- I fallback CLI (
whisper-cli,whisper,gemini) sono utili quando le API dei provider non sono disponibili. - Nota
parakeet-mlx: con--output-dir, OpenClaw legge<output-dir>/<media-basename>.txtquando il formato di output ètxt(o non specificato); i formati nontxtripiegano su stdout.
Policy degli allegati
attachments per capacità controlla quali allegati vengono elaborati:
mode"first" | "all"default: firstSe elaborare il primo allegato selezionato o tutti.
maxAttachmentsnumberdefault: 1Limita il numero elaborato.
prefer"first" | "last" | "path" | "url"Preferenza di selezione tra gli allegati candidati.
Quando mode: "all", gli output sono etichettati [Image 1/2], [Audio 2/2] e così via.
Comportamento di estrazione degli allegati file
- Il testo estratto dai file viene racchiuso come contenuto esterno non attendibile prima di essere aggiunto al prompt multimediale.
- Il blocco inserito usa marcatori di confine espliciti come
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>e include una riga di metadatiSource: External. - Questo percorso di estrazione degli allegati omette intenzionalmente il lungo banner
SECURITY NOTICE:per evitare di appesantire il prompt multimediale; i marcatori di confine e i metadati rimangono comunque. - Se un file non contiene testo estraibile, OpenClaw inserisce
[No extractable text]. - Se un PDF ricorre alle immagini di pagina renderizzate in questo percorso, il prompt multimediale mantiene il segnaposto
[PDF content rendered to images; images not forwarded to model]perché questo passaggio di estrazione degli allegati inoltra blocchi di testo, non le immagini PDF renderizzate.
Esempi di configurazione
Modelli condivisi + override
{ tools: { media: { models: [ { provider: "openai", model: "gpt-5.5", capabilities: ["image"] }, { provider: "google", model: "gemini-3-flash-preview", capabilities: ["image", "audio", "video"], }, { type: "cli", command: "gemini", args: [ "-m", "gemini-3-flash", "--allowed-tools", "read_file", "Read the media at {{MediaPath}} and describe it in <= {{MaxChars}} characters.", ], capabilities: ["image", "video"], }, ], audio: { attachments: { mode: "all", maxAttachments: 2 }, }, video: { maxChars: 500, }, }, },}Solo audio + video
{ tools: { media: { audio: { enabled: true, models: [ { provider: "openai", model: "gpt-4o-mini-transcribe" }, { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"], }, ], }, video: { enabled: true, maxChars: 500, models: [ { provider: "google", model: "gemini-3-flash-preview" }, { type: "cli", command: "gemini", args: [ "-m", "gemini-3-flash", "--allowed-tools", "read_file", "Read the media at {{MediaPath}} and describe it in <= {{MaxChars}} characters.", ], }, ], }, }, },}Solo immagini
{ tools: { media: { image: { enabled: true, maxBytes: 10485760, maxChars: 500, models: [ { provider: "openai", model: "gpt-5.5" }, { provider: "anthropic", model: "claude-opus-4-6" }, { type: "cli", command: "gemini", args: [ "-m", "gemini-3-flash", "--allowed-tools", "read_file", "Read the media at {{MediaPath}} and describe it in <= {{MaxChars}} characters.", ], }, ], }, }, },}Singola voce multimodale
{ tools: { media: { image: { models: [ { provider: "google", model: "gemini-3.1-pro-preview", capabilities: ["image", "video", "audio"], }, ], }, audio: { models: [ { provider: "google", model: "gemini-3.1-pro-preview", capabilities: ["image", "video", "audio"], }, ], }, video: { models: [ { provider: "google", model: "gemini-3.1-pro-preview", capabilities: ["image", "video", "audio"], }, ], }, }, },}Output di stato
Quando viene eseguita la comprensione dei media, /status include una breve riga di riepilogo:
📎 Media: image ok (openai/gpt-5.4) · audio skipped (maxBytes)Mostra gli esiti per capacità e il provider/modello scelto, quando applicabile.
Note
- La comprensione è best-effort. Gli errori non bloccano le risposte.
- Gli allegati vengono comunque passati ai modelli anche quando la comprensione è disabilitata.
- Usa
scopeper limitare dove viene eseguita la comprensione (ad esempio solo nei DM).