tools.media 配置、回退顺序和回复管线集成。
工作原理
1
收集附件
收集有序的入站媒体信息(
path、url、contentType 和 kind)。2
按能力选择
对于每项已启用的能力(图像/音频/视频),根据
attachments 策略选择附件(默认:仅选择第一个附件)。3
选择模型
选择第一个符合条件的模型条目(大小、能力和身份验证均可用)。
4
失败时回退
如果模型出错、超时或媒体超过
maxBytes,则尝试下一个条目。5
成功时应用
Body 将成为 [Image]、[Audio] 或 [Video] 块。音频还会设置 {{Transcript}};存在说明文字时,命令解析会使用说明文字,否则使用转录文本。说明文字会在块内保留为 User text:。配置
tools.media 包含一个带能力标签的模型列表,以及少量按能力设置的控制项:
image/audio/video)设置的键:
提示词、限制、语言提示、请求覆盖项和提供商选项既可设为能力默认值,也可在各个
tools.media.models[] 条目中覆盖。未配置明确模型时,能力默认值也适用于自动检测到的提供商。
模型条目
每个models[] 条目都是提供商条目(默认)或 CLI 条目:
- 提供商条目
- CLI 条目
提供商凭据
提供商媒体理解使用与普通模型调用相同的身份验证解析顺序:身份验证配置文件、环境变量,然后是models.providers.<providerId>.apiKey。tools.media.models[] 条目不接受内联的 apiKey 字段。
规则和行为
- 超过
maxBytes的媒体会跳过该模型并尝试下一个模型。 - 小于 1024 字节的音频文件会被视为空文件或损坏文件,并在转录前跳过;智能体会收到确定性的占位转录文本。
- 如果当前主图像模型原生支持视觉能力,OpenClaw 会跳过
[Image]摘要块,直接将原始图像传入模型。MiniMax 是一个例外:minimax、minimax-cn、minimax-portal和minimax-portal-cn始终通过插件所有的MiniMax-VL-01媒体提供商路由图像理解,即使旧版 MiniMax M2.x 聊天元数据声称支持图像输入(只有MiniMax-M3及更高版本才被视为原生支持视觉能力)。 - 如果 Gateway 网关/WebChat 主模型仅支持文本,图像附件会保留为已卸载的
media://inbound/*引用,以便图像/PDF 工具或已配置的图像模型仍可检查它们,而不会丢失附件。 - 明确设置的
openclaw infer image describe --file <path> --model <provider/model>(别名:openclaw capability image describe)会直接运行该支持图像的提供商/模型,包括ollama/qwen2.5vl:7b等 Ollama 引用,前提是在models.providers.ollama.models[]下配置了匹配且支持图像的模型。 - 如果
<capability>.enabled不是false,但未配置模型,则当当前回复模型的提供商支持相应能力时,OpenClaw 会尝试使用该模型。
自动检测(默认)
当tools.media.<capability>.enabled 不是 false 且未配置模型时,OpenClaw 会按以下顺序尝试,并在遇到第一个可用选项时停止:
1
已配置的图像模型(仅限图像)
agents.defaults.imageModel 主引用/回退引用,但当前回复模型已原生支持视觉能力时除外。优先选择 provider/model 引用;只有在匹配结果唯一时,才会根据已配置的支持图像的提供商模型条目补全裸引用。2
当前回复模型
当前回复模型,前提是其提供商支持相应能力。
3
提供商身份验证(仅限音频,位于本地 CLI 之前)
支持音频的已配置
models.providers.* 条目会在本地 CLI 之前尝试。内置提供商优先级顺序(优先级相同时按提供商 ID 的字母顺序决定):Groq/OpenAI → xAI → Deepgram → OpenRouter → Google/SenseAudio → Deepinfra/ElevenLabs → Mistral。4
本地 CLI(仅限音频)
已就绪的本地二进制文件会组成有序回退列表:
- 仅当当前进程中先前的模型调用观察到 Metal 或 CUDA 后,才首先使用
whisper-cli - 默认使用 CPU 的
sherpa-onnx-offline(需要带有tokens.txt/encoder.onnx/decoder.onnx/joiner.onnx的SHERPA_ONNX_MODEL_DIR) - 当加速仅为构建能力或尚未观察到时,使用
whisper-cli - 在 Apple Silicon 上使用
parakeet-mlx(支持 MLX,但尚未观察到设备使用情况) whisper(Python CLI;默认使用turbo模型,并自动下载)
5
提供商身份验证(图像/视频)
支持相应能力的已配置
models.providers.* 条目会在内置回退顺序之前尝试。仅用于图像配置且拥有支持图像模型的提供商会自动注册用于媒体理解,即使它们不是内置供应商插件。内置提供商优先级顺序(优先级相同时按提供商 ID 的字母顺序决定):- 图像:Anthropic/OpenAI → Google → MiniMax → Deepinfra → MiniMax Portal → Z.AI
- 视频:Google → Qwen → Moonshot
6
Antigravity CLI(仅限图像/视频)
使用第一个已安装的
agy 或 antigravity 二进制文件(可通过 OPENCLAW_ANTIGRAVITY_CLI 覆盖),并将其沙箱隔离范围限制在媒体所在目录。在 macOS/Linux/Windows 上,二进制文件检测均为尽力而为;请确保 CLI 位于
PATH 中(会展开 ~),或使用完整命令路径设置明确的 CLI 模型条目。代理支持(音频/视频提供商调用)
基于提供商的音频和视频理解遵循标准的出站代理环境变量,包括NO_PROXY/no_proxy 绕过规则:HTTPS_PROXY、HTTP_PROXY、ALL_PROXY、https_proxy、http_proxy、all_proxy。小写变量的优先级高于大写变量。如果均未设置,媒体理解会直接访问外部网络;如果代理值格式错误,OpenClaw 会记录警告并回退到直接获取。图像理解不经过此代理路径。
能力
在models[] 条目上设置 capabilities,可将其限制为特定媒体类型。对于共享列表,OpenClaw 会按内置提供商推断默认值:
对于 CLI 条目,请显式设置
capabilities,以避免意外匹配;如果省略,该条目将适用于它出现的每个能力列表。
提供商支持矩阵
MiniMax 说明:
minimax、minimax-cn、minimax-portal 和 minimax-portal-cn 的图像理解始终由插件自有的 MiniMax-VL-01 媒体提供商提供,即使旧版 MiniMax M2.x 聊天元数据声称支持图像输入。模型选择指南
- 当质量和安全性至关重要时,请为每种媒体能力优先选择最强的当前一代模型。
- 对于处理不受信任输入且启用了工具的智能体,请避免使用较旧或较弱的媒体模型。
- 为确保可用性,请为每种能力至少保留一个后备模型(高质量模型 + 更快或更便宜的模型)。
- 当提供商 API 不可用时,CLI 后备方案(
whisper-cli、whisper、gemini)可提供帮助。 - 已知的文件输出模式具有权威性:推断出的转录文件为空或缺失时,不会生成转录,而不会回退到 CLI 进度输出。
parakeet-mlx:将--output-format txt(或all)与--output-dir和默认的{filename}输出模板配合使用。上游的PARAKEET_OUTPUT_FORMAT和PARAKEET_OUTPUT_TEMPLATE环境变量也会生效。OpenClaw 读取<output-dir>/<media-basename>.txt;默认的srt格式、其他格式和自定义输出模板仍使用 stdout。
附件策略
每种能力的attachments 控制处理哪些附件:
"first" | "all"
默认值:"first"
仅处理第一个选中的附件,或处理所有附件。
number
默认值:"1"
限制处理的附件数量。
"first" | "last" | "path" | "url"
候选附件之间的选择偏好。
mode: "all" 时,输出会标记为 [Image 1/2]、[Audio 2/2] 等。
文件附件提取
- 提取的文件文本在附加到媒体提示词之前,会包装为不受信任的外部内容,并使用
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>等边界标记以及一行Source: External元数据。 - 此路径有意省略较长的
SECURITY NOTICE:横幅,以保持媒体提示词简短;边界标记和元数据仍然适用。 - 没有可提取文本的文件会获得
[No extractable text]。 - 如果 PDF 回退到渲染后的页面图像,OpenClaw 会将这些图像转发给支持视觉能力的回复模型,并在文件块中保留占位符
[PDF content rendered to images]。
配置示例
- 共享模型 + 覆盖
- 仅音频 + 视频
- 仅图像
- 单个多模态条目
状态输出
运行媒体理解时,/status 会包含一行按能力汇总的信息:
openclaw capability audio providers。本地行会将本地后备优胜项与全局提供商选择、就绪状态以及独立的可用/请求/检测后端字段分别显示。同一本地选择也可作为信息性 Doctor 发现获取:
注意事项
- 理解以尽力而为为原则。错误不会阻止回复。
- 即使禁用了理解功能,附件仍会传递给模型。
- 使用
scope限制运行理解功能的位置(例如,仅限私信)。