跳轉到主要內容
channels.matrix.streaming"quiet" 時,OpenClaw 會透過就地編輯單一預覽事件來串流回覆。預覽會以不發出通知的 m.notice 事件傳送,而最終編輯會標記為 content["com.openclaw.finalized_preview"] = true。只有在每位使用者的推播規則符合該標記時,Matrix 用戶端才會對該最終編輯發出通知。本頁適用於自行託管 Matrix,並想為每個接收者帳號安裝該規則的操作人員。 streaming: "progress" 會透過相同路徑完成其草稿,因此同一規則也會對進度模式的最終編輯觸發。 如果你只想使用標準 Matrix 通知行為,請使用 streaming: "partial" 或關閉串流。請參閱 Matrix 頻道設定

先決條件

  • 接收者使用者 = 應接收通知的人
  • 機器人使用者 = 傳送回覆的 OpenClaw Matrix 帳號
  • 下方 API 呼叫請使用接收者使用者的存取權杖
  • 在推播規則中將 sender 與機器人使用者的完整 MXID 比對
  • 接收者帳號必須已經有可正常運作的推播器;只有在一般 Matrix 推播傳遞健康時,安靜預覽規則才會運作

步驟

1

設定安靜預覽

{
  channels: {
    matrix: {
      streaming: "quiet",
    },
  },
}
2

取得接收者的存取權杖

盡可能重用既有的用戶端工作階段權杖。若要簽發新的權杖:
curl -sS -X POST \
  "https://matrix.example.org/_matrix/client/v3/login" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "m.login.password",
    "identifier": { "type": "m.id.user", "user": "@alice:example.org" },
    "password": "REDACTED"
  }'
3

驗證推播器存在

curl -sS \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  "https://matrix.example.org/_matrix/client/v3/pushers"
如果沒有傳回任何推播器,請先修復此帳號的一般 Matrix 推播傳遞,再繼續。
4

安裝覆寫推播規則

安裝一條規則,將最終預覽標記加上機器人 MXID 作為傳送者進行比對:
curl -sS -X PUT \
  "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "conditions": [
      { "kind": "event_match", "key": "type", "pattern": "m.room.message" },
      {
        "kind": "event_property_is",
        "key": "content.m\\.relates_to.rel_type",
        "value": "m.replace"
      },
      {
        "kind": "event_property_is",
        "key": "content.com\\.openclaw\\.finalized_preview",
        "value": true
      },
      { "kind": "event_match", "key": "sender", "pattern": "@bot:example.org" }
    ],
    "actions": [
      "notify",
      { "set_tweak": "sound", "value": "default" },
      { "set_tweak": "highlight", "value": false }
    ]
  }'
執行前請替換:
  • https://matrix.example.org:你的家伺服器基底 URL
  • $USER_ACCESS_TOKEN:接收者使用者的存取權杖
  • openclaw-finalized-preview-botname:每個機器人、每個接收者都唯一的規則 ID(模式:openclaw-finalized-preview-<botname>
  • @bot:example.org:你的 OpenClaw 機器人 MXID,不是接收者的 MXID
5

驗證

curl -sS \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname"
接著測試串流回覆。在安靜模式中,聊天室會顯示安靜的草稿預覽,並在區塊或回合完成後通知一次。
若要稍後移除規則,請使用接收者的權杖對相同規則 URL 執行 DELETE

多機器人注意事項

推播規則以 ruleId 為鍵:對相同 ID 重新執行 PUT 會更新單一規則。若有多個 OpenClaw 機器人通知同一位接收者,請為每個機器人建立一條規則,並使用不同的傳送者比對。 新的使用者定義 override 規則會插入在伺服器預設抑制規則之前,因此不需要額外的排序參數。此規則只會影響可就地完成的純文字預覽編輯;媒體回覆、過期預覽後援,以及會啟用 Matrix 提及的最終文字,則會改以一般通知訊息傳遞。

家伺服器注意事項

不需要特殊的 homeserver.yaml 變更。如果一般 Matrix 通知已經能送達此使用者,上述接收者權杖加上 pushrules 呼叫就是主要設定步驟。如果你在反向代理或 worker 後方執行 Synapse,請確認 /_matrix/client/.../pushrules/ 能正確到達 Synapse。推播傳遞由主程序或 synapse.app.pusher / 已設定的 pusher worker 處理,請確保它們健康。此規則使用 event_property_is 推播規則條件(MSC3758,推播規則 v1.10),該條件已於 2023 年加入 Synapse。較舊的 Synapse 版本會接受 PUT pushrules/... 呼叫,但會默默地永遠無法符合該條件;如果最終預覽編輯沒有收到通知,請升級 Synapse。
流程與 Synapse 相同;最終預覽標記不需要 Tuwunel 專用設定。如果使用者在另一台裝置上處於使用中狀態時通知消失,請檢查是否已啟用 suppress_push_when_active。Tuwunel 在 1.4.2(2025 年 9 月)加入此選項,且它可能會在某台裝置處於使用中時,刻意抑制對其他裝置的推播。

相關