matrix-js-sdk en ondersteunt DM’s, rooms, threads, media, reacties, polls, locatie en E2EE.
Installeren
Installeer Matrix vanuit ClawHub voordat je het kanaal configureert:openclaw plugins install clawhub:@openclaw/matrix of openclaw plugins install npm:@openclaw/matrix om de registrybron af te dwingen.
Vanuit een lokale checkout:
plugins install registreert en activeert de plugin, dus er is geen afzonderlijke stap openclaw plugins enable matrix nodig. De plugin doet nog steeds niets totdat je het kanaal hieronder configureert. Zie Plugins voor algemeen plugingedrag en installatieregels.
Setup
- Maak een Matrix-account aan op je homeserver.
- Configureer
channels.matrixmethomeserver+accessToken, of methomeserver+userId+password. - Herstart de gateway.
- Start een DM met de bot, of nodig deze uit voor een room (zie auto-join - nieuwe uitnodigingen landen alleen wanneer
autoJoinze toestaat).
Interactieve setup
MATRIX_*-env-vars al bestaan en het geselecteerde account geen opgeslagen auth heeft, biedt de wizard een env-var-snelkoppeling aan. Voer openclaw channels resolve --channel matrix "Project Room" uit om roomnamen op te lossen voordat je een allowlist opslaat. Wanneer E2EE is ingeschakeld, schrijft de wizard de configuratie en voert dezelfde bootstrap uit als openclaw matrix encryption setup.
Minimale configuratie
Op tokenbasis:Auto-join
channels.matrix.autoJoin staat standaard op off. Met de standaardinstelling verschijnt de bot niet in nieuwe rooms of DM’s uit nieuwe uitnodigingen totdat je handmatig deelneemt.
OpenClaw kan op het moment van uitnodigen niet bepalen of een uitgenodigde room een DM of een groep is, dus alle uitnodigingen - inclusief DM-achtige uitnodigingen - gaan eerst via autoJoin. dm.policy is pas later van toepassing, nadat de bot is toegetreden en de room is geclassificeerd.
autoJoin: "always" om elke uitnodiging te accepteren.
Doelformaten voor allowlists
DM- en room-allowlists worden het beste gevuld met stabiele ID’s:- DM’s (
dm.allowFrom,groupAllowFrom,groups.<room>.users): gebruik@user:server. Weergavenamen worden standaard genegeerd omdat ze veranderlijk zijn; steldangerouslyAllowNameMatching: truealleen in wanneer je expliciet compatibiliteit met items op basis van weergavenaam nodig hebt. - Room-allowlist-sleutels (
groups, legacyrooms): gebruik!room:serverof#alias:server. Platte roomnamen worden standaard genegeerd; steldangerouslyAllowNameMatching: truealleen in wanneer je expliciet compatibiliteit met naamlookup van toegetreden rooms nodig hebt. - Uitnodigings-allowlists (
autoJoinAllowlist): gebruik!room:server,#alias:serverof*. Platte roomnamen worden geweigerd.
Account-ID-normalisatie
De wizard zet een vriendelijke naam om naar een genormaliseerde account-ID. Bijvoorbeeld:Ops Bot wordt ops-bot. Interpunctie wordt escaped in scoped env-var-namen zodat twee accounts niet kunnen botsen: - → _X2D_, dus ops-prod mapt naar MATRIX_OPS_X2D_PROD_*.
Gecachete inloggegevens
Matrix slaat gecachete inloggegevens op onder~/.openclaw/credentials/matrix/:
- standaardaccount:
credentials.json - benoemde accounts:
credentials-<account>.json
openclaw doctor en probes voor kanaalstatus.
Omgevingsvariabelen
Gebruikt wanneer de equivalente configuratiesleutel niet is ingesteld. Het standaardaccount gebruikt namen zonder prefix; benoemde accounts gebruiken de account-ID die vóór het achtervoegsel is ingevoegd.| Standaardaccount | Benoemd account (<ID> is de genormaliseerde account-ID) |
|---|---|
MATRIX_HOMESERVER | MATRIX_<ID>_HOMESERVER |
MATRIX_ACCESS_TOKEN | MATRIX_<ID>_ACCESS_TOKEN |
MATRIX_USER_ID | MATRIX_<ID>_USER_ID |
MATRIX_PASSWORD | MATRIX_<ID>_PASSWORD |
MATRIX_DEVICE_ID | MATRIX_<ID>_DEVICE_ID |
MATRIX_DEVICE_NAME | MATRIX_<ID>_DEVICE_NAME |
MATRIX_RECOVERY_KEY | MATRIX_<ID>_RECOVERY_KEY |
ops worden de namen MATRIX_OPS_HOMESERVER, MATRIX_OPS_ACCESS_TOKEN, enzovoort. De env-vars voor recovery keys worden gelezen door recovery-bewuste CLI-flows (verify backup restore, verify device, verify bootstrap) wanneer je de sleutel via --recovery-key-stdin doorgeeft.
MATRIX_HOMESERVER kan niet vanuit een workspace-.env worden ingesteld; zie Workspace-.env-bestanden.
Configuratievoorbeeld
Een praktische basis met DM-pairing, room-allowlist en E2EE:Streaming-previews
Streaming van Matrix-antwoorden is opt-in.streaming bepaalt hoe OpenClaw het lopende assistentantwoord aflevert; blockStreaming bepaalt of elk voltooid blok als eigen Matrix-bericht wordt bewaard.
{ mode, preview, progress }:
progress.label: een aangepast label,"auto"of niet ingesteld om te kiezen uit geconfigureerde of ingebouwde labels, offalseom de labelregel te verbergen.progress.labels: kandidaatlabels die alleen worden gebruikt wanneerlabel"auto"is of niet is ingesteld. Laat dit niet ingesteld voor ingebouwde standaarden.progress.maxLines: maximaal aantal rollende voortgangsregels dat in het concept wordt bewaard. Na deze limiet worden oudere regels ingekort.progress.maxLineChars: maximaal aantal tekens per compacte voortgangsregel vóór afkapping.progress.toolProgress: wanneertrue(standaard), verschijnt live tool-/voortgangsactiviteit in het concept.
streaming | Gedrag |
|---|---|
"off" (standaard) | Wacht op het volledige antwoord, verstuur één keer. true ↔ "partial", false ↔ "off". |
"partial" | Bewerk één normaal tekstbericht op zijn plaats terwijl het model het huidige blok schrijft. Standaard Matrix-clients kunnen melden bij de eerste preview, niet bij de laatste bewerking. |
"quiet" | Hetzelfde als "partial", maar het bericht is een niet-meldende notice. Ontvangers krijgen alleen een melding zodra een pushregel per gebruiker overeenkomt met de definitieve bewerking (zie hieronder). |
"progress" | Verstuurt afzonderlijke compacte voortgangsregels met een voortgangsconcept. |
blockStreaming is onafhankelijk van streaming:
streaming | blockStreaming: true | blockStreaming: false (standaard) |
|---|---|---|
"partial" / "quiet" | Live concept voor het huidige blok, voltooide blokken bewaard als berichten | Live concept voor het huidige blok, ter plekke definitief gemaakt |
"off" | Eén meldend Matrix-bericht per voltooid blok | Eén meldend Matrix-bericht voor het volledige antwoord |
- Als een preview voorbij Matrix’ limiet voor eventgrootte groeit, stopt OpenClaw met previewstreaming en valt terug op alleen eindaflevering.
- Media-antwoorden versturen bijlagen altijd normaal. Als een verouderde preview niet langer veilig kan worden hergebruikt, redigeert OpenClaw deze voordat het definitieve media-antwoord wordt verstuurd.
- Updates van toolvoortgangspreviews zijn standaard ingeschakeld wanneer Matrix-previewstreaming actief is. Stel
streaming.preview.toolProgress: falsein om previewbewerkingen voor antwoordtekst te behouden maar toolvoortgang op het normale afleverpad te laten. - Previewbewerkingen kosten extra Matrix-API-calls. Laat
streaming: "off"staan als je het meest conservatieve rate-limit-profiel wilt.
Spraakberichten
Binnenkomende Matrix-spraaknotities worden getranscribeerd vóór de room-vermeldingspoort. Hierdoor kan een spraaknotitie die de botnaam zegt de agent activeren in een room metrequireMention: true, en krijgt de agent het transcript in plaats van alleen een tijdelijke aanduiding voor een audiobijlage.
Matrix gebruikt de gedeelde audiomediaprovider die is geconfigureerd onder tools.media.audio, zoals OpenAI gpt-4o-mini-transcribe. Zie Overzicht van mediatools voor provider-setup en limieten.
Gedragsdetails:
m.audio-gebeurtenissen enm.file-gebeurtenissen met eenaudio/*MIME-type komen in aanmerking.- In versleutelde rooms ontsleutelt OpenClaw de bijlage via het bestaande Matrix-mediapad vóór transcriptie.
- Het transcript wordt in de agentprompt gemarkeerd als machinaal gegenereerd en niet-vertrouwd.
- De bijlage wordt gemarkeerd als al getranscribeerd, zodat downstream mediatools dezelfde spraaknotitie niet opnieuw transcriberen.
- Stel
tools.media.audio.enabled: falsein om audiotranscriptie globaal uit te schakelen.
Goedkeuringsmetadata
Matrix-native goedkeuringsprompts zijn normalem.room.message-gebeurtenissen met OpenClaw-specifieke aangepaste gebeurtenisinhoud onder com.openclaw.approval. Matrix staat aangepaste sleutels voor gebeurtenisinhoud toe, zodat standaardclients de tekstbody nog steeds weergeven, terwijl OpenClaw-bewuste clients de gestructureerde goedkeurings-id, soort, status, beschikbare beslissingen en exec/plugin-details kunnen lezen.
Wanneer een goedkeuringsprompt te lang is voor één Matrix-gebeurtenis, splitst OpenClaw de zichtbare tekst in stukken en voegt com.openclaw.approval alleen aan het eerste stuk toe. Reacties voor toestaan/weigeren-beslissingen zijn aan die eerste gebeurtenis gekoppeld, zodat lange prompts hetzelfde goedkeuringsdoel behouden als prompts met één gebeurtenis.
Zelfgehoste pushregels voor stille afgeronde previews
streaming: "quiet" meldt ontvangers pas wanneer een blok of beurt is afgerond - een pushregel per gebruiker moet overeenkomen met de afgeronde previewmarkering. Zie Matrix-pushregels voor stille previews voor het volledige recept (ontvangertoken, pushercontrole, regelinstallatie, opmerkingen per homeserver).
Bot-naar-bot-rooms
Standaard worden Matrix-berichten van andere geconfigureerde OpenClaw Matrix-accounts genegeerd. GebruikallowBots wanneer je bewust Matrix-verkeer tussen agents wilt:
allowBots: trueaccepteert berichten van andere geconfigureerde Matrix-botaccounts in toegestane rooms en DM’s.allowBots: "mentions"accepteert die berichten alleen wanneer ze deze bot zichtbaar noemen in rooms. DM’s blijven toegestaan.groups.<room>.allowBotsoverschrijft de instelling op accountniveau voor één room.- Geaccepteerde berichten van geconfigureerde bots gebruiken gedeelde bot-loopbescherming. Configureer
channels.defaults.botLoopProtectionen overschrijf daarna metchannels.matrix.botLoopProtectionofchannels.matrix.groups.<room>.botLoopProtectionwanneer één room een ander budget nodig heeft. - OpenClaw blijft berichten van dezelfde Matrix-gebruikers-ID negeren om zelfantwoordloops te vermijden.
- Matrix geeft hier geen native botvlag weer; OpenClaw behandelt “door bot geschreven” als “verzonden door een ander geconfigureerd Matrix-account op deze OpenClaw Gateway”.
Versleuteling en verificatie
In versleutelde (E2EE) rooms gebruiken uitgaande afbeeldingsgebeurtenissenthumbnail_file, zodat afbeeldingspreviews samen met de volledige bijlage worden versleuteld. Niet-versleutelde rooms gebruiken nog steeds gewone thumbnail_url. Er is geen configuratie nodig - de Plugin detecteert de E2EE-status automatisch.
Alle openclaw matrix-commando’s accepteren --verbose (volledige diagnostiek), --json (machineleesbare uitvoer) en --account <id> (setups met meerdere accounts). Uitvoer is standaard beknopt met stille interne SDK-logging. De voorbeelden hieronder tonen de canonieke vorm; voeg de vlaggen toe waar nodig.
Versleuteling inschakelen
--recovery-key <key>pas een herstelsleutel toe vóór bootstrapping (geef de voorkeur aan de hieronder gedocumenteerde stdin-vorm)--force-reset-cross-signinggooi de huidige cross-signing-identiteit weg en maak een nieuwe aan (gebruik dit alleen bewust)
--encryption is een alias voor --enable-e2ee.
Handmatig configuratie-equivalent:
Status- en vertrouwenssignalen
verify status rapporteert drie onafhankelijke vertrouwenssignalen (--verbose toont ze allemaal):
Locally trusted: alleen door deze client vertrouwdCross-signing verified: de SDK rapporteert verificatie via cross-signingSigned by owner: ondertekend door je eigen zelfondertekeningssleutel (alleen diagnostisch)
Verified by owner wordt alleen yes wanneer Cross-signing verified yes is. Lokaal vertrouwen of alleen een eigenaarshandtekening is niet genoeg.
--allow-degraded-local-state retourneert best-effortdiagnostiek zonder eerst het Matrix-account voor te bereiden; handig voor offline of gedeeltelijk geconfigureerde probes.
Dit apparaat verifiëren met een herstelsleutel
De herstelsleutel is gevoelig - pipe deze via stdin in plaats van hem op de opdrachtregel door te geven. StelMATRIX_RECOVERY_KEY in (of MATRIX_<ID>_RECOVERY_KEY voor een benoemd account):
Recovery key accepted: Matrix heeft de sleutel geaccepteerd voor secret storage of apparaatvertrouwen.Backup usable: room-key-back-up kan worden geladen met het vertrouwde herstelmateriaal.Device verified by owner: dit apparaat heeft volledig Matrix-cross-signing-identiteitsvertrouwen.
verify self wacht op Cross-signing verified: yes voordat het succesvol afsluit. Gebruik --timeout-ms <ms> om de wachttijd af te stemmen.
De letterlijke-sleutelvorm openclaw matrix verify device "<recovery-key>" wordt ook geaccepteerd, maar de sleutel komt dan in je shellgeschiedenis terecht.
Cross-signing bootstrapen of herstellen
verify bootstrap is het herstel- en setupcommando voor versleutelde accounts. Op volgorde:
- bootstrap secret storage, waarbij waar mogelijk een bestaande herstelsleutel wordt hergebruikt
- bootstrap cross-signing en upload ontbrekende openbare sleutels
- markeer en cross-sign het huidige apparaat
- maak een server-side room-key-back-up aan als die nog niet bestaat
m.login.dummy en daarna m.login.password (vereist channels.matrix.password).
Handige vlaggen:
--recovery-key-stdin(combineer metprintf '%s\n' "$MATRIX_RECOVERY_KEY" | …) of--recovery-key <key>--force-reset-cross-signingom de huidige cross-signing-identiteit weg te gooien (alleen bewust; vereist dat de actieve herstelsleutel is opgeslagen of met--recovery-key-stdinwordt aangeleverd)
Room-key-back-up
backup status toont of er een server-side back-up bestaat en of dit apparaat die kan ontsleutelen. backup restore importeert geback-upte roomsleutels in de lokale cryptostore; als de herstelsleutel al op schijf staat, kun je --recovery-key-stdin weglaten.
Om een kapotte back-up te vervangen door een nieuwe baseline (accepteert verlies van onherstelbare oude geschiedenis; kan ook secret storage opnieuw aanmaken als het huidige back-upgeheim niet kan worden geladen):
--rotate-recovery-key alleen toe wanneer je bewust wilt dat de vorige herstelsleutel de nieuwe back-upbaseline niet meer ontgrendelt.
Verificaties weergeven, aanvragen en beantwoorden
--own-user vraagt zelfverificatie aan (je accepteert de prompt in een andere Matrix-client van dezelfde gebruiker); --user-id/--device-id/--room-id richten zich op iemand anders. --own-user kan niet worden gecombineerd met de andere doelvlaggen.
Voor lager-niveau lifecycle-afhandeling - meestal tijdens het meelopen met inkomende verzoeken van een andere client - werken deze commando’s op een specifiek verzoek <id> (afgedrukt door verify list en verify request):
| Commando | Doel |
|---|---|
openclaw matrix verify accept <id> | Een inkomend verzoek accepteren |
openclaw matrix verify start <id> | De SAS-flow starten |
openclaw matrix verify sas <id> | De SAS-emoji of decimalen afdrukken |
openclaw matrix verify confirm-sas <id> | Bevestigen dat de SAS overeenkomt met wat de andere client toont |
openclaw matrix verify mismatch-sas <id> | De SAS weigeren wanneer de emoji of decimalen niet overeenkomen |
openclaw matrix verify cancel <id> | Annuleren; accepteert optioneel --reason <text> en --code <matrix-code> |
accept, start, sas, confirm-sas, mismatch-sas en cancel accepteren allemaal --user-id en --room-id als DM-opvolghints wanneer de verificatie is verankerd aan een specifieke direct-message-room.
Opmerkingen voor meerdere accounts
Zonder--account <id> gebruiken Matrix CLI-commando’s het impliciete standaardaccount. Als je meerdere benoemde accounts hebt en channels.matrix.defaultAccount niet hebt ingesteld, weigeren ze te raden en vragen ze je om te kiezen. Wanneer E2EE is uitgeschakeld of niet beschikbaar is voor een benoemd account, wijzen fouten naar de configuratiesleutel van dat account, bijvoorbeeld channels.matrix.accounts.assistant.encryption.
Startup behavior
Startup behavior
Met
encryption: true is de standaardwaarde van startupVerification "if-unverified". Bij het opstarten vraagt een niet-geverifieerd apparaat zelfverificatie aan in een andere Matrix-client, waarbij duplicaten worden overgeslagen en een cooldown wordt toegepast (standaard 24 uur). Stem af met startupVerificationCooldownHours of schakel uit met startupVerification: "off".Bij het opstarten wordt ook een conservatieve crypto-bootstrap-pass uitgevoerd die de huidige secret storage en cross-signing-identiteit hergebruikt. Als de bootstrapstatus kapot is, probeert OpenClaw een bewaakte reparatie, zelfs zonder channels.matrix.password; als de homeserver wachtwoord-UIA vereist, logt startup een waarschuwing en blijft niet-fataal. Apparaten die al door de eigenaar zijn ondertekend, blijven behouden.Zie Matrix-migratie voor de volledige upgradeflow.Verification notices
Verification notices
Matrix plaatst verificatie-lifecyclemeldingen in de strikte DM-verificatieroom als
m.notice-berichten: verzoek, gereed (met begeleiding voor “Verifiëren met emoji”), start/voltooiing en SAS-details (emoji/decimaal) wanneer beschikbaar.Inkomende verzoeken van een andere Matrix-client worden gevolgd en automatisch geaccepteerd. Voor zelfverificatie start OpenClaw de SAS-flow automatisch en bevestigt het zijn eigen kant zodra emoji-verificatie beschikbaar is - je moet nog steeds vergelijken en “Ze komen overeen” bevestigen in je Matrix-client.Verificatiesysteemmeldingen worden niet doorgestuurd naar de agentchatpipeline.Deleted or invalid Matrix device
Deleted or invalid Matrix device
Als Maak voor tokenauthenticatie een nieuw toegangstoken aan in je Matrix-client of beheer-UI en werk daarna OpenClaw bij:Vervang
verify status zegt dat het huidige apparaat niet langer op de homeserver staat, maak dan een nieuw OpenClaw Matrix-apparaat aan. Voor wachtwoordinloggen:assistant door de account-ID uit de mislukte opdracht, of laat --account weg voor het standaardaccount.Apparaathygiëne
Apparaathygiëne
Oude door OpenClaw beheerde apparaten kunnen zich ophopen. Lijst ze op en ruim ze op:
Crypto-opslag
Crypto-opslag
Matrix E2EE gebruikt het officiële
matrix-js-sdk Rust-cryptopad met fake-indexeddb als IndexedDB-shim. De cryptostatus blijft bewaard in crypto-idb-snapshot.json (restrictieve bestandsrechten).Versleutelde runtimestatus staat onder ~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/ en bevat de syncopslag, crypto-opslag, herstelsleutel, IDB-snapshot, threadkoppelingen en startupverificatiestatus. Wanneer het token verandert maar de accountidentiteit hetzelfde blijft, hergebruikt OpenClaw de beste bestaande root zodat eerdere status zichtbaar blijft.Een enkele oudere token-hash-root kan een normaal continuïteitspad voor tokenrotatie zijn. Als OpenClaw matrix: multiple populated token-hash storage roots detected logt, inspecteer dan de accountmap en archiveer verouderde naastliggende roots pas nadat je hebt bevestigd dat de geselecteerde actieve root gezond is. Verplaats verouderde roots bij voorkeur naar een _archive/-map in plaats van ze meteen te verwijderen.Profielbeheer
Werk het Matrix-zelfprofiel voor het geselecteerde account bij:mxc://-avatar-URL’s rechtstreeks; wanneer je http:// of https:// meegeeft, uploadt OpenClaw eerst het bestand en slaat het de opgeloste mxc://-URL op in channels.matrix.avatarUrl (of de override per account).
Gespreksdraden
Matrix ondersteunt native Matrix-gespreksdraden voor zowel automatische antwoorden als verzendingen via berichttools. Twee onafhankelijke knoppen regelen het gedrag:Sessieroutering (sessionScope)
dm.sessionScope bepaalt hoe Matrix-DM-ruimtes aan OpenClaw-sessies worden gekoppeld:
"per-user"(standaard): alle DM-ruimtes met dezelfde gerouteerde peer delen één sessie."per-room": elke Matrix-DM-ruimte krijgt een eigen sessiesleutel, zelfs wanneer de peer dezelfde is.
sessionScope, zodat gekoppelde ruimtes en gespreksdraden hun gekozen doelsessie behouden.
Antwoorden in gespreksdraden (threadReplies)
threadReplies bepaalt waar de bot zijn antwoord plaatst:
"off": antwoorden staan op het hoogste niveau. Inkomende berichten in gespreksdraden blijven op de oudersessie."inbound": antwoord alleen binnen een gespreksdraad wanneer het inkomende bericht al in die gespreksdraad stond."always": antwoord binnen een gespreksdraad die is geworteld in het activerende bericht; dat gesprek wordt vanaf de eerste trigger via een overeenkomende thread-gescopeerde sessie gerouteerd.
dm.threadReplies overschrijft dit alleen voor DM’s - bijvoorbeeld om ruimtethreads geïsoleerd te houden terwijl DM’s vlak blijven.
Thread-overerving en slash-opdrachten
- Inkomende berichten in gespreksdraden bevatten het rootbericht van de gespreksdraad als extra agentcontext.
- Verzendingen via berichttools erven automatisch de huidige Matrix-gespreksdraad wanneer ze dezelfde ruimte targeten (of hetzelfde DM-gebruikerstarget), tenzij een expliciete
threadIdis opgegeven. - Hergebruik van DM-gebruikerstargets treedt alleen in werking wanneer de metadata van de huidige sessie dezelfde DM-peer op hetzelfde Matrix-account bewijst; anders valt OpenClaw terug op normale gebruikersgescopeerde routering.
/focus,/unfocus,/agents,/session idle,/session max-ageen thread-gebonden/acp spawnwerken allemaal in Matrix-ruimtes en DM’s./focusop het hoogste niveau maakt een nieuwe Matrix-gespreksdraad en koppelt die aan de doelsessie wanneerthreadBindings.spawnSessionsis ingeschakeld.- Het uitvoeren van
/focusof/acp spawn --thread herebinnen een bestaande Matrix-gespreksdraad koppelt die gespreksdraad ter plekke.
m.notice in die ruimte die naar de /focus-uitweg verwijst en een wijziging van dm.sessionScope voorstelt. De melding verschijnt alleen wanneer threadkoppelingen zijn ingeschakeld.
ACP-gesprekskoppelingen
Matrix-ruimtes, DM’s en bestaande Matrix-gespreksdraden kunnen worden omgezet in duurzame ACP-werkruimtes zonder het chatoppervlak te veranderen. Snelle operatorflow:- Voer
/acp spawn codex --bind hereuit binnen de Matrix-DM, ruimte of bestaande gespreksdraad die je wilt blijven gebruiken. - In een Matrix-DM of ruimte op het hoogste niveau blijft de huidige DM/ruimte het chatoppervlak en worden toekomstige berichten naar de voortgebrachte ACP-sessie gerouteerd.
- Binnen een bestaande Matrix-gespreksdraad koppelt
--bind heredie huidige gespreksdraad ter plekke. /newen/resetresetten dezelfde gekoppelde ACP-sessie ter plekke./acp closesluit de ACP-sessie en verwijdert de koppeling.
--bind heremaakt geen onderliggende Matrix-gespreksdraad.threadBindings.spawnSessionsbegrenst/acp spawn --thread auto|here, waarbij OpenClaw een onderliggende Matrix-gespreksdraad moet maken of koppelen.
Configuratie voor threadkoppeling
Matrix erft globale standaardwaarden vansession.threadBindings en ondersteunt ook overrides per kanaal:
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSessionsthreadBindings.defaultSpawnContext
- Stel
threadBindings.spawnSessions: falsein om te voorkomen dat/focusen/acp spawn --thread auto|hereop het hoogste niveau Matrix-gespreksdraden maken/koppelen. - Stel
threadBindings.defaultSpawnContext: "isolated"in wanneer native subagent-threadspawns het bovenliggende transcript niet mogen forken.
Reacties
Matrix ondersteunt uitgaande reacties, inkomende reactiemeldingen en ack-reacties. Tooling voor uitgaande reacties wordt begrensd doorchannels.matrix.actions.reactions:
reactvoegt een reactie toe aan een Matrix-event.reactionstoont de huidige reactiesamenvatting voor een Matrix-event.emoji=""verwijdert de eigen reacties van de bot op dat event.remove: trueverwijdert alleen de opgegeven emoji-reactie van de bot.
| Instelling | Volgorde |
|---|---|
ackReaction | per account → kanaal → messages.ackReaction → fallback naar agentidentiteit-emoji |
ackReactionScope | per account → kanaal → messages.ackReactionScope → standaard "group-mentions" |
reactionNotifications | per account → kanaal → standaard "own" |
reactionNotifications: "own" stuurt toegevoegde m.reaction-events door wanneer ze Matrix-berichten targeten die door de bot zijn geschreven; "off" schakelt systeemevents voor reacties uit. Verwijderingen van reacties worden niet gesynthetiseerd tot systeemevents omdat Matrix die als redactions toont, niet als zelfstandige m.reaction-verwijderingen.
Geschiedeniscontext
channels.matrix.historyLimitbepaalt hoeveel recente ruimteberichten alsInboundHistoryworden opgenomen wanneer een Matrix-ruimtebericht de agent triggert. Valt terug opmessages.groupChat.historyLimit; als beide niet zijn ingesteld, is de effectieve standaardwaarde0. Stel0in om uit te schakelen.- Matrix-ruimtegeschiedenis is alleen voor ruimtes. DM’s blijven normale sessiegeschiedenis gebruiken.
- Matrix-ruimtegeschiedenis is alleen in afwachting: OpenClaw buffert ruimteberichten die nog geen antwoord hebben getriggerd en maakt vervolgens een snapshot van dat venster wanneer een vermelding of andere trigger binnenkomt.
- Het huidige triggerbericht wordt niet opgenomen in
InboundHistory; het blijft in de hoofdtekst van de inkomende body voor die beurt. - Nieuwe pogingen van hetzelfde Matrix-event hergebruiken de oorspronkelijke geschiedenissnapshot in plaats van vooruit te schuiven naar nieuwere ruimteberichten.
Contextzichtbaarheid
Matrix ondersteunt de gedeeldecontextVisibility-regeling voor aanvullende ruimtecontext, zoals opgehaalde antwoordtekst, threadroots en geschiedenis in afwachting.
contextVisibility: "all"is de standaardwaarde. Aanvullende context blijft behouden zoals ontvangen.contextVisibility: "allowlist"filtert aanvullende context tot afzenders die zijn toegestaan door de actieve allowlistcontroles voor ruimte/gebruiker.contextVisibility: "allowlist_quote"gedraagt zich alsallowlist, maar behoudt nog steeds één expliciet geciteerd antwoord.
groupPolicy, groups, groupAllowFrom en DM-beleidsinstellingen.
DM- en ruimtebeleid
dm.enabled: false in om DM’s volledig stil te houden terwijl ruimtes blijven werken:
Directe ruimte repareren
Als direct-message-status uit sync raakt, kan OpenClaw eindigen met verouderdem.direct-koppelingen die naar oude solo-ruimtes wijzen in plaats van naar de live DM. Inspecteer de huidige koppeling voor een peer:
--account <id> voor multi-account-setups. De reparatieflow:
- geeft de voorkeur aan een strikte 1:1-DM die al in
m.directis gekoppeld - valt terug op elke momenteel gejoinde strikte 1:1-DM met die gebruiker
- maakt een nieuwe directe ruimte en herschrijft
m.directals er geen gezonde DM bestaat
Exec-goedkeuringen
Matrix kan als native goedkeuringsclient werken. Configureer onderchannels.matrix.execApprovals (of channels.matrix.accounts.<account>.execApprovals voor een override per account):
enabled: lever goedkeuringen via Matrix-native prompts. Wanneer niet ingesteld of"auto", schakelt Matrix automatisch in zodra ten minste één goedkeurder kan worden opgelost. Stelfalsein om expliciet uit te schakelen.approvers: Matrix-gebruikers-ID’s (@owner:example.org) die exec-verzoeken mogen goedkeuren. Optioneel - valt terug opchannels.matrix.dm.allowFrom.target: waar prompts naartoe gaan."dm"(standaard) stuurt naar DM’s van goedkeurders;"channel"stuurt naar de oorspronkelijke Matrix-ruimte of DM;"both"stuurt naar beide.agentFilter/sessionFilter: optionele allowlists voor welke agents/sessies Matrix-bezorging triggeren.
- Exec-goedkeuringen gebruiken
execApprovals.approvers, met fallback naardm.allowFrom. - Plugin-goedkeuringen autoriseren alleen via
dm.allowFrom.
✅eenmaal toestaan❌weigeren♾️altijd toestaan (wanneer het effectieve exec-beleid dit toestaat)
/approve <id> allow-once, /approve <id> allow-always, /approve <id> deny.
Alleen opgeloste goedkeurders kunnen goedkeuren of weigeren. Kanaalbezorging voor exec-goedkeuringen bevat de commandotekst - schakel channel of both alleen in vertrouwde ruimtes in.
Gerelateerd: Exec-goedkeuringen.
Slashcommando’s
Slashcommando’s (/new, /reset, /model, /focus, /unfocus, /agents, /session, /acp, /approve, enz.) werken rechtstreeks in DM’s. In ruimtes herkent OpenClaw ook commando’s die voorafgegaan worden door de eigen Matrix-vermelding van de bot, zodat @bot:server /new het commandopad activeert zonder een aangepaste vermeldings-regex. Hierdoor blijft de bot reageren op de room-stijl @mention /command-berichten die Element en vergelijkbare clients verzenden wanneer een gebruiker de bot via tab-aanvulling invoegt voordat het commando wordt getypt.
Autorisatieregels blijven van toepassing: afzenders van commando’s moeten voldoen aan hetzelfde DM- of ruimte-allowlist-/eigenaarbeleid als gewone berichten.
Meerdere accounts
- Waarden op het hoogste niveau in
channels.matrixfungeren als standaardwaarden voor benoemde accounts, tenzij een account ze overschrijft. - Beperk een overgeërfde ruimtevermelding tot een specifiek account met
groups.<room>.account. Vermeldingen zonderaccountworden gedeeld tussen accounts;account: "default"werkt nog steeds wanneer het standaardaccount op het hoogste niveau is geconfigureerd.
- Stel
defaultAccountin om het benoemde account te kiezen waaraan impliciete routering, probes en CLI-commando’s de voorkeur geven. - Als je meerdere accounts hebt en één daarvan letterlijk
defaultheet, gebruikt OpenClaw dit impliciet, zelfs wanneerdefaultAccountniet is ingesteld. - Als je meerdere benoemde accounts hebt en er geen standaard is geselecteerd, weigeren CLI-commando’s te gokken - stel
defaultAccountin of geef--account <id>door. - Het blok
channels.matrix.*op het hoogste niveau wordt alleen behandeld als het implicietedefault-account wanneer de auth compleet is (homeserver+accessToken, ofhomeserver+userId+password). Benoemde accounts blijven vindbaar viahomeserver+userIdzodra gecachte referenties de auth afdekken.
- Wanneer OpenClaw tijdens reparatie of setup een configuratie met één account naar meerdere accounts promoot, behoudt het het bestaande benoemde account als dat bestaat of als
defaultAccountal naar een account verwijst. Alleen Matrix-auth-/bootstrap-sleutels verhuizen naar het gepromote account; gedeelde bezorgbeleidsleutels blijven op het hoogste niveau.
Privé-/LAN-homeservers
Standaard blokkeert OpenClaw privé/interne Matrix-homeservers voor SSRF-bescherming, tenzij je dit expliciet per account inschakelt. Als je homeserver op localhost, een LAN-/Tailscale-IP of een interne hostnaam draait, schakel dannetwork.dangerouslyAllowPrivateNetwork in voor dat Matrix-account:
http://matrix.example.org:8008, blijven geblokkeerd. Gebruik waar mogelijk bij voorkeur https://.
Matrix-verkeer proxyen
Als je Matrix-implementatie een expliciete uitgaande HTTP(S)-proxy nodig heeft, stel danchannels.matrix.proxy in:
channels.matrix.accounts.<id>.proxy.
OpenClaw gebruikt dezelfde proxy-instelling voor Matrix-verkeer tijdens runtime en voor accountstatusprobes.
Doelresolutie
Matrix accepteert deze doelvormen overal waar OpenClaw om een ruimte- of gebruikersdoel vraagt:- Gebruikers:
@user:server,user:@user:server, ofmatrix:user:@user:server - Ruimtes:
!room:server,room:!room:server, ofmatrix:room:!room:server - Aliassen:
#alias:server,channel:#alias:server, ofmatrix:channel:#alias:server
- Gebruikerslookups bevragen de Matrix-gebruikersdirectory op die homeserver.
- Ruimtelookups accepteren expliciete ruimte-ID’s en aliassen rechtstreeks. Lookup van namen van toegetreden ruimtes is best-effort en geldt alleen voor runtime-ruimte-allowlists wanneer
dangerouslyAllowNameMatching: trueis ingesteld. - Als een ruimtenaam niet naar een ID of alias kan worden opgelost, wordt deze genegeerd door runtime-allowlistresolutie.
Configuratiereferentie
Allowlist-achtige gebruikersvelden (groupAllowFrom, dm.allowFrom, groups.<room>.users) accepteren volledige Matrix-gebruikers-ID’s (het veiligst). Gebruikersvermeldingen die geen ID zijn, worden standaard genegeerd. Als je dangerouslyAllowNameMatching: true instelt, worden exacte overeenkomsten met Matrix-directory-weergavenamen bij het opstarten opgelost en telkens wanneer de allowlist verandert terwijl de monitor draait; vermeldingen die niet kunnen worden opgelost, worden tijdens runtime genegeerd.
Ruimte-allowlist-sleutels (groups, legacy rooms) moeten ruimte-ID’s of aliassen zijn. Platte ruimtenaamsleutels worden standaard genegeerd; dangerouslyAllowNameMatching: true herstelt best-effort lookup tegen namen van toegetreden ruimtes.
Account en verbinding
enabled: schakel het kanaal in of uit.name: optioneel weergavelabel voor het account.defaultAccount: voorkeursaccount-ID wanneer meerdere Matrix-accounts zijn geconfigureerd.accounts: benoemde overschrijvingen per account. Waarden op het hoogste niveau inchannels.matrixworden als standaardwaarden overgeërfd.homeserver: homeserver-URL, bijvoorbeeldhttps://matrix.example.org.network.dangerouslyAllowPrivateNetwork: sta toe dat dit account verbinding maakt metlocalhost, LAN-/Tailscale-IP’s of interne hostnamen.proxy: optionele HTTP(S)-proxy-URL voor Matrix-verkeer. Overschrijving per account ondersteund.userId: volledige Matrix-gebruikers-ID (@bot:example.org).accessToken: toegangstoken voor tokengebaseerde auth. Plaintext- en SecretRef-waarden worden ondersteund via env/file/exec-providers (Geheimenbeheer).password: wachtwoord voor wachtwoordgebaseerde login. Plaintext- en SecretRef-waarden worden ondersteund.deviceId: expliciete Matrix-apparaat-ID.deviceName: apparaatweergavenaam die wordt gebruikt tijdens wachtwoordlogin.avatarUrl: opgeslagen URL van eigen avatar voor profielsynchronisatie enprofile set-updates.initialSyncLimit: maximumaantal events dat tijdens opstartsynchronisatie wordt opgehaald.
Versleuteling
encryption: schakel E2EE in. Standaard:false.startupVerification:"if-unverified"(standaard wanneer E2EE aan staat) of"off". Vraagt automatisch zelfverificatie aan bij opstarten wanneer dit apparaat niet is geverifieerd.startupVerificationCooldownHours: afkoelperiode vóór de volgende automatische opstartaanvraag. Standaard:24.
Toegang en beleid
groupPolicy:"open","allowlist", of"disabled". Standaard:"allowlist".groupAllowFrom: allowlist van gebruikers-ID’s voor ruimteverkeer.mentionPatterns: gescopete regexpatronen voor ruimtevermeldingen. Object met{ mode: "allow"|"deny", allowIn: [roomId, ...], denyIn: [roomId, ...] }. Bepaalt of geconfigureerdeagents.list[].groupChat.mentionPatternsper ruimte worden toegepast.dm.enabled: wanneerfalse, negeer alle DM’s. Standaard:true.dm.policy:"pairing"(standaard),"allowlist","open", of"disabled". Wordt toegepast nadat de bot is toegetreden en de ruimte als DM heeft geclassificeerd; dit beïnvloedt uitnodigingsafhandeling niet.dm.allowFrom: allowlist van gebruikers-ID’s voor DM-verkeer.dm.sessionScope:"per-user"(standaard) of"per-room".dm.threadReplies: DM-only overschrijving voor antwoordthreading ("off","inbound","always").allowBots: accepteer berichten van andere geconfigureerde Matrix-botaccounts (trueof"mentions").allowlistOnly: wanneertrue, forceert alle actieve DM-beleidsregels (behalve"disabled") en"open"-groepsbeleid naar"allowlist". Wijzigt"disabled"-beleidsregels niet.dangerouslyAllowNameMatching: wanneertrue, staat Matrix-directorylookup op weergavenaam toe voor gebruikersvermeldingen in allowlists en lookup op namen van toegetreden ruimtes voor ruimte-allowlist-sleutels. Geef de voorkeur aan volledige@user:server-ID’s en ruimte-ID’s of aliassen.autoJoin:"always","allowlist", of"off". Standaard:"off". Geldt voor elke Matrix-uitnodiging, inclusief DM-achtige uitnodigingen.autoJoinAllowlist: ruimtes/aliassen die zijn toegestaan wanneerautoJoin"allowlist"is. Aliasvermeldingen worden opgelost tegen de homeserver, niet tegen state die door de uitnodigende ruimte wordt geclaimd.contextVisibility: aanvullende contextzichtbaarheid ("all"standaard,"allowlist","allowlist_quote").
Antwoordgedrag
replyToMode:"off","first","all", of"batched".threadReplies:"off","inbound", of"always".threadBindings: overschrijvingen per kanaal voor thread-gebonden sessieroutering en lifecycle.streaming:"off"(standaard),"partial","quiet","progress", of objectvorm{ mode, preview: { toolProgress }, progress: { label, labels, maxLines, maxLineChars, toolProgress } }.true↔"partial",false↔"off".blockStreaming: wanneertrue, worden voltooide assistant-blokken bewaard als afzonderlijke voortgangsberichten.markdown: optionele Markdown-renderingconfiguratie voor uitgaande tekst.responsePrefix: optionele tekenreeks die vóór uitgaande antwoorden wordt geplaatst.textChunkLimit: uitgaande chunkgrootte in tekens wanneerchunkMode: "length". Standaard:4000.chunkMode:"length"(standaard, splitst op aantal tekens) of"newline"(splitst op regelgrenzen).historyLimit: aantal recente ruimteberichten dat wordt opgenomen alsInboundHistorywanneer een ruimtebericht de agent activeert. Valt terug opmessages.groupChat.historyLimit; effectieve standaard0(uitgeschakeld).mediaMaxMb: mediagroottelimiet in MB voor uitgaande verzendingen en inkomende verwerking.
Reactie-instellingen
ackReaction: ack-reactie-overschrijving voor dit kanaal/account.ackReactionScope: scope-overschrijving ("group-mentions"standaard,"group-all","direct","all","none","off").reactionNotifications: modus voor meldingen over inkomende reacties ("own"standaard,"off").
Tooling en overschrijvingen per ruimte
actions: tooltoegang per actie (messages,reactions,pins,profile,memberInfo,channelInfo,verification).groups: beleidsmap per ruimte. Sessie-identiteit gebruikt de stabiele ruimte-ID na resolutie. (roomsis een verouderde alias.)groups.<room>.account: beperk één overgenomen ruimtevermelding tot een specifiek account.groups.<room>.enabled: schakelaar per ruimte. Wanneerfalse, wordt de ruimte genegeerd alsof deze niet in de map stond.groups.<room>.requireMention: overschrijving per ruimte van de vermeldingsvereiste op kanaalniveau.groups.<room>.allowBots: overschrijving per ruimte van de instelling op kanaalniveau (trueof"mentions").groups.<room>.botLoopProtection: overschrijving per ruimte voor het budget voor bot-naar-bot-lusbescherming.groups.<room>.users: allowlist per ruimte voor afzenders.groups.<room>.tools: overschrijvingen per ruimte voor toestaan/weigeren van tools.groups.<room>.autoReply: overschrijving per ruimte voor vermeldingsgating.trueschakelt vermeldingsvereisten uit voor die ruimte;falsedwingt ze weer af.groups.<room>.skills: skillfilter per ruimte.groups.<room>.systemPrompt: fragment van systeemprompt per ruimte.
Instellingen voor exec-goedkeuring
execApprovals.enabled: lever exec-goedkeuringen via Matrix-native prompts.execApprovals.approvers: Matrix-gebruikers-ID’s die mogen goedkeuren. Valt terug opdm.allowFrom.execApprovals.target:"dm"(standaard),"channel"of"both".execApprovals.agentFilter/execApprovals.sessionFilter: optionele agent-/sessie-allowlists voor bezorging.
Gerelateerd
- Kanalenoverzicht - alle ondersteunde kanalen
- Koppelen - DM-authenticatie en koppelingsflow
- Groepen - groepschatgedrag en vermeldingsgating
- Kanaalroutering - sessieroutering voor berichten
- Beveiliging - toegangsmodel en hardening