跳转到内容

Rich output protocol

助手输出可以携带一小组传递/渲染指令:

  • 用于附件交付的 mediaUrl / mediaUrls 结构化字段
  • 用于音频提示的 [[audio_as_voice]]
  • 用于回复元数据的 [[reply_to_current]] / [[reply_to:<id>]]
  • 用于 Control UI 富渲染的 [embed ...]

远程媒体附件必须是公共 https: URL。纯 http:、 loopback、link-local、private 和 internal 主机名作为附件 指令会被忽略;服务端媒体获取器仍会强制执行其自己的网络防护。

本地媒体附件可以使用绝对路径、工作区相对路径或 主目录相对 ~/ 路径。在交付之前,它们仍需通过代理文件读取策略和 媒体类型检查。

默认情况下,纯 Markdown 图片语法保持为文本。有意将 Markdown 图片回复映射为媒体附件的渠道需在其出站 适配器中选择加入;Telegram 这样做是为了使 ![alt](url) 仍能成为媒体回复。

这些指令是独立的。结构化媒体字段和回复/语音标签是 交付元数据;[embed ...] 是仅限 Web 的富渲染路径。

启用分块流式传输时,媒体必须携带在结构化负载 字段上。如果同一媒体 URL 在流式块中发送并在 最终助手负载中重复出现,OpenClaw 将只投递一次附件,并从最终负载中 删除重复项。

[embed ...] 是 Control UI 唯一面向代理的富渲染语法。

自闭合示例:

[embed ref="cv_123" title="Status" /]

规则:

  • [view ...] 对于新的输出不再有效。
  • 嵌入短代码仅在助手消息表面渲染。
  • 仅渲染基于 URL 的嵌入。请使用 ref="..."url="..."
  • 块形式的内联 HTML 嵌入短代码不会被渲染。
  • Web UI 会从可见文本中移除短代码,并以内联方式渲染嵌入内容。
  • 结构化媒体不是嵌入别名,不应用于富媒体嵌入渲染。

规范化/存储的助手内容块是一个结构化的 canvas 项:

{
"type": "canvas",
"preview": {
"kind": "canvas",
"surface": "assistant_message",
"render": "url",
"viewId": "cv_123",
"url": "/__openclaw__/canvas/documents/cv_123/index.html",
"title": "Status",
"preferredHeight": 320
}
}

存储/渲染的富模块直接使用此 canvas 形状。present_view 不被识别。