Matrix (Plugin)
Matrix ist ein offenes, dezentrales Messaging-Protokoll. OpenClaw verbindet sich als Matrix-Benutzer auf einem beliebigen Homeserver; Sie benötigen daher ein Matrix-Konto für den Bot. Sobald er angemeldet ist, können Sie dem Bot direkt eine Direktnachricht senden oder ihn in Räume (Matrix-„Gruppen“) einladen. Beeper ist ebenfalls eine gültige Client-Option, erfordert jedoch aktivierte E2EE. Status: unterstützt über Plugin (@vector-im/matrix-bot-sdk). Direktnachrichten, Räume, Threads, Medien, Reaktionen, Umfragen (Senden + Poll-Start als Text), Standort sowie E2EE (mit Krypto-Unterstützung).Plugin erforderlich
Matrix wird als Plugin ausgeliefert und ist nicht im Kern-Installationspaket enthalten. Installation per CLI (npm-Registry):Einrichtung
-
Installieren Sie das Matrix-Plugin:
- Aus npm:
openclaw plugins install @openclaw/matrix - Aus einem lokalen Checkout:
openclaw plugins install ./extensions/matrix
- Aus npm:
-
Erstellen Sie ein Matrix-Konto auf einem Homeserver:
- Hosting-Optionen finden Sie unter https://matrix.org/ecosystem/hosting/
- Oder hosten Sie es selbst.
-
Besorgen Sie sich ein Zugriffstoken für das Bot-Konto:
- Verwenden Sie die Matrix-Login-API mit
curlauf Ihrem Homeserver:
- Ersetzen Sie
matrix.example.orgdurch die URL Ihres Homeservers. - Oder setzen Sie
channels.matrix.userId+channels.matrix.password: OpenClaw ruft denselben Login-Endpunkt auf, speichert das Zugriffstoken in~/.openclaw/credentials/matrix/credentials.jsonund verwendet es beim nächsten Start wieder.
- Verwenden Sie die Matrix-Login-API mit
-
Konfigurieren Sie die Anmeldedaten:
- Env:
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN(oderMATRIX_USER_ID+MATRIX_PASSWORD) - Oder Konfiguration:
channels.matrix.* - Wenn beides gesetzt ist, hat die Konfiguration Vorrang.
- Mit Zugriffstoken: Die Benutzer-ID wird automatisch über
/whoamiabgerufen. - Wenn gesetzt, sollte
channels.matrix.userIddie vollständige Matrix-ID sein (Beispiel:@bot:example.org).
- Env:
- Starten Sie das Gateway neu (oder schließen Sie das Onboarding ab).
-
Starten Sie eine Direktnachricht mit dem Bot oder laden Sie ihn aus einem beliebigen Matrix-Client
(Element, Beeper usw.; siehe https://matrix.org/ecosystem/clients/) in einen Raum ein. Beeper erfordert E2EE,
setzen Sie daher
channels.matrix.encryption: trueund verifizieren Sie das Gerät.
Verschlüsselung (E2EE)
Ende-zu-Ende-Verschlüsselung wird unterstützt über das Rust-Krypto-SDK. Aktivieren Sie sie mitchannels.matrix.encryption: true:
- Wenn das Krypto-Modul geladen wird, werden verschlüsselte Räume automatisch entschlüsselt.
- Ausgehende Medien werden beim Senden an verschlüsselte Räume verschlüsselt.
- Bei der ersten Verbindung fordert OpenClaw die Geräteverifizierung von Ihren anderen Sitzungen an.
- Verifizieren Sie das Gerät in einem anderen Matrix-Client (Element usw.), um die Schlüsselweitergabe zu aktivieren. um Schlüsselfreigabe zu aktivieren.
- Wenn das Krypto-Modul nicht geladen werden kann, ist E2EE deaktiviert und verschlüsselte Räume werden nicht entschlüsselt; OpenClaw protokolliert eine Warnung.
- Wenn Fehler wegen eines fehlenden Krypto-Moduls auftreten (zum Beispiel
@matrix-org/matrix-sdk-crypto-nodejs-*), erlauben Sie Build-Skripte für@matrix-org/matrix-sdk-crypto-nodejsund führen Siepnpm rebuild @matrix-org/matrix-sdk-crypto-nodejsaus oder laden Sie das Binary mitnode node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js.
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/crypto/
(SQLite-Datenbank) gespeichert. Der Sync-Zustand liegt daneben in bot-storage.json.
Wenn sich das Zugriffstoken (Gerät) ändert, wird ein neuer Store erstellt und der Bot muss
für verschlüsselte Räume erneut verifiziert werden.
Geräteverifizierung:
Wenn E2EE aktiviert ist, fordert der Bot beim Start eine Verifizierung von Ihren anderen Sitzungen an.
Öffnen Sie Element (oder einen anderen Client) und bestätigen Sie die Verifizierungsanfrage, um Vertrauen herzustellen.
Nach der Verifizierung kann der Bot Nachrichten in verschlüsselten Räumen entschlüsseln.
Mehrere Konten
Unterstützung für mehrere Konten: Verwendechannels.matrix.accounts mit kontospezifischen Zugangsdaten und optionalem name. Siehe gateway/configuration für das gemeinsame Muster.
Jedes Konto wird als separater Matrix-Benutzer auf einem beliebigen Homeserver ausgeführt. Kontospezifische Konfiguration
übernimmt die Einstellungen von channels.matrix auf oberster Ebene und kann jede Option überschreiben
(DM-Richtlinie, Gruppen, Verschlüsselung usw.).
- Der Kontostart erfolgt serialisiert, um Race Conditions bei gleichzeitigen Modulimporten zu vermeiden.
- Umgebungsvariablen (
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKENusw.) gelten nur für das Standardkonto. - Basis-Channel-Einstellungen (DM-Richtlinie, Gruppenrichtlinie, Mention-Gating usw.) gelten für alle Konten, sofern sie nicht pro Konto überschrieben werden.
- Verwende
bindings[].match.accountId, um jedes Konto an einen anderen Agent weiterzuleiten. - Der Kryptozustand wird pro Konto + Access Token gespeichert (separate Key Stores pro Konto).
Routing-Modell
- Antworten gehen immer zurück zu Matrix.
- Direktnachrichten teilen sich die Hauptsitzung des Agenten; Räume werden Gruppensitzungen zugeordnet.
Zugriffskontrolle (Direktnachrichten)
- Standard:
channels.matrix.dm.policy = "pairing". Unbekannte Absender erhalten einen Pairing-Code. - Freigabe über:
openclaw pairing list matrixopenclaw pairing approve matrix <CODE>
- Öffentliche Direktnachrichten:
channels.matrix.dm.policy="open"pluschannels.matrix.dm.allowFrom=["*"]. channels.matrix.dm.allowFromakzeptiert vollständige Matrix-Benutzer-IDs (Beispiel:@user:server). Der Assistent löst Anzeigenamen zu Benutzer-IDs auf, wenn die Verzeichnissuche genau einen eindeutigen Treffer findet.- Verwende keine Anzeigenamen oder bloßen Localparts (Beispiel:
"Alice"oder"alice"). Sie sind mehrdeutig und werden beim Allowlist-Matching ignoriert. Verwende vollständige@user:server-IDs.
Räume (Gruppen)
- Standard:
channels.matrix.groupPolicy = "allowlist"(Erwähnungs-Gating). Verwenden Siechannels.defaults.groupPolicy, um den Standard zu überschreiben, wenn er nicht gesetzt ist. - Allowlist für Räume mit
channels.matrix.groups(Raum-IDs oder Aliase; Namen werden zu IDs aufgelöst, wenn die Verzeichnissuche genau einen eindeutigen Treffer findet):
requireMention: falseaktiviert Auto-Antworten in diesem Raum.groups."*"kann Standardwerte für Erwähnungs-Gating über Räume hinweg festlegen.groupAllowFromschränkt ein, welche Absender den Bot in Räumen auslösen können (vollständige Matrix-Benutzer-IDs).- Pro-Raum-
users-Allowlists können Absender innerhalb eines bestimmten Raums weiter einschränken (verwenden Sie vollständige Matrix-Benutzer-IDs). - Der Konfigurationsassistent fragt nach Raum-Allowlists (Raum-IDs, Aliase oder Namen) und löst Namen nur bei einem exakten, eindeutigen Treffer auf.
- Beim Start löst OpenClaw Raum-/Benutzernamen in Allowlists zu IDs auf und protokolliert die Zuordnung; nicht auflösbare Einträge werden für das Allowlist-Matching ignoriert.
- Einladungen werden standardmäßig automatisch angenommen; steuern Sie dies mit
channels.matrix.autoJoinundchannels.matrix.autoJoinAllowlist. - Um keine Räume zuzulassen, setzen Sie
channels.matrix.groupPolicy: "disabled"(oder behalten Sie eine leere Allowlist). - Legacy-Schlüssel:
channels.matrix.rooms(gleiche Struktur wiegroups).
Threads
- Antwort-Threading wird unterstützt.
channels.matrix.threadRepliessteuert, ob Antworten in Threads bleiben:off,inbound(Standard),always
channels.matrix.replyToModesteuert Reply-to-Metadaten, wenn nicht in einem Thread geantwortet wird:off(Standard),first,all
Funktionen
| Feature | Status |
|---|---|
| Direktnachrichten | ✅ Unterstützt |
| Räume | ✅ Unterstützt |
| Threads | ✅ Unterstützt |
| Medien | ✅ Unterstützt |
| E2EE | ✅ Unterstützt (Krypto-Modul erforderlich) |
| Reaktionen | ✅ Unterstützt (Senden/Lesen über Werkzeuge) |
| Umfragen | ✅ Senden unterstützt; eingehende Poll-Starts werden in Text umgewandelt (Antworten/Enden ignoriert) |
| Standort | ✅ Unterstützt (Geo-URI; Höhe ignoriert) |
| Native Befehle | ✅ Unterstützt |
Fehlerbehebung
Führen Sie zuerst diese Abfolge aus:- Angemeldet, aber Raumnachrichten werden ignoriert: Raum durch
groupPolicyoder Raum-Allowlist blockiert. - Direktnachrichten werden ignoriert: Absender wartet auf Genehmigung, wenn
channels.matrix.dm.policy="pairing". - Verschlüsselte Räume schlagen fehl: Krypto-Unterstützung oder Verschlüsselungseinstellungen stimmen nicht überein.
Konfigurationsreferenz (Matrix)
Vollständige Konfiguration: Konfiguration Anbieteroptionen:channels.matrix.enabled: Kanalstart aktivieren/deaktivieren.channels.matrix.homeserver: Homeserver-URL.channels.matrix.userId: Matrix-Benutzer-ID (optional mit Zugriffstoken).channels.matrix.accessToken: Zugriffstoken.channels.matrix.password: Passwort für den Login (Token wird gespeichert).channels.matrix.deviceName: Anzeigename des Geräts.channels.matrix.encryption: E2EE aktivieren (Standard: false).channels.matrix.initialSyncLimit: Initiales Sync-Limit.channels.matrix.threadReplies:off | inbound | always(Standard: eingehend).channels.matrix.textChunkLimit: Größe der ausgehenden Text-Chunks (Zeichen).channels.matrix.chunkMode:length(Standard) odernewline, um vor der Längenaufteilung an Leerzeilen (Absatzgrenzen) zu trennen.channels.matrix.dm.policy:pairing | allowlist | open | disabled(Standard: Pairing).channels.matrix.dm.allowFrom: DM-Allowlist (vollständige Matrix-Benutzer-IDs).openerfordert"*". Der Assistent löst Namen nach Möglichkeit zu IDs auf.channels.matrix.groupPolicy:allowlist | open | disabled(Standard: Allowlist).channels.matrix.groupAllowFrom: Allowlist-Absender für Gruppennachrichten (vollständige Matrix-Benutzer-IDs).channels.matrix.allowlistOnly: Allowlist-Regeln für Direktnachrichten + Räume erzwingen.channels.matrix.groups: Gruppen-Allowlist + pro-Raum-Einstellungszuordnung.channels.matrix.rooms: Legacy-Gruppen-Allowlist/-Konfiguration.channels.matrix.replyToMode: Reply-to-Modus für Threads/Tags.channels.matrix.mediaMaxMb: Limit für ein-/ausgehende Medien (MB).channels.matrix.autoJoin: Einladungsbehandlung (always | allowlist | off, Standard: immer).channels.matrix.autoJoinAllowlist: Zulässige Raum-IDs/Aliase für Auto-Join.channels.matrix.accounts: Multi-Account-Konfiguration, nach Konto-ID gruppiert (jedes Konto übernimmt die Einstellungen der obersten Ebene).channels.matrix.actions: Werkzeug-Gating pro Aktion (Reaktionen/Nachrichten/Pins/memberInfo/channelInfo).