Skip to main content
OpenClaw 可以在回复流程运行之前对入站媒体(图像/音频/视频)进行摘要,因此命令解析和路由可以基于简短文本,而不是原始字节。理解功能会自动检测本地工具或提供方密钥,或者你也可以配置显式模型。原始媒体始终会像往常一样传递给模型;当理解失败或被禁用时,回复流程会保持不变地继续。 供应商插件会注册能力元数据(哪个提供方支持哪种媒体类型、默认模型、优先级)。OpenClaw 核心负责共享的 tools.media 配置、回退顺序以及回复流水线集成。

工作原理

1

收集附件

收集有序的传入媒体信息(pathurlcontentTypekind)。
2

按能力选择

对于每个已启用的能力(图像/音频/视频),根据 attachments 策略选择附件(默认:仅第一个附件)。
3

选择模型

选取第一个符合条件的模型条目(大小 + 能力 + 认证可用)。
4

失败时回退

如果某个模型报错、超时,或者媒体超过 maxBytes,则尝试下一个条目。
5

成功后应用

Body 会变为一个 [Image][Audio][Video] 块。音频还会设置 {{Transcript}};命令解析在存在字幕文本时使用字幕文本,否则使用转写内容。字幕会作为块内的 User text: 保留。

配置

tools.media 持有一个按能力标记的模型列表,以及少量按能力控制项:
按能力(image/audio/video)的键: 提示词、限制、语言提示、请求覆盖项和提供方选项可以作为能力默认值设置,也可以在单独的 tools.media.models[] 条目中覆盖。即使未显式配置模型,能力默认值也会覆盖自动检测到的提供方。

模型条目

每个 models[] 条目都是一个 提供方 条目(默认)或一个 CLI 条目:

提供方凭证

提供方媒体理解使用与普通模型调用相同的认证解析方式:认证配置文件、环境变量,然后是 models.providers.<providerId>.apiKeytools.media.models[] 条目不接受内联的 apiKey 字段。
有关配置文件、环境变量和自定义基础 URL,请参见 工具和自定义提供方

规则和行为

  • 超过 maxBytes 的媒体会跳过该模型并尝试下一个。
  • 小于 1024 字节的音频文件会被视为空/损坏,并在转录前跳过;代理会获得一个确定性的占位转录结果。
  • 如果当前主图像模型已原生支持视觉,OpenClaw 会跳过 [Image] 摘要块,并将原始图像直接传给模型。MiniMax 是个例外:minimaxminimax-cnminimax-portalminimax-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)会直接运行该支持图像的 provider/model,包括诸如 ollama/qwen2.5vl:7b 之类的 Ollama 引用,只要在 models.providers.ollama.models[] 下配置了匹配的支持图像模型。
  • 如果 <capability>.enabled 不为 false 但未配置任何模型,OpenClaw 会在活动回复模型的 provider 支持该能力时尝试使用该模型。

自动检测(默认)

tools.media.<capability>.enabled 不为 false 且未配置任何模型时,OpenClaw 会按以下顺序尝试,并在第一个可用选项处停止:
1

已配置的图像模型(仅图像)

agents.defaults.imageModel 的主/备用引用,除非当前活动回复模型已经原生支持视觉。优先使用 provider/model 引用;裸引用仅在匹配到已配置的、具备图像能力的 provider 模型条目且匹配唯一时才会被限定。
2

活动回复模型

当前活动回复模型,在其 provider 支持该能力时。
3

Provider auth(仅音频,在本地 CLI 之前)

先尝试已配置的、支持音频的 models.providers.* 条目,再尝试本地 CLI。内置 provider 优先级顺序(并列时按 provider id 字母顺序打破平局):Groq/OpenAI → xAI → Deepgram → OpenRouter → Google/SenseAudio → Deepinfra/ElevenLabs → Mistral。
4

本地 CLI(仅音频)

