Mainstream messaging
Matrix 呈現中繼資料
OpenClaw 可將標準化的 MessagePresentation 中繼資料附加到對外傳送的 Matrix m.room.message 事件,位置在 com.openclaw.presentation 之下。
一般 Matrix 用戶端會繼續呈現純文字 body。支援 OpenClaw 的用戶端可以讀取結構化中繼資料,並呈現原生 UI,例如按鈕、選擇器、上下文列和分隔線。
事件內容
中繼資料會儲存在 Matrix 事件內容中:
{
"msgtype": "m.text",
"body": "Select model\n\n- DeepSeek: /model deepseek/deepseek-chat",
"com.openclaw.presentation": {
"version": 1,
"type": "message.presentation",
"title": "Select model",
"tone": "info",
"blocks": [
{
"type": "select",
"placeholder": "Choose model",
"options": [
{
"label": "DeepSeek",
"value": "/model deepseek/deepseek-chat"
}
]
}
]
}
}
version 是 Matrix 呈現中繼資料結構描述版本。type 是提供給支援 OpenClaw 的用戶端使用的穩定判別值。用戶端應忽略未知的 type 值、無法安全解讀的未知版本,以及未知的區塊類型。
後援行為
OpenClaw 一律會將可讀的純文字後援內容呈現到 body 中。結構化中繼資料是附加資訊,不得作為基本 Matrix 互通性的必要條件。
不支援的用戶端應繼續顯示後援文字。支援 OpenClaw 的用戶端可以偏好使用結構化中繼資料進行顯示,同時保留後援文字以供複製、搜尋、通知和無障礙使用。
支援的區塊
Matrix 對外傳送配接器宣告支援:
buttonsselectcontextdivider
用戶端應將這些區塊視為盡力而為的呈現提示。遇到未知欄位和未知區塊類型時,應予以忽略,而不是導致整則訊息無法呈現。
互動
此中繼資料不會新增 Matrix 回呼語意。按鈕和選擇選項的值是後援互動酬載,通常是斜線命令或文字命令。想支援互動的 Matrix 用戶端,可以將所選值作為一般訊息傳回聊天室。
例如,值為 /model deepseek/deepseek-chat 的按鈕,可以透過在同一個聊天室中傳送該值作為加密的 Matrix 文字訊息來處理。
與核准中繼資料的關係
com.openclaw.presentation 用於一般豐富訊息呈現。
核准提示會使用專用的 com.openclaw.approval 中繼資料,因為核准承載安全敏感的狀態、決策,以及執行/Plugin 詳細資料。如果同一個事件上同時存在兩個中繼資料鍵,用戶端應偏好使用專用的核准呈現器。
媒體訊息
當回覆包含多個媒體 URL 時,OpenClaw 會針對每個媒體 URL 傳送一個 Matrix 事件。呈現中繼資料只會附加到第一個媒體事件,讓用戶端擁有一個穩定的結構化酬載,並避免重複呈現器。
請讓呈現中繼資料保持精簡。大型使用者可見文字應留在 body 中,並使用一般 Matrix 文字分塊路徑。