目標
- オプションとして、受信メディアを短いテキストへ事前要約し、ルーティングとコマンド解析を速く・安定させる
- 元のメディアは必ず model へ渡し続ける
- provider API と CLI fallback の両方をサポートする
- error / size / timeout に応じて順序付き fallback を使えるようにする
高レベル挙動
- 受信添付(
MediaPaths、MediaUrls、MediaTypes)を収集する - 有効な capability(image / audio / video)ごとに、policy に従って添付を選ぶ(デフォルトは 最初の 1 件)
- サイズ、capability、認証条件を満たす最初の model entry を選ぶ
- model が失敗するか、メディアが大きすぎる場合は 次の entry へ fallback する
- 成功した場合:
Bodyは[Image]、[Audio]、[Video]ブロックになる- 音声では
{{Transcript}}を設定し、caption があればそれを、なければ transcript を command parsing に使う - caption はブロック内に
User text:として保持される
設定の概要
tools.media は 共有 models と、capability ごとの override をサポートします。
tools.media.models: 共有 model list(capabilitiesで適用先を制御)tools.media.image/tools.media.audio/tools.media.video:- デフォルト値(
prompt、maxChars、maxBytes、timeoutSeconds、language) - provider override(
baseUrl、headers、providerOptions) tools.media.audio.providerOptions.deepgram経由の Deepgram 音声オプション- 音声 transcript echo 制御(
echoTranscript、デフォルトfalse、echoFormat) - capability ごとの 専用
modelslist(共有 model より優先) attachmentspolicy(mode、maxAttachments、prefer)scope(channel / chatType / session key 単位での optional gating)
- デフォルト値(
tools.media.concurrency: capability 実行の最大並列数(デフォルト 2)
model entry
各models[] entry は provider または CLI です。
{{MediaDir}}(メディアファイルを含む directory){{OutputDir}}(この run 用に作られる scratch directory){{OutputBase}}(拡張子なしの scratch file base path)
デフォルトと制限
推奨デフォルト:maxChars: image / video は 500(短く、command-friendly)maxChars: audio は 未設定(制限を指定しない限り全文 transcript)maxBytes:- image: 10MB
- audio: 20MB
- video: 50MB
- メディアが
maxBytesを超える場合、その model はスキップされ、次の model を試します - 1024 バイト未満 の audio file は空または破損として扱い、provider / CLI に渡す前にスキップします
- model の出力が
maxCharsを超えた場合は切り詰めます promptのデフォルトは単純な “Describe the .” にmaxCharsの指示を足したものです(image / video のみ)<capability>.enabled: trueでも model が未設定なら、その capability をサポートする 現在の reply model を試します
media understanding の自動検出(デフォルト)
tools.media.<capability>.enabled が false でなく、かつ model を設定していない場合、OpenClaw は次の順で自動検出し、最初に動作したもの を使います。
- ローカル CLI(audio のみ。インストール済みなら)
sherpa-onnx-offline(encoder / decoder / joiner / tokens を含むSHERPA_ONNX_MODEL_DIRが必要)whisper-cli(whisper-cpp。WHISPER_CPP_MODELまたは同梱 tiny model を使用)whisper(Python CLI。model は自動ダウンロード)
- Gemini CLI(
gemini)をread_many_files付きで使用 - provider key
- audio: OpenAI → Groq → Deepgram → Google
- image: OpenAI → Anthropic → Google → MiniMax
- video: Google
PATH 上にあること(~ は展開されます)を確認するか、完全な command path を持つ明示的な CLI model を設定してください。
proxy 環境のサポート(provider model)
provider ベースの audio と video の media understanding では、provider HTTP call に対して標準的な outbound proxy 環境変数を尊重します。HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
capabilities(任意)
capabilities を設定した場合、その entry は指定した media type に対してのみ実行されます。shared list では、OpenClaw が次のようにデフォルト推定できます。
openai、anthropic、minimax: imagegoogle(Gemini API): image + audio + videogroq: audiodeepgram: audio
capabilities を明示指定 してください。capabilities を省略した場合、その entry は所属する list に対して有効になります。
provider support matrix(OpenClaw integration)
| Capability | Provider integration | Notes |
|---|---|---|
| Image | OpenAI / Anthropic / Google / others via pi-ai | registry 上で image 対応の model なら利用できる |
| Audio | OpenAI, Groq, Deepgram, Google, Mistral | provider 側 transcription(Whisper / Deepgram / Gemini / Voxtral) |
| Video | Google (Gemini API) | provider ベースの video understanding |
model 選定ガイド
- 品質や安全性を重視する場合は、各 media capability で利用可能な最新世代の強い model を優先してください
- 信頼できない入力を扱う tool-enabled agent では、古い / 弱い media model は避けるのが無難です
- 可用性確保のため、capability ごとに最低 1 つは fallback を持たせてください(高品質 model + 高速 / 低コスト model)
- CLI fallback(
whisper-cli、whisper、gemini)は provider API が使えない場合に有効です parakeet-mlx注記:--output-dirを指定すると、出力形式がtxt(または未指定)の場合に OpenClaw は<output-dir>/<media-basename>.txtを読みます。txt以外の形式では stdout parsing にフォールバックします
attachment policy
capability ごとのattachments は、どの添付を処理するかを制御します。
mode:first(デフォルト)またはallmaxAttachments: 処理数の上限(デフォルト 1)prefer:first、last、path、url
mode: "all" の場合、出力には [Image 1/2]、[Audio 2/2] のようなラベルが付きます。
設定例
1) shared models list + overrides
2) audio + video のみ(image off)
3) optional image understanding
4) 単一の multi-modal entry(明示的 capabilities)
status 出力
media understanding が実行されると、/status に短い summary line が表示されます。
注意点
- understanding は best-effort です。error が出ても返信自体は止まりません
- understanding が無効でも、添付は引き続き model へ渡されます
scopeを使って、understanding を実行する場所を絞れます(例: DM のみ)