Nodes and media
Medya anlama
OpenClaw, yanıt hattı çalışmadan önce gelen medyayı özetleyebilir (görsel/ses/video). Yerel araçlar veya sağlayıcı anahtarları kullanılabilir olduğunda bunu otomatik algılar; devre dışı bırakılabilir veya özelleştirilebilir. Anlama kapalıysa modeller, özgün dosyaları/URL'leri her zamanki gibi almaya devam eder.
Tedarikçiye özgü medya davranışı tedarikçi Plugin'leri tarafından kaydedilir; OpenClaw çekirdeği ise paylaşılan tools.media yapılandırmasını, yedek sırasını ve yanıt hattı entegrasyonunu yönetir.
Hedefler
- İsteğe bağlı: daha hızlı yönlendirme + daha iyi komut ayrıştırma için gelen medyayı kısa metne önceden sindir.
- Özgün medya teslimini modele koru (her zaman).
- sağlayıcı API'lerini ve CLI yedeklerini destekle.
- Sıralı yedekli birden fazla modele izin ver (hata/boyut/zaman aşımı).
Üst düzey davranış
Ekleri topla
Gelen ekleri topla (MediaPaths, MediaUrls, MediaTypes).
Yetenek başına seç
Etkinleştirilmiş her yetenek için (görsel/ses/video), ekleri ilkeye göre seç (varsayılan: ilk).
Model seç
Uygun ilk model girdisini seç (boyut + yetenek + kimlik doğrulama).
Hata durumunda yedeğe geç
Bir model başarısız olursa veya medya çok büyükse, sonraki girdiye geç.
Başarı bloğunu uygula
Başarı durumunda:
Body,[Image],[Audio]veya[Video]bloğu olur.- Ses
{{Transcript}}değerini ayarlar; komut ayrıştırma, varsa açıklama metnini, yoksa dökümü kullanır. - Açıklamalar blok içinde
User text:olarak korunur.
Anlama başarısız olursa veya devre dışıysa yanıt akışı devam eder; özgün gövde + ekler korunur.
Yapılandırma özeti
tools.media, paylaşılan modelleri ve yetenek başına geçersiz kılmaları destekler:
Üst düzey anahtarlar
tools.media.models: paylaşılan model listesi (sınırlamak içincapabilitieskullanın).tools.media.image/tools.media.audio/tools.media.video:- varsayılanlar (
prompt,maxChars,maxBytes,timeoutSeconds,language) - sağlayıcı geçersiz kılmaları (
baseUrl,headers,providerOptions) tools.media.audio.providerOptions.deepgramüzerinden Deepgram ses seçenekleri- ses dökümü yankı denetimleri (
echoTranscript, varsayılanfalse;echoFormat) - isteğe bağlı yetenek başına
modelslistesi (paylaşılan modellerden önce tercih edilir) attachmentsilkesi (mode,maxAttachments,prefer)scope(kanal/chatType/oturum anahtarına göre isteğe bağlı sınırlama)
- varsayılanlar (
tools.media.concurrency: en fazla eşzamanlı yetenek çalıştırması (varsayılan 2).
{
tools: {
media: {
models: [
/* shared list */
],
image: {
/* optional overrides */
},
audio: {
/* optional overrides */
echoTranscript: true,
echoFormat: '📝 "{transcript}"',
},
video: {
/* optional overrides */
},
},
},
}
Model girdileri
Her models[] girdisi sağlayıcı veya CLI olabilir:
Sağlayıcı girdisi
{
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",
}
CLI girdisi
{
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 şablonları şunları da kullanabilir:
{{MediaDir}}(medya dosyasını içeren dizin){{OutputDir}}(bu çalıştırma için oluşturulan geçici dizin){{OutputBase}}(geçici dosya taban yolu, uzantısız)
Varsayılanlar ve sınırlar
Önerilen varsayılanlar:
maxChars: görsel/video için 500 (kısa, komut dostu)maxChars: ses için ayarlanmamış (sınır koymadığınız sürece tam döküm)maxBytes:- görsel: 10MB
- ses: 20MB
- video: 50MB
Kurallar
- Medya
maxBytesdeğerini aşarsa bu model atlanır ve sonraki model denenir. - 1024 bayttan küçük ses dosyaları boş/bozuk kabul edilir ve sağlayıcı/CLI dökümünden önce atlanır; gelen yanıt bağlamı, ajanın notun çok küçük olduğunu bilmesi için deterministik bir yer tutucu döküm alır.
- Model
maxCharsdeğerinden fazlasını döndürürse çıktı kırpılır. promptvarsayılanı basit "Describe the {media}." ifadesi artımaxCharsyönlendirmesidir (yalnızca görsel/video).- Etkin birincil görsel modeli zaten vision desteğini yerel olarak sağlıyorsa OpenClaw,
[Image]özet bloğunu atlar ve bunun yerine özgün görseli modele geçirir. - Bir Gateway/WebChat birincil modeli yalnızca metinse, görsel ekleri, görsel/PDF araçlarının veya yapılandırılmış görsel modelinin eki kaybetmek yerine hâlâ inceleyebilmesi için dışarı aktarılmış
media://inbound/*başvuruları olarak korunur. - Açık
openclaw infer image describe --model <provider/model>istekleri farklıdır:ollama/qwen2.5vl:7bgibi Ollama başvuruları dahil olmak üzere, görsel yetenekli o sağlayıcı/modeli doğrudan çalıştırırlar. <capability>.enabled: trueise ancak hiç model yapılandırılmamışsa OpenClaw, sağlayıcısı yeteneği desteklediğinde etkin yanıt modelini dener.
Medya anlamayı otomatik algıla (varsayılan)
tools.media.<capability>.enabled false olarak ayarlanmamışsa ve model yapılandırmadıysanız OpenClaw şu sırayla otomatik algılar ve ilk çalışan seçenekte durur:
Etkin yanıt modeli
Sağlayıcısı yeteneği desteklediğinde etkin yanıt modeli.
agents.defaults.imageModel
agents.defaults.imageModel birincil/yedek başvuruları (yalnızca görsel).
provider/model başvurularını tercih edin. Yalın başvurular, yalnızca eşleşme benzersiz olduğunda yapılandırılmış görsel yetenekli sağlayıcı model girdilerinden nitelenir.
Yerel CLI'ler (yalnızca ses)
Yerel CLI'ler (kuruluysa):
sherpa-onnx-offline(encoder/decoder/joiner/tokens ileSHERPA_ONNX_MODEL_DIRgerektirir)whisper-cli(whisper-cpp;WHISPER_CPP_MODELveya paketle gelen tiny modeli kullanır)whisper(Python CLI; modelleri otomatik indirir)
Gemini CLI
read_many_files kullanan gemini.
Sağlayıcı kimlik doğrulaması
- Yeteneği destekleyen yapılandırılmış
models.providers.*girdileri, paketle gelen yedek sırasından önce denenir. - Görsel yetenekli bir modele sahip yalnızca görsel yapılandırma sağlayıcıları, paketle gelen bir tedarikçi Plugin'i olmasalar bile medya anlama için otomatik kaydedilir.
- Ollama görsel anlama, örneğin
agents.defaults.imageModelveyaopenclaw infer image describe --model ollama/<vision-model>üzerinden açıkça seçildiğinde kullanılabilir.
Paketle gelen yedek sırası:
- Ses: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Görsel: OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- Video: Google → Qwen → Moonshot
Otomatik algılamayı devre dışı bırakmak için şunu ayarlayın:
{
tools: {
media: {
audio: {
enabled: false,
},
},
},
}
Proxy ortam desteği (sağlayıcı modelleri)
Sağlayıcı tabanlı ses ve video medya anlama etkinleştirildiğinde OpenClaw, sağlayıcı HTTP çağrıları için standart giden proxy ortam değişkenlerini dikkate alır:
HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Proxy ortam değişkenleri ayarlı değilse medya anlama doğrudan çıkış kullanır. Proxy değeri hatalı biçimlendirilmişse OpenClaw bir uyarı günlüğe yazar ve doğrudan getirmeye geri döner.
Yetenekler (isteğe bağlı)
capabilities ayarlarsanız girdi yalnızca bu medya türleri için çalışır. Paylaşılan listelerde OpenClaw varsayılanları çıkarabilir:
openai,anthropic,minimax: görselminimax-portal: görselmoonshot: görsel + videoopenrouter: görselgoogle(Gemini API): görsel + ses + videoqwen: görsel + videomistral: seszai: görselgroq: sesxai: sesdeepgram: ses- Görsel yetenekli bir modele sahip herhangi bir
models.providers.<id>.models[]kataloğu: görsel
CLI girdileri için şaşırtıcı eşleşmeleri önlemek üzere capabilities değerini açıkça ayarlayın. capabilities değerini atlarsanız girdi, içinde yer aldığı liste için uygundur.
Sağlayıcı destek matrisi (OpenClaw entegrasyonları)
| Yetenek | Sağlayıcı entegrasyonu | Notlar |
|---|---|---|
| Görsel | OpenAI, OpenAI Codex OAuth, Codex app-server, OpenRouter, Anthropic, Google, MiniMax, Moonshot, Qwen, Z.AI, yapılandırma sağlayıcıları | Tedarikçi Plugin'leri görsel desteğini kaydeder; openai-codex/* OAuth sağlayıcı tesisatını kullanır; codex/* sınırlı bir Codex app-server turu kullanır; MiniMax ve MiniMax OAuth ikisi de MiniMax-VL-01 kullanır; görsel yetenekli yapılandırma sağlayıcıları otomatik kaydedilir. |
| Ses | OpenAI, Groq, xAI, Deepgram, Google, SenseAudio, ElevenLabs, Mistral | Sağlayıcı dökümü (Whisper/Groq/xAI/Deepgram/Gemini/SenseAudio/Scribe/Voxtral). |
| Video | Google, Qwen, Moonshot | Tedarikçi Plugin'leri üzerinden sağlayıcı video anlama; Qwen video anlama Standard DashScope uç noktalarını kullanır. |
Model seçimi kılavuzu
- Kalite ve güvenlik önemli olduğunda her medya yeteneği için kullanılabilir en güçlü en yeni nesil modeli tercih edin.
- Güvenilmeyen girdileri işleyen araç etkin ajanlar için daha eski/zayıf medya modellerinden kaçının.
- Erişilebilirlik için her yetenek başına en az bir yedek tutun (kalite modeli + daha hızlı/daha ucuz model).
- CLI yedekleri (
whisper-cli,whisper,gemini), sağlayıcı API'leri kullanılamadığında yararlıdır. parakeet-mlxnotu:--output-dirile OpenClaw, çıktı biçimitxtolduğunda (veya belirtilmediğinde)<output-dir>/<media-basename>.txtdosyasını okur;txtolmayan biçimler stdout'a geri döner.
Ek ilkesi
Yetenek başına attachments, hangi eklerin işleneceğini denetler:
mode"first" | "all"İlk seçilen eki mi yoksa tümünü mü işleyeceği.
maxAttachmentsnumberİşlenecek sayıyı sınırlar.
prefer"first" | "last" | "path" | "url"Aday ekler arasındaki seçim tercihi.
mode: "all" olduğunda çıktılar [Image 1/2], [Audio 2/2] vb. olarak etiketlenir.
Dosya eki çıkarma davranışı
- Çıkarılan dosya metni, medya istemine eklenmeden önce güvenilmeyen harici içerik olarak sarmalanır.
- Enjekte edilen blok,
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>gibi açık sınır işaretleyicileri kullanır ve birSource: Externalmeta veri satırı içerir. - Bu ek çıkarma yolu, medya isteminin gereksiz yere büyümesini önlemek için uzun
SECURITY NOTICE:başlığını özellikle dışarıda bırakır; sınır işaretleyicileri ve meta veriler yine de kalır. - Bir dosyada çıkarılabilir metin yoksa OpenClaw
[No extractable text]enjekte eder. - Bir PDF bu yolda işlenmiş sayfa görüntülerine geri düşerse, medya istemi
[PDF content rendered to images; images not forwarded to model]yer tutucusunu korur; çünkü bu ek çıkarma adımı işlenmiş PDF görüntülerini değil, metin bloklarını iletir.
Yapılandırma örnekleri
Paylaşılan modeller + geçersiz kılmalar
{
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,
},
},
},
}
Yalnızca ses + 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.",
],
},
],
},
},
},
}
Yalnızca görüntü
{
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.",
],
},
],
},
},
},
}
Çok modlu tek giriş
{
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"],
},
],
},
},
},
}
Durum çıktısı
Medya anlama çalıştığında /status kısa bir özet satırı içerir:
📎 Media: image ok (openai/gpt-5.4) · audio skipped (maxBytes)
Bu, yetenek başına sonuçları ve geçerliyse seçilen sağlayıcıyı/modeli gösterir.
Notlar
- Anlama en iyi çaba esasına göredir. Hatalar yanıtları engellemez.
- Anlama devre dışı olduğunda bile ekler yine de modellere geçirilir.
- Anlamanın nerede çalışacağını sınırlamak için
scopekullanın (ör. yalnızca DM'ler).