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)をサポートします。
プラグインのインストールが必要
Matrix はプラグインとして提供されており、コアインストールにはバンドルされていません。
CLI 経由でインストール(npm registry):
openclaw plugins install @openclaw/matrix
ローカルインストール(git リポジトリから実行する場合):
openclaw plugins install ./extensions/matrix
configure/onboarding で Matrix を選択し、git checkout が検出された場合、OpenClaw は自動的にローカルインストールパスを提供します。
Details: ''/plugin''
セットアップ
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)を使用します:
{
channels: {
matrix: {
enabled: true,
homeserver: "https://matrix.example.org",
accessToken: "syt_***",
dm: { policy: "pairing" },
},
},
}{
channels: {
matrix: {
enabled: true,
homeserver: "https://matrix.example.org",
accessToken: "syt_***",
encryption: true,
dm: { policy: "pairing" },
},
},
}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 は暗号化された部屋のメッセージを復号化できます。
ルーティングモデル
- 返信は常に Matrix に戻ります。
- DM はエージェントのメインセッションを共有します。rooms はグループセッション(独立したセッションキー)にマッピングされます。
アクセス制御(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 に解決します。
Rooms(グループチャット)
- デフォルト:channels.matrix.groupPolicy = "allowlist"(メンションゲートはデフォルトで有効)。設定されていない場合、channels.defaults.groupPolicy を使用してデフォルトを上書きできます。
- channels.matrix.groups を使用して部屋の許可リスト(room IDs、aliases、または名前を使用可能)を作成します:
{
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 と同じ構造)。
Threads
- 返信スレッドがサポートされています。
- channels.matrix.threadReplies は返信をスレッド内に残すかどうかを制御します:
- off、inbound(デフォルト)、always
- channels.matrix.replyToMode はスレッド外で返信する場合の reply-to メタデータを制御します:
- off(デフォルト)、first、all
Capabilities
| 機能 | ステータス |
| ----- |
| DM | ✅ サポート |
| Rooms | ✅ サポート |
| Threads | ✅ サポート |
| メディア | ✅ サポート |
| E2EE | ✅ サポート(crypto モジュールが必要) |
| Reactions | ✅ サポート(ツール経由で送信/読み取り) |
| 投票 | ✅ 送信サポート;受信 poll-start はテキストに変換(responses/ends は無視) |
| 位置 | ✅ サポート(geo URI;高度は無視) |
| ネイティブコマンド | ✅ サポート |
設定リファレンス(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)