Skip to content

OpenClaw 智能体输出中包含一组控制指令,用于附加媒体、标记语音回复、指定回复目标以及在控制 UI 中呈现富内容。MEDIA: 指令附带公开 https: URL 或本地路径(绝对路径、工作区相对路径、~/ 路径)来发送附件;[[audio_as_voice]] 将音频标记为语音消息,[[reply_to_current]]/[[reply_to:<id>]] 设置回复引用。[embed ...] 是控制台独有的富渲染语法,支持 ref/url 短代码。块流模式下同一 URL 只投递一次,最终载荷中重复的 MEDIA: 会被自动剥离。

OpenClaw 富输出协议:embed、MEDIA 和语音提示配置

MEDIA: 附件投递

智能体输出中的 MEDIA: 指令用于附加文件。

  • 远程附件:必须是公开 https: URL。http:、loopback(127.0.0.1)、链路本地地址、私有地址和内部主机名会被忽略,不作为附件投递。服务端媒体抓取器仍会执行自身的网络防护。
  • 本地附件:支持绝对路径、工作区相对路径或 ~/ 开头的主目录相对路径。投递前会经过智能体文件读取策略和媒体类型检查。

与 Markdown 图片语法的关系

普通 Markdown 图片语法 ![alt](url) 默认只显示为文本。如果某个渠道的出站适配器选择将 Markdown 图片回复映射为媒体附件(如 Telegram),则会生效;这属于渠道自身的行为,非协议强制。

块流模式下的去重

启用块流时,MEDIA: 属于单次投递元数据。如果同一媒体 URL 在流式块中出现后又在最终智能体载荷中重复出现,OpenClaw 只投递附件一次,并从最终载荷中剥离重复的 MEDIA:

[[audio_as_voice]] 语音提示

将音频附件标记为语音消息。智能体可以在文本输出中插入 [[audio_as_voice]],配合 MEDIA: 指令或工具结果中标记的音频,使接收方以语音消息形式播放。

[[reply_to_current]] / [[reply_to:<id>]] 回复目标

  • [[reply_to_current]]:回复当前对话中的上一条用户消息。
  • [[reply_to:&lt;conversation_id&gt;]]:回复指定会话 ID 的消息。

这些指令是元数据,不影响呈现内容。

[embed ...] 控制台富渲染

[embed ...] 是控制 UI 独有的智能体富渲染语法。[view ...] 已不再有效,不应在新输出中使用。

基本语法

自闭合示例:

text
[embed ref="cv_123" title="Status" /]
  • 必须使用 ref="..."url="..." 指定渲染来源,仅支持 URL 后端加载的嵌入。
  • 块形式的行内 HTML 嵌入短代码不会被渲染。
  • 控制台在显示时会将短代码从可见文本中去除,并在该位置渲染嵌入内容。
  • 不要使用 MEDIA: 替代 [embed ...] 实现富渲染。

存储的渲染格式

经过规范化和存储的智能体富内容块采用 canvas 结构:

json
{
  "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 不被识别。

相关文档

常见问题

我把 MEDIA: 放在输出里但附件没发送,可能是什么原因?

  • 远程 URL 不是 https: 或者使用了私有/内部地址,会被忽略。
  • 本地路径未通过智能体文件读取策略或媒体类型检查。
  • 块流模式下该 URL 已在之前投递过,重复的 MEDIA: 会被自动剥离。

如何在控制 UI 里让智能体显示一个卡片或自定义界面?

使用 [embed ...] 短代码,必须指定 refurl,例如 [embed ref="cv_123" title="Status" /]。该短代码只在控制台智能体消息区域渲染,且仅支持 URL 后端加载的嵌入。[view ...] 已失效。

[[audio_as_voice]] 和普通音频附件有什么区别?

[[audio_as_voice]] 是一个提示标记,渠道收到后会尝试将关联的音频以语音消息形式播放,而非普通媒体附件。它不会改变音频本身,仅影响接收端的呈现行为。