> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 安靜預覽的矩陣推送規則

當 `channels.matrix.streaming` 為 `"quiet"` 時，OpenClaw 會透過就地編輯單一預覽事件來串流回覆。預覽會以不發出通知的 `m.notice` 事件傳送，而最終編輯會標記為 `content["com.openclaw.finalized_preview"] = true`。只有在每位使用者的推播規則符合該標記時，Matrix 用戶端才會對該最終編輯發出通知。本頁適用於自行託管 Matrix，並想為每個接收者帳號安裝該規則的操作人員。

`streaming: "progress"` 會透過相同路徑完成其草稿，因此同一規則也會對進度模式的最終編輯觸發。

如果你只想使用標準 Matrix 通知行為，請使用 `streaming: "partial"` 或關閉串流。請參閱 [Matrix 頻道設定](/zh-TW/channels/matrix#streaming-previews)。

## 先決條件

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

## 步驟

<Steps>
  <Step title="設定安靜預覽">
    ```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
    {
      channels: {
        matrix: {
          streaming: "quiet",
        },
      },
    }
    ```
  </Step>

  <Step title="取得接收者的存取權杖">
    盡可能重用既有的用戶端工作階段權杖。若要簽發新的權杖：

    ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
    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"
      }'
    ```
  </Step>

  <Step title="驗證推播器存在">
    ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
    curl -sS \
      -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
      "https://matrix.example.org/_matrix/client/v3/pushers"
    ```

    如果沒有傳回任何推播器，請先修復此帳號的一般 Matrix 推播傳遞，再繼續。
  </Step>

  <Step title="安裝覆寫推播規則">
    安裝一條規則，將最終預覽標記加上機器人 MXID 作為傳送者進行比對：

    ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
    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
  </Step>

  <Step title="驗證">
    ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
    curl -sS \
      -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
      "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname"
    ```

    接著測試串流回覆。在安靜模式中，聊天室會顯示安靜的草稿預覽，並在區塊或回合完成後通知一次。
  </Step>
</Steps>

若要稍後移除規則，請使用接收者的權杖對相同規則 URL 執行 `DELETE`。

## 多機器人注意事項

推播規則以 `ruleId` 為鍵：對相同 ID 重新執行 `PUT` 會更新單一規則。若有多個 OpenClaw 機器人通知同一位接收者，請為每個機器人建立一條規則，並使用不同的傳送者比對。

新的使用者定義 `override` 規則會插入在伺服器預設抑制規則之前，因此不需要額外的排序參數。此規則只會影響可就地完成的純文字預覽編輯；媒體回覆、過期預覽後援，以及會啟用 Matrix 提及的最終文字，則會改以一般通知訊息傳遞。

## 家伺服器注意事項

<AccordionGroup>
  <Accordion title="Synapse">
    不需要特殊的 `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。
  </Accordion>

  <Accordion title="Tuwunel">
    流程與 Synapse 相同；最終預覽標記不需要 Tuwunel 專用設定。

    如果使用者在另一台裝置上處於使用中狀態時通知消失，請檢查是否已啟用 `suppress_push_when_active`。Tuwunel 在 1.4.2（2025 年 9 月）加入此選項，且它可能會在某台裝置處於使用中時，刻意抑制對其他裝置的推播。
  </Accordion>
</AccordionGroup>

## 相關

* [Matrix 頻道設定](/zh-TW/channels/matrix)
* [串流概念](/zh-TW/concepts/streaming)