已就绪的本地二进制文件会成为一个有序的后备列表:
  • whisper-cli 仅在当前进程中较早的一次模型调用观察到 Metal 或 CUDA 后才会优先使用
  • CPU 默认的 sherpa-onnx-offline(需要 SHERPA_ONNX_MODEL_DIR,其中包含 tokens.txtencoder.onnxdecoder.onnxjoiner.onnx
  • 当加速仅表现为具备构建能力或尚未被观察到时使用 whisper-cli
  • Apple Silicon 上的 parakeet-mlx(具备 MLX 能力,但设备使用尚未被观察到)
  • whisper(Python CLI;默认使用 turbo 模型,并会自动下载)
后端能力检查会被缓存且不会加载模型。构建能力、请求的后端标志,以及从真实调用中观察到的后端,彼此保持独立。自动检测到的 whisper.cpp 会保持模型运行日志开启,以便记录上游选择的后端行。显式 CLI 条目会保留其配置顺序、后端标志和输出标志。
5

Provider auth(图像/视频)

先尝试已配置的、支持该能力的 models.providers.* 条目,再尝试内置回退顺序。仅图像的配置 provider 如果有一个支持图像的模型,即使它不是内置厂商插件,也会自动注册用于媒体理解。内置 provider 优先级顺序(并列时按 provider id 字母顺序打破平局):
  • 图像:Anthropic/OpenAI → Google → MiniMax → Deepinfra → MiniMax Portal → Z.AI
  • 视频:Google → Qwen → Moonshot
要为某个能力禁用自动检测:
二进制检测在 macOS/Linux/Windows 上尽力而为;请确保该 CLI 在 PATH 中(会展开 ~),或者设置一个带完整命令路径的显式 CLI 模型条目。

代理支持(音频/视频 provider 调用)

基于 provider 的音频视频理解会遵守标准的出站代理环境变量,包括 NO_PROXYno_proxy 绕过规则:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy。小写变量优先于大写变量。如果未设置这些变量,媒体理解将直接出站;如果代理值格式错误,OpenClaw 会记录警告并回退到直接获取。图像理解不会经过此代理路径。

功能

models[] 条目上设置 capabilities,可将其限制为特定的媒体类型。对于共享列表,OpenClaw 会为每个内置提供商推断默认值: 对于 CLI 条目,请显式设置 capabilities 以避免意外匹配;如果省略,该条目在其出现的每个功能列表中都符合条件。

提供方支持矩阵

MiniMax 注minimaxminimax-cnminimax-portalminimax-portal-cn 的图像理解始终来自插件拥有的 MiniMax-VL-01 媒体提供方,即使旧版 MiniMax M2.x 聊天元数据声称支持图像输入。

模型选择指南

  • 当质量和安全性至关重要时,请针对每种媒体能力,优先选择当前一代中最强大的模型。
  • 对于处理不受信任输入的智能代理工具,避免使用较旧或较弱的媒体模型。
  • 为每种能力至少保留一个备用选项,以确保可用性(一个高质量模型 + 一个更快速/更便宜的模型)。
  • 当提供商 API 不可用时,CLI 备用方案(whisper-cliwhispergemini)会派上用场。
  • 已知的文件输出模式具有权威性:推断出的转录文件为空或缺失时,不会回退到 CLI 进度输出,而是不会生成任何转录内容。
  • parakeet-mlx:将 --output-format txt(或 all)与 --output-dir 以及默认的 {filename} 输出模板结合使用。上游的 PARAKEET_OUTPUT_FORMATPARAKEET_OUTPUT_TEMPLATE 环境变量同样会被遵循。OpenClaw 会读取 <output-dir>/<media-basename>.txt;默认的 srt 格式、其他格式以及自定义输出模板仍会使用 stdout。

附件策略

按能力配置的 attachments 控制会处理哪些附件:
"first" | "all"
default:"first"
仅处理第一个选中的附件,或处理全部附件。
number
default:"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: 横幅,以缩短媒体提示词;边界标记和元数据仍然适用。
  • 仅当回复运行时确认能够读取主机本地路径时(目前为非沙箱嵌入式会话),保存在本地磁盘上的不受支持文件才会获得自助处理指导。路径会作为不受信任的外部元数据加以围栏;受信任的指导会告知代理使用自身工具提取文件,现代 Office 文件还会获得解压提示。通用 ACP 后端、仅 URL 附件和沙箱会话会保留普通的 [Unsupported document format: <mime>. PDF and plain-text attachments can be read.] 标记。
  • 被操作员配置的允许列表拒绝的文件绝不会包含自助处理路径;策略拒绝不得引导代理绕过操作员的决定。
  • 被操作员配置的 allowedMimes 列表拒绝的文件会改为获得 [Attachment type not allowed: <mime>],这样提示词就不会声称支持当前配置所禁用的类型。
  • 读取失败会获得 [Attachment could not be read]
  • 当 URL 文件源被禁用时,URL 附件会获得 [Attachment skipped: URL file sources are disabled]
  • 没有可提取文本的文件会获得 [No extractable text]
  • 每条消息最多渲染五个跳过标记;后续被跳过的附件会合并为一个与原因无关的 [<n> more attachments skipped] 摘要,从而避免垃圾附件无限增加提示词。文件标记以及图像、音频或视频标记共享这五个标记的额度。
  • 如果 PDF 回退为渲染后的页面图像,OpenClaw 会将这些图像转发给具备视觉能力的回复模型,并在文件块中保留占位符 [PDF content rendered to images]
  • 图像、音频和视频决策会为每个附件候选记录一个已关闭的处置结果:已处理、已交给原生视觉、达到附件限制后未选中、已禁用、缺少模型、被聊天范围拒绝或失败。
  • 未处理的媒体会获得一个有界的模型可见标记。交给原生视觉的图像,以及由其他 harness 负责的媒体回合,不会添加标记。

配置示例

状态输出

当媒体理解运行时,/status 会包含一行按能力划分的摘要:
对于预检清单,请运行 openclaw capability audio providers。本地行会单独显示本地回退获胜者,以及全局提供方选择、就绪状态和分别的 capable/requested/observed 后端字段。相同的本地选择也可作为信息性的 doctor 发现项获取:

说明

  • 功能理解尽力而为。错误不会阻止回复。
  • 即使禁用功能理解,附件仍会传递给模型。
  • 使用 scope 来限制功能理解运行的范围(例如,仅限私信)。

相关内容