Skip to content

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 ...] 僅用於網頁豐富渲染路徑。

啟用區塊串流時,媒體必須透過結構化 payload 欄位傳送。如果相同的媒體 URL 在串流區塊中發送,並在最終 助理 payload 中重複出現,OpenClaw 會傳遞附件一次並從最終 payload 中移除重複項目。

[embed ...] 是 Control UI 唯一面向代理程式的豐富渲染語法。

自閉範例:

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

規則:

  • [view ...] 不再適用於新的輸出。
  • 嵌入短代碼僅在助手訊息表面渲染。
  • 僅渲染基於 URL 的嵌入內容。請使用 ref="..."url="..."
  • 區塊形式的行內 HTML 嵌入短代碼不會被渲染。
  • 網頁 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 不被識別。