@openclaw/matrix), das auf dem offiziellen matrix-js-sdk basiert. Es unterstützt Direktnachrichten, Räume, Threads, Medien, Reaktionen, Umfragen, Standorte und E2EE.
Installation
openclaw plugins install clawhub:@openclaw/matrix oder npm:@openclaw/matrix. Aus einem lokalen Checkout: openclaw plugins install ./path/to/local/matrix-plugin.
plugins install registriert und aktiviert das Plugin; ein separater Schritt mit enable ist nicht erforderlich. Der Kanal bleibt dennoch inaktiv, bis er wie unten beschrieben konfiguriert wird. Allgemeine Installationsregeln finden Sie unter Plugins.
Einrichtung
- Erstellen Sie auf Ihrem Homeserver ein Matrix-Konto.
- Konfigurieren Sie
channels.matrixmithomeserver+accessTokenoderhomeserver+userId+password. - Starten Sie den Gateway neu.
- Beginnen Sie eine Direktnachricht mit dem Bot oder laden Sie ihn in einen Raum ein. Neue Einladungen werden nur angenommen, wenn
autoJoinsie zulässt.
Interaktive Einrichtung
MATRIX_*-Umgebungsvariablen vorhanden sind und für das Konto keine Authentifizierung gespeichert ist, bietet der Assistent eine Abkürzung über Umgebungsvariablen an. Lösen Sie Raumnamen vor dem Speichern einer Positivliste mit openclaw channels resolve --channel matrix "Project Room" auf. Beim Aktivieren von E2EE im Assistenten wird derselbe Bootstrap wie bei openclaw matrix encryption setup ausgeführt.
Minimale Konfiguration
Tokenbasiert:Automatischer Beitritt
channels.matrix.autoJoin verwendet standardmäßig "off": Der Bot erscheint nach neuen Einladungen erst dann in neuen Räumen oder Direktnachrichten, wenn Sie manuell beitreten. OpenClaw kann zum Zeitpunkt der Einladung nicht erkennen, ob es sich um eine Direktnachricht oder eine Gruppe handelt. Daher durchläuft jede Einladung zuerst autoJoin; dm.policy gilt erst später, nachdem der Bot beigetreten ist und der Raum klassifiziert wurde.
Zielformate für Positivlisten
- Direktnachrichten (
dm.allowFrom,groupAllowFrom,groups.<room>.users): Verwenden Sie@user:server. Anzeigenamen werden standardmäßig ignoriert, da sie veränderlich sind; legen SiedangerouslyAllowNameMatching: truenur für eine ausdrücklich gewünschte Kompatibilität mit Anzeigenamen fest. - Schlüssel der Raum-Positivliste (
groups, veralteter Aliasrooms): Verwenden Sie!room:serveroder#alias:server. Einfache Namen werden ignoriert, sofern nichtdangerouslyAllowNameMatching: truefestgelegt ist. - Einladungs-Positivlisten (
autoJoinAllowlist): Verwenden Sie!room:server,#alias:serveroder*. Einfache Namen werden immer abgelehnt.
Normalisierung der Konto-ID
Der Assistent wandelt einen benutzerfreundlichen Namen in eine normalisierte Konto-ID um (Ops Bot -> ops-bot). Satzzeichen werden in bereichsspezifischen Namen von Umgebungsvariablen hexadezimal maskiert, damit Konten nicht kollidieren können: - (0x2D) wird zu _X2D_, sodass ops-prod dem Umgebungsvariablenpräfix MATRIX_OPS_X2D_PROD_ zugeordnet wird.
Zwischengespeicherte Anmeldedaten
Matrix speichert Kontoanmeldedaten im gemeinsamen Plugin-Statusstate/openclaw.sqlite zwischen. Wenn zwischengespeicherte Anmeldedaten vorhanden sind, betrachtet OpenClaw Matrix auch ohne accessToken in der Konfigurationsdatei als konfiguriert. Dies gilt für die Einrichtung, openclaw doctor und Abfragen des Kanalstatus. Bei Upgrades werden die ausgemusterten ~/.openclaw/credentials/matrix/credentials*.json-Dateien über openclaw doctor --fix importiert, die SQLite-Zeilen überprüft und anschließend die Dateien archiviert.
Umgebungsvariablen
Durch Konfigurationsschlüssel gestützte Umgebungsvariablen werden verwendet, wenn der entsprechende Konfigurationsschlüssel nicht festgelegt ist. Das Standardkonto verwendet Namen ohne Präfix; bei benannten Konten wird das Konto-Token vor dem Suffix eingefügt (siehe Normalisierung).
Für das Konto
ops werden die Namen zu MATRIX_OPS_HOMESERVER, MATRIX_OPS_ACCESS_TOKEN und so weiter. MATRIX_HOMESERVER und alle bereichsspezifischen Varianten von *_HOMESERVER können nicht über eine .env des Arbeitsbereichs festgelegt werden; siehe .env-Dateien des Arbeitsbereichs.
Der Wiederherstellungsschlüssel ist keine durch die Konfiguration gestützte Umgebungsvariable: OpenClaw liest ihn niemals selbst aus der Umgebung. Der Anleitungstext der CLI empfiehlt, ihn für das Standardkonto über eine Shell-Variable namens
MATRIX_RECOVERY_KEY oder für ein benanntes Konto über MATRIX_RECOVERY_KEY_<ID> (einfache Konto-ID in Großbuchstaben, ohne hexadezimale Maskierung) weiterzuleiten – siehe Dieses Gerät mit einem Wiederherstellungsschlüssel verifizieren.Konfigurationsbeispiel
Eine praktische Basiskonfiguration mit Direktnachrichten-Kopplung, Raum-Positivliste und E2EE:Streaming-Vorschauen
Das Streaming von Matrix-Antworten muss ausdrücklich aktiviert werden.streaming.mode steuert, wie OpenClaw die noch entstehende Assistentenantwort ausliefert; streaming.block.enabled steuert, ob jeder abgeschlossene Block als eigene Matrix-Nachricht erhalten bleibt.
{ mode, chunkMode, block, preview, progress }:
progress.label: benutzerdefinierte Beschriftung,"auto"/nicht festgelegt zur Auswahl einer konfigurierten oder integrierten Beschriftung oderfalsezum Ausblenden.progress.labels: Kandidaten, die nur verwendet werden, wennlabelauf"auto"festgelegt oder nicht festgelegt ist.progress.maxLines: maximale Anzahl fortlaufender Fortschrittszeilen, die im Entwurf verbleiben; ältere Zeilen darüber hinaus werden entfernt.progress.maxLineChars: maximale Anzahl von Zeichen pro kompakter Fortschrittszeile vor dem Abschneiden.progress.toolProgress: Beitrue(Standard) erscheint die aktuelle Werkzeug-/Fortschrittsaktivität im Entwurf.
streaming.block.enabled (Standard: false) ist unabhängig von streaming.mode:
Hinweise:
- Wenn eine Vorschau die Größenbeschränkung von Matrix pro Ereignis überschreitet, beendet OpenClaw das Vorschau-Streaming und greift auf eine ausschließlich abschließende Auslieferung zurück.
- Bei Medienantworten werden Anhänge immer normal gesendet. Wenn eine veraltete Vorschau nicht sicher wiederverwendet werden kann, schwärzt OpenClaw sie vor dem Senden der abschließenden Medienantwort.
- Aktualisierungen der Werkzeugfortschrittsvorschau sind standardmäßig aktiviert, wenn das Vorschau-Streaming aktiv ist. Legen Sie
streaming.preview.toolProgress: falsefest, um Vorschauänderungen für den Antworttext beizubehalten, den Werkzeugfortschritt jedoch über den normalen Auslieferungspfad zu senden. - Vorschauänderungen verursachen zusätzliche Matrix-API-Aufrufe. Behalten Sie
streaming.mode: "off"für das konservativste Profil hinsichtlich der Ratenbegrenzung bei. - Veraltete skalare oder boolesche
streaming-Werte sowie die flachen SchlüsselblockStreamingundchunkModewerden durchopenclaw doctor --fixin diese verschachtelte Struktur umgeschrieben.
Sprachnachrichten
Eingehende Matrix-Sprachnachrichten werden vor der Erwähnungsprüfung des Raums transkribiert. Dadurch kann eine Sprachnachricht, in der der Name des Bots genannt wird, den Agenten in einemrequireMention: true-Raum auslösen, und der Agent erhält das Transkript statt lediglich eines Platzhalters für einen Audioanhang.
Matrix verwendet den gemeinsamen Provider für Audiomedien unter tools.media.audio, beispielsweise OpenAI gpt-4o-mini-transcribe. Informationen zur Einrichtung des Providers und zu Beschränkungen finden Sie in der Übersicht über Medienwerkzeuge.
m.audio-Ereignisse undm.file-Ereignisse mit einemaudio/*-MIME-Typ sind geeignet.- In verschlüsselten Räumen entschlüsselt OpenClaw den Anhang vor der Transkription über den vorhandenen Matrix-Medienpfad.
- Das Transkript wird im Agenten-Prompt als maschinell erstellt und nicht vertrauenswürdig gekennzeichnet.
- Der Anhang wird als bereits transkribiert gekennzeichnet, damit nachgelagerte Medienwerkzeuge ihn nicht erneut transkribieren.
- Setzen Sie
tools.media.audio.enabled: false, um die Audiotranskription global zu deaktivieren.
Genehmigungsmetadaten
Native Matrix-Genehmigungsaufforderungen sind normalem.room.message-Ereignisse mit OpenClaw-spezifischen Inhalten unter dem Schlüssel com.openclaw.approval. Standardclients stellen weiterhin den Textkörper dar; OpenClaw-kompatible Clients können die strukturierte Genehmigungs-ID, Art, den Status, die Entscheidungen und die Ausführungs-/Plugin-Details auslesen.
Wenn eine Aufforderung für ein einzelnes Matrix-Ereignis zu lang ist, teilt OpenClaw den sichtbaren Text auf und fügt com.openclaw.approval nur dem ersten Teil hinzu. Zulassen-/Ablehnen-Reaktionen werden diesem ersten Ereignis zugeordnet, sodass lange Aufforderungen dasselbe Genehmigungsziel wie Aufforderungen mit nur einem Ereignis beibehalten.
Selbst gehostete Push-Regeln für stille, finalisierte Vorschauen
streaming.mode: "quiet" benachrichtigt Empfänger erst, wenn ein Block oder Durchlauf finalisiert ist – eine benutzerspezifische Push-Regel muss mit der Markierung für die finalisierte Vorschau übereinstimmen. Das vollständige Rezept finden Sie unter Matrix-Push-Regeln für stille Vorschauen.
Bot-zu-Bot-Räume
Standardmäßig werden Matrix-Nachrichten von anderen konfigurierten OpenClaw-Matrix-Konten ignoriert. Verwenden SieallowBots, um den Datenverkehr zwischen Agenten gezielt zuzulassen:
allowBots: trueakzeptiert Nachrichten von anderen konfigurierten Matrix-Bot-Konten in zulässigen Räumen und Direktnachrichten.allowBots: "mentions"akzeptiert diese Nachrichten in Räumen nur, wenn sie diesen Bot sichtbar erwähnen; Direktnachrichten sind unabhängig davon weiterhin zulässig.groups.<room>.allowBotsüberschreibt die Einstellung auf Kontoebene für einen einzelnen Raum.- Akzeptierte Nachrichten konfigurierter Bots verwenden den gemeinsamen Schutz vor Bot-Schleifen. Konfigurieren Sie
channels.defaults.botLoopProtectionund überschreiben Sie die Einstellung anschließend pro Konto mitchannels.matrix.botLoopProtectionoder pro Raum mitchannels.matrix.groups.<room>.botLoopProtection. - OpenClaw ignoriert weiterhin Nachrichten von derselben Matrix-Benutzer-ID, um Selbstantwortschleifen zu vermeiden.
- Matrix besitzt keine native Bot-Kennzeichnung; OpenClaw interpretiert „von einem Bot verfasst“ als „von einem anderen konfigurierten Matrix-Konto auf diesem OpenClaw-Gateway gesendet“.
Verschlüsselung und Verifizierung
In verschlüsselten Räumen (E2EE) verwenden ausgehende Bildereignissethumbnail_file, damit die Bildvorschau zusammen mit dem vollständigen Anhang verschlüsselt wird; unverschlüsselte Räume verwenden einfaches thumbnail_url. Es ist keine Konfiguration erforderlich – das Plugin erkennt den E2EE-Status automatisch.
Alle openclaw matrix-Befehle akzeptieren --verbose (vollständige Diagnose), --json (maschinenlesbare Ausgabe) und --account <id> (Konfigurationen mit mehreren Konten). Die Ausgabe ist standardmäßig kompakt.
Verschlüsselung aktivieren
--recovery-key-stdinliest einen Wiederherstellungsschlüssel aus der Standardeingabe, ohne ihn in den Prozessargumenten offenzulegen;--recovery-key <key>bleibt aus Kompatibilitätsgründen verfügbar--force-reset-cross-signingverwirft die aktuelle Cross-Signierungsidentität und erstellt eine neue (nur zur bewussten Verwendung)
--encryption ist ein Alias für --enable-e2ee. Entsprechende manuelle Konfiguration:
Status und Vertrauenssignale
verify status meldet drei unabhängige Vertrauenssignale (--verbose zeigt sie alle an):
Locally trusted: nur von diesem Client als vertrauenswürdig eingestuftCross-signing verified: Das SDK meldet eine Verifizierung über Cross-SignierungSigned by owner: mit Ihrem eigenen Selbstsignierungsschlüssel signiert (nur zur Diagnose)
Verified by owner ist nur dann yes, wenn Cross-signing verified den Wert yes hat; lokales Vertrauen oder allein eine Eigentümersignatur reicht nicht aus.
--allow-degraded-local-state liefert bestmögliche Diagnosedaten, ohne das Matrix-Konto zuvor vorzubereiten; dies ist für Offline-Prüfungen oder Prüfungen teilweise konfigurierter Systeme nützlich.
Dieses Gerät mit einem Wiederherstellungsschlüssel verifizieren
Leiten Sie den Wiederherstellungsschlüssel über die Standardeingabe weiter, statt ihn in der Befehlszeile zu übergeben:Recovery key accepted: Matrix hat den Schlüssel für den geheimen Speicher oder das Gerätevertrauen akzeptiert.Backup usable: Die Raum-Schlüsselsicherung kann mit dem vertrauenswürdigen Wiederherstellungsmaterial geladen werden.Device verified by owner: Dieses Gerät besitzt vollständiges Identitätsvertrauen durch die Matrix-Cross-Signierung.
verify self wartet auf Cross-signing verified: yes, bevor der Befehl erfolgreich beendet wird. Verwenden Sie --timeout-ms <ms>, um die Wartezeit anzupassen.
Die Form mit einem literalen Schlüssel openclaw matrix verify device "<recovery-key>" funktioniert ebenfalls, der Schlüssel wird jedoch im Shell-Verlauf gespeichert.
Cross-Signierung initialisieren oder reparieren
- initialisiert den geheimen Speicher und verwendet nach Möglichkeit einen vorhandenen Wiederherstellungsschlüssel erneut
- initialisiert die Cross-Signierung und lädt fehlende öffentliche Schlüssel hoch
- kennzeichnet und signiert das aktuelle Gerät per Cross-Signierung
- erstellt eine serverseitige Raum-Schlüsselsicherung, falls noch keine vorhanden ist
m.login.dummy und anschließend m.login.password (erfordert channels.matrix.password).
Nützliche Flags:
--recovery-key-stdin(zusammen mitprintf '%s\n' "$MATRIX_RECOVERY_KEY" | ...verwenden) oder--recovery-key <key>--force-reset-cross-signing, um die aktuelle Cross-Signierungsidentität zu verwerfen (nur bewusst verwenden; erfordert den aktiven, gespeicherten Wiederherstellungsschlüssel oder dessen Übergabe mit--recovery-key-stdin)
Raum-Schlüsselsicherung
backup status zeigt an, ob eine serverseitige Sicherung vorhanden ist und ob dieses Gerät sie entschlüsseln kann. backup restore importiert gesicherte Raumschlüssel in den lokalen Kryptospeicher; lassen Sie --recovery-key-stdin weg, wenn der Wiederherstellungsschlüssel bereits auf dem Datenträger gespeichert ist.
So ersetzen Sie eine beschädigte Sicherung durch einen neuen Ausgangsstand (dabei wird der Verlust nicht wiederherstellbarer alter Verläufe akzeptiert; der geheime Speicher kann ebenfalls neu erstellt werden, wenn das aktuelle Sicherungsgeheimnis nicht geladen werden kann):
--rotate-recovery-key nur hinzu, wenn der vorherige Wiederherstellungsschlüssel den neuen Sicherungsausgangsstand bewusst nicht mehr entsperren können soll.
Verifizierungen auflisten, anfordern und beantworten
--own-user fordert eine Selbstverifizierung an (akzeptieren Sie die Aufforderung in einem anderen Matrix-Client desselben Benutzers); --user-id/--device-id/--room-id richten sich an eine andere Person. --own-user kann nicht mit den anderen Ziel-Flags kombiniert werden.
Für die Verarbeitung des Lebenszyklus auf niedrigerer Ebene – normalerweise beim parallelen Nachverfolgen eingehender Anfragen eines anderen Clients – wirken diese Befehle auf eine bestimmte Anfrage <id> (ausgegeben von verify list und verify request):
accept, start, sas, confirm-sas, mismatch-sas und cancel akzeptieren alle --user-id und --room-id als Hinweise für die Fortsetzung per Direktnachricht, wenn die Verifizierung an einen bestimmten Direktnachrichtenraum gebunden ist.
Hinweise zu mehreren Konten
Ohne--account <id> verwenden Matrix-CLI-Befehle das implizite Standardkonto. Bei mehreren benannten Konten und ohne channels.matrix.defaultAccount verweigern die Befehle eine Annahme und fordern Sie zur Auswahl auf. Wenn E2EE für ein benanntes Konto deaktiviert oder nicht verfügbar ist, verweisen Fehlermeldungen auf den Konfigurationsschlüssel dieses Kontos, beispielsweise channels.matrix.accounts.assistant.encryption.
Startverhalten
Startverhalten
Mit
encryption: true verwendet startupVerification standardmäßig "if-unverified". Beim Start fordert ein nicht verifiziertes Gerät die Selbstverifizierung in einem anderen Matrix-Client an, überspringt Duplikate und wendet eine Abkühlzeit an (standardmäßig 24 Stunden). Passen Sie diese mit startupVerificationCooldownHours an oder deaktivieren Sie sie mit startupVerification: "off".Beim Start wird außerdem ein konservativer Kryptografie-Initialisierungsdurchlauf ausgeführt, der den aktuellen geheimen Speicher und die aktuelle Cross-Signierungsidentität erneut verwendet. Wenn der Initialisierungsstatus beschädigt ist, versucht OpenClaw selbst ohne channels.matrix.password eine abgesicherte Reparatur; wenn der Homeserver eine Passwort-UIA erfordert, protokolliert der Startvorgang eine Warnung, ohne einen schwerwiegenden Fehler auszulösen. Bereits vom Eigentümer signierte Geräte bleiben erhalten.Den vollständigen Upgrade-Ablauf finden Sie unter Matrix-Migration.Verifizierungshinweise
Verifizierungshinweise
Matrix veröffentlicht Hinweise zum Verifizierungslebenszyklus als
m.notice-Nachrichten im strikt festgelegten Direktnachrichtenraum für Verifizierungen: Anfrage, Bereitschaft (mit dem Hinweis „Verify by emoji“), Start/Abschluss und, sofern verfügbar, SAS-Details (Emojis/Dezimalzahlen).Eingehende Anfragen eines anderen Matrix-Clients werden nachverfolgt und automatisch akzeptiert. Bei der Selbstverifizierung startet OpenClaw den SAS-Ablauf automatisch und bestätigt die eigene Seite, sobald die Emoji-Verifizierung verfügbar ist – Sie müssen die Werte weiterhin vergleichen und „They match“ in Ihrem Matrix-Client bestätigen.Systemhinweise zur Verifizierung werden nicht an die Agenten-Chat-Pipeline weitergeleitet.Gelöschtes oder ungültiges Matrix-Gerät
Gelöschtes oder ungültiges Matrix-Gerät
Wenn Erstellen Sie für die Token-Authentifizierung ein neues Zugriffstoken in Ihrem Matrix-Client oder in der Admin-Benutzeroberfläche und aktualisieren Sie anschließend OpenClaw:Ersetzen Sie
verify status meldet, dass das aktuelle Gerät nicht mehr auf dem Homeserver aufgeführt ist, erstellen Sie ein neues OpenClaw-Matrix-Gerät. Für die Anmeldung mit einem Passwort:assistant durch die Konto-ID aus dem fehlgeschlagenen Befehl oder lassen Sie --account für das Standardkonto weg.Gerätehygiene
Gerätehygiene
Alte von OpenClaw verwaltete Geräte können sich ansammeln. Listen Sie sie auf und bereinigen Sie sie:
Kryptospeicher
Kryptospeicher
Matrix E2EE verwendet den offiziellen
matrix-js-sdk-Rust-Kryptografiepfad mit fake-indexeddb als IndexedDB-Shim. Der Kryptografiestatus wird dauerhaft unter crypto-idb-snapshot.json gespeichert (restriktive Dateiberechtigungen).Der verschlüsselte Laufzeitstatus befindet sich unter ~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/ und umfasst den Synchronisierungsspeicher, den Kryptospeicher, den Wiederherstellungsschlüssel, den IDB-Snapshot, Thread-Bindungen und den Status der Startverifizierung. Wenn sich das Token ändert, die Kontoidentität jedoch gleich bleibt, verwendet OpenClaw den besten vorhandenen Stamm erneut, sodass der vorherige Status sichtbar bleibt.Ein einzelner älterer Token-Hash-Stamm kann ein normaler Kontinuitätspfad bei einer Token-Rotation sein. Wenn OpenClaw matrix: multiple populated token-hash storage roots detected protokolliert, prüfen Sie das Kontoverzeichnis und archivieren Sie veraltete gleichgeordnete Stammverzeichnisse erst, nachdem Sie bestätigt haben, dass der ausgewählte aktive Stamm fehlerfrei ist. Verschieben Sie veraltete Stammverzeichnisse vorzugsweise in ein _archive/-Verzeichnis, anstatt sie sofort zu löschen.Profilverwaltung
mxc://-Avatar-URLs direkt; bei Übergabe von http:///https:// wird die Datei zuerst hochgeladen und die aufgelöste mxc://-URL in channels.matrix.avatarUrl (oder der kontospezifischen Überschreibung) gespeichert.
Threads
Matrix unterstützt native Threads sowohl für automatische Antworten als auch für Sendungen über das Nachrichten-Tool. Zwei unabhängige Einstellungen steuern das Verhalten:Sitzungsrouting (sessionScope)
dm.sessionScope bestimmt, wie Matrix-DM-Räume OpenClaw-Sitzungen zugeordnet werden:
"per-user"(Standard): Alle DM-Räume mit demselben weitergeleiteten Kommunikationspartner teilen sich eine Sitzung."per-room": Jeder Matrix-DM-Raum erhält einen eigenen Sitzungsschlüssel, selbst für denselben Kommunikationspartner.
sessionScope; gebundene Räume und Threads behalten ihre gewählte Zielsitzung.
Antwort-Threading (threadReplies)
threadReplies bestimmt, wo der Bot seine Antwort veröffentlicht:
"off": Antworten werden auf oberster Ebene veröffentlicht. Eingehende Thread-Nachrichten verbleiben in der übergeordneten Sitzung."inbound": Nur innerhalb eines Threads antworten, wenn sich die eingehende Nachricht bereits in diesem Thread befand."always": Innerhalb eines Threads antworten, dessen Wurzel die auslösende Nachricht ist; diese Konversation wird ab dem ersten Auslöser über eine passende Thread-bezogene Sitzung geleitet.
dm.threadReplies überschreibt dies ausschließlich für DMs – beispielsweise können Raum-Threads isoliert bleiben, während DMs ohne Thread-Unterteilung bleiben.
Thread-Vererbung und Slash-Befehle
- Eingehende Thread-Nachrichten enthalten die Thread-Wurzelnachricht als zusätzlichen Agentenkontext.
- Sendungen über das Nachrichten-Tool übernehmen automatisch den aktuellen Matrix-Thread, wenn sie denselben Raum (oder dasselbe DM-Benutzerziel) adressieren, sofern kein explizites
threadIdangegeben ist. - Die Wiederverwendung eines DM-Benutzerziels erfolgt nur, wenn die aktuellen Sitzungsmetadaten denselben DM-Kommunikationspartner im selben Matrix-Konto belegen; andernfalls greift OpenClaw auf das normale benutzerbezogene Routing zurück.
/focus,/unfocus,/agents,/session idle,/session max-ageund Thread-gebundenes/acp spawnfunktionieren alle in Matrix-Räumen und DMs./focusauf oberster Ebene erstellt einen neuen Matrix-Thread und bindet ihn an die Zielsitzung, wennthreadBindings.spawnSessionsaktiviert ist.- Das Ausführen von
/focusoder/acp spawn --thread hereinnerhalb eines vorhandenen Matrix-Threads bindet diesen Thread direkt.
m.notice, das auf den /focus-Ausweg verweist und eine Änderung von dm.sessionScope vorschlägt. Der Hinweis erscheint nur, wenn Thread-Bindungen aktiviert sind.
ACP-Konversationsbindungen
Matrix-Räume, DMs und vorhandene Matrix-Threads können zu dauerhaften ACP-Arbeitsbereichen werden, ohne die Chat-Oberfläche zu ändern. Schneller Ablauf für Betreiber:- Führen Sie
/acp spawn codex --bind hereinnerhalb der Matrix-DM, des Raums oder des vorhandenen Threads aus, den Sie weiterhin verwenden möchten. - In einer DM oder einem Raum auf oberster Ebene bleibt die aktuelle DM bzw. der aktuelle Raum die Chat-Oberfläche, und zukünftige Nachrichten werden an die erzeugte ACP-Sitzung weitergeleitet.
- Innerhalb eines vorhandenen Threads bindet
--bind herediesen aktuellen Thread direkt. /newund/resetsetzen dieselbe gebundene ACP-Sitzung direkt zurück./acp closeschließt die ACP-Sitzung und entfernt die Bindung.
--bind here erstellt keinen untergeordneten Matrix-Thread. threadBindings.spawnSessions steuert /acp spawn --thread auto|here, wobei OpenClaw einen untergeordneten Thread erstellen oder binden muss.
Konfiguration der Thread-Bindung
Matrix übernimmt globale Standardwerte aussession.threadBindings und unterstützt kanalbezogene Überschreibungen:
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSessions: Steuert sowohl Thread-Erzeugungen durch Subagenten als auch durch ACP.- Veraltete Schlüssel
threadBindings.spawnSubagentSessions/threadBindings.spawnAcpSessionswerden durchopenclaw doctor --fixzuspawnSessionsmigriert. threadBindings.defaultSpawnContext
threadBindings.spawnSessions: false, um zu verhindern, dass /focus und /acp spawn --thread auto|here auf oberster Ebene Matrix-Threads erstellen oder binden. Setzen Sie threadBindings.defaultSpawnContext: "isolated", wenn native Thread-Erzeugungen durch Subagenten das übergeordnete Transkript nicht abspalten sollen.
Reaktionen
Matrix unterstützt ausgehende Reaktionen, Benachrichtigungen über eingehende Reaktionen und Bestätigungsreaktionen. Das Werkzeug für ausgehende Reaktionen wird durchchannels.matrix.actions.reactions gesteuert:
reactfügt einem Matrix-Ereignis eine Reaktion hinzu.reactionslistet die aktuelle Reaktionszusammenfassung für ein Matrix-Ereignis auf.emoji=""entfernt die eigenen Reaktionen des Bots auf dieses Ereignis.remove: trueentfernt nur die angegebene Emoji-Reaktion des Bots.
reactionNotifications: "own" leitet hinzugefügte m.reaction-Ereignisse weiter, wenn sie auf vom Bot verfasste Matrix-Nachrichten abzielen; "off" deaktiviert Reaktions-Systemereignisse. Das Entfernen von Reaktionen wird nicht als Systemereignis synthetisiert – Matrix stellt dies als Schwärzungen und nicht als eigenständige Entfernungen von m.reaction dar.
Verlaufskontext
channels.matrix.historyLimitsteuert, wie viele der letzten Raumnachrichten alsInboundHistoryeinbezogen werden, wenn eine Raumnachricht den Agenten auslöst. Fällt aufmessages.groupChat.historyLimitzurück; effektiver Standardwert ist0, wenn beide nicht gesetzt sind (deaktiviert).- Der Matrix-Raumverlauf gilt nur für Räume; DMs verwenden weiterhin den normalen Sitzungsverlauf.
- Der Raumverlauf enthält nur ausstehende Nachrichten: OpenClaw puffert Raumnachrichten, die noch keine Antwort ausgelöst haben, und erstellt dann eine Momentaufnahme dieses Fensters, sobald eine Erwähnung oder ein anderer Auslöser eintrifft.
- Die aktuelle Auslösernachricht ist nicht in
InboundHistoryenthalten; sie verbleibt für diesen Durchlauf im eingehenden Haupttext. - Wiederholungsversuche desselben Matrix-Ereignisses verwenden die ursprüngliche Verlaufsmomentaufnahme erneut, anstatt zu neueren Raumnachrichten weiterzuwandern.
Kontextsichtbarkeit
Matrix unterstützt die gemeinsame SteuerungcontextVisibility für ergänzenden Raumkontext wie abgerufenen Antworttext, Thread-Wurzeln und ausstehenden Verlauf.
contextVisibility: "all"ist der Standardwert. Ergänzender Kontext wird wie empfangen beibehalten.contextVisibility: "allowlist"filtert ergänzenden Kontext auf Absender, die durch die aktiven Zulassungslistenprüfungen für Räume und Benutzer zugelassen sind.contextVisibility: "allowlist_quote"verhält sich wieallowlist, behält jedoch weiterhin eine explizit zitierte Antwort bei.
groupPolicy, groups, groupAllowFrom und den DM-Richtlinieneinstellungen.
DM- und Raumrichtlinie
dm.enabled: false:
Reparatur direkter Räume
Wenn der Direktnachrichtenstatus abweicht, kann OpenClaw veraltetem.direct-Zuordnungen erhalten, die auf alte Einzelräume statt auf die aktive DM verweisen. Prüfen Sie die aktuelle Zuordnung für einen Kommunikationspartner:
--account <id> für Konfigurationen mit mehreren Konten. Der Reparaturablauf:
- bevorzugt eine strikte 1:1-DM, die bereits in
m.directzugeordnet ist - fällt auf eine beliebige aktuell beigetretene strikte 1:1-DM mit diesem Benutzer zurück
- erstellt einen neuen direkten Raum und schreibt
m.directneu, wenn keine fehlerfreie DM vorhanden ist
Ausführungsgenehmigungen
Matrix kann als nativer Genehmigungsclient fungieren. Konfigurieren Sie dies unterchannels.matrix.execApprovals (oder channels.matrix.accounts.<account>.execApprovals für eine kontospezifische Überschreibung):
enabled: Stellt Genehmigungen über Matrix-native Eingabeaufforderungen zu. Nicht gesetzt oder"auto"aktiviert dies automatisch, sobald mindestens eine genehmigungsberechtigte Person aufgelöst werden kann; setzen Siefalse, um es explizit zu deaktivieren.approvers: Matrix-Benutzer-IDs (@owner:example.org), die Ausführungsanfragen genehmigen dürfen. Fällt aufchannels.matrix.dm.allowFromzurück.target: Gibt an, wohin Eingabeaufforderungen gesendet werden."dm"(Standard) sendet sie an die DMs der genehmigungsberechtigten Personen;"channel"sendet sie an den Ursprungsraum oder die Ursprungs-DM;"both"sendet sie an beide.agentFilter/sessionFilter: Optionale Zulassungslisten dafür, welche Agenten/Sitzungen die Matrix-Zustellung auslösen.
- Exec-Genehmigungen verwenden
execApprovals.approversund greifen ersatzweise aufdm.allowFromzurück. - Plugin-Genehmigungen autorisieren ausschließlich über
dm.allowFrom.
- ✅ einmalig erlauben
- ❌ ablehnen
- ♾️ immer erlauben (wenn die wirksame Exec-Richtlinie dies zulässt)
/approve <id> allow-once, /approve <id> allow-always, /approve <id> deny.
Nur ermittelte Genehmigende können genehmigen oder ablehnen. Die Kanalzustellung für Exec-Genehmigungen enthält den Befehlstext – aktivieren Sie channel oder both nur in vertrauenswürdigen Räumen.
Verwandtes Thema: Exec-Genehmigungen.
Slash-Befehle
Slash-Befehle (/new, /reset, /model, /focus, /unfocus, /agents, /session, /acp, /approve usw.) funktionieren direkt in DMs. In Räumen erkennt OpenClaw außerdem Befehle, denen die eigene Matrix-Erwähnung des Bots vorangestellt ist. Daher löst @bot:server /new den Befehlspfad ohne einen benutzerdefinierten Regex für Erwähnungen aus – so reagiert der Bot weiterhin auf raumtypische @mention /command-Beiträge, die Element und ähnliche Clients erzeugen, wenn eine Person den Bot per Tab-Vervollständigung auswählt, bevor sie den Befehl eingibt.
Die Autorisierungsregeln gelten weiterhin: Personen, die Befehle senden, müssen dieselben DM- oder Raum-Allowlist-/Eigentümerrichtlinien erfüllen wie bei normalen Nachrichten.
Mehrere Konten
- Werte in
channels.matrixauf oberster Ebene dienen als Standardwerte für benannte Konten, sofern ein Konto sie nicht überschreibt. - Begrenzen Sie einen vererbten Raumeintrag mit
groups.<room>.accountauf ein bestimmtes Konto. Einträge ohneaccountwerden von mehreren Konten gemeinsam verwendet;account: "default"funktioniert weiterhin, wenn das Standardkonto auf oberster Ebene konfiguriert ist.
- Legen Sie mit
defaultAccountdas benannte Konto fest, das bei implizitem Routing, Prüfungen und CLI-Befehlen bevorzugt wird. - Wenn Sie mehrere Konten haben und eines davon tatsächlich
defaultheißt, verwendet OpenClaw es implizit, selbst wenndefaultAccountnicht gesetzt ist. - Bei mehreren benannten Konten ohne ausgewähltes Standardkonto verweigern CLI-Befehle eine Vermutung – setzen Sie
defaultAccountoder übergeben Sie--account <id>. - Der Block
channels.matrix.*auf oberster Ebene wird nur dann als implizites Kontodefaultbehandelt, wenn seine Authentifizierung vollständig ist (homeserver+accessTokenoderhomeserver+userId+password). Benannte Konten bleiben überhomeserver+userIdauffindbar, sobald zwischengespeicherte Anmeldedaten die Authentifizierung abdecken.
- Wenn OpenClaw während einer Reparatur oder Einrichtung eine Einzelkontokonfiguration in eine Mehrkontenkonfiguration überführt, behält es das vorhandene benannte Konto bei, sofern eines vorhanden ist oder
defaultAccountbereits auf eines verweist. Nur Matrix-Authentifizierungs-/Bootstrap-Schlüssel werden in das überführte Konto verschoben; gemeinsam verwendete Zustellungsrichtlinienschlüssel verbleiben auf oberster Ebene.
Private/LAN-Homeserver
Standardmäßig blockiert OpenClaw private/interne Matrix-Homeserver zum Schutz vor SSRF, sofern Sie dies nicht für jedes Konto ausdrücklich zulassen. Wenn Ihr Homeserver auf localhost, einer LAN-/Tailscale-IP oder einem internen Hostnamen ausgeführt wird, aktivieren Sienetwork.dangerouslyAllowPrivateNetwork für dieses Konto:
http://matrix.example.org:8008 bleiben blockiert. Verwenden Sie nach Möglichkeit https://.
Matrix-Datenverkehr über einen Proxy leiten
Wenn Ihre Matrix-Bereitstellung einen expliziten ausgehenden HTTP(S)-Proxy benötigt, setzen Siechannels.matrix.proxy:
channels.matrix.accounts.<id>.proxy überschreiben. OpenClaw verwendet dieselbe Proxy-Einstellung für den Matrix-Datenverkehr zur Laufzeit und für Kontostatusprüfungen.
Zielauflösung
Matrix akzeptiert überall dort, wo OpenClaw ein Raum- oder Benutzerziel verlangt, die folgenden Zielformen:- Benutzer:
@user:server,user:@user:serverodermatrix:user:@user:server - Räume:
!room:server,room:!room:serverodermatrix:room:!room:server - Aliasse:
#alias:server,channel:#alias:serverodermatrix:channel:#alias:server
- Benutzersuchen fragen das Matrix-Benutzerverzeichnis auf diesem Homeserver ab.
- Raumsuchen akzeptieren explizite Raum-IDs und Aliasse direkt. Die Namenssuche in beigetretenen Räumen erfolgt nach bestem Bemühen und gilt nur für Raum-Allowlists zur Laufzeit, wenn
dangerouslyAllowNameMatching: truegesetzt ist. - Wenn ein Raumname nicht in eine ID oder einen Alias aufgelöst werden kann, wird er bei der Auflösung der Laufzeit-Allowlist ignoriert.
Konfigurationsreferenz
Benutzerfelder nach dem Allowlist-Prinzip (groupAllowFrom, dm.allowFrom, groups.<room>.users) akzeptieren vollständige Matrix-Benutzer-IDs (am sichersten). Einträge, die keine IDs sind, werden standardmäßig ignoriert. Wenn dangerouslyAllowNameMatching: true gesetzt ist, werden exakte Übereinstimmungen mit Matrix-Anzeigenamen im Verzeichnis beim Start und bei jeder Änderung der Allowlist während der Ausführung des Monitors aufgelöst; nicht auflösbare Einträge werden zur Laufzeit ignoriert.
Schlüssel für Raum-Allowlists (groups, veraltet: rooms) sollten Raum-IDs oder Aliasse sein. Schlüssel, die nur aus Raumnamen bestehen, werden standardmäßig ignoriert; dangerouslyAllowNameMatching: true stellt die Suche nach bestem Bemühen in den Namen beigetretener Räume wieder her.
Konto und Verbindung
enabled: Kanal aktivieren oder deaktivieren.name: optionale Anzeigebezeichnung für das Konto.defaultAccount: bevorzugte Konto-ID, wenn mehrere Matrix-Konten konfiguriert sind.accounts: benannte kontospezifische Überschreibungen. Werte inchannels.matrixauf oberster Ebene werden als Standardwerte vererbt.homeserver: Homeserver-URL, zum Beispielhttps://matrix.example.org.network.dangerouslyAllowPrivateNetwork: diesem Konto die Verbindung mitlocalhost, LAN-/Tailscale-IPs oder internen Hostnamen erlauben.proxy: optionale HTTP(S)-Proxy-URL für Matrix-Datenverkehr. Kontospezifische Überschreibungen werden unterstützt.userId: vollständige Matrix-Benutzer-ID (@bot:example.org).accessToken: Zugriffstoken für tokenbasierte Authentifizierung. Klartext- und SecretRef-Werte werden über env-/file-/exec-Provider hinweg unterstützt (Verwaltung von Geheimnissen).password: Passwort für die passwortbasierte Anmeldung. Klartext- und SecretRef-Werte werden unterstützt.deviceId: explizite Matrix-Geräte-ID.deviceName: Anzeigename des Geräts, der bei der Passwortanmeldung verwendet wird.avatarUrl: gespeicherte URL des eigenen Avatars für die Profilsynchronisierung und Aktualisierungen vonprofile set.initialSyncLimit: maximale Anzahl der während der Startsynchronisierung abgerufenen Ereignisse.
Verschlüsselung
encryption: E2EE aktivieren. Standard:false.startupVerification:"if-unverified"(Standard, wenn E2EE aktiviert ist) oder"off". Fordert beim Start automatisch eine Selbstverifizierung an, wenn dieses Gerät nicht verifiziert ist.startupVerificationCooldownHours: Wartezeit bis zur nächsten automatischen Anfrage beim Start. Standard:24.
Zugriff und Richtlinien
groupPolicy:"open","allowlist"oder"disabled". Standard:"allowlist".groupAllowFrom: Allowlist von Benutzer-IDs für Raumdatenverkehr.mentionPatterns: bereichsbezogene Regex-Muster für Raumerwähnungen. Objekt mit{ mode: "allow"|"deny", allowIn: [roomId, ...], denyIn: [roomId, ...] }. Steuert, ob konfigurierteagents.entries.*.groupChat.mentionPatternsraumbezogen angewendet werden.dm.enabled: wennfalse, alle DMs ignorieren. Standard:true.dm.policy:"pairing"(Standard),"allowlist","open"oder"disabled". Wird angewendet, nachdem der Bot beigetreten ist und den Raum als DM klassifiziert hat; die Verarbeitung von Einladungen wird davon nicht beeinflusst.dm.allowFrom: Allowlist von Benutzer-IDs für DM-Datenverkehr.dm.sessionScope:"per-user"(Standard) oder"per-room".dm.threadReplies: ausschließlich für DMs geltende Überschreibung der Thread-Verarbeitung von Antworten ("off","inbound","always").allowBots: Nachrichten von anderen konfigurierten Matrix-Botkonten akzeptieren (trueoder"mentions").allowlistOnly: wenntrue, werden alle aktiven DM-Richtlinien (außer"disabled") und"open"-Gruppenrichtlinien auf"allowlist"erzwungen."disabled"-Richtlinien werden nicht geändert.dangerouslyAllowNameMatching: wenntrue, wird für Benutzer-Allowlist-Einträge die Matrix-Verzeichnissuche nach Anzeigenamen und für Raum-Allowlist-Schlüssel die Namenssuche in beigetretenen Räumen zugelassen. Bevorzugen Sie vollständige@user:server-IDs sowie Raum-IDs oder Aliasse.autoJoin:"always","allowlist"oder"off". Standard:"off". Gilt für jede Matrix-Einladung, einschließlich DM-ähnlicher Einladungen.autoJoinAllowlist: erlaubte Räume/Aliasse, wennautoJoinauf"allowlist"gesetzt ist. Alias-Einträge werden gegenüber dem Homeserver aufgelöst, nicht gegenüber dem vom eingeladenen Raum beanspruchten Zustand.contextVisibility: ergänzende Kontextsichtbarkeit ("all"als Standard,"allowlist","allowlist_quote").
Antwortverhalten
replyToMode:"off"(Standard),"first","all"oder"batched".threadReplies:"off"(der Standardwert auf oberster Ebene wird zu"inbound"aufgelöst, sofern er nicht explizit festgelegt ist),"inbound"oder"always".threadBindings: kanalspezifische Überschreibungen für das Routing und den Lebenszyklus threadgebundener Sitzungen.streaming: verschachteltes Objekt{ mode, chunkMode, block: { enabled, coalesce }, preview: { toolProgress }, progress: { label, labels, maxLines, maxLineChars, toolProgress } }.modeist"off"(Standard),"partial","quiet"oder"progress". Veraltete Skalar-/Boolesche Schreibweisen werden überopenclaw doctor --fixmigriert.streaming.block.enabled: Wenntrue, werden abgeschlossene Assistentenblöcke als separate Fortschrittsmeldungen beibehalten. Standard:false.markdown: optionale Markdown-Rendering-Konfiguration für ausgehenden Text.responsePrefix: optionale Zeichenfolge, die ausgehenden Antworten vorangestellt wird.textChunkLimit: Größe ausgehender Textblöcke in Zeichen, wennstreaming.chunkMode: "length". Standard:4000.streaming.chunkMode:"length"(Standard, teilt nach Zeichenanzahl) oder"newline"(teilt an Zeilengrenzen).historyLimit: Anzahl der letzten Raumnachrichten, die alsInboundHistoryeinbezogen werden, wenn eine Raumnachricht den Agenten auslöst. Fällt aufmessages.groupChat.historyLimitzurück; effektiver Standardwert0(deaktiviert).mediaMaxMb: Obergrenze der Mediengröße in MB für ausgehendes Senden und eingehende Verarbeitung. Standard:20.
Reaktionseinstellungen
ackReaction: Überschreibung der Bestätigungsreaktion für diesen Kanal/dieses Konto.ackReactionScope: Bereichsüberschreibung ("group-mentions"als Standard,"group-all","direct","all","none","off").reactionNotifications: Benachrichtigungsmodus für eingehende Reaktionen ("own"als Standard,"off").
Werkzeuge und raumspezifische Überschreibungen
actions: aktionsspezifische Werkzeugfreigabe (messages,reactions,pins,profile,memberInfo,channelInfo,verification).groups: raumspezifische Richtlinienzuordnung. Die Sitzungsidentität verwendet nach der Auflösung die stabile Raum-ID. (roomsist ein veralteter Alias.)groups.<room>.account: Beschränkt einen geerbten Raumeintrag auf ein bestimmtes Konto.groups.<room>.enabled: raumspezifischer Umschalter. Wennfalse, wird der Raum ignoriert, als wäre er nicht in der Zuordnung enthalten.groups.<room>.requireMention: raumspezifische Überschreibung der kanalweiten Erwähnungsanforderung.groups.<room>.allowBots: raumspezifische Überschreibung der kanalweiten Einstellung (trueoder"mentions").groups.<room>.botLoopProtection: raumspezifische Überschreibung des Budgets für den Schutz vor Bot-zu-Bot-Schleifen.groups.<room>.users: raumspezifische Absender-Zulassungsliste.groups.<room>.tools: raumspezifische Überschreibungen für das Zulassen/Ablehnen von Werkzeugen.groups.<room>.autoReply: raumspezifische Überschreibung der Erwähnungsbeschränkung.truedeaktiviert die Erwähnungsanforderungen für diesen Raum;falseerzwingt sie erneut.groups.<room>.skills: raumspezifischer Skills-Filter.groups.<room>.systemPrompt: raumspezifischer Ausschnitt der Systemanweisung.
Einstellungen für Ausführungsgenehmigungen
execApprovals.enabled: Ausführungsgenehmigungen über Matrix-native Eingabeaufforderungen zustellen.execApprovals.approvers: Matrix-Benutzer-IDs, die Genehmigungen erteilen dürfen. Fällt aufdm.allowFromzurück.execApprovals.target:"dm"(Standard),"channel"oder"both".execApprovals.agentFilter/execApprovals.sessionFilter: optionale Agenten-/Sitzungs-Zulassungslisten für die Zustellung.
Verwandte Themen
- Kanalübersicht - alle unterstützten Kanäle
- Kopplung - DM-Authentifizierung und Kopplungsablauf
- Gruppen - Gruppenchatverhalten und Erwähnungsbeschränkung
- Kanal-Routing - Sitzungs-Routing für Nachrichten
- Sicherheit - Zugriffsmodell und Absicherung