OpenClaw 可以在回复流水线运行之前汇总入站媒体(图像/音频/视频)。它会自动检测本地工具或提供方密钥是否可用,并且可以被禁用或自定义。如果理解功能关闭,模型仍然会像往常一样接收原始文件/URL。 特定厂商的媒体行为由厂商插件注册,而 OpenClaw 核心负责共享的Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
tools.media 配置、回退顺序以及回复流水线集成。
目标
- 可选:将入站媒体预先提炼为简短文本,以加快路由速度并提升命令解析效果。
- 始终保留原始媒体传递给模型。
- 支持提供方 API和CLI 回退。
- 允许多个模型按顺序回退(错误/大小/超时)。
高层行为
如果理解失败或被禁用,回复流程会继续,并保留原始正文 + 附件。
配置概览
tools.media 支持共享模型以及按能力的覆盖配置:
顶层键
顶层键
tools.media.models:共享模型列表(使用capabilities进行门控)。tools.media.image/tools.media.audio/tools.media.video:- 默认值(
prompt、maxChars、maxBytes、timeoutSeconds、language) - 提供方覆盖(
baseUrl、headers、providerOptions) - 通过
tools.media.audio.providerOptions.deepgram配置 Deepgram 音频选项 - 音频转录回显控制(
echoTranscript,默认false;echoFormat) - 可选的按能力
models列表(优先于共享模型) attachments策略(mode、maxAttachments、prefer)scope(可选:按 channel/chatType/session key 进行门控)
- 默认值(
tools.media.concurrency:最大并发能力运行数(默认 2)。
模型条目
每个models[] 条目可以是提供方或CLI:
- 提供方条目
- CLI 条目
默认值和限制
推荐默认值:maxChars:图像/视频为 500(简短、便于命令使用)maxChars:音频为 不设置(完整转录,除非你设置限制)maxBytes:- 图像:10MB
- 音频:20MB
- 视频:50MB
规则
规则
- 如果媒体超过
maxBytes,该模型会被跳过,并且会尝试下一个模型。 - 小于 1024 字节的音频文件会被视为空/损坏,并在提供方/CLI 转录之前跳过;入站回复上下文会收到一个确定性的占位转录文本,以便代理知道该备注过小。
- 如果模型返回超过
maxChars,输出会被截断。 prompt默认是简单的“Describe the .”,并附带maxChars指引(仅图像/视频)。- 如果当前主图像模型原生支持视觉能力,OpenClaw 会跳过
[Image]汇总块,并将原始图像直接传递给模型。 - 如果 Gateway/WebChat 主模型是纯文本模型,图像附件会作为卸载的
media://inbound/*引用保留,这样图像/PDF 工具或已配置的图像模型仍然可以检查它们,而不会丢失附件。 - 显式的
openclaw infer image describe --model <provider/model>请求不同:它们会直接运行那个具备图像能力的提供方/模型,包括诸如ollama/qwen2.5vl:7b之类的 Ollama 引用。 - 如果
<capability>.enabled: true但未配置模型,OpenClaw 会在其提供方支持该能力时尝试当前回复模型。
自动检测媒体理解(默认)
如果未将tools.media.<capability>.enabled 设置为 false,且你没有配置模型,OpenClaw 会按以下顺序自动检测,并在第一个可用选项处停止:
agents.defaults.imageModel
agents.defaults.imageModel 主/回退引用(仅图像)。
优先使用 provider/model 引用。裸引用仅在与已配置的支持图像能力的提供方模型条目唯一匹配时才会被补全。本地 CLI(仅音频)
本地 CLI(如果已安装):
sherpa-onnx-offline(需要SHERPA_ONNX_MODEL_DIR,其中包含 encoder/decoder/joiner/tokens)whisper-cli(whisper-cpp;使用WHISPER_CPP_MODEL或内置的 tiny 模型)whisper(Python CLI;会自动下载模型)
提供方认证
- 会优先尝试已配置的、支持该能力的
models.providers.*条目,然后再使用内置回退顺序。 - 具有图像能力模型的仅图像配置提供方会自动注册为媒体理解,即使它们不是内置的厂商插件。
- 只要显式选择了 Ollama 图像理解,就可用,例如通过
agents.defaults.imageModel或openclaw infer image describe --model ollama/<vision-model>。
- 音频:OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- 图像:OpenAI → Anthropic → Google → MiniMax → MiniMax Portal → Z.AI
- 视频:Google → Qwen → Moonshot
二进制检测在 macOS/Linux/Windows 上均为尽力而为;请确保 CLI 位于
PATH 中(我们会展开 ~),或者使用完整命令路径显式设置 CLI 模型。代理环境支持(提供方模型)
当启用基于提供方的音频和视频媒体理解时,OpenClaw 会在提供方 HTTP 调用中遵循标准的出站代理环境变量:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
能力(可选)
如果你设置了capabilities,该条目只会针对这些媒体类型运行。对于共享列表,OpenClaw 可以推断默认值:
openai、anthropic、minimax:图像minimax-portal:图像moonshot:图像 + 视频openrouter:图像google(Gemini API):图像 + 音频 + 视频qwen:图像 + 视频mistral:音频zai:图像groq:音频xai:音频deepgram:音频- 任何带有支持图像模型的
models.providers.<id>.models[]目录:图像
capabilities 以避免意外匹配。如果你省略 capabilities,该条目会对其所在的列表具备资格。
提供方支持矩阵(OpenClaw 集成)
| 能力 | 提供方集成 | 备注 |
|---|---|---|
| 图像 | OpenAI、OpenAI Codex OAuth、Codex app-server、OpenRouter、Anthropic、Google、MiniMax、Moonshot、Qwen、Z.AI、配置提供方 | 厂商插件注册图像支持;openai-codex/* 使用 OAuth 提供方管道;codex/* 使用受限的 Codex app-server 回合;MiniMax 和 MiniMax OAuth 都使用 MiniMax-VL-01;具有图像能力的配置提供方会自动注册。 |
| 音频 | OpenAI、Groq、xAI、Deepgram、Google、SenseAudio、ElevenLabs、Mistral | 提供方转录(Whisper/Groq/xAI/Deepgram/Gemini/SenseAudio/Scribe/Voxtral)。 |
| 视频 | Google、Qwen、Moonshot | 通过厂商插件提供视频理解;Qwen 视频理解使用标准 DashScope 端点。 |
MiniMax 说明
minimax和minimax-portal的图像理解来自插件所有的MiniMax-VL-01媒体提供方。- 内置的 MiniMax 文本目录仍然从纯文本开始;显式的
models.providers.minimax条目会生成支持图像能力的 M2.7 聊天引用。
模型选择指南
- 当质量和安全很重要时,优先选择每种媒体能力可用的最强最新一代模型。
- 对于处理不受信任输入的工具型代理,避免使用较旧/较弱的媒体模型。
- 每种能力至少保留一个回退方案以保证可用性(高质量模型 + 更快/更便宜的模型)。
- 当提供方 API 不可用时,CLI 回退(
whisper-cli、whisper、gemini)很有用。 parakeet-mlx注:在使用--output-dir时,OpenClaw 会在输出格式为txt(或未指定)时读取<output-dir>/<media-basename>.txt;非txt格式则回退到 stdout。
附件策略
按能力配置的attachments 控制会处理哪些附件:
处理所选的第一个附件,还是处理全部附件。
限制处理数量。
在候选附件中的选择偏好。
mode: "all" 时,输出会标记为 [Image 1/2]、[Audio 2/2] 等。
文件附件提取行为
文件附件提取行为
- 提取出的文件文本在附加到媒体提示词之前,会被包装为不受信任的外部内容。
- 注入的块使用明确的边界标记,例如
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>,并包含一行Source: External元数据。 - 这种附件提取路径有意省略了较长的
SECURITY NOTICE:横幅,以避免让媒体提示词过大;但边界标记和元数据仍然保留。 - 如果文件没有可提取的文本,OpenClaw 会注入
[No extractable text]。 - 如果在此路径中 PDF 回退为渲染后的页面图片,媒体提示词会保留占位符
[PDF content rendered to images; images not forwarded to model],因为此附件提取步骤传递的是文本块,而不是渲染后的 PDF 图片。
配置示例
- 共享模型 + 覆盖
- 仅音频 + 视频
- 仅图片
- 多模态单条入口
状态输出
当媒体理解运行时,/status 会包含一行简短摘要:
备注
- 理解功能是尽力而为的。错误不会阻止回复。
- 即使禁用了理解功能,附件仍会传递给模型。
- 使用
scope限制理解功能运行的位置(例如仅在私信中)。