tools.media, pela ordem de fallback e pela integração com o pipeline de resposta.
Objetivos
- Opcional: pré-processar mídia recebida em texto curto para roteamento mais rápido + melhor parsing de comandos.
- Preservar a entrega da mídia original ao modelo (sempre).
- Compatibilizar APIs de provedor e fallbacks de CLI.
- Permitir vários modelos com fallback ordenado (erro/tamanho/timeout).
Comportamento de alto nível
Selecionar por capacidade
Para cada capacidade habilitada (imagem/áudio/vídeo), selecionar anexos conforme a política (padrão: primeiro).
Escolher modelo
Escolher a primeira entrada de modelo qualificada (tamanho + capacidade + autenticação).
Fallback em caso de falha
Se um modelo falhar ou a mídia for grande demais, fazer fallback para a próxima entrada.
Visão geral da configuração
tools.media oferece suporte a modelos compartilhados mais substituições por capacidade:
Chaves de nível superior
Chaves de nível superior
tools.media.models: lista de modelos compartilhados (usecapabilitiespara restringir).tools.media.image/tools.media.audio/tools.media.video:- padrões (
prompt,maxChars,maxBytes,timeoutSeconds,language) - substituições de provedor (
baseUrl,headers,providerOptions) - opções de áudio da Deepgram via
tools.media.audio.providerOptions.deepgram - controles de eco da transcrição de áudio (
echoTranscript, padrãofalse;echoFormat) - lista de
modelspor capacidade opcional (preferida antes dos modelos compartilhados) - política de
attachments(mode,maxAttachments,prefer) scope(controle opcional por chave de canal/chatType/sessão)
- padrões (
tools.media.concurrency: máximo de execuções de capacidade simultâneas (padrão 2).
Entradas de modelo
Cada entrada demodels[] pode ser provedor ou CLI:
- Entrada de provedor
- Entrada de CLI
Credenciais de provedor (apiKey)
A compreensão de mídia por provedor usa a mesma resolução de autenticação de provedor que chamadas de modelo normais: perfis de autenticação, variáveis de ambiente e depois models.providers.<providerId>.apiKey.
Entradas tools.media.*.models[] não aceitam um campo apiKey inline. O valor de provider em uma entrada de modelo de mídia, como openai ou moonshot, deve ter credenciais disponíveis por uma das fontes padrão de autenticação de provedor.
Exemplo mínimo:
Padrões e limites
Padrões recomendados:maxChars: 500 para imagem/vídeo (curto, adequado a comandos)maxChars: não definido para áudio (transcrição completa, a menos que você defina um limite)maxBytes:- imagem: 10MB
- áudio: 20MB
- vídeo: 50MB
Regras
Regras
- Se a mídia exceder
maxBytes, esse modelo será ignorado e o próximo modelo será tentado. - Arquivos de áudio menores que 1024 bytes são tratados como vazios/corrompidos e ignorados antes da transcrição por provedor/CLI; o contexto de resposta recebida recebe uma transcrição placeholder determinística para que o agente saiba que a nota era pequena demais.
- Se o modelo retornar mais do que
maxChars, a saída será aparada. promptusa por padrão um “Describe the .” simples mais a orientação demaxChars(somente imagem/vídeo).- Se o modelo de imagem primário ativo já for compatível nativamente com visão, o OpenClaw ignora o bloco de resumo
[Image]e passa a imagem original para o modelo. - Se um modelo primário de Gateway/WebChat for somente texto, anexos de imagem são preservados como refs
media://inbound/*descarregadas para que as ferramentas de imagem/PDF ou o modelo de imagem configurado ainda possam inspecioná-los em vez de perder o anexo. - Solicitações explícitas
openclaw infer image describe --model <provider/model>são diferentes: elas executam diretamente esse provedor/modelo compatível com imagem, incluindo refs Ollama comoollama/qwen2.5vl:7b. - Se
<capability>.enabled: truemas nenhum modelo estiver configurado, o OpenClaw tenta o modelo de resposta ativo quando seu provedor oferece suporte à capacidade.
Detectar automaticamente compreensão de mídia (padrão)
Setools.media.<capability>.enabled não estiver definido como false e você não tiver configurado modelos, o OpenClaw detecta automaticamente nesta ordem e para na primeira opção funcional:
agents.defaults.imageModel
Refs primária/fallback de
agents.defaults.imageModel (somente imagem).
Prefira refs provider/model. Refs sem qualificação são qualificadas a partir de entradas de modelo de provedor configuradas compatíveis com imagem somente quando a correspondência é única.CLIs locais (somente áudio)
CLIs locais (se instaladas):
sherpa-onnx-offline(requerSHERPA_ONNX_MODEL_DIRcom encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; usaWHISPER_CPP_MODELou o modelo tiny incluído)whisper(CLI Python; baixa modelos automaticamente)
Autenticação de provedor
- Entradas
models.providers.*configuradas que oferecem suporte à capacidade são tentadas antes da ordem de fallback incluída. - Provedores de configuração somente de imagem com um modelo compatível com imagem são registrados automaticamente para compreensão de mídia mesmo quando não são um plugin de fornecedor incluído.
- A compreensão de imagem do Ollama fica disponível quando selecionada explicitamente, por exemplo por
agents.defaults.imageModelouopenclaw infer image describe --model ollama/<vision-model>.
- Áudio: OpenAI → Groq → xAI → Deepgram → OpenRouter → Google → SenseAudio → ElevenLabs → Mistral
- Imagem: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Vídeo: Google → Qwen → Moonshot
A detecção de binários é best-effort no macOS/Linux/Windows; certifique-se de que a CLI esteja em
PATH (expandimos ~) ou defina um modelo de CLI explícito com um caminho de comando completo.Suporte a ambiente de proxy (modelos de provedor)
Quando a compreensão de mídia de áudio e vídeo baseada em provedor está habilitada, o OpenClaw respeita variáveis de ambiente padrão de proxy de saída para chamadas HTTP de provedor:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Capacidades (opcional)
Se você definircapabilities, a entrada será executada somente para esses tipos de mídia. Para listas compartilhadas, o OpenClaw pode inferir padrões:
openai,anthropic,minimax: imagemminimax-portal: imagemmoonshot: imagem + vídeoopenrouter: imagem + áudiogoogle(API Gemini): imagem + áudio + vídeoqwen: imagem + vídeomistral: áudiozai: imagemgroq: áudioxai: áudiodeepgram: áudio- Qualquer catálogo
models.providers.<id>.models[]com um modelo compatível com imagem: imagem
capabilities explicitamente para evitar correspondências inesperadas. Se você omitir capabilities, a entrada será qualificada para a lista em que aparece.
Matriz de suporte de provedores (integrações do OpenClaw)
| Capacidade | Integração de provedor | Observações |
|---|---|---|
| Imagem | OpenAI, OpenAI Codex OAuth, Codex app-server, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, provedores de configuração | Plugins de fornecedor registram suporte a imagem; openai/* pode usar chave de API ou roteamento OAuth do Codex; codex/* usa um turno limitado do Codex app-server; MiniMax e MiniMax OAuth usam MiniMax-VL-01; provedores de configuração compatíveis com imagem são registrados automaticamente. |
| Áudio | OpenAI, Groq, xAI, Deepgram, OpenRouter, Google, SenseAudio, ElevenLabs, Mistral | Transcrição de provedor (Whisper/Groq/xAI/Deepgram/OpenRouter STT/Gemini/SenseAudio/Scribe/Voxtral). |
| Vídeo | Google, Qwen, Moonshot | Compreensão de vídeo por provedor via plugins de fornecedor; a compreensão de vídeo do Qwen usa os endpoints Standard DashScope. |
Observação sobre MiniMax
- A compreensão de imagens de
minimax,minimax-cn,minimax-portaleminimax-portal-cnvem do provedor de mídiaMiniMax-VL-01pertencente ao Plugin. - O roteamento automático de imagens continua usando
MiniMax-VL-01mesmo que metadados legados de chat do MiniMax M2.x declarem entrada de imagem.
Orientação para seleção de modelos
- Prefira o modelo de geração mais recente e mais forte disponível para cada capacidade de mídia quando qualidade e segurança forem importantes.
- Para agentes com ferramentas habilitadas que lidam com entradas não confiáveis, evite modelos de mídia mais antigos/fracos.
- Mantenha pelo menos um fallback por capacidade para disponibilidade (modelo de qualidade + modelo mais rápido/mais barato).
- Fallbacks da CLI (
whisper-cli,whisper,gemini) são úteis quando APIs de provedores estão indisponíveis. - Observação sobre
parakeet-mlx: com--output-dir, o OpenClaw lê<output-dir>/<media-basename>.txtquando o formato de saída étxt(ou não especificado); formatos diferentes detxtfazem fallback para stdout.
Política de anexos
attachments por capacidade controla quais anexos são processados:
Se deve processar o primeiro anexo selecionado ou todos eles.
Limita o número processado.
Preferência de seleção entre anexos candidatos.
mode: "all", as saídas são rotuladas como [Image 1/2], [Audio 2/2] etc.
File-attachment extraction behavior
File-attachment extraction behavior
- O texto extraído do arquivo é encapsulado como conteúdo externo não confiável antes de ser anexado ao prompt de mídia.
- O bloco injetado usa marcadores de limite explícitos como
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>e inclui uma linha de metadadosSource: External. - Este caminho de extração de anexos omite intencionalmente o banner longo
SECURITY NOTICE:para evitar aumentar demais o prompt de mídia; os marcadores de limite e metadados ainda permanecem. - Se um arquivo não tiver texto extraível, o OpenClaw injeta
[No extractable text]. - Se um PDF fizer fallback para imagens de páginas renderizadas neste caminho, o OpenClaw encaminha essas imagens de página para modelos de resposta com capacidade de visão e mantém o placeholder
[PDF content rendered to images]no bloco do arquivo.
Exemplos de configuração
Saída de status
Quando a compreensão de mídia é executada,/status inclui uma linha curta de resumo:
Observações
- A compreensão é de melhor esforço. Erros não bloqueiam respostas.
- Anexos ainda são passados para modelos mesmo quando a compreensão está desabilitada.
- Use
scopepara limitar onde a compreensão é executada (por exemplo, somente DMs).