Technical reference

豐富輸出協定

Assistant 輸出可攜帶一小組傳遞/渲染指示:

  • MEDIA: 用於附件傳遞
  • [[audio_as_voice]] 用於音訊呈現提示
  • [[reply_to_current]] / [[reply_to:<id>]] 用於回覆中繼資料
  • [embed ...] 用於 Control UI 豐富渲染

遠端 MEDIA: 附件必須是公開的 https: URL。純 http:、 loopback、link-local、私有和內部主機名稱都會作為附件 指示被忽略;伺服器端媒體擷取器仍會執行自己的網路防護。

本機 MEDIA: 附件可以使用絕對路徑、相對於工作區的路徑,或 相對於家目錄的 ~/ 路徑。在傳遞前,它們仍會通過代理程式的檔案讀取政策和 媒體類型檢查。

純 Markdown 圖片語法預設會保留為文字。刻意將 Markdown 圖片回覆 對應到媒體附件的 Channel,會在其輸出 配接器選擇加入;Telegram 會這麼做,因此 ![alt](url) 仍可變成媒體回覆。

這些指示彼此獨立。MEDIA: 和回覆/語音標籤仍是傳遞中繼資料;[embed ...] 是僅限網頁的豐富渲染路徑。 受信任工具結果媒體會在傳遞前使用相同的 MEDIA: / [[audio_as_voice]] 剖析器,因此文字工具輸出仍可將音訊附件標記為語音備註。

啟用區塊串流時,MEDIA: 仍是一個回合的單次傳遞中繼資料。 如果相同媒體 URL 在串流區塊中傳送,並在最終 assistant payload 中重複,OpenClaw 會傳遞附件一次,並從最終 payload 中移除重複項。

[embed ...]

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

自閉合範例:

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

規則:

  • [view ...] 不再適用於新的輸出。
  • Embed 短碼只會在 assistant 訊息介面中渲染。
  • 只會渲染由 URL 支援的 embed。使用 ref="..."url="..."
  • 區塊形式的行內 HTML embed 短碼不會被渲染。
  • 網頁 UI 會從可見文字中移除短碼,並行內渲染 embed。
  • MEDIA: 不是 embed 別名,不應用於豐富 embed 渲染。

已儲存的渲染形狀

正規化/已儲存的 assistant 內容區塊是結構化的 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 不會被識別。

相關