Media Understanding (eingehend) — 2026-01-17
OpenClaw kann eingehende Medien (Bild/Audio/Video) zusammenfassen, bevor die Antwort-Pipeline läuft. Es erkennt automatisch, wenn lokale Tools oder Provider-Schlüssel verfügbar sind, und kann deaktiviert oder angepasst werden. Wenn Understanding aus ist, erhalten Modelle die Originaldateien/-URLs wie gewohnt.
Ziele
- Optional: eingehende Medien in kurzen Text vorverdauen für schnelleres Routing + bessere Befehlserkennung.
- Originale Medienlieferung an das Modell (immer) beibehalten.
- Provider-APIs und CLI-Fallbacks unterstützen.
- Mehrere Modelle mit geordnetem Fallback (Fehler/Größe/Timeout) ermöglichen.
Übergeordnetes Verhalten
- Eingehende Anhänge sammeln (
MediaPaths,MediaUrls,MediaTypes). - Für jede aktivierte Fähigkeit (Bild/Audio/Video) Anhänge nach Richtlinie auswählen (Standard: erster).
- Den ersten passenden Modelleintrag wählen (Größe + Fähigkeit + Auth).
- Wenn ein Modell fehlschlägt oder das Medium zu groß ist, zum nächsten Eintrag wechseln.
- Bei Erfolg:
Bodywird zu[Image]-,[Audio]- oder[Video]-Block.- Audio setzt
{{Transcript}}; Befehlserkennung verwendet Bildunterschrift-Text wenn vorhanden, sonst das Transkript. - Bildunterschriften werden als
User text:innerhalb des Blocks beibehalten.
Wenn Understanding fehlschlägt oder deaktiviert ist, läuft der Antwortfluss weiter mit dem Original-Body + Anhängen.
Konfigurationsübersicht
tools.media unterstützt geteilte Modelle plus pro-Fähigkeits-Overrides:
tools.media.models: geteilte Modellliste (nutzecapabilitieszur Steuerung).tools.media.image/tools.media.audio/tools.media.video:- Standardwerte (
prompt,maxChars,maxBytes,timeoutSeconds,language) - Provider-Overrides (
baseUrl,headers,providerOptions) - Deepgram-Audio-Optionen über
tools.media.audio.providerOptions.deepgram - Audio-Transkript-Echo-Steuerung (
echoTranscript, Standardfalse;echoFormat) - optionale pro-Fähigkeits-
models-Liste (bevorzugt vor geteilten Modellen) attachments-Richtlinie (mode,maxAttachments,prefer)scope(optionale Einschränkung nach Kanal/chatType/Session-Key)
- Standardwerte (
tools.media.concurrency: maximale parallele Fähigkeitsläufe (Standard 2).
{
tools: {
media: {
models: [
/* geteilte Liste */
],
image: {
/* optionale Overrides */
},
audio: {
/* optionale Overrides */
echoTranscript: true,
echoFormat: '📝 "{transcript}"',
},
video: {
/* optionale Overrides */
},
},
},
}
Modelleinträge
Jeder models[]-Eintrag kann Provider oder CLI sein:
{
type: "provider", // Standard wenn weggelassen
provider: "openai",
model: "gpt-5.2",
prompt: "Describe the image in <= 500 chars.",
maxChars: 500,
maxBytes: 10485760,
timeoutSeconds: 60,
capabilities: ["image"], // optional, für multimodale Einträge
profile: "vision-profile",
preferredProfile: "vision-fallback",
}
{
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"],
}
CLI-Templates können auch verwenden:
{{MediaDir}}(Verzeichnis mit der Mediendatei){{OutputDir}}(Scratch-Verzeichnis für diesen Lauf){{OutputBase}}(Scratch-Dateibasis, ohne Endung)
Standardwerte und Limits
Empfohlene Standardwerte:
maxChars: 500 für Bild/Video (kurz, befehlsfreundlich)maxChars: nicht gesetzt für Audio (volles Transkript, es sei denn du setzt ein Limit)maxBytes:- Bild: 10 MB
- Audio: 20 MB
- Video: 50 MB
Regeln:
- Wenn Medien
maxBytesüberschreiten, wird dieses Modell übersprungen und das nächste Modell versucht. - Audiodateien kleiner als 1024 Bytes werden als leer/korrupt behandelt und vor der Provider/CLI-Transkription übersprungen.
- Wenn das Modell mehr als
maxCharszurückgibt, wird die Ausgabe gekürzt. prompthat standardmäßig ein einfaches „Describe the {media}.” plusmaxChars-Hinweis (nur Bild/Video).- Wenn
<capability>.enabled: true, aber keine Modelle konfiguriert sind, versucht OpenClaw das aktive Antwortmodell, wenn dessen Provider die Fähigkeit unterstützt.
Automatische Media-Understanding-Erkennung (Standard)
Wenn tools.media.<capability>.enabled nicht auf false gesetzt ist und du keine
Modelle konfiguriert hast, erkennt OpenClaw automatisch in dieser Reihenfolge und stoppt bei der ersten
funktionierenden Option:
- Lokale CLIs (nur Audio; wenn installiert)
sherpa-onnx-offline(benötigtSHERPA_ONNX_MODEL_DIRmit encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp; nutztWHISPER_CPP_MODELoder das mitgelieferte Tiny-Modell)whisper(Python CLI; lädt Modelle automatisch herunter)
- Gemini CLI (
gemini) mitread_many_files - Provider-Keys
- Audio: OpenAI → Groq → Deepgram → Google
- Bild: OpenAI → Anthropic → Google → MiniMax
- Video: Google
Um die automatische Erkennung zu deaktivieren, setze:
{
tools: {
media: {
audio: {
enabled: false,
},
},
},
}
Hinweis: Die Binärerkennung funktioniert plattformübergreifend (macOS/Linux/Windows) nach bestem Bemühen. Stelle sicher, dass die CLI im PATH liegt (wir expandieren ~), oder setze ein explizites CLI-Modell mit vollem Befehlspfad.
Proxy-Unterstützung (Provider-Modelle)
Wenn provider-basiertes Audio- und Video-Media-Understanding aktiviert ist, berücksichtigt OpenClaw die üblichen Proxy-Umgebungsvariablen für ausgehende HTTP-Aufrufe:
HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Wenn keine Proxy-Variablen gesetzt sind, nutzt Media Understanding direkten Zugang. Wenn der Proxy-Wert fehlerhaft ist, loggt OpenClaw eine Warnung und fällt auf direkten Zugriff zurück.
Fähigkeiten (optional)
Wenn du capabilities setzt, läuft der Eintrag nur für diese Medientypen. Für geteilte
Listen kann OpenClaw Standardwerte ableiten:
openai,anthropic,minimax: Bildgoogle(Gemini API): Bild + Audio + Videogroq: Audiodeepgram: Audio
Für CLI-Einträge setze capabilities explizit, um überraschende Zuordnungen zu vermeiden.
Wenn du capabilities weglässt, ist der Eintrag für die Liste zulässig, in der er erscheint.
Provider-Unterstützungsmatrix (OpenClaw-Integrationen)
| Fähigkeit | Provider-Integration | Hinweise |
|---|---|---|
| Bild | OpenAI / Anthropic / Google / andere via pi-ai | Jedes bildfähige Modell im Registry funktioniert. |
| Audio | OpenAI, Groq, Deepgram, Google, Mistral | Provider-Transkription (Whisper/Deepgram/Gemini/Voxtral). |
| Video | Google (Gemini API) | Provider-Video-Verständnis. |
Modellauswahl-Hinweise
- Bevorzuge das stärkste aktuelle Modell für jede Medienfähigkeit, wenn Qualität und Sicherheit wichtig sind.
- Für tool-fähige Agents, die nicht vertrauenswürdige Eingaben verarbeiten, vermeide ältere/schwächere Medienmodelle.
- Halte mindestens einen Fallback pro Fähigkeit für Verfügbarkeit bereit (Qualitätsmodell + schnelleres/günstigeres Modell).
- CLI-Fallbacks (
whisper-cli,whisper,gemini) sind nützlich, wenn Provider-APIs nicht verfügbar sind. parakeet-mlx-Hinweis: Mit--output-dirliest OpenClaw<output-dir>/<media-basename>.txt, wenn das Ausgabeformattxtist (oder nicht angegeben); andere Formate fallen auf Stdout zurück.
Anhang-Richtlinie
Pro-Fähigkeits-attachments steuert, welche Anhänge verarbeitet werden:
mode:first(Standard) oderallmaxAttachments: begrenzt die Anzahl der verarbeiteten (Standard 1)prefer:first,last,path,url
Bei mode: "all" werden Ausgaben als [Image 1/2], [Audio 2/2] usw. beschriftet.
Konfigurationsbeispiele
1) Geteilte Modellliste + Overrides
{
tools: {
media: {
models: [
{ provider: "openai", model: "gpt-5.2", 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,
},
},
},
}
2) Nur Audio + Video (Bild aus)
{
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.",
],
},
],
},
},
},
}
3) Optionales Bildverständnis
{
tools: {
media: {
image: {
enabled: true,
maxBytes: 10485760,
maxChars: 500,
models: [
{ provider: "openai", model: "gpt-5.2" },
{ 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.",
],
},
],
},
},
},
}
4) Multimodaler Einzeleintrag (explizite Fähigkeiten)
{
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"],
},
],
},
},
},
}
Statusausgabe
Wenn Media Understanding läuft, zeigt /status eine kurze Zusammenfassung:
📎 Media: image ok (openai/gpt-5.2) · audio skipped (maxBytes)
Diese zeigt Ergebnisse pro Fähigkeit und den gewählten Provider/Modell, wenn zutreffend.
Hinweise
- Understanding funktioniert nach bestem Bemühen. Fehler blockieren keine Antworten.
- Anhänge werden auch bei deaktiviertem Understanding weiterhin an Modelle übergeben.
- Nutze
scope, um einzuschränken, wo Understanding läuft (z. B. nur Direktnachrichten).