OpenClawSkills
GitHub
チャンネル • 5分で読める

Matrix

Matrix の対応状況、機能、設定。

Matrix はオープンな分散型メッセージングプロトコルです。OpenClaw は Matrix ユーザー として任意の homeserver に接続するため、bot 用の Matrix アカウントを準備する必要があります。ログイン後、bot に直接 DM を送信したり、部屋(Matrix の「グループチャット」/rooms)に招待したりできます。Beeper クライアントも使用できますが、通常は E2EE を有効にする必要があります。

ステータス:プラグイン経由でサポート(@vector-im/matrix-bot-sdk)。DM、rooms、threads、メディア、reactions、投票(送信 + 受信 poll-start をテキストに変換)、位置、および crypto サポート付きのエンドツーエンド暗号化(E2EE)をサポートします。

Tutorial.step

プラグインのインストールが必要

Matrix はプラグインとして提供されており、コアインストールにはバンドルされていません。

CLI 経由でインストール(npm registry):

Bash
openclaw plugins install @openclaw/matrix

ローカルインストール(git リポジトリから実行する場合):

Bash
openclaw plugins install ./extensions/matrix

configure/onboarding で Matrix を選択し、git checkout が検出された場合、OpenClaw は自動的にローカルインストールパスを提供します。

Details: ''/plugin''

Tutorial.step

セットアップ

1. Matrix プラグインをインストールします:

- npm:openclaw plugins install @openclaw/matrix

- ローカル checkout:openclaw plugins install ./extensions/matrix

2. homeserver で Matrix アカウントを作成します:

- For hosted options, see: <https://matrix.org/ecosystem/hosting/>

- または自己ホスティング

3. bot アカウントのアクセストークンを取得します:

- homeserver の Matrix ログイン API(curl)を使用します:

Json5
{
  channels: {
    matrix: {
      enabled: true,
      homeserver: "https://matrix.example.org",
      accessToken: "syt_***",
      dm: { policy: "pairing" },
    },
  },
}
Json5
{
  channels: {
    matrix: {
      enabled: true,
      homeserver: "https://matrix.example.org",
      accessToken: "syt_***",
      encryption: true,
      dm: { policy: "pairing" },
    },
  },
}
Tutorial.step

Encryption (E2EE)

エンドツーエンド暗号化 はサポートされています(Rust crypto SDK を使用)。

channels.matrix.encryption: true を設定した後:

- crypto モジュールが正常に読み込まれると、暗号化された部屋が自動的に復号化されます。

- 暗号化された部屋に送信されるメディアは暗号化されます。

- 初回接続時、OpenClaw は他のセッションにデバイス検証リクエストを開始します。

- 別の Matrix クライアント(例:Element)で検証リクエストを承認して、キー共有を有効にします。

- crypto モジュールが読み込めない場合、E2EE は無効になり、暗号化された部屋は復号化されません。OpenClaw は警告を記録します。

- crypto モジュールがないというエラー(例:@matrix-org/matrix-sdk-crypto-nodejs-*)が表示された場合、@matrix-org/matrix-sdk-crypto-nodejs のビルドスクリプトを許可し、以下を実行する必要があります:

- pnpm rebuild @matrix-org/matrix-sdk-crypto-nodejs、または

- node node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js(バイナリを取得)

crypto 状態はアカウント + アクセストークンごとに次の場所に保存されます:

~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/crypto/

(SQLite データベース)。同期状態は同じディレクトリの bot-storage.json に保存されます。

アクセストークン(デバイス)が変更されると、新しいストアが作成され、暗号化された部屋のメッセージを読み取るために bot を再検証する必要があります。

デバイス検証:

E2EE を有効にすると、bot は起動時に他のセッションから検証を要求します。Element(または別のクライアント)でリクエストを承認して信頼関係を確立します。検証が完了して初めて、bot は暗号化された部屋のメッセージを復号化できます。

Tutorial.step

ルーティングモデル

- 返信は常に Matrix に戻ります。

- DM はエージェントのメインセッションを共有します。rooms はグループセッション(独立したセッションキー)にマッピングされます。

Tutorial.step

アクセス制御(DM)

- デフォルト:channels.matrix.dm.policy = "pairing"。不明な送信者はペアリングコードを受け取ります。

- Approve:

- openclaw pairing list matrix

- openclaw pairing approve matrix <CODE>

- 公開 DM:channels.matrix.dm.policy="open" かつ channels.matrix.dm.allowFrom=["*"]。

- channels.matrix.dm.allowFrom はユーザー ID または表示名をサポートします。ディレクトリ検索が利用可能な場合、ウィザードは表示名をユーザー ID に解決します。

Tutorial.step

Rooms(グループチャット)

- デフォルト:channels.matrix.groupPolicy = "allowlist"(メンションゲートはデフォルトで有効)。設定されていない場合、channels.defaults.groupPolicy を使用してデフォルトを上書きできます。

- channels.matrix.groups を使用して部屋の許可リスト(room IDs、aliases、または名前を使用可能)を作成します:

Json5
{
  channels: {
    matrix: {
      groupPolicy: "allowlist",
      groups: {
        "!roomId:example.org": { allow: true },
        "#alias:example.org": { allow: true },
      },
      groupAllowFrom: ["@owner:example.org"],
    },
  },
}

- requireMention: false は部屋を自動返信にします。

- groups."*" はすべての部屋のデフォルトのメンション動作を設定できます。

- groupAllowFrom(オプション)は部屋で bot をトリガーできる送信者を制限します。

- 部屋ごとの users 許可リストは部屋内のトリガーをさらに制限できます。

- configure/onboarding は部屋の許可リストを入力し、可能な場合は名前を解決します。

- 起動時、OpenClaw は許可リスト内の部屋/ユーザー名を ID に解決しようとし、マッピングを記録します。解決に失敗したエントリはそのまま残ります。

- 招待はデフォルトで自動参加します。channels.matrix.autoJoin と channels.matrix.autoJoinAllowlist を使用して制御します。

- rooms を完全に無効にする場合、channels.matrix.groupPolicy: "disabled" を設定します(または許可リストを空のままにします)。

- レガシーキー:channels.matrix.rooms(groups と同じ構造)。

Tutorial.step

Threads

- 返信スレッドがサポートされています。

- channels.matrix.threadReplies は返信をスレッド内に残すかどうかを制御します:

- off、inbound(デフォルト)、always

- channels.matrix.replyToMode はスレッド外で返信する場合の reply-to メタデータを制御します:

- off(デフォルト)、first、all

Tutorial.step

Capabilities

| 機能 | ステータス |

| ----- |

| DM | ✅ サポート |

| Rooms | ✅ サポート |

| Threads | ✅ サポート |

| メディア | ✅ サポート |

| E2EE | ✅ サポート(crypto モジュールが必要) |

| Reactions | ✅ サポート(ツール経由で送信/読み取り) |

| 投票 | ✅ 送信サポート;受信 poll-start はテキストに変換(responses/ends は無視) |

| 位置 | ✅ サポート(geo URI;高度は無視) |

| ネイティブコマンド | ✅ サポート |

Tutorial.step

設定リファレンス(Matrix)

完全な設定:''/gateway/configuration''

プロバイダーオプション:

- channels.matrix.enabled:チャンネルを有効にするかどうか

- channels.matrix.homeserver:homeserver URL

- channels.matrix.userId:Matrix ユーザー ID(アクセストークン使用時はオプション)

- channels.matrix.accessToken:アクセストークン

- channels.matrix.password:ログイン用のパスワード(トークンは永続化されます)

- channels.matrix.deviceName:デバイス表示名

- channels.matrix.encryption:E2EE を有効にするかどうか(デフォルト false)

- channels.matrix.initialSyncLimit: Initial sync limit

- channels.matrix.threadReplies:off | inbound | always(デフォルト inbound)

- channels.matrix.textChunkLimit:送信テキストチャンクサイズ(文字数)

- channels.matrix.chunkMode:length(デフォルト)または newline(最初に空行で分割、次に長さで分割)

- channels.matrix.dm.policy:pairing | allowlist | open | disabled(デフォルト pairing)

- channels.matrix.dm.allowFrom:DM 許可リスト(ユーザー ID または表示名);open には "*" が必要;解決可能な場合は自動的に ID に変換

- channels.matrix.groupPolicy:allowlist | open | disabled(デフォルト allowlist)

- channels.matrix.groupAllowFrom:グループメッセージ送信者許可リスト

- channels.matrix.allowlistOnly:DM と rooms の両方で許可リストルールを強制

- channels.matrix.groups:rooms 許可リスト + 部屋ごとの設定

- channels.matrix.rooms:レガシー rooms 許可リスト/設定

- channels.matrix.replyToMode:threads/tags の reply-to モード

- channels.matrix.mediaMaxMb:受信/送信メディア制限(MB)

- channels.matrix.autoJoin:招待の自動参加戦略(always | allowlist | off、デフォルト always)

- channels.matrix.autoJoinAllowlist:自動参加が許可される部屋 IDs/aliases

- channels.matrix.actions:アクションごとのツール切り替え(reactions/messages/pins/memberInfo/channelInfo)