diff --git a/docs/de/channels/matrix.md b/docs/de/channels/matrix.md index 2ad90b47e..2e957cb86 100644 --- a/docs/de/channels/matrix.md +++ b/docs/de/channels/matrix.md @@ -1,14 +1,14 @@ --- read_when: - - Einrichten von Matrix in OpenClaw - - Konfigurieren von Matrix E2EE und Verifizierung -summary: Status des Matrix-Supports, Einrichtung und Konfigurationsbeispiele + - Matrix in OpenClaw einrichten + - Matrix-E2EE und Verifizierung konfigurieren +summary: Status der Matrix-Unterstützung, Einrichtung und Konfigurationsbeispiele title: Matrix x-i18n: - generated_at: "2026-04-06T03:08:32Z" + generated_at: "2026-04-06T06:23:23Z" model: gpt-5.4 provider: openai - source_hash: 3e2d84c08d7d5b96db14b914e54f08d25334401cdd92eb890bc8dfb37b0ca2dc + source_hash: 06f833bf0ede81bad69f140994c32e8cc5d1635764f95fc5db4fc5dc25f2b85e source_path: channels/matrix.md workflow: 15 --- @@ -23,8 +23,8 @@ Es verwendet das offizielle `matrix-js-sdk` und unterstützt DMs, Räume, Thread Matrix wird in aktuellen OpenClaw-Releases als gebündeltes Plugin ausgeliefert, daher benötigen normale paketierte Builds keine separate Installation. -Wenn Sie einen älteren Build oder eine benutzerdefinierte Installation verwenden, die Matrix ausschließt, installieren -Sie es manuell: +Wenn Sie einen älteren Build oder eine benutzerdefinierte Installation verwenden, die Matrix ausschließt, +installieren Sie es manuell: Von npm installieren: @@ -32,7 +32,7 @@ Von npm installieren: openclaw plugins install @openclaw/matrix ``` -Aus einem lokalen Checkout installieren: +Von einem lokalen Checkout installieren: ```bash openclaw plugins install ./path/to/local/matrix-plugin @@ -44,13 +44,13 @@ Siehe [Plugins](/de/tools/plugin) für Plugin-Verhalten und Installationsregeln. 1. Stellen Sie sicher, dass das Matrix-Plugin verfügbar ist. - Aktuelle paketierte OpenClaw-Releases enthalten es bereits. - - Ältere/benutzerdefinierte Installationen können es mit den obigen Befehlen manuell hinzufügen. + - Ältere/benutzerdefinierte Installationen können es manuell mit den obigen Befehlen hinzufügen. 2. Erstellen Sie ein Matrix-Konto auf Ihrem Homeserver. 3. Konfigurieren Sie `channels.matrix` mit entweder: - `homeserver` + `accessToken`, oder - `homeserver` + `userId` + `password`. 4. Starten Sie das Gateway neu. -5. Starten Sie eine DM mit dem Bot oder laden Sie ihn in einen Raum ein. +5. Starten Sie einen DM mit dem Bot oder laden Sie ihn in einen Raum ein. Interaktive Einrichtungswege: @@ -59,23 +59,23 @@ openclaw channels add openclaw configure --section channels ``` -Was der Matrix-Assistent tatsächlich abfragt: +Wonach der Matrix-Assistent tatsächlich fragt: - Homeserver-URL -- Authentifizierungsmethode: Zugriffstoken oder Passwort +- Authentifizierungsmethode: Access-Token oder Passwort - Benutzer-ID nur, wenn Sie Passwort-Authentifizierung wählen - optionaler Gerätename - ob E2EE aktiviert werden soll -- ob der Matrix-Raumzugriff jetzt konfiguriert werden soll +- ob Matrix-Raumzugriff jetzt konfiguriert werden soll Wichtiges Verhalten des Assistenten: -- Wenn für das ausgewählte Konto bereits Matrix-Auth-Umgebungsvariablen vorhanden sind und für dieses Konto noch keine Authentifizierung in der Konfiguration gespeichert ist, bietet der Assistent eine Umgebungsvariablen-Abkürzung an und schreibt für dieses Konto nur `enabled: true`. -- Wenn Sie interaktiv ein weiteres Matrix-Konto hinzufügen, wird der eingegebene Kontoname in die Konto-ID normalisiert, die in der Konfiguration und in Umgebungsvariablen verwendet wird. Zum Beispiel wird aus `Ops Bot` `ops-bot`. -- DM-Allowlist-Eingabeaufforderungen akzeptieren sofort vollständige `@user:server`-Werte. Anzeigenamen funktionieren nur, wenn die Live-Verzeichnissuche genau einen Treffer findet; andernfalls fordert der Assistent Sie auf, es mit einer vollständigen Matrix-ID erneut zu versuchen. -- Raum-Allowlist-Eingabeaufforderungen akzeptieren Raum-IDs und Aliasse direkt. Sie können auch live beigetretene Raumnamen auflösen, aber nicht aufgelöste Namen werden während der Einrichtung nur wie eingegeben gespeichert und später bei der Laufzeit-Allowlist-Auflösung ignoriert. Bevorzugen Sie `!room:server` oder `#alias:server`. -- Die Laufzeit-Raum-/Sitzungsidentität verwendet die stabile Matrix-Raum-ID. Im Raum deklarierte Aliasse werden nur als Lookup-Eingaben verwendet, nicht als langfristiger Sitzungsschlüssel oder stabile Gruppenidentität. -- Um Raumnamen vor dem Speichern aufzulösen, verwenden Sie `openclaw channels resolve --channel matrix "Project Room"`. +- Wenn für das ausgewählte Konto bereits Matrix-Authentifizierungs-Umgebungsvariablen vorhanden sind und für dieses Konto noch keine Authentifizierung in der Konfiguration gespeichert ist, bietet der Assistent eine Env-Verknüpfung an und schreibt nur `enabled: true` für dieses Konto. +- Wenn Sie interaktiv ein weiteres Matrix-Konto hinzufügen, wird der eingegebene Kontoname in die Konto-ID normalisiert, die in Konfiguration und Env-Variablen verwendet wird. Zum Beispiel wird `Ops Bot` zu `ops-bot`. +- DM-Allowlist-Eingabeaufforderungen akzeptieren sofort vollständige `@user:server`-Werte. Anzeigenamen funktionieren nur, wenn die Live-Verzeichnissuche genau eine Übereinstimmung findet; andernfalls fordert der Assistent Sie auf, es mit einer vollständigen Matrix-ID erneut zu versuchen. +- Raum-Allowlist-Eingabeaufforderungen akzeptieren Raum-IDs und Aliasse direkt. Sie können auch Namen beigetretener Räume live auflösen, aber nicht aufgelöste Namen werden bei der Einrichtung nur wie eingegeben beibehalten und später von der Laufzeit-Allowlist-Auflösung ignoriert. Bevorzugen Sie `!room:server` oder `#alias:server`. +- Die Laufzeitidentität für Raum/Sitzung verwendet die stabile Matrix-Raum-ID. In Räumen deklarierte Aliasse werden nur als Lookup-Eingaben verwendet, nicht als langfristiger Sitzungsschlüssel oder stabile Gruppenidentität. +- Um Raumnamen aufzulösen, bevor Sie sie speichern, verwenden Sie `openclaw channels resolve --channel matrix "Project Room"`. Minimale tokenbasierte Einrichtung: @@ -110,7 +110,7 @@ Passwortbasierte Einrichtung (Token wird nach der Anmeldung zwischengespeichert) Matrix speichert zwischengespeicherte Anmeldedaten in `~/.openclaw/credentials/matrix/`. Das Standardkonto verwendet `credentials.json`; benannte Konten verwenden `credentials-.json`. -Wenn dort zwischengespeicherte Anmeldedaten vorhanden sind, behandelt OpenClaw Matrix bei Einrichtung, Doctor und Kanalstatus-Erkennung als konfiguriert, selbst wenn die aktuelle Authentifizierung nicht direkt in der Konfiguration gesetzt ist. +Wenn dort zwischengespeicherte Anmeldedaten vorhanden sind, betrachtet OpenClaw Matrix für Einrichtung, Doctor und Kanalstatus-Erkennung als konfiguriert, auch wenn die aktuelle Authentifizierung nicht direkt in der Konfiguration gesetzt ist. Entsprechende Umgebungsvariablen (werden verwendet, wenn der Konfigurationsschlüssel nicht gesetzt ist): @@ -121,7 +121,7 @@ Entsprechende Umgebungsvariablen (werden verwendet, wenn der Konfigurationsschl - `MATRIX_DEVICE_ID` - `MATRIX_DEVICE_NAME` -Für Nicht-Standardkonten verwenden Sie konto-spezifische Umgebungsvariablen: +Für Nicht-Standardkonten verwenden Sie kontobezogene Env-Variablen: - `MATRIX__HOMESERVER` - `MATRIX__ACCESS_TOKEN` @@ -130,7 +130,7 @@ Für Nicht-Standardkonten verwenden Sie konto-spezifische Umgebungsvariablen: - `MATRIX__DEVICE_ID` - `MATRIX__DEVICE_NAME` -Beispiel für das Konto `ops`: +Beispiel für Konto `ops`: - `MATRIX_OPS_HOMESERVER` - `MATRIX_OPS_ACCESS_TOKEN` @@ -140,10 +140,10 @@ Für die normalisierte Konto-ID `ops-bot` verwenden Sie: - `MATRIX_OPS_X2D_BOT_HOMESERVER` - `MATRIX_OPS_X2D_BOT_ACCESS_TOKEN` -Matrix escaped Satzzeichen in Konto-IDs, damit konto-spezifische Umgebungsvariablen kollisionsfrei bleiben. -Zum Beispiel wird `-` zu `_X2D_`, sodass `ops-prod` zu `MATRIX_OPS_X2D_PROD_*` wird. +Matrix maskiert Satzzeichen in Konto-IDs, um Kollisionen bei kontobezogenen Env-Variablen zu vermeiden. +Zum Beispiel wird `-` zu `_X2D_`, daher wird `ops-prod` zu `MATRIX_OPS_X2D_PROD_*`. -Der interaktive Assistent bietet die Umgebungsvariablen-Abkürzung nur an, wenn diese Auth-Umgebungsvariablen bereits vorhanden sind und das ausgewählte Konto noch keine Matrix-Authentifizierung in der Konfiguration gespeichert hat. +Der interaktive Assistent bietet die Env-Variablen-Verknüpfung nur an, wenn diese Auth-Env-Variablen bereits vorhanden sind und für das ausgewählte Konto noch keine Matrix-Authentifizierung in der Konfiguration gespeichert ist. ## Konfigurationsbeispiel @@ -182,14 +182,20 @@ Dies ist eine praktische Basiskonfiguration mit DM-Pairing, Raum-Allowlist und a } ``` +`autoJoin` gilt allgemein für Matrix-Einladungen, nicht nur für Raum-/Gruppeneinladungen. +Dazu gehören auch neue DM-artige Einladungen. Zum Zeitpunkt der Einladung weiß OpenClaw nicht zuverlässig, ob der +eingeladene Raum letztlich als DM oder als Gruppe behandelt wird, daher durchlaufen alle Einladungen zuerst dieselbe +`autoJoin`-Entscheidung. `dm.policy` gilt weiterhin, nachdem der Bot beigetreten ist und der Raum +als DM klassifiziert wurde. Daher steuert `autoJoin` das Beitrittsverhalten, während `dm.policy` das Antwort-/Zugriffs- +verhalten steuert. + ## Streaming-Vorschauen -Matrix-Antwort-Streaming ist opt-in. +Antwort-Streaming in Matrix ist optional. Setzen Sie `channels.matrix.streaming` auf `"partial"`, wenn OpenClaw eine einzelne Live-Vorschau -als Antwort senden, diese Vorschau während der Textgenerierung durch das Modell an Ort und Stelle bearbeiten -und sie abschließen soll, wenn die -Antwort fertig ist: +als Antwort senden, diese Vorschau während der Texterzeugung durch das Modell an Ort und Stelle bearbeiten +und sie abschließen soll, wenn die Antwort fertig ist: ```json5 { @@ -201,35 +207,35 @@ Antwort fertig ist: } ``` -- `streaming: "off"` ist die Standardeinstellung. OpenClaw wartet auf die endgültige Antwort und sendet sie einmal. -- `streaming: "partial"` erstellt eine bearbeitbare Vorschau-Nachricht für den aktuellen Assistant-Block unter Verwendung normaler Matrix-Textnachrichten. Dadurch bleibt das ältere preview-first-Benachrichtigungsverhalten von Matrix erhalten, sodass Standard-Clients möglicherweise über den ersten gestreamten Vorschautext benachrichtigen statt über den fertigen Block. -- `streaming: "quiet"` erstellt einen bearbeitbaren stillen Vorschau-Hinweis für den aktuellen Assistant-Block. Verwenden Sie dies nur, wenn Sie zusätzlich Push-Regeln für Empfänger für abgeschlossene Vorschau-Bearbeitungen konfigurieren. -- `blockStreaming: true` aktiviert separate Matrix-Fortschrittsnachrichten. Wenn Vorschau-Streaming aktiviert ist, behält Matrix den Live-Entwurf für den aktuellen Block bei und erhält abgeschlossene Blöcke als separate Nachrichten. +- `streaming: "off"` ist der Standard. OpenClaw wartet auf die endgültige Antwort und sendet sie einmal. +- `streaming: "partial"` erstellt eine bearbeitbare Vorschau-Nachricht für den aktuellen Assistant-Block mit normalen Matrix-Textnachrichten. Dadurch bleibt das ältere Benachrichtigungsverhalten von Matrix mit Vorschau zuerst erhalten, sodass Standard-Clients möglicherweise bei der ersten gestreamten Vorschau statt beim fertigen Block benachrichtigen. +- `streaming: "quiet"` erstellt eine bearbeitbare stille Vorschau-Mitteilung für den aktuellen Assistant-Block. Verwenden Sie dies nur, wenn Sie zusätzlich Push-Regeln für Empfänger für finalisierte Vorschau-Bearbeitungen konfigurieren. +- `blockStreaming: true` aktiviert separate Matrix-Fortschrittsnachrichten. Wenn Vorschau-Streaming aktiviert ist, behält Matrix den Live-Entwurf für den aktuellen Block bei und bewahrt abgeschlossene Blöcke als separate Nachrichten. - Wenn Vorschau-Streaming aktiviert und `blockStreaming` deaktiviert ist, bearbeitet Matrix den Live-Entwurf an Ort und Stelle und finalisiert dasselbe Ereignis, wenn der Block oder Turn endet. -- Wenn die Vorschau nicht mehr in ein einzelnes Matrix-Ereignis passt, stoppt OpenClaw das Vorschau-Streaming und fällt auf normale endgültige Zustellung zurück. -- Medienantworten senden Anhänge weiterhin normal. Wenn eine veraltete Vorschau nicht mehr sicher wiederverwendet werden kann, redigiert OpenClaw sie vor dem Senden der endgültigen Medienantwort. +- Wenn die Vorschau nicht mehr in ein einzelnes Matrix-Ereignis passt, beendet OpenClaw das Vorschau-Streaming und fällt auf normale endgültige Zustellung zurück. +- Medienantworten senden Anhänge weiterhin normal. Wenn eine veraltete Vorschau nicht mehr sicher wiederverwendet werden kann, redigiert OpenClaw sie, bevor die endgültige Medienantwort gesendet wird. - Vorschau-Bearbeitungen verursachen zusätzliche Matrix-API-Aufrufe. Lassen Sie Streaming deaktiviert, wenn Sie das konservativste Rate-Limit-Verhalten möchten. -`blockStreaming` aktiviert für sich allein keine Entwurfs-Vorschauen. +`blockStreaming` aktiviert keine Entwurfsvorschauen von selbst. Verwenden Sie `streaming: "partial"` oder `streaming: "quiet"` für Vorschau-Bearbeitungen; fügen Sie dann `blockStreaming: true` nur hinzu, wenn abgeschlossene Assistant-Blöcke auch als separate Fortschrittsnachrichten sichtbar bleiben sollen. -Wenn Sie Matrix-Standardbenachrichtigungen ohne benutzerdefinierte Push-Regeln benötigen, verwenden Sie `streaming: "partial"` für preview-first-Verhalten oder lassen Sie `streaming` für reine Endzustellung deaktiviert. Mit `streaming: "off"`: +Wenn Sie Matrix-Standardbenachrichtigungen ohne benutzerdefinierte Push-Regeln benötigen, verwenden Sie `streaming: "partial"` für Vorschau-zuerst-Verhalten oder lassen Sie `streaming` für reine Endzustellung deaktiviert. Mit `streaming: "off"`: - `blockStreaming: true` sendet jeden abgeschlossenen Block als normale benachrichtigende Matrix-Nachricht. - `blockStreaming: false` sendet nur die endgültige abgeschlossene Antwort als normale benachrichtigende Matrix-Nachricht. ### Selbst gehostete Push-Regeln für stille finalisierte Vorschauen -Wenn Sie Ihre eigene Matrix-Infrastruktur betreiben und möchten, dass stille Vorschauen nur benachrichtigen, wenn ein Block oder eine -endgültige Antwort abgeschlossen ist, setzen Sie `streaming: "quiet"` und fügen Sie eine benutzerspezifische Push-Regel für finalisierte Vorschau-Bearbeitungen hinzu. +Wenn Sie Ihre eigene Matrix-Infrastruktur betreiben und möchten, dass stille Vorschauen nur benachrichtigen, wenn ein Block oder die +endgültige Antwort fertig ist, setzen Sie `streaming: "quiet"` und fügen Sie pro Benutzer eine Push-Regel für finalisierte Vorschau-Bearbeitungen hinzu. -Dies ist normalerweise eine Einrichtung pro Empfängerbenutzer, keine globale Homeserver-Konfigurationsänderung: +Dies ist in der Regel eine Empfänger-Benutzerkonfiguration, keine homeserverweite Konfigurationsänderung: Kurzübersicht, bevor Sie beginnen: - Empfängerbenutzer = die Person, die die Benachrichtigung erhalten soll - Bot-Benutzer = das OpenClaw-Matrix-Konto, das die Antwort sendet -- verwenden Sie für die folgenden API-Aufrufe das Zugriffstoken des Empfängerbenutzers +- verwenden Sie für die folgenden API-Aufrufe das Access-Token des Empfängerbenutzers - gleichen Sie `sender` in der Push-Regel mit der vollständigen MXID des Bot-Benutzers ab 1. Konfigurieren Sie OpenClaw für stille Vorschauen: @@ -247,10 +253,10 @@ Kurzübersicht, bevor Sie beginnen: 2. Stellen Sie sicher, dass das Empfängerkonto bereits normale Matrix-Push-Benachrichtigungen erhält. Regeln für stille Vorschauen funktionieren nur, wenn dieser Benutzer bereits funktionierende Pushers/Geräte hat. -3. Besorgen Sie sich das Zugriffstoken des Empfängerbenutzers. +3. Rufen Sie das Access-Token des Empfängerbenutzers ab. - Verwenden Sie das Token des empfangenden Benutzers, nicht das Token des Bots. - Die Wiederverwendung eines vorhandenen Client-Sitzungstokens ist normalerweise am einfachsten. - - Wenn Sie ein neues Token erzeugen müssen, können Sie sich über die standardmäßige Matrix Client-Server-API anmelden: + - Wenn Sie ein neues Token erzeugen müssen, können Sie sich über die Standard-Matrix-Client-Server-API anmelden: ```bash curl -sS -X POST \ @@ -266,7 +272,7 @@ curl -sS -X POST \ }' ``` -4. Verifizieren Sie, dass das Empfängerkonto bereits Pushers hat: +4. Prüfen Sie, ob das Empfängerkonto bereits Pushers hat: ```bash curl -sS \ @@ -275,9 +281,9 @@ curl -sS \ ``` Wenn dies keine aktiven Pushers/Geräte zurückgibt, beheben Sie zuerst normale Matrix-Benachrichtigungen, bevor Sie die -untenstehende OpenClaw-Regel hinzufügen. +folgende OpenClaw-Regel hinzufügen. -OpenClaw markiert finalisierte reine Text-Vorschau-Bearbeitungen mit: +OpenClaw kennzeichnet finalisierte reine Text-Vorschau-Bearbeitungen mit: ```json { @@ -317,23 +323,23 @@ curl -sS -X PUT \ Ersetzen Sie diese Werte, bevor Sie den Befehl ausführen: -- `https://matrix.example.org`: Ihre Homeserver-Basis-URL -- `$USER_ACCESS_TOKEN`: das Zugriffstoken des empfangenden Benutzers -- `openclaw-finalized-preview-botname`: eine Regel-ID, die für diesen Bot für diesen empfangenden Benutzer eindeutig ist -- `@bot:example.org`: die MXID Ihres OpenClaw-Matrix-Bots, nicht die MXID des empfangenden Benutzers +- `https://matrix.example.org`: die Basis-URL Ihres Homeservers +- `$USER_ACCESS_TOKEN`: das Access-Token des empfangenden Benutzers +- `openclaw-finalized-preview-botname`: eine Regel-ID, die für diesen Bot bei diesem empfangenden Benutzer eindeutig ist +- `@bot:example.org`: Ihre OpenClaw-Matrix-Bot-MXID, nicht die MXID des empfangenden Benutzers -Wichtig für Setups mit mehreren Bots: +Wichtig für Multi-Bot-Setups: -- Push-Regeln sind nach `ruleId` geschlüsselt. Erneutes Ausführen von `PUT` für dieselbe Regel-ID aktualisiert diese eine Regel. -- Wenn ein empfangender Benutzer für mehrere OpenClaw-Matrix-Botkonten benachrichtigt werden soll, erstellen Sie pro Bot eine Regel mit einer eindeutigen Regel-ID für jede Sender-Übereinstimmung. +- Push-Regeln werden über `ruleId` identifiziert. Ein erneutes `PUT` auf dieselbe Regel-ID aktualisiert genau diese Regel. +- Wenn ein empfangender Benutzer für mehrere OpenClaw-Matrix-Bot-Konten Benachrichtigungen erhalten soll, erstellen Sie pro Bot eine Regel mit jeweils eindeutiger Regel-ID für jede Sender-Übereinstimmung. - Ein einfaches Muster ist `openclaw-finalized-preview-`, zum Beispiel `openclaw-finalized-preview-ops` oder `openclaw-finalized-preview-support`. -Die Regel wird gegen den Ereignis-Sender ausgewertet: +Die Regel wird gegen den Ereignis-`sender` ausgewertet: - authentifizieren Sie sich mit dem Token des empfangenden Benutzers -- gleichen Sie `sender` mit der OpenClaw-Bot-MXID ab +- gleichen Sie `sender` mit der MXID des OpenClaw-Bots ab -6. Verifizieren Sie, dass die Regel existiert: +6. Prüfen Sie, ob die Regel vorhanden ist: ```bash curl -sS \ @@ -341,7 +347,7 @@ curl -sS \ "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" ``` -7. Testen Sie eine gestreamte Antwort. Im stillen Modus sollte der Raum eine stille Entwurfs-Vorschau anzeigen und die abschließende +7. Testen Sie eine gestreamte Antwort. Im stillen Modus sollte der Raum eine stille Entwurfsvorschau anzeigen und die endgültige Bearbeitung an Ort und Stelle sollte benachrichtigen, sobald der Block oder Turn endet. Wenn Sie die Regel später entfernen müssen, löschen Sie dieselbe Regel-ID mit dem Token des empfangenden Benutzers: @@ -354,37 +360,37 @@ curl -sS -X DELETE \ Hinweise: -- Erstellen Sie die Regel mit dem Zugriffstoken des empfangenden Benutzers, nicht mit dem des Bots. -- Neue benutzerdefinierte `override`-Regeln werden vor den standardmäßigen Unterdrückungsregeln eingefügt, daher ist kein zusätzlicher Ordnungsparameter erforderlich. -- Dies betrifft nur reine Text-Vorschau-Bearbeitungen, die OpenClaw sicher an Ort und Stelle finalisieren kann. Medien-Fallbacks und Fallbacks für veraltete Vorschauen verwenden weiterhin die normale Matrix-Zustellung. -- Wenn `GET /_matrix/client/v3/pushers` keine Pushers anzeigt, hat der Benutzer für dieses Konto/Gerät noch keine funktionierende Matrix-Push-Zustellung. +- Erstellen Sie die Regel mit dem Access-Token des empfangenden Benutzers, nicht mit dem des Bots. +- Neue benutzerdefinierte `override`-Regeln werden vor den Standard-Unterdrückungsregeln eingefügt, daher ist kein zusätzlicher Reihenfolgeparameter erforderlich. +- Dies betrifft nur reine Text-Vorschau-Bearbeitungen, die OpenClaw sicher an Ort und Stelle finalisieren kann. Medien-Fallbacks und veraltete Vorschau-Fallbacks verwenden weiterhin die normale Matrix-Zustellung. +- Wenn `GET /_matrix/client/v3/pushers` keine Pushers zeigt, verfügt der Benutzer für dieses Konto/Gerät noch nicht über funktionierende Matrix-Push-Zustellung. #### Synapse -Für Synapse reicht die obige Einrichtung normalerweise bereits aus: +Für Synapse genügt die obige Einrichtung in der Regel bereits: -- Keine spezielle Änderung an `homeserver.yaml` ist für finalisierte OpenClaw-Vorschau-Benachrichtigungen erforderlich. -- Wenn Ihre Synapse-Bereitstellung bereits normale Matrix-Push-Benachrichtigungen sendet, sind das Benutzertoken und der obige `pushrules`-Aufruf der wichtigste Einrichtungsschritt. +- Es ist keine spezielle Änderung an `homeserver.yaml` für finalisierte OpenClaw-Vorschau-Benachrichtigungen erforderlich. +- Wenn Ihre Synapse-Bereitstellung bereits normale Matrix-Push-Benachrichtigungen sendet, sind das Benutzertoken und der oben gezeigte `pushrules`-Aufruf der wichtigste Einrichtungsschritt. - Wenn Sie Synapse hinter einem Reverse-Proxy oder mit Workern betreiben, stellen Sie sicher, dass `/_matrix/client/.../pushrules/` Synapse korrekt erreicht. -- Wenn Sie Synapse-Worker verwenden, stellen Sie sicher, dass Pushers fehlerfrei funktionieren. Die Push-Zustellung wird vom Hauptprozess oder von `synapse.app.pusher` / konfigurierten Pusher-Workern verarbeitet. +- Wenn Sie Synapse-Worker verwenden, stellen Sie sicher, dass die Pushers ordnungsgemäß funktionieren. Die Push-Zustellung wird vom Hauptprozess oder von `synapse.app.pusher` / konfigurierten Pusher-Workern übernommen. #### Tuwunel -Für Tuwunel verwenden Sie denselben Einrichtungsablauf und denselben oben gezeigten `pushrules`-API-Aufruf: +Verwenden Sie für Tuwunel denselben Einrichtungsablauf und denselben oben gezeigten `pushrules`-API-Aufruf: -- Keine Tuwunel-spezifische Konfiguration ist für den Marker für finalisierte Vorschauen selbst erforderlich. -- Wenn normale Matrix-Benachrichtigungen für diesen Benutzer bereits funktionieren, sind das Benutzertoken und der obige `pushrules`-Aufruf der wichtigste Einrichtungsschritt. -- Wenn Benachrichtigungen scheinbar verschwinden, während der Benutzer auf einem anderen Gerät aktiv ist, prüfen Sie, ob `suppress_push_when_active` aktiviert ist. Tuwunel hat diese Option in Tuwunel 1.4.2 am 12. September 2025 hinzugefügt, und sie kann Pushes an andere Geräte absichtlich unterdrücken, während ein Gerät aktiv ist. +- Für den finalisierten Vorschau-Marker selbst ist keine Tuwunel-spezifische Konfiguration erforderlich. +- Wenn normale Matrix-Benachrichtigungen für diesen Benutzer bereits funktionieren, sind das Benutzertoken und der oben gezeigte `pushrules`-Aufruf der wichtigste Einrichtungsschritt. +- Wenn Benachrichtigungen zu verschwinden scheinen, während der Benutzer auf einem anderen Gerät aktiv ist, prüfen Sie, ob `suppress_push_when_active` aktiviert ist. Tuwunel hat diese Option in Tuwunel 1.4.2 am 12. September 2025 hinzugefügt, und sie kann Pushes an andere Geräte absichtlich unterdrücken, während ein Gerät aktiv ist. ## Verschlüsselung und Verifizierung -In verschlüsselten (E2EE-)Räumen verwenden ausgehende Bildereignisse `thumbnail_file`, sodass Bildvorschauen zusammen mit dem vollständigen Anhang verschlüsselt werden. Unverschlüsselte Räume verwenden weiterhin einfaches `thumbnail_url`. Keine Konfiguration ist erforderlich — das Plugin erkennt den E2EE-Status automatisch. +In verschlüsselten (E2EE) Räumen verwenden ausgehende Bildereignisse `thumbnail_file`, sodass Bildvorschauen zusammen mit dem vollständigen Anhang verschlüsselt werden. Unverschlüsselte Räume verwenden weiterhin einfaches `thumbnail_url`. Keine Konfiguration erforderlich — das Plugin erkennt den E2EE-Status automatisch. ### Bot-zu-Bot-Räume Standardmäßig werden Matrix-Nachrichten von anderen konfigurierten OpenClaw-Matrix-Konten ignoriert. -Verwenden Sie `allowBots`, wenn Sie absichtlich Matrix-Verkehr zwischen Agents zulassen möchten: +Verwenden Sie `allowBots`, wenn Sie absichtlich Matrix-Verkehr zwischen Agenten zulassen möchten: ```json5 { @@ -401,11 +407,11 @@ Verwenden Sie `allowBots`, wenn Sie absichtlich Matrix-Verkehr zwischen Agents z } ``` -- `allowBots: true` akzeptiert Nachrichten von anderen konfigurierten Matrix-Botkonten in erlaubten Räumen und DMs. -- `allowBots: "mentions"` akzeptiert diese Nachrichten nur, wenn sie diesen Bot in Räumen sichtbar erwähnen. DMs sind weiterhin erlaubt. +- `allowBots: true` akzeptiert Nachrichten von anderen konfigurierten Matrix-Bot-Konten in erlaubten Räumen und DMs. +- `allowBots: "mentions"` akzeptiert diese Nachrichten in Räumen nur dann, wenn sie diesen Bot sichtbar erwähnen. DMs bleiben weiterhin erlaubt. - `groups..allowBots` überschreibt die Einstellung auf Kontoebene für einen Raum. -- OpenClaw ignoriert weiterhin Nachrichten von derselben Matrix-Benutzer-ID, um Schleifen durch Selbstantworten zu vermeiden. -- Matrix stellt hier kein natives Bot-Flag bereit; OpenClaw behandelt "vom Bot verfasst" als "von einem anderen konfigurierten Matrix-Konto auf diesem OpenClaw-Gateway gesendet". +- OpenClaw ignoriert weiterhin Nachrichten derselben Matrix-Benutzer-ID, um Selbstantwort-Schleifen zu vermeiden. +- Matrix stellt hier kein natives Bot-Flag bereit; OpenClaw behandelt „von Bot verfasst“ als „von einem anderen konfigurierten Matrix-Konto auf diesem OpenClaw-Gateway gesendet“. Verwenden Sie strikte Raum-Allowlists und Erwähnungsanforderungen, wenn Sie Bot-zu-Bot-Verkehr in gemeinsam genutzten Räumen aktivieren. @@ -437,19 +443,19 @@ Ausführlicher Status (vollständige Diagnose): openclaw matrix verify status --verbose ``` -Den gespeicherten Recovery Key in maschinenlesbarer Ausgabe einschließen: +Gespeicherten Recovery-Schlüssel in maschinenlesbarer Ausgabe einbeziehen: ```bash openclaw matrix verify status --include-recovery-key --json ``` -Cross-Signing- und Verifizierungsstatus bootstrapen: +Cross-Signing- und Verifizierungsstatus initialisieren: ```bash openclaw matrix verify bootstrap ``` -Unterstützung für mehrere Konten: Verwenden Sie `channels.matrix.accounts` mit konto-spezifischen Anmeldedaten und optionalem `name`. Siehe [Configuration reference](/de/gateway/configuration-reference#multi-account-all-channels) für das gemeinsame Muster. +Multi-Account-Unterstützung: Verwenden Sie `channels.matrix.accounts` mit kontospezifischen Anmeldedaten und optionalem `name`. Siehe [Konfigurationsreferenz](/de/gateway/configuration-reference#multi-account-all-channels) für das gemeinsame Muster. Ausführliche Bootstrap-Diagnose: @@ -457,13 +463,13 @@ Ausführliche Bootstrap-Diagnose: openclaw matrix verify bootstrap --verbose ``` -Vor dem Bootstrap einen frischen Reset der Cross-Signing-Identität erzwingen: +Frisches Zurücksetzen der Cross-Signing-Identität vor dem Bootstrap erzwingen: ```bash openclaw matrix verify bootstrap --force-reset-cross-signing ``` -Dieses Gerät mit einem Recovery Key verifizieren: +Dieses Gerät mit einem Recovery-Schlüssel verifizieren: ```bash openclaw matrix verify device "" @@ -475,7 +481,7 @@ Ausführliche Details zur Geräteverifizierung: openclaw matrix verify device "" --verbose ``` -Integrität des Room-Key-Backups prüfen: +Integrität des Raumschlüssel-Backups prüfen: ```bash openclaw matrix verify backup status @@ -487,7 +493,7 @@ Ausführliche Diagnose zur Backup-Integrität: openclaw matrix verify backup status --verbose ``` -Room Keys aus dem Server-Backup wiederherstellen: +Raumschlüssel aus dem Server-Backup wiederherstellen: ```bash openclaw matrix verify backup restore @@ -500,19 +506,19 @@ openclaw matrix verify backup restore --verbose ``` Das aktuelle Server-Backup löschen und eine frische Backup-Basis erstellen. Wenn der gespeicherte -Backup-Schlüssel nicht sauber geladen werden kann, kann dieser Reset auch Secret Storage neu erstellen, sodass +Backup-Schlüssel nicht sauber geladen werden kann, kann dieses Zurücksetzen auch den Secret Storage neu erstellen, sodass zukünftige Kaltstarts den neuen Backup-Schlüssel laden können: ```bash openclaw matrix verify backup reset --yes ``` -Alle `verify`-Befehle sind standardmäßig knapp (einschließlich stiller interner SDK-Protokollierung) und zeigen detaillierte Diagnosen nur mit `--verbose`. -Verwenden Sie `--json` für vollständige maschinenlesbare Ausgabe in Skripten. +Alle `verify`-Befehle sind standardmäßig kompakt (einschließlich stiller interner SDK-Protokollierung) und zeigen detaillierte Diagnosen nur mit `--verbose`. +Verwenden Sie `--json` für vollständige maschinenlesbare Ausgabe bei Skripting. -In Setups mit mehreren Konten verwenden Matrix-CLI-Befehle implizit das Standard-Matrix-Konto, sofern Sie nicht `--account ` übergeben. -Wenn Sie mehrere benannte Konten konfigurieren, setzen Sie zuerst `channels.matrix.defaultAccount`, sonst werden diese impliziten CLI-Operationen angehalten und Sie aufgefordert, ein Konto explizit auszuwählen. -Verwenden Sie `--account` immer dann, wenn Verifizierungs- oder Geräteoperationen explizit auf ein benanntes Konto zielen sollen: +In Multi-Account-Setups verwenden Matrix-CLI-Befehle das implizite Matrix-Standardkonto, sofern Sie nicht `--account ` übergeben. +Wenn Sie mehrere benannte Konten konfigurieren, setzen Sie zuerst `channels.matrix.defaultAccount`, andernfalls werden diese impliziten CLI-Operationen angehalten und Sie werden aufgefordert, explizit ein Konto auszuwählen. +Verwenden Sie `--account`, wenn Verifizierungs- oder Geräteoperationen explizit ein benanntes Konto ansprechen sollen: ```bash openclaw matrix verify status --account assistant @@ -520,43 +526,43 @@ openclaw matrix verify backup restore --account assistant openclaw matrix devices list --account assistant ``` -Wenn die Verschlüsselung für ein benanntes Konto deaktiviert oder nicht verfügbar ist, zeigen Matrix-Warnungen und Verifizierungsfehler auf den Konfigurationsschlüssel dieses Kontos, zum Beispiel `channels.matrix.accounts.assistant.encryption`. +Wenn die Verschlüsselung für ein benanntes Konto deaktiviert oder nicht verfügbar ist, verweisen Matrix-Warnungen und Verifizierungsfehler auf den Konfigurationsschlüssel dieses Kontos, zum Beispiel `channels.matrix.accounts.assistant.encryption`. -### Was "verified" bedeutet +### Was „verifiziert“ bedeutet -OpenClaw behandelt dieses Matrix-Gerät nur dann als verifiziert, wenn es durch Ihre eigene Cross-Signing-Identität verifiziert ist. -In der Praxis stellt `openclaw matrix verify status --verbose` drei Vertrauenssignale bereit: +OpenClaw behandelt dieses Matrix-Gerät nur dann als verifiziert, wenn es von Ihrer eigenen Cross-Signing-Identität verifiziert wurde. +In der Praxis zeigt `openclaw matrix verify status --verbose` drei Vertrauenssignale an: -- `Locally trusted`: dieses Gerät ist nur durch den aktuellen Client vertrauenswürdig -- `Cross-signing verified`: das SDK meldet das Gerät als per Cross-Signing verifiziert -- `Signed by owner`: das Gerät ist durch Ihren eigenen Self-Signing-Schlüssel signiert +- `Locally trusted`: Dieses Gerät wird nur vom aktuellen Client als vertrauenswürdig eingestuft +- `Cross-signing verified`: Das SDK meldet das Gerät als per Cross-Signing verifiziert +- `Signed by owner`: Das Gerät ist mit Ihrem eigenen Self-Signing-Schlüssel signiert -`Verified by owner` wird nur dann zu `yes`, wenn Cross-Signing-Verifizierung oder Owner-Signing vorliegt. +`Verified by owner` wird nur dann `yes`, wenn Cross-Signing-Verifizierung oder Owner-Signing vorhanden ist. Lokales Vertrauen allein reicht nicht aus, damit OpenClaw das Gerät als vollständig verifiziert behandelt. ### Was Bootstrap tut `openclaw matrix verify bootstrap` ist der Reparatur- und Einrichtungsbefehl für verschlüsselte Matrix-Konten. -Er führt der Reihe nach Folgendes aus: +Er führt in dieser Reihenfolge Folgendes aus: -- bootstrapt Secret Storage und verwendet nach Möglichkeit einen vorhandenen Recovery Key erneut -- bootstrapt Cross-Signing und lädt fehlende öffentliche Cross-Signing-Schlüssel hoch +- initialisiert Secret Storage und verwendet nach Möglichkeit einen vorhandenen Recovery-Schlüssel wieder +- initialisiert Cross-Signing und lädt fehlende öffentliche Cross-Signing-Schlüssel hoch - versucht, das aktuelle Gerät zu markieren und per Cross-Signing zu signieren -- erstellt ein neues serverseitiges Room-Key-Backup, falls noch keines existiert +- erstellt ein neues serverseitiges Raumschlüssel-Backup, falls noch keines vorhanden ist -Wenn der Homeserver interaktive Authentifizierung zum Hochladen von Cross-Signing-Schlüsseln erfordert, versucht OpenClaw den Upload zuerst ohne Authentifizierung, dann mit `m.login.dummy` und anschließend mit `m.login.password`, wenn `channels.matrix.password` konfiguriert ist. +Wenn der Homeserver interaktive Authentifizierung für das Hochladen von Cross-Signing-Schlüsseln verlangt, versucht OpenClaw das Hochladen zuerst ohne Authentifizierung, dann mit `m.login.dummy` und anschließend mit `m.login.password`, wenn `channels.matrix.password` konfiguriert ist. Verwenden Sie `--force-reset-cross-signing` nur, wenn Sie die aktuelle Cross-Signing-Identität absichtlich verwerfen und eine neue erstellen möchten. -Wenn Sie das aktuelle Room-Key-Backup absichtlich verwerfen und eine neue -Backup-Basis für zukünftige Nachrichten starten möchten, verwenden Sie `openclaw matrix verify backup reset --yes`. +Wenn Sie das aktuelle Raumschlüssel-Backup absichtlich verwerfen und für zukünftige Nachrichten +eine neue Backup-Basis beginnen möchten, verwenden Sie `openclaw matrix verify backup reset --yes`. Tun Sie dies nur, wenn Sie akzeptieren, dass nicht wiederherstellbarer alter verschlüsselter Verlauf -nicht verfügbar bleibt und dass OpenClaw Secret Storage möglicherweise neu erstellt, wenn das aktuelle Backup- +weiterhin nicht verfügbar bleibt und OpenClaw Secret Storage möglicherweise neu erstellt, wenn das aktuelle Backup- Geheimnis nicht sicher geladen werden kann. ### Frische Backup-Basis -Wenn Sie sicherstellen möchten, dass zukünftige verschlüsselte Nachrichten funktionieren, und akzeptieren, dass nicht wiederherstellbarer alter Verlauf verloren geht, führen Sie diese Befehle in dieser Reihenfolge aus: +Wenn Sie zukünftige verschlüsselte Nachrichten funktionsfähig halten und den Verlust nicht wiederherstellbarer alter Chronik akzeptieren möchten, führen Sie diese Befehle in dieser Reihenfolge aus: ```bash openclaw matrix verify backup reset --yes @@ -564,64 +570,64 @@ openclaw matrix verify backup status --verbose openclaw matrix verify status ``` -Fügen Sie `--account ` zu jedem Befehl hinzu, wenn Sie ausdrücklich auf ein benanntes Matrix-Konto zielen möchten. +Fügen Sie zu jedem Befehl `--account ` hinzu, wenn Sie explizit ein benanntes Matrix-Konto ansprechen möchten. ### Startverhalten -Wenn `encryption: true`, setzt Matrix `startupVerification` standardmäßig auf `"if-unverified"`. -Wenn dieses Gerät beim Start noch nicht verifiziert ist, fordert Matrix beim Start eine Selbstverifizierung in einem anderen Matrix-Client an, -überspringt doppelte Anforderungen, solange bereits eine aussteht, und wendet vor erneuten Versuchen nach Neustarts eine lokale Abkühlzeit an. -Fehlgeschlagene Anforderungsversuche werden standardmäßig früher erneut versucht als erfolgreiche Erstellung von Anforderungen. +Wenn `encryption: true` gesetzt ist, verwendet Matrix standardmäßig `startupVerification` mit dem Wert `"if-unverified"`. +Beim Start fordert Matrix eine Selbstverifizierung in einem anderen Matrix-Client an, falls dieses Gerät noch nicht verifiziert ist, +überspringt doppelte Anforderungen, solange bereits eine aussteht, und wendet vor erneuten Versuchen nach Neustarts eine lokale Abkühlphase an. +Fehlgeschlagene Anforderungsversuche werden standardmäßig früher erneut versucht als erfolgreich erzeugte Anforderungen. Setzen Sie `startupVerification: "off"`, um automatische Startanforderungen zu deaktivieren, oder passen Sie `startupVerificationCooldownHours` -an, wenn Sie ein kürzeres oder längeres Wiederholungsfenster wünschen. +an, wenn Sie ein kürzeres oder längeres Wiederholungsfenster möchten. -Beim Start wird außerdem automatisch ein konservativer Crypto-Bootstrap-Durchlauf ausgeführt. -Dieser Durchlauf versucht zuerst, den aktuellen Secret Storage und die bestehende Cross-Signing-Identität wiederzuverwenden, und vermeidet das Zurücksetzen von Cross-Signing, sofern Sie nicht ausdrücklich einen Bootstrap-Reparaturablauf ausführen. +Beim Start wird außerdem automatisch ein konservativer Krypto-Bootstrap-Durchlauf ausgeführt. +Dieser Durchlauf versucht zuerst, den aktuellen Secret Storage und die aktuelle Cross-Signing-Identität wiederzuverwenden, und vermeidet das Zurücksetzen von Cross-Signing, sofern Sie nicht einen expliziten Bootstrap-Reparaturablauf ausführen. -Wenn der Start einen fehlerhaften Bootstrap-Zustand findet und `channels.matrix.password` konfiguriert ist, kann OpenClaw einen strengeren Reparaturpfad versuchen. -Wenn das aktuelle Gerät bereits vom Besitzer signiert ist, erhält OpenClaw diese Identität, anstatt sie automatisch zurückzusetzen. +Wenn beim Start ein defekter Bootstrap-Status erkannt wird und `channels.matrix.password` konfiguriert ist, kann OpenClaw einen strengeren Reparaturpfad versuchen. +Wenn das aktuelle Gerät bereits vom Eigentümer signiert ist, bewahrt OpenClaw diese Identität, statt sie automatisch zurückzusetzen. Upgrade vom vorherigen öffentlichen Matrix-Plugin: -- OpenClaw verwendet nach Möglichkeit automatisch dasselbe Matrix-Konto, Zugriffstoken und dieselbe Geräteidentität erneut. +- OpenClaw verwendet nach Möglichkeit automatisch dasselbe Matrix-Konto, denselben Access-Token und dieselbe Geräteidentität wieder. - Bevor umsetzbare Matrix-Migrationsänderungen ausgeführt werden, erstellt oder verwendet OpenClaw einen Recovery-Snapshot unter `~/Backups/openclaw-migrations/`. -- Wenn Sie mehrere Matrix-Konten verwenden, setzen Sie `channels.matrix.defaultAccount`, bevor Sie vom alten Flat-Store-Layout upgraden, damit OpenClaw weiß, welches Konto diesen gemeinsam genutzten Legacy-Status erhalten soll. -- Wenn das vorherige Plugin einen Matrix-Room-Key-Backup-Entschlüsselungsschlüssel lokal gespeichert hat, importiert der Start oder `openclaw doctor --fix` ihn automatisch in den neuen Recovery-Key-Ablauf. -- Wenn sich das Matrix-Zugriffstoken geändert hat, nachdem die Migration vorbereitet wurde, durchsucht der Start jetzt benachbarte Token-Hash-Speicherwurzeln nach ausstehendem Legacy-Wiederherstellungsstatus, bevor die automatische Backup-Wiederherstellung aufgegeben wird. -- Wenn sich das Matrix-Zugriffstoken später für dasselbe Konto, denselben Homeserver und denselben Benutzer ändert, bevorzugt OpenClaw jetzt die Wiederverwendung der vollständigsten vorhandenen Token-Hash-Speicherwurzel, anstatt mit einem leeren Matrix-Statusverzeichnis zu beginnen. -- Beim nächsten Gateway-Start werden gesicherte Room Keys automatisch in den neuen Crypto-Store wiederhergestellt. -- Wenn das alte Plugin nur lokal vorhandene Room Keys hatte, die nie gesichert wurden, warnt OpenClaw deutlich. Diese Schlüssel können nicht automatisch aus dem vorherigen Rust-Crypto-Store exportiert werden, daher bleibt ein Teil des alten verschlüsselten Verlaufs möglicherweise unzugänglich, bis er manuell wiederhergestellt wird. -- Siehe [Matrix migration](/de/install/migrating-matrix) für den vollständigen Upgrade-Ablauf, Einschränkungen, Wiederherstellungsbefehle und häufige Migrationsmeldungen. +- Wenn Sie mehrere Matrix-Konten verwenden, setzen Sie vor dem Upgrade vom alten Flat-Store-Layout `channels.matrix.defaultAccount`, damit OpenClaw weiß, welches Konto diesen gemeinsamen Legacy-Status erhalten soll. +- Wenn das vorherige Plugin lokal einen Entschlüsselungsschlüssel für ein Matrix-Raumschlüssel-Backup gespeichert hat, importieren der Start oder `openclaw doctor --fix` ihn automatisch in den neuen Recovery-Schlüssel-Ablauf. +- Wenn sich der Matrix-Access-Token geändert hat, nachdem die Migration vorbereitet wurde, durchsucht der Start jetzt benachbarte Token-Hash-Speicherwurzeln nach ausstehendem Legacy-Wiederherstellungsstatus, bevor die automatische Backup-Wiederherstellung aufgegeben wird. +- Wenn sich der Matrix-Access-Token später für dasselbe Konto, denselben Homeserver und denselben Benutzer ändert, verwendet OpenClaw nun bevorzugt die vollständigste vorhandene Token-Hash-Speicherwurzel wieder, statt mit einem leeren Matrix-Statusverzeichnis zu beginnen. +- Beim nächsten Gateway-Start werden gesicherte Raumschlüssel automatisch in den neuen Krypto-Store wiederhergestellt. +- Wenn das alte Plugin nur lokal vorhandene Raumschlüssel hatte, die nie gesichert wurden, warnt OpenClaw deutlich. Diese Schlüssel können nicht automatisch aus dem vorherigen Rust-Krypto-Store exportiert werden, sodass ein Teil des alten verschlüsselten Verlaufs bis zur manuellen Wiederherstellung möglicherweise nicht verfügbar bleibt. +- Siehe [Matrix-Migration](/de/install/migrating-matrix) für den vollständigen Upgrade-Ablauf, Einschränkungen, Wiederherstellungsbefehle und häufige Migrationsmeldungen. -Verschlüsselter Laufzeitstatus ist unter token-hash-basierten Wurzeln pro Konto und Benutzer in +Der verschlüsselte Laufzeitstatus ist unter token-hash-basierten Wurzeln pro Konto und Benutzer in `~/.openclaw/matrix/accounts//__//` organisiert. -Dieses Verzeichnis enthält den Sync-Store (`bot-storage.json`), den Crypto-Store (`crypto/`), -die Recovery-Key-Datei (`recovery-key.json`), den IndexedDB-Snapshot (`crypto-idb-snapshot.json`), +Dieses Verzeichnis enthält den Sync-Store (`bot-storage.json`), den Krypto-Store (`crypto/`), +die Recovery-Schlüsseldatei (`recovery-key.json`), den IndexedDB-Snapshot (`crypto-idb-snapshot.json`), Thread-Bindings (`thread-bindings.json`) und den Status der Startverifizierung (`startup-verification.json`), wenn diese Funktionen verwendet werden. Wenn sich das Token ändert, die Kontoidentität aber gleich bleibt, verwendet OpenClaw die beste vorhandene -Wurzel für dieses Tupel aus Konto/Homeserver/Benutzer erneut, sodass vorheriger Sync-Status, Crypto-Status, Thread-Bindings -und der Status der Startverifizierung sichtbar bleiben. +Wurzel für dieses Konto-/Homeserver-/Benutzer-Tupel wieder, sodass vorheriger Sync-Status, Krypto-Status, Thread-Bindings +und Startverifizierungsstatus sichtbar bleiben. -### Node-Crypto-Store-Modell +### Node-Krypto-Store-Modell -Matrix-E2EE in diesem Plugin verwendet den offiziellen `matrix-js-sdk`-Rust-Crypto-Pfad in Node. -Dieser Pfad erwartet IndexedDB-basierte Persistenz, wenn der Crypto-Status Neustarts überdauern soll. +Matrix-E2EE in diesem Plugin verwendet in Node den offiziellen Rust-Krypto-Pfad von `matrix-js-sdk`. +Dieser Pfad erwartet IndexedDB-basierte Persistenz, wenn der Krypto-Status Neustarts überdauern soll. -OpenClaw stellt dies in Node derzeit bereit durch: +OpenClaw stellt dies in Node derzeit bereit, indem es: -- Verwendung von `fake-indexeddb` als IndexedDB-API-Shim, den das SDK erwartet -- Wiederherstellung der Rust-Crypto-IndexedDB-Inhalte aus `crypto-idb-snapshot.json` vor `initRustCrypto` -- Persistieren der aktualisierten IndexedDB-Inhalte zurück nach `crypto-idb-snapshot.json` nach der Initialisierung und während der Laufzeit -- Serialisierung von Snapshot-Wiederherstellung und -Persistierung gegen `crypto-idb-snapshot.json` mit einer beratenden Dateisperre, damit Laufzeitpersistenz des Gateways und CLI-Wartung nicht um dieselbe Snapshot-Datei konkurrieren +- `fake-indexeddb` als vom SDK erwarteten IndexedDB-API-Shim verwendet +- die Rust-Krypto-IndexedDB-Inhalte vor `initRustCrypto` aus `crypto-idb-snapshot.json` wiederherstellt +- die aktualisierten IndexedDB-Inhalte nach der Initialisierung und während der Laufzeit zurück in `crypto-idb-snapshot.json` persistiert +- Snapshot-Wiederherstellung und Persistenz gegenüber `crypto-idb-snapshot.json` mit einer beratenden Dateisperre serialisiert, damit Gateway-Laufzeitpersistenz und CLI-Wartung nicht um dieselbe Snapshot-Datei konkurrieren -Dies ist Kompatibilitäts-/Speicher-Logik, keine benutzerdefinierte Crypto-Implementierung. +Dies ist Kompatibilitäts-/Speicher-Plumbing, keine benutzerdefinierte Krypto-Implementierung. Die Snapshot-Datei ist sensibler Laufzeitstatus und wird mit restriktiven Dateiberechtigungen gespeichert. -Unter dem Sicherheitsmodell von OpenClaw befinden sich der Gateway-Host und das lokale OpenClaw-Statusverzeichnis bereits innerhalb der vertrauenswürdigen Betreibergrenze, daher ist dies in erster Linie ein operatives Haltbarkeitsthema und keine separate Remote-Vertrauensgrenze. +Nach dem Sicherheitsmodell von OpenClaw befinden sich der Gateway-Host und das lokale OpenClaw-Statusverzeichnis bereits innerhalb der vertrauenswürdigen Operator-Grenze, daher ist dies primär ein Problem der Betriebssicherheit und keine separate Remote-Vertrauensgrenze. Geplante Verbesserung: -- SecretRef-Unterstützung für persistentes Matrix-Schlüsselmaterial hinzufügen, damit Recovery Keys und verwandte Store-Verschlüsselungsgeheimnisse aus OpenClaw-Secrets-Providern statt nur aus lokalen Dateien bezogen werden können +- SecretRef-Unterstützung für persistentes Matrix-Schlüsselmaterial hinzufügen, damit Recovery-Schlüssel und verwandte Store-Verschlüsselungsgeheimnisse aus OpenClaw-Secret-Providern statt nur aus lokalen Dateien bezogen werden können ## Profilverwaltung @@ -632,28 +638,28 @@ openclaw matrix profile set --name "OpenClaw Assistant" openclaw matrix profile set --avatar-url https://cdn.example.org/avatar.png ``` -Fügen Sie `--account ` hinzu, wenn Sie explizit auf ein benanntes Matrix-Konto zielen möchten. +Fügen Sie `--account ` hinzu, wenn Sie explizit ein benanntes Matrix-Konto ansprechen möchten. Matrix akzeptiert `mxc://`-Avatar-URLs direkt. Wenn Sie eine `http://`- oder `https://`-Avatar-URL übergeben, lädt OpenClaw sie zuerst zu Matrix hoch und speichert die aufgelöste `mxc://`-URL zurück in `channels.matrix.avatarUrl` (oder in die ausgewählte Kontoüberschreibung). -## Automatische Verifizierungshinweise +## Automatische Verifizierungsmitteilungen Matrix veröffentlicht jetzt Hinweise zum Verifizierungslebenszyklus direkt im strikten DM-Verifizierungsraum als `m.notice`-Nachrichten. Dazu gehören: - Hinweise zu Verifizierungsanfragen -- Hinweise, dass die Verifizierung bereit ist (mit explizitem Hinweis "Per Emoji verifizieren") +- Hinweise, dass die Verifizierung bereit ist (mit explizitem Hinweis „Per Emoji verifizieren“) - Hinweise zum Start und Abschluss der Verifizierung -- SAS-Details (Emoji und Dezimalzahl), wenn verfügbar +- SAS-Details (Emoji und Dezimalwerte), wenn verfügbar -Eingehende Verifizierungsanfragen von einem anderen Matrix-Client werden von OpenClaw verfolgt und automatisch akzeptiert. -Bei Selbstverifizierungsabläufen startet OpenClaw außerdem automatisch den SAS-Ablauf, sobald Emoji-Verifizierung verfügbar wird, und bestätigt die eigene Seite. -Bei Verifizierungsanfragen von einem anderen Matrix-Benutzer/Gerät akzeptiert OpenClaw die Anfrage automatisch und wartet dann, bis der SAS-Ablauf normal fortgesetzt wird. -Sie müssen die Emoji- oder Dezimal-SAS weiterhin in Ihrem Matrix-Client vergleichen und dort "They match" bestätigen, um die Verifizierung abzuschließen. +Eingehende Verifizierungsanfragen von einem anderen Matrix-Client werden von OpenClaw nachverfolgt und automatisch akzeptiert. +Bei Selbstverifizierungsabläufen startet OpenClaw außerdem den SAS-Ablauf automatisch, sobald die Emoji-Verifizierung verfügbar ist, und bestätigt seine eigene Seite. +Bei Verifizierungsanfragen von einem anderen Matrix-Benutzer/-Gerät akzeptiert OpenClaw die Anfrage automatisch und wartet dann darauf, dass der SAS-Ablauf normal fortgesetzt wird. +Sie müssen die Emoji- oder Dezimal-SAS weiterhin in Ihrem Matrix-Client vergleichen und dort „Sie stimmen überein“ bestätigen, um die Verifizierung abzuschließen. -OpenClaw akzeptiert von sich selbst initiierte doppelte Abläufe nicht blind automatisch. Beim Start wird keine neue Anfrage erstellt, wenn bereits eine Selbstverifizierungsanfrage aussteht. +OpenClaw akzeptiert selbst initiierte doppelte Abläufe nicht blind automatisch. Beim Start wird keine neue Anfrage erstellt, wenn bereits eine Selbstverifizierungsanfrage aussteht. -Hinweise zum Verifizierungsprotokoll/System werden nicht an die Agent-Chat-Pipeline weitergeleitet und erzeugen daher kein `NO_REPLY`. +Hinweise des Verifizierungsprotokolls/-systems werden nicht an die Agent-Chat-Pipeline weitergeleitet, daher erzeugen sie kein `NO_REPLY`. ### Gerätehygiene @@ -664,7 +670,7 @@ Listen Sie sie auf mit: openclaw matrix devices list ``` -Entfernen Sie veraltete, von OpenClaw verwaltete Geräte mit: +Entfernen Sie veraltete von OpenClaw verwaltete Geräte mit: ```bash openclaw matrix devices prune-stale @@ -672,7 +678,7 @@ openclaw matrix devices prune-stale ### Reparatur direkter Räume -Wenn der Direct-Message-Status nicht mehr synchron ist, kann OpenClaw mit veralteten `m.direct`-Zuordnungen enden, die auf alte Einzelräume statt auf die aktive DM zeigen. Prüfen Sie die aktuelle Zuordnung für einen Peer mit: +Wenn der Status direkter Nachrichten nicht synchron ist, kann OpenClaw veraltete `m.direct`-Zuordnungen erhalten, die auf alte Soloräume statt auf den aktuellen DM zeigen. Prüfen Sie die aktuelle Zuordnung für einen Peer mit: ```bash openclaw matrix direct inspect --user-id @alice:example.org @@ -684,43 +690,43 @@ Reparieren Sie sie mit: openclaw matrix direct repair --user-id @alice:example.org ``` -Die Reparatur hält die Matrix-spezifische Logik innerhalb des Plugins: +Die Reparatur hält die Matrix-spezifische Logik im Plugin: -- sie bevorzugt eine strikte 1:1-DM, die bereits in `m.direct` zugeordnet ist -- andernfalls greift sie auf eine beliebige derzeit beigetretene strikte 1:1-DM mit diesem Benutzer zurück -- wenn keine gesunde DM existiert, erstellt sie einen neuen direkten Raum und schreibt `m.direct` um, sodass er auf diesen zeigt +- bevorzugt wird ein strikter 1:1-DM, der bereits in `m.direct` zugeordnet ist +- andernfalls wird auf einen beliebigen aktuell beigetretenen strikten 1:1-DM mit diesem Benutzer zurückgegriffen +- wenn kein intakter DM existiert, wird ein neuer direkter Raum erstellt und `m.direct` so neu geschrieben, dass er darauf zeigt -Der Reparaturablauf löscht alte Räume nicht automatisch. Er wählt nur die gesunde DM aus und aktualisiert die Zuordnung, damit neue Matrix-Sendungen, Verifizierungshinweise und andere Direct-Message-Abläufe wieder auf den richtigen Raum zielen. +Der Reparaturablauf löscht alte Räume nicht automatisch. Er wählt nur den intakten DM aus und aktualisiert die Zuordnung, sodass neue Matrix-Sendungen, Verifizierungshinweise und andere Direktnachrichtenabläufe wieder den richtigen Raum ansprechen. ## Threads -Matrix unterstützt native Matrix-Threads sowohl für automatische Antworten als auch für Sends mit Message-Tools. +Matrix unterstützt native Matrix-Threads sowohl für automatische Antworten als auch für Message-Tool-Sendungen. -- `dm.sessionScope: "per-user"` (Standard) hält das Matrix-DM-Routing absenderbezogen, sodass mehrere DM-Räume eine Sitzung gemeinsam nutzen können, wenn sie zu demselben Peer aufgelöst werden. -- `dm.sessionScope: "per-room"` isoliert jeden Matrix-DM-Raum in seinen eigenen Sitzungsschlüssel, verwendet aber weiterhin normale DM-Authentifizierungs- und Allowlist-Prüfungen. -- Explizite Matrix-Konversations-Bindings haben weiterhin Vorrang vor `dm.sessionScope`, sodass gebundene Räume und Threads ihr gewähltes Zielsitzungsziel beibehalten. -- `threadReplies: "off"` hält Antworten auf Top-Level-Ebene und belässt eingehende Thread-Nachrichten in der übergeordneten Sitzung. -- `threadReplies: "inbound"` antwortet in einem Thread nur dann innerhalb eines Threads, wenn die eingehende Nachricht bereits in diesem Thread war. -- `threadReplies: "always"` hält Raumantworten in einem Thread, der an der auslösenden Nachricht verankert ist, und leitet diese Konversation über die passende thread-spezifische Sitzung ab der ersten auslösenden Nachricht. -- `dm.threadReplies` überschreibt die Top-Level-Einstellung nur für DMs. So können Sie zum Beispiel Raum-Threads isoliert halten und DMs flach halten. -- Eingehende Thread-Nachrichten enthalten die Thread-Root-Nachricht als zusätzlichen Agent-Kontext. -- Sends mit Message-Tools übernehmen jetzt automatisch den aktuellen Matrix-Thread, wenn das Ziel derselbe Raum oder dasselbe DM-Benutzerziel ist, sofern kein explizites `threadId` angegeben ist. -- Die Wiederverwendung desselben DM-Benutzerziels in derselben Sitzung greift nur, wenn die Metadaten der aktuellen Sitzung denselben DM-Peer auf demselben Matrix-Konto nachweisen; andernfalls fällt OpenClaw auf normales benutzerbezogenes Routing zurück. -- Wenn OpenClaw erkennt, dass ein Matrix-DM-Raum mit einem anderen DM-Raum auf derselben gemeinsam genutzten Matrix-DM-Sitzung kollidiert, veröffentlicht es einmalig ein `m.notice` in diesem Raum mit der `/focus`-Escape-Hatch, wenn Thread-Bindings aktiviert sind, sowie dem Hinweis `dm.sessionScope`. -- Laufzeit-Thread-Bindings werden für Matrix unterstützt. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` und thread-gebundenes `/acp spawn` funktionieren jetzt in Matrix-Räumen und DMs. -- Top-Level-`/focus` in Matrix-Raum/DM erstellt einen neuen Matrix-Thread und bindet ihn an die Zielsitzung, wenn `threadBindings.spawnSubagentSessions=true`. -- Das Ausführen von `/focus` oder `/acp spawn --thread here` innerhalb eines vorhandenen Matrix-Threads bindet stattdessen diesen aktuellen Thread. +- `dm.sessionScope: "per-user"` (Standard) hält das Matrix-DM-Routing absenderspezifisch, sodass mehrere DM-Räume eine Sitzung gemeinsam nutzen können, wenn sie demselben Peer zugeordnet werden. +- `dm.sessionScope: "per-room"` isoliert jeden Matrix-DM-Raum in seinen eigenen Sitzungsschlüssel und verwendet dabei weiterhin normale DM-Authentifizierungs- und Allowlist-Prüfungen. +- Explizite Matrix-Konversations-Bindings haben weiterhin Vorrang vor `dm.sessionScope`, sodass gebundene Räume und Threads ihren gewählten Ziel-Session beibehalten. +- `threadReplies: "off"` hält Antworten auf der obersten Ebene und eingehende Thread-Nachrichten auf der übergeordneten Sitzung. +- `threadReplies: "inbound"` antwortet innerhalb eines Threads nur dann, wenn die eingehende Nachricht bereits in diesem Thread war. +- `threadReplies: "always"` hält Raumantworten in einem Thread mit der auslösenden Nachricht als Wurzel und leitet diese Konversation ab der ersten auslösenden Nachricht durch die passende threadbezogene Sitzung. +- `dm.threadReplies` überschreibt die Einstellung auf oberster Ebene nur für DMs. Sie können zum Beispiel Raum-Threads isoliert halten und DMs flach halten. +- Eingehende Thread-Nachrichten enthalten die Thread-Wurzelnachricht als zusätzlichen Agent-Kontext. +- Message-Tool-Sendungen übernehmen jetzt automatisch den aktuellen Matrix-Thread, wenn das Ziel derselbe Raum oder dasselbe DM-Benutzerziel ist, sofern nicht explizit `threadId` angegeben wird. +- Dieselbe sitzungsbezogene Wiederverwendung für DM-Benutzerziele greift nur, wenn die aktuellen Sitzungsmetadaten denselben DM-Peer im selben Matrix-Konto nachweisen; andernfalls fällt OpenClaw auf normales benutzerbezogenes Routing zurück. +- Wenn OpenClaw erkennt, dass ein Matrix-DM-Raum mit einem anderen DM-Raum in derselben gemeinsam genutzten Matrix-DM-Sitzung kollidiert, sendet es einmalig ein `m.notice` in diesem Raum mit dem `/focus`-Ausweg, wenn Thread-Bindings aktiviert sind, sowie dem Hinweis `dm.sessionScope`. +- Laufzeit-Thread-Bindings werden für Matrix unterstützt. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` und threadgebundenes `/acp spawn` funktionieren jetzt in Matrix-Räumen und DMs. +- Ein `/focus` auf oberster Ebene in Matrix-Raum/DM erstellt einen neuen Matrix-Thread und bindet ihn an die Zielsitzung, wenn `threadBindings.spawnSubagentSessions=true`. +- Wenn `/focus` oder `/acp spawn --thread here` innerhalb eines bestehenden Matrix-Threads ausgeführt wird, wird stattdessen dieser aktuelle Thread gebunden. ## ACP-Konversations-Bindings -Matrix-Räume, DMs und vorhandene Matrix-Threads können in dauerhafte ACP-Workspaces umgewandelt werden, ohne die Chat-Oberfläche zu ändern. +Matrix-Räume, DMs und bestehende Matrix-Threads können in dauerhafte ACP-Workspaces umgewandelt werden, ohne die Chat-Oberfläche zu ändern. Schneller Operator-Ablauf: -- Führen Sie `/acp spawn codex --bind here` innerhalb der Matrix-DM, des Raums oder des vorhandenen Threads aus, den Sie weiterverwenden möchten. -- In einer Matrix-DM oder einem Raum auf Top-Level-Ebene bleibt die aktuelle DM bzw. der aktuelle Raum die Chat-Oberfläche und zukünftige Nachrichten werden an die erzeugte ACP-Sitzung geleitet. -- Innerhalb eines vorhandenen Matrix-Threads bindet `--bind here` den aktuellen Thread an Ort und Stelle. -- `/new` und `/reset` setzen dieselbe gebundene ACP-Sitzung an Ort und Stelle zurück. +- Führen Sie `/acp spawn codex --bind here` innerhalb des Matrix-DM, Raums oder bestehenden Threads aus, den Sie weiterverwenden möchten. +- In einem Matrix-DM oder Raum auf oberster Ebene bleibt der aktuelle DM/Raum die Chat-Oberfläche und zukünftige Nachrichten werden an die erzeugte ACP-Sitzung weitergeleitet. +- Innerhalb eines bestehenden Matrix-Threads bindet `--bind here` diesen aktuellen Thread direkt. +- `/new` und `/reset` setzen dieselbe gebundene ACP-Sitzung direkt zurück. - `/acp close` schließt die ACP-Sitzung und entfernt die Bindung. Hinweise: @@ -728,9 +734,9 @@ Hinweise: - `--bind here` erstellt keinen untergeordneten Matrix-Thread. - `threadBindings.spawnAcpSessions` ist nur für `/acp spawn --thread auto|here` erforderlich, wenn OpenClaw einen untergeordneten Matrix-Thread erstellen oder binden muss. -### Konfiguration der Thread-Bindings +### Thread-Binding-Konfiguration -Matrix erbt globale Standardwerte aus `session.threadBindings` und unterstützt außerdem kanalbezogene Überschreibungen: +Matrix übernimmt globale Standards von `session.threadBindings` und unterstützt außerdem kanalbezogene Überschreibungen: - `threadBindings.enabled` - `threadBindings.idleHours` @@ -738,35 +744,35 @@ Matrix erbt globale Standardwerte aus `session.threadBindings` und unterstützt - `threadBindings.spawnSubagentSessions` - `threadBindings.spawnAcpSessions` -Thread-gebundene Spawn-Flags für Matrix sind opt-in: +Threadgebundene Spawn-Flags für Matrix sind optional: -- Setzen Sie `threadBindings.spawnSubagentSessions: true`, um zu erlauben, dass Top-Level-`/focus` neue Matrix-Threads erstellt und bindet. -- Setzen Sie `threadBindings.spawnAcpSessions: true`, um zu erlauben, dass `/acp spawn --thread auto|here` ACP-Sitzungen an Matrix-Threads bindet. +- Setzen Sie `threadBindings.spawnSubagentSessions: true`, um `/focus` auf oberster Ebene zu erlauben, neue Matrix-Threads zu erstellen und zu binden. +- Setzen Sie `threadBindings.spawnAcpSessions: true`, um `/acp spawn --thread auto|here` zu erlauben, ACP-Sitzungen an Matrix-Threads zu binden. ## Reaktionen Matrix unterstützt ausgehende Reaktionsaktionen, eingehende Reaktionsbenachrichtigungen und eingehende Bestätigungsreaktionen. -- Tooling für ausgehende Reaktionen wird durch `channels["matrix"].actions.reactions` gesteuert. +- Outbound-Reaktions-Tooling wird durch `channels["matrix"].actions.reactions` gesteuert. - `react` fügt einem bestimmten Matrix-Ereignis eine Reaktion hinzu. - `reactions` listet die aktuelle Reaktionszusammenfassung für ein bestimmtes Matrix-Ereignis auf. - `emoji=""` entfernt die eigenen Reaktionen des Bot-Kontos auf dieses Ereignis. - `remove: true` entfernt nur die angegebene Emoji-Reaktion vom Bot-Konto. -Der Geltungsbereich von Bestätigungsreaktionen wird in dieser Reihenfolge aufgelöst: +Der Geltungsbereich für Bestätigungsreaktionen wird in der Standardreihenfolge von OpenClaw aufgelöst: - `channels["matrix"].accounts..ackReaction` - `channels["matrix"].ackReaction` - `messages.ackReaction` - Emoji-Fallback der Agent-Identität -Der Geltungsbereich von Bestätigungsreaktionen wird in dieser Reihenfolge aufgelöst: +Der Geltungsbereich der Bestätigungsreaktion wird in dieser Reihenfolge aufgelöst: - `channels["matrix"].accounts..ackReactionScope` - `channels["matrix"].ackReactionScope` - `messages.ackReactionScope` -Der Benachrichtigungsmodus für Reaktionen wird in dieser Reihenfolge aufgelöst: +Der Modus für Reaktionsbenachrichtigungen wird in dieser Reihenfolge aufgelöst: - `channels["matrix"].accounts..reactionNotifications` - `channels["matrix"].reactionNotifications` @@ -775,30 +781,30 @@ Der Benachrichtigungsmodus für Reaktionen wird in dieser Reihenfolge aufgelöst Aktuelles Verhalten: - `reactionNotifications: "own"` leitet hinzugefügte `m.reaction`-Ereignisse weiter, wenn sie auf vom Bot verfasste Matrix-Nachrichten zielen. -- `reactionNotifications: "off"` deaktiviert Reaktions-Systemereignisse. -- Das Entfernen von Reaktionen wird weiterhin nicht in Systemereignisse synthetisiert, da Matrix diese als Redactions und nicht als eigenständige `m.reaction`-Entfernungen darstellt. +- `reactionNotifications: "off"` deaktiviert Reaktionssystemereignisse. +- Das Entfernen von Reaktionen wird weiterhin nicht in Systemereignisse synthetisiert, da Matrix diese als Redigierungen und nicht als eigenständige `m.reaction`-Entfernungen darstellt. -## Verlaufskontext +## Verlaufs-Kontext - `channels.matrix.historyLimit` steuert, wie viele aktuelle Raumnachrichten als `InboundHistory` einbezogen werden, wenn eine Matrix-Raumnachricht den Agent auslöst. -- Es fällt auf `messages.groupChat.historyLimit` zurück. Setzen Sie `0`, um dies zu deaktivieren. -- Matrix-Raumverlauf ist nur raumbezogen. DMs verwenden weiterhin normalen Sitzungsverlauf. -- Matrix-Raumverlauf ist nur pending-basiert: OpenClaw puffert Raumnachrichten, die noch keine Antwort ausgelöst haben, und erstellt dann einen Snapshot dieses Fensters, wenn eine Erwähnung oder ein anderer Trigger eintrifft. -- Die aktuelle Trigger-Nachricht ist nicht in `InboundHistory` enthalten; sie verbleibt im Hauptteil des eingehenden Inhalts für diesen Turn. -- Wiederholungen desselben Matrix-Ereignisses verwenden den ursprünglichen Verlaufs-Snapshot erneut, anstatt zu neueren Raumnachrichten weiterzudriften. +- Es greift auf `messages.groupChat.historyLimit` zurück. Wenn beides nicht gesetzt ist, ist der effektive Standardwert `0`, sodass durch Erwähnungen ausgelöste Raumnachrichten nicht gepuffert werden. Setzen Sie `0`, um zu deaktivieren. +- Matrix-Raumverlauf ist nur raumbezogen. DMs verwenden weiterhin den normalen Sitzungsverlauf. +- Matrix-Raumverlauf ist nur für ausstehende Nachrichten: OpenClaw puffert Raumnachrichten, die noch keine Antwort ausgelöst haben, und erstellt dann einen Snapshot dieses Fensters, wenn eine Erwähnung oder ein anderer Auslöser eintrifft. +- Die aktuelle Auslösernachricht wird nicht in `InboundHistory` aufgenommen; sie bleibt für diesen Turn im Hauptteil der eingehenden Nachricht. +- Wiederholungen desselben Matrix-Ereignisses verwenden den ursprünglichen Verlaufs-Snapshot wieder, statt mit neueren Raumnachrichten weiterzuwandern. -## Kontextsichtigkeit +## Kontextsichtbarkeit -Matrix unterstützt das gemeinsame Steuerelement `contextVisibility` für ergänzenden Raumkontext wie abgerufenen Antworttext, Thread-Wurzeln und ausstehenden Verlauf. +Matrix unterstützt die gemeinsame `contextVisibility`-Steuerung für ergänzenden Raumkontext wie abgerufenen Antworttext, Thread-Wurzeln und ausstehenden Verlauf. -- `contextVisibility: "all"` ist der Standard. Ergänzender Kontext wird wie empfangen beibehalten. -- `contextVisibility: "allowlist"` filtert ergänzenden Kontext auf Absender, die durch die aktiven Raum-/Benutzer-Allowlist-Prüfungen erlaubt sind. -- `contextVisibility: "allowlist_quote"` verhält sich wie `allowlist`, behält aber weiterhin ein explizites zitiertes Reply bei. +- `contextVisibility: "all"` ist der Standard. Ergänzender Kontext bleibt wie empfangen erhalten. +- `contextVisibility: "allowlist"` filtert ergänzenden Kontext auf Absender, die durch die aktiven Allowlist-Prüfungen für Raum/Benutzer erlaubt sind. +- `contextVisibility: "allowlist_quote"` verhält sich wie `allowlist`, behält aber weiterhin eine explizit zitierte Antwort bei. -Diese Einstellung beeinflusst die Sichtbarkeit ergänzenden Kontexts, nicht, ob die eingehende Nachricht selbst eine Antwort auslösen kann. -Die Trigger-Autorisierung kommt weiterhin aus `groupPolicy`, `groups`, `groupAllowFrom` und den DM-Richtlinieneinstellungen. +Diese Einstellung wirkt sich auf die Sichtbarkeit ergänzenden Kontexts aus, nicht darauf, ob die eingehende Nachricht selbst eine Antwort auslösen kann. +Die Berechtigung zum Auslösen wird weiterhin durch `groupPolicy`, `groups`, `groupAllowFrom` und DM-Richtlinieneinstellungen bestimmt. -## Beispiel für DM- und Raumrichtlinien +## Beispiel für DM- und Raumrichtlinie ```json5 { @@ -830,7 +836,7 @@ openclaw pairing list matrix openclaw pairing approve matrix ``` -Wenn ein nicht genehmigter Matrix-Benutzer Sie vor der Genehmigung weiterhin anschreibt, verwendet OpenClaw denselben ausstehenden Pairing-Code erneut und sendet nach einer kurzen Abkühlzeit möglicherweise erneut eine Erinnerungsantwort, anstatt einen neuen Code zu erzeugen. +Wenn ein nicht genehmigter Matrix-Benutzer Ihnen vor der Genehmigung weiterhin Nachrichten sendet, verwendet OpenClaw denselben ausstehenden Pairing-Code erneut und sendet nach einer kurzen Abkühlzeit möglicherweise erneut eine Erinnerungsantwort, statt einen neuen Code zu erzeugen. Siehe [Pairing](/de/channels/pairing) für den gemeinsamen DM-Pairing-Ablauf und das Speicherlayout. @@ -839,44 +845,44 @@ Siehe [Pairing](/de/channels/pairing) für den gemeinsamen DM-Pairing-Ablauf und Matrix kann als Exec-Genehmigungs-Client für ein Matrix-Konto fungieren. - `channels.matrix.execApprovals.enabled` -- `channels.matrix.execApprovals.approvers` (optional; fällt auf `channels.matrix.dm.allowFrom` zurück) +- `channels.matrix.execApprovals.approvers` (optional; greift auf `channels.matrix.dm.allowFrom` zurück) - `channels.matrix.execApprovals.target` (`dm` | `channel` | `both`, Standard: `dm`) - `channels.matrix.execApprovals.agentFilter` - `channels.matrix.execApprovals.sessionFilter` -Genehmiger müssen Matrix-Benutzer-IDs wie `@owner:example.org` sein. Matrix aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein Genehmiger aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus `channels.matrix.dm.allowFrom`. Setzen Sie `enabled: false`, um Matrix explizit als nativen Genehmigungs-Client zu deaktivieren. Genehmigungsanfragen fallen ansonsten auf andere konfigurierte Genehmigungsrouten oder die Fallback-Richtlinie für Exec-Genehmigungen zurück. +Genehmigende Benutzer müssen Matrix-Benutzer-IDs wie `@owner:example.org` sein. Matrix aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein Genehmigender aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus `channels.matrix.dm.allowFrom`. Setzen Sie `enabled: false`, um Matrix explizit als nativen Genehmigungs-Client zu deaktivieren. Genehmigungsanfragen greifen andernfalls auf andere konfigurierte Genehmigungsrouten oder die Fallback-Richtlinie für Exec-Genehmigungen zurück. -Natives Matrix-Routing ist heute nur für Exec: +Natives Matrix-Routing gilt derzeit nur für Exec: - `channels.matrix.execApprovals.*` steuert natives DM-/Kanal-Routing nur für Exec-Genehmigungen. -- Plugin-Genehmigungen verwenden weiterhin das gemeinsame gleiches-Chat-`/approve` plus etwaige konfigurierte `approvals.plugin`-Weiterleitung. -- Matrix kann `channels.matrix.dm.allowFrom` weiterhin für die Autorisierung von Plugin-Genehmigungen wiederverwenden, wenn Genehmiger sicher abgeleitet werden können, stellt aber keinen separaten nativen DM-/Kanal-Fanout-Pfad für Plugin-Genehmigungen bereit. +- Plugin-Genehmigungen verwenden weiterhin das gemeinsame `/approve` im selben Chat sowie jede konfigurierte Weiterleitung `approvals.plugin`. +- Matrix kann `channels.matrix.dm.allowFrom` weiterhin für die Autorisierung von Plugin-Genehmigungen wiederverwenden, wenn Genehmigende sicher abgeleitet werden können, bietet jedoch keinen separaten nativen DM-/Kanal-Fanout-Pfad für Plugin-Genehmigungen. Zustellungsregeln: -- `target: "dm"` sendet Genehmigungsaufforderungen an Genehmiger-DMs -- `target: "channel"` sendet die Aufforderung zurück an den auslösenden Matrix-Raum oder die DM -- `target: "both"` sendet an Genehmiger-DMs und an den auslösenden Matrix-Raum oder die DM +- `target: "dm"` sendet Genehmigungsaufforderungen an DMs der genehmigenden Benutzer +- `target: "channel"` sendet die Aufforderung zurück an den auslösenden Matrix-Raum oder DM +- `target: "both"` sendet an DMs der genehmigenden Benutzer und an den auslösenden Matrix-Raum oder DM -Matrix-Genehmigungsaufforderungen initialisieren Reaktionskürzel auf der primären Genehmigungsnachricht: +Matrix-Genehmigungsaufforderungen setzen Reaktionskürzel auf der primären Genehmigungsnachricht: -- `✅` = einmal zulassen +- `✅` = einmal erlauben - `❌` = ablehnen -- `♾️` = immer zulassen, wenn diese Entscheidung durch die effektive Exec-Richtlinie erlaubt ist +- `♾️` = immer erlauben, wenn diese Entscheidung durch die effektive Exec-Richtlinie zulässig ist -Genehmiger können auf diese Nachricht reagieren oder die Fallback-Slash-Befehle verwenden: `/approve allow-once`, `/approve allow-always` oder `/approve deny`. +Genehmigende Benutzer können auf diese Nachricht reagieren oder die Fallback-Slash-Befehle verwenden: `/approve allow-once`, `/approve allow-always` oder `/approve deny`. -Nur aufgelöste Genehmiger können genehmigen oder ablehnen. Die Kanalauslieferung enthält den Befehlstext, daher sollten `channel` oder `both` nur in vertrauenswürdigen Räumen aktiviert werden. +Nur aufgelöste Genehmigende können genehmigen oder ablehnen. Kanalzustellung enthält den Befehlstext, daher sollten Sie `channel` oder `both` nur in vertrauenswürdigen Räumen aktivieren. -Matrix-Genehmigungsaufforderungen verwenden den gemeinsamen Core-Approval-Planer erneut. Die Matrix-spezifische native Oberfläche ist nur der Transport für Exec-Genehmigungen: Raum-/DM-Routing und Verhalten beim Senden/Aktualisieren/Löschen von Nachrichten. +Matrix-Genehmigungsaufforderungen verwenden den gemeinsamen Core-Genehmigungsplaner wieder. Die Matrix-spezifische native Oberfläche ist nur der Transport für Exec-Genehmigungen: Raum-/DM-Routing und Verhalten beim Senden/Aktualisieren/Löschen von Nachrichten. -Überschreibung pro Konto: +Kontobezogene Überschreibung: - `channels.matrix.accounts..execApprovals` Verwandte Dokumentation: [Exec approvals](/de/tools/exec-approvals) -## Beispiel für mehrere Konten +## Multi-Account-Beispiel ```json5 { @@ -906,19 +912,19 @@ Verwandte Dokumentation: [Exec approvals](/de/tools/exec-approvals) } ``` -Werte auf Top-Level in `channels.matrix` fungieren als Standardwerte für benannte Konten, sofern ein Konto sie nicht überschreibt. -Sie können geerbte Raumeinträge mit `groups..account` (oder dem Legacy-`rooms..account`) auf ein Matrix-Konto beschränken. -Einträge ohne `account` bleiben über alle Matrix-Konten hinweg gemeinsam genutzt, und Einträge mit `account: "default"` funktionieren weiterhin, wenn das Standardkonto direkt auf Top-Level unter `channels.matrix.*` konfiguriert ist. -Teilweise gemeinsame Auth-Standards erzeugen für sich genommen kein separates implizites Standardkonto. OpenClaw synthetisiert das Top-Level-Konto `default` nur dann, wenn dieses Standardkonto frische Authentifizierung hat (`homeserver` plus `accessToken` oder `homeserver` plus `userId` und `password`); benannte Konten können weiterhin über `homeserver` plus `userId` auffindbar bleiben, wenn zwischengespeicherte Anmeldedaten die Authentifizierung später erfüllen. -Wenn Matrix bereits genau ein benanntes Konto hat oder `defaultAccount` auf einen vorhandenen benannten Kontoschlüssel zeigt, erhält die Reparatur-/Einrichtungs-Promotion von Einzelkonto zu Mehrfachkonto dieses Konto, statt einen neuen `accounts.default`-Eintrag zu erstellen. Nur Matrix-Auth-/Bootstrap-Schlüssel werden in dieses hochgestufte Konto verschoben; gemeinsam genutzte Zustellungsrichtlinien-Schlüssel bleiben auf Top-Level. -Setzen Sie `defaultAccount`, wenn OpenClaw ein benanntes Matrix-Konto für implizites Routing, Probing und CLI-Operationen bevorzugen soll. -Wenn Sie mehrere benannte Konten konfigurieren, setzen Sie `defaultAccount` oder übergeben `--account ` für CLI-Befehle, die auf impliziter Kontoauswahl beruhen. -Übergeben Sie `--account ` an `openclaw matrix verify ...` und `openclaw matrix devices ...`, wenn Sie diese implizite Auswahl für einen einzelnen Befehl überschreiben möchten. +Werte auf oberster Ebene unter `channels.matrix` fungieren als Standardwerte für benannte Konten, sofern ein Konto sie nicht überschreibt. +Sie können geerbte Raumeinträge auf ein Matrix-Konto beschränken mit `groups..account` (oder dem Legacy-Wert `rooms..account`). +Einträge ohne `account` bleiben für alle Matrix-Konten gemeinsam, und Einträge mit `account: "default"` funktionieren weiterhin, wenn das Standardkonto direkt auf oberster Ebene unter `channels.matrix.*` konfiguriert ist. +Partielle gemeinsame Auth-Standardwerte erzeugen für sich genommen kein separates implizites Standardkonto. OpenClaw synthetisiert das Standardkonto auf oberster Ebene `default` nur dann, wenn dieses Standardkonto frische Authentifizierung hat (`homeserver` plus `accessToken` oder `homeserver` plus `userId` und `password`); benannte Konten können weiterhin anhand von `homeserver` plus `userId` erkennbar bleiben, wenn zwischengespeicherte Anmeldedaten später die Authentifizierung erfüllen. +Wenn Matrix bereits genau ein benanntes Konto hat oder `defaultAccount` auf einen vorhandenen benannten Kontoschlüssel zeigt, bewahrt die Reparatur-/Einrichtungs-Promotion von Single-Account zu Multi-Account dieses Konto, statt einen neuen `accounts.default`-Eintrag zu erstellen. Nur Auth-/Bootstrap-Schlüssel für Matrix werden in dieses hochgestufte Konto verschoben; gemeinsame Zustellungsrichtlinien-Schlüssel bleiben auf oberster Ebene. +Setzen Sie `defaultAccount`, wenn OpenClaw ein benanntes Matrix-Konto für implizites Routing, Probe und CLI-Operationen bevorzugen soll. +Wenn Sie mehrere benannte Konten konfigurieren, setzen Sie `defaultAccount` oder übergeben Sie `--account ` für CLI-Befehle, die auf impliziter Kontenauswahl basieren. +Übergeben Sie `--account ` an `openclaw matrix verify ...` und `openclaw matrix devices ...`, wenn Sie diese implizite Auswahl für einen Befehl überschreiben möchten. ## Private/LAN-Homeserver -Standardmäßig blockiert OpenClaw private/interne Matrix-Homeserver aus SSRF-Schutzgründen, sofern Sie nicht -dies pro Konto explizit aktivieren. +Standardmäßig blockiert OpenClaw private/interne Matrix-Homeserver zum SSRF-Schutz, sofern Sie +dies nicht explizit pro Konto aktivieren. Wenn Ihr Homeserver auf localhost, einer LAN-/Tailscale-IP oder einem internen Hostnamen läuft, aktivieren Sie `allowPrivateNetwork` für dieses Matrix-Konto: @@ -945,7 +951,7 @@ openclaw matrix account add \ --access-token syt_ops_xxx ``` -Dieses Opt-in erlaubt nur vertrauenswürdige private/interne Ziele. Öffentliche unverschlüsselte Homeserver wie +Diese Aktivierung erlaubt nur vertrauenswürdige private/interne Ziele. Öffentliche unverschlüsselte Homeserver wie `http://matrix.example.org:8008` bleiben blockiert. Bevorzugen Sie nach Möglichkeit `https://`. ## Matrix-Datenverkehr über Proxy leiten @@ -964,12 +970,12 @@ Wenn Ihre Matrix-Bereitstellung einen expliziten ausgehenden HTTP(S)-Proxy benö } ``` -Benannte Konten können den Top-Level-Standard mit `channels.matrix.accounts..proxy` überschreiben. -OpenClaw verwendet dieselbe Proxy-Einstellung für Matrix-Datenverkehr zur Laufzeit und für Kontostatus-Probes. +Benannte Konten können den Standardwert auf oberster Ebene mit `channels.matrix.accounts..proxy` überschreiben. +OpenClaw verwendet dieselbe Proxy-Einstellung für Matrix-Laufzeitverkehr und Konto-Statusprobes. ## Zielauflösung -Matrix akzeptiert überall dort diese Zielformen, wo OpenClaw Sie nach einem Raum- oder Benutzerziel fragt: +Matrix akzeptiert diese Zielformen überall dort, wo OpenClaw Sie nach einem Raum- oder Benutzerziel fragt: - Benutzer: `@user:server`, `user:@user:server` oder `matrix:user:@user:server` - Räume: `!room:server`, `room:!room:server` oder `matrix:room:!room:server` @@ -979,64 +985,65 @@ Die Live-Verzeichnissuche verwendet das angemeldete Matrix-Konto: - Benutzer-Lookups fragen das Matrix-Benutzerverzeichnis auf diesem Homeserver ab. - Raum-Lookups akzeptieren explizite Raum-IDs und Aliasse direkt und greifen dann auf die Suche in Namen beigetretener Räume für dieses Konto zurück. -- Die Namenssuche in beigetretenen Räumen ist Best-Effort. Wenn ein Raumname nicht in eine ID oder einen Alias aufgelöst werden kann, wird er bei der Laufzeit-Allowlist-Auflösung ignoriert. +- Die Namenssuche in beigetretenen Räumen erfolgt nach bestem Bemühen. Wenn ein Raumname nicht in eine ID oder einen Alias aufgelöst werden kann, wird er von der Laufzeit-Allowlist-Auflösung ignoriert. ## Konfigurationsreferenz - `enabled`: den Kanal aktivieren oder deaktivieren. -- `name`: optionales Label für das Konto. +- `name`: optionale Bezeichnung für das Konto. - `defaultAccount`: bevorzugte Konto-ID, wenn mehrere Matrix-Konten konfiguriert sind. - `homeserver`: Homeserver-URL, zum Beispiel `https://matrix.example.org`. - `allowPrivateNetwork`: diesem Matrix-Konto erlauben, sich mit privaten/internen Homeservern zu verbinden. Aktivieren Sie dies, wenn der Homeserver zu `localhost`, einer LAN-/Tailscale-IP oder einem internen Host wie `matrix-synapse` aufgelöst wird. -- `proxy`: optionale HTTP(S)-Proxy-URL für Matrix-Datenverkehr. Benannte Konten können den Top-Level-Standard mit ihrem eigenen `proxy` überschreiben. +- `proxy`: optionale HTTP(S)-Proxy-URL für Matrix-Datenverkehr. Benannte Konten können den Standardwert auf oberster Ebene mit ihrem eigenen `proxy` überschreiben. - `userId`: vollständige Matrix-Benutzer-ID, zum Beispiel `@bot:example.org`. -- `accessToken`: Zugriffstoken für tokenbasierte Authentifizierung. Klartextwerte und SecretRef-Werte werden für `channels.matrix.accessToken` und `channels.matrix.accounts..accessToken` über env-/file-/exec-Provider unterstützt. Siehe [Secrets Management](/de/gateway/secrets). +- `accessToken`: Access-Token für tokenbasierte Authentifizierung. Klartextwerte und SecretRef-Werte werden für `channels.matrix.accessToken` und `channels.matrix.accounts..accessToken` über Env-/File-/Exec-Provider unterstützt. Siehe [Secrets Management](/de/gateway/secrets). - `password`: Passwort für passwortbasierte Anmeldung. Klartextwerte und SecretRef-Werte werden unterstützt. - `deviceId`: explizite Matrix-Geräte-ID. -- `deviceName`: Geräteanzeigename für die Passwort-Anmeldung. +- `deviceName`: Geräteanzeigename für die Passwortanmeldung. - `avatarUrl`: gespeicherte Self-Avatar-URL für Profilsynchronisierung und `set-profile`-Updates. -- `initialSyncLimit`: Ereignislimit für den Start-Sync. +- `initialSyncLimit`: Ereignislimit für die Startsynchronisierung. - `encryption`: E2EE aktivieren. -- `allowlistOnly`: nur-Allowlist-Verhalten für DMs und Räume erzwingen. -- `allowBots`: Nachrichten von anderen konfigurierten OpenClaw-Matrix-Konten zulassen (`true` oder `"mentions"`). +- `allowlistOnly`: Verhalten nur mit Allowlist für DMs und Räume erzwingen. +- `allowBots`: Nachrichten von anderen konfigurierten OpenClaw-Matrix-Konten erlauben (`true` oder `"mentions"`). - `groupPolicy`: `open`, `allowlist` oder `disabled`. - `contextVisibility`: Sichtbarkeitsmodus für ergänzenden Raumkontext (`all`, `allowlist`, `allowlist_quote`). - `groupAllowFrom`: Allowlist von Benutzer-IDs für Raumverkehr. -- `groupAllowFrom`-Einträge sollten vollständige Matrix-Benutzer-IDs sein. Nicht aufgelöste Namen werden zur Laufzeit ignoriert. -- `historyLimit`: maximale Anzahl von Raumnachrichten, die als Gruppenverlaufs-Kontext einbezogen werden. Fällt auf `messages.groupChat.historyLimit` zurück. Setzen Sie `0`, um dies zu deaktivieren. +- Einträge in `groupAllowFrom` sollten vollständige Matrix-Benutzer-IDs sein. Nicht aufgelöste Namen werden zur Laufzeit ignoriert. +- `historyLimit`: maximale Anzahl von Raumnachrichten, die als Gruppenverlaufs-Kontext einbezogen werden. Greift auf `messages.groupChat.historyLimit` zurück; wenn beides nicht gesetzt ist, ist der effektive Standardwert `0`. Setzen Sie `0`, um zu deaktivieren. - `replyToMode`: `off`, `first` oder `all`. - `markdown`: optionale Markdown-Rendering-Konfiguration für ausgehenden Matrix-Text. -- `streaming`: `off` (Standard), `partial`, `quiet`, `true` oder `false`. `partial` und `true` aktivieren preview-first-Entwurfsaktualisierungen mit normalen Matrix-Textnachrichten. `quiet` verwendet nicht benachrichtigende Vorschau-Hinweise für selbst gehostete Push-Regel-Setups. -- `blockStreaming`: `true` aktiviert separate Fortschrittsnachrichten für abgeschlossene Assistant-Blöcke, während Entwurfs-Vorschau-Streaming aktiv ist. +- `streaming`: `off` (Standard), `partial`, `quiet`, `true` oder `false`. `partial` und `true` aktivieren Vorschau-zuerst-Entwurfsaktualisierungen mit normalen Matrix-Textnachrichten. `quiet` verwendet nicht benachrichtigende Vorschau-Mitteilungen für selbst gehostete Push-Regel-Setups. +- `blockStreaming`: `true` aktiviert separate Fortschrittsnachrichten für abgeschlossene Assistant-Blöcke, während Entwurfsvorschau-Streaming aktiv ist. - `threadReplies`: `off`, `inbound` oder `always`. -- `threadBindings`: kanalbezogene Überschreibungen für thread-gebundenes Sitzungsrouting und Lebenszyklus. +- `threadBindings`: kanalbezogene Überschreibungen für threadgebundenes Sitzungsrouting und Lebenszyklus. - `startupVerification`: Modus für automatische Selbstverifizierungsanfragen beim Start (`if-unverified`, `off`). -- `startupVerificationCooldownHours`: Abkühlzeit vor einem erneuten Versuch automatischer Verifizierungsanfragen beim Start. +- `startupVerificationCooldownHours`: Abkühlzeit vor erneuten automatischen Startverifizierungsanfragen. - `textChunkLimit`: Chunk-Größe für ausgehende Nachrichten. - `chunkMode`: `length` oder `newline`. - `responsePrefix`: optionales Nachrichtenpräfix für ausgehende Antworten. - `ackReaction`: optionale Überschreibung der Bestätigungsreaktion für diesen Kanal/dieses Konto. - `ackReactionScope`: optionale Überschreibung des Geltungsbereichs der Bestätigungsreaktion (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`). - `reactionNotifications`: Modus für eingehende Reaktionsbenachrichtigungen (`own`, `off`). -- `mediaMaxMb`: Größenlimit für Medien in MB für Matrix-Medienverarbeitung. Gilt für ausgehende Sends und eingehende Medienverarbeitung. -- `autoJoin`: Richtlinie für automatisches Beitreten zu Einladungen (`always`, `allowlist`, `off`). Standard: `off`. -- `autoJoinAllowlist`: erlaubte Räume/Aliasse, wenn `autoJoin` auf `allowlist` gesetzt ist. Alias-Einträge werden während der Einladungshandhabung in Raum-IDs aufgelöst; OpenClaw vertraut nicht auf den Alias-Status, den der eingeladene Raum angibt. +- `mediaMaxMb`: Mediengrößenlimit in MB für die Matrix-Medienverarbeitung. Es gilt für ausgehende Sendungen und die Verarbeitung eingehender Medien. +- `autoJoin`: Richtlinie für automatischen Einladungsbeitritt (`always`, `allowlist`, `off`). Standard: `off`. Dies gilt allgemein für Matrix-Einladungen, einschließlich DM-artiger Einladungen, nicht nur für Raum-/Gruppeneinladungen. OpenClaw trifft diese Entscheidung zum Zeitpunkt der Einladung, bevor der beigetretene Raum zuverlässig als DM oder Gruppe klassifiziert werden kann. +- `autoJoinAllowlist`: Räume/Aliasse, die erlaubt sind, wenn `autoJoin` auf `allowlist` steht. Alias-Einträge werden während der Einladungsverarbeitung in Raum-IDs aufgelöst; OpenClaw vertraut keinem Alias-Status, der vom eingeladenen Raum behauptet wird. - `dm`: DM-Richtlinienblock (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`). -- `dm.allowFrom`-Einträge sollten vollständige Matrix-Benutzer-IDs sein, sofern Sie sie nicht bereits per Live-Verzeichnissuche aufgelöst haben. +- `dm.policy`: steuert den DM-Zugriff, nachdem OpenClaw dem Raum beigetreten ist und ihn als DM klassifiziert hat. Dies ändert nicht, ob einer Einladung automatisch beigetreten wird. +- Einträge in `dm.allowFrom` sollten vollständige Matrix-Benutzer-IDs sein, es sei denn, Sie haben sie bereits über die Live-Verzeichnissuche aufgelöst. - `dm.sessionScope`: `per-user` (Standard) oder `per-room`. Verwenden Sie `per-room`, wenn jeder Matrix-DM-Raum einen separaten Kontext behalten soll, selbst wenn der Peer derselbe ist. -- `dm.threadReplies`: nur für DMs geltende Überschreibung der Thread-Richtlinie (`off`, `inbound`, `always`). Sie überschreibt die Top-Level-Einstellung `threadReplies` sowohl für die Platzierung von Antworten als auch für die Sitzungsisolierung in DMs. -- `execApprovals`: Matrix-native Exec-Genehmigungszustellung (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). -- `execApprovals.approvers`: Matrix-Benutzer-IDs, die Exec-Anfragen genehmigen dürfen. Optional, wenn `dm.allowFrom` die Genehmiger bereits identifiziert. +- `dm.threadReplies`: nur für DMs geltende Überschreibung der Thread-Richtlinie (`off`, `inbound`, `always`). Sie überschreibt die Einstellung `threadReplies` auf oberster Ebene sowohl für die Platzierung von Antworten als auch für die Sitzungsisolierung in DMs. +- `execApprovals`: Matrix-native Zustellung von Exec-Genehmigungen (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). +- `execApprovals.approvers`: Matrix-Benutzer-IDs, die Exec-Anfragen genehmigen dürfen. Optional, wenn `dm.allowFrom` die Genehmigenden bereits identifiziert. - `execApprovals.target`: `dm | channel | both` (Standard: `dm`). -- `accounts`: benannte Überschreibungen pro Konto. Werte auf Top-Level in `channels.matrix` fungieren als Standardwerte für diese Einträge. -- `groups`: Richtlinienzuordnung pro Raum. Bevorzugen Sie Raum-IDs oder Aliasse; nicht aufgelöste Raumnamen werden zur Laufzeit ignoriert. Sitzungs-/Gruppenidentität verwendet nach der Auflösung die stabile Raum-ID, während menschenlesbare Labels weiterhin aus Raumnamen stammen. -- `groups..account`: einen geerbten Raumeintrag in Setups mit mehreren Konten auf ein bestimmtes Matrix-Konto beschränken. -- `groups..allowBots`: Überschreibung auf Raumebene für Sender aus konfigurierten Botkonten (`true` oder `"mentions"`). -- `groups..users`: Allowlist der Absender pro Raum. -- `groups..tools`: Überschreibungen zum Erlauben/Verweigern von Tools pro Raum. -- `groups..autoReply`: Überschreibung des Erwähnungs-Gatings auf Raumebene. `true` deaktiviert Erwähnungsanforderungen für diesen Raum; `false` erzwingt sie wieder. -- `groups..skills`: optionaler Skill-Filter auf Raumebene. -- `groups..systemPrompt`: optionaler System-Prompt-Schnipsel auf Raumebene. +- `accounts`: benannte kontospezifische Überschreibungen. Werte auf oberster Ebene unter `channels.matrix` fungieren als Standardwerte für diese Einträge. +- `groups`: raumbezogene Richtlinienzuordnung. Bevorzugen Sie Raum-IDs oder Aliasse; nicht aufgelöste Raumnamen werden zur Laufzeit ignoriert. Die Sitzungs-/Gruppenidentität verwendet nach der Auflösung die stabile Raum-ID, während menschenlesbare Bezeichnungen weiterhin von Raumnamen stammen. +- `groups..account`: einen geerbten Raumeintrag in Multi-Account-Setups auf ein bestimmtes Matrix-Konto beschränken. +- `groups..allowBots`: raumbezogene Überschreibung für Absender aus konfigurierten Bot-Konten (`true` oder `"mentions"`). +- `groups..users`: absenderbezogene Allowlist pro Raum. +- `groups..tools`: raumbezogene Tool-Allow-/Deny-Überschreibungen. +- `groups..autoReply`: raumbezogene Überschreibung für Erwähnungs-Gating. `true` deaktiviert Erwähnungsanforderungen für diesen Raum; `false` erzwingt sie wieder. +- `groups..skills`: optionaler raumbezogener Skills-Filter. +- `groups..systemPrompt`: optionales raumbezogenes System-Prompt-Snippet. - `rooms`: Legacy-Alias für `groups`. - `actions`: Tool-Gating pro Aktion (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). @@ -1044,6 +1051,6 @@ Die Live-Verzeichnissuche verwendet das angemeldete Matrix-Konto: - [Channels Overview](/de/channels) — alle unterstützten Kanäle - [Pairing](/de/channels/pairing) — DM-Authentifizierung und Pairing-Ablauf -- [Groups](/de/channels/groups) — Gruppenchat-Verhalten und Erwähnungs-Gating +- [Groups](/de/channels/groups) — Verhalten in Gruppenchats und Erwähnungs-Gating - [Channel Routing](/de/channels/channel-routing) — Sitzungsrouting für Nachrichten - [Security](/de/gateway/security) — Zugriffsmodell und Härtung diff --git a/docs/de/concepts/dreaming.md b/docs/de/concepts/dreaming.md index c14f692a3..55fd96a04 100644 --- a/docs/de/concepts/dreaming.md +++ b/docs/de/concepts/dreaming.md @@ -1,24 +1,24 @@ --- read_when: - - Sie möchten, dass die Hochstufung von Erinnerungen automatisch ausgeführt wird - - Sie möchten verstehen, was die einzelnen Dreaming-Phasen tun - - Sie möchten die Konsolidierung anpassen, ohne `MEMORY.md` zu verunreinigen -summary: Hintergrund-Konsolidierung von Erinnerungen mit leichten, tiefen und REM-Phasen sowie einem Traumtagebuch + - Sie möchten, dass die Erinnerungs-Promotion automatisch ausgeführt wird + - Sie möchten verstehen, was jede Dreaming-Phase bewirkt + - Sie möchten die Konsolidierung abstimmen, ohne `MEMORY.md` zu überladen +summary: Hintergrund-Konsolidierung von Erinnerungen mit Light-, Deep- und REM-Phasen sowie einem Dream Diary title: Dreaming (experimentell) x-i18n: - generated_at: "2026-04-06T03:06:19Z" + generated_at: "2026-04-06T06:21:04Z" model: gpt-5.4 provider: openai - source_hash: f27da718176bebf59fe8a80fddd4fb5b6d814ac5647f6c1e8344bcfb328db9de + source_hash: 36c4b1e70801d662090dc8ce20608c2f141c23cd7ce53c54e3dcf332c801fd4e source_path: concepts/dreaming.md workflow: 15 --- # Dreaming (experimentell) -Dreaming ist das System zur Hintergrund-Konsolidierung von Erinnerungen in `memory-core`. -Es hilft OpenClaw dabei, starke kurzfristige Signale in dauerhafte Erinnerungen zu überführen, während -der Prozess nachvollziehbar und überprüfbar bleibt. +Dreaming ist das Hintergrundsystem zur Konsolidierung von Erinnerungen in `memory-core`. +Es hilft OpenClaw dabei, starke kurzfristige Signale in dauerhafte Erinnerungen zu überführen, +während der Prozess nachvollziehbar und überprüfbar bleibt. Dreaming ist **optional** und standardmäßig deaktiviert. @@ -26,86 +26,86 @@ Dreaming ist **optional** und standardmäßig deaktiviert. Dreaming verwaltet zwei Arten von Ausgaben: -- **Maschinenzustand** in `memory/.dreams/` (Recall-Speicher, Phasensignale, Ingestions-Checkpoints, Sperren). -- **Menschenlesbare Ausgabe** in `DREAMS.md` (oder vorhandener `dreams.md`) und optionale Phasenberichtdateien unter `memory/dreaming//YYYY-MM-DD.md`. +- **Maschinenzustand** in `memory/.dreams/` (Recall-Speicher, Phasensignale, Ingestion-Checkpoints, Sperren). +- **Menschenlesbare Ausgabe** in `DREAMS.md` (oder vorhandenem `dreams.md`) und optionalen Phasenberichtdateien unter `memory/dreaming//YYYY-MM-DD.md`. -Die langfristige Hochstufung schreibt weiterhin ausschließlich in `MEMORY.md`. +Die langfristige Promotion schreibt weiterhin nur in `MEMORY.md`. ## Phasenmodell -Dreaming verwendet drei zusammenarbeitende Phasen: +Dreaming verwendet drei kooperative Phasen: -| Phase | Zweck | Dauerhafter Schreibvorgang | -| ----- | ----------------------------------------- | -------------------------- | -| Light | Neues kurzfristiges Material sortieren und bereitstellen | Nein | -| Deep | Dauerhafte Kandidaten bewerten und hochstufen | Ja (`MEMORY.md`) | +| Phase | Zweck | Dauerhafter Schreibvorgang | +| ----- | ------------------------------------------------ | -------------------------- | +| Light | Aktuelles kurzfristiges Material sortieren und vorbereiten | Nein | +| Deep | Dauerhafte Kandidaten bewerten und promovieren | Ja (`MEMORY.md`) | | REM | Über Themen und wiederkehrende Ideen reflektieren | Nein | -Diese Phasen sind interne Implementierungsdetails, keine separaten benutzerkonfigurierten +Diese Phasen sind interne Implementierungsdetails, keine separaten, vom Benutzer konfigurierbaren „Modi“. ### Light-Phase -Die Light-Phase verarbeitet aktuelle tägliche Erinnerungssignale und Recall-Spuren, dedupliziert sie -und stellt Kandidatenzeilen bereit. +Die Light-Phase erfasst aktuelle tägliche Erinnerungssignale und Recall-Traces, entfernt Duplikate +und bereitet Kandidatenzeilen vor. - Liest aus dem kurzfristigen Recall-Zustand und aktuellen täglichen Erinnerungsdateien. - Schreibt einen verwalteten Block `## Light Sleep`, wenn der Speicher Inline-Ausgabe enthält. -- Zeichnet Verstärkungssignale für das spätere Deep-Ranking auf. +- Erfasst Verstärkungssignale für ein späteres Deep-Ranking. - Schreibt niemals in `MEMORY.md`. ### Deep-Phase -Die Deep-Phase entscheidet, was zu langfristiger Erinnerung wird. +Die Deep-Phase entscheidet, was zu einer langfristigen Erinnerung wird. -- Ordnet Kandidaten mithilfe gewichteter Bewertungen und Schwellenwert-Gates. -- Erfordert, dass `minScore`, `minRecallCount` und `minUniqueQueries` erfüllt sind. -- Rehydriert Snippets aus aktiven täglichen Dateien vor dem Schreiben, sodass veraltete/gelöschte Snippets übersprungen werden. -- Hängt hochgestufte Einträge an `MEMORY.md` an. -- Schreibt eine Zusammenfassung `## Deep Sleep` in `DREAMS.md` und schreibt optional `memory/dreaming/deep/YYYY-MM-DD.md`. +- Bewertet Kandidaten anhand gewichteter Scores und Schwellenwert-Gates. +- Erfordert das Bestehen von `minScore`, `minRecallCount` und `minUniqueQueries`. +- Hydriert Snippets vor dem Schreiben aus aktiven Tagesdateien erneut, sodass veraltete/gelöschte Snippets übersprungen werden. +- Hängt promovierte Einträge an `MEMORY.md` an. +- Schreibt eine Zusammenfassung `## Deep Sleep` in `DREAMS.md` und optional `memory/dreaming/deep/YYYY-MM-DD.md`. ### REM-Phase Die REM-Phase extrahiert Muster und reflektierende Signale. -- Erstellt Themen- und Reflexionszusammenfassungen aus aktuellen kurzfristigen Spuren. +- Erstellt Themen- und Reflexionszusammenfassungen aus aktuellen kurzfristigen Traces. - Schreibt einen verwalteten Block `## REM Sleep`, wenn der Speicher Inline-Ausgabe enthält. -- Zeichnet REM-Verstärkungssignale auf, die beim Deep-Ranking verwendet werden. +- Erfasst REM-Verstärkungssignale, die vom Deep-Ranking verwendet werden. - Schreibt niemals in `MEMORY.md`. -## Traumtagebuch +## Dream Diary -Dreaming führt außerdem ein erzählerisches **Traumtagebuch** in `DREAMS.md`. -Sobald nach jeder Phase genügend Material vorhanden ist, führt `memory-core` im Hintergrund nach bestem Bemühen -einen Subagenten-Durchlauf aus (unter Verwendung des Standard-Laufzeitmodells) und hängt einen kurzen Tagebucheintrag an. +Dreaming führt außerdem ein erzählerisches **Dream Diary** in `DREAMS.md`. +Sobald nach jeder Phase genügend Material vorhanden ist, führt `memory-core` im Hintergrund +best-effort einen Subagent-Durchlauf aus (mit dem Standard-Laufzeitmodell) und hängt einen kurzen Tagebucheintrag an. -Dieses Tagebuch ist für Menschen zum Lesen in der Dreams-Benutzeroberfläche gedacht, nicht als Quelle für Hochstufungen. +Dieses Tagebuch ist zum Lesen durch Menschen in der Dreams-UI gedacht, nicht als Quelle für Promotion. ## Deep-Ranking-Signale Das Deep-Ranking verwendet sechs gewichtete Basissignale plus Phasenverstärkung: -| Signal | Gewicht | Beschreibung | -| ------------------- | ------ | ------------------------------------------------ | -| Häufigkeit | 0.24 | Wie viele kurzfristige Signale der Eintrag gesammelt hat | -| Relevanz | 0.30 | Durchschnittliche Abrufqualität für den Eintrag | -| Anfragevielfalt | 0.15 | Unterschiedliche Anfrage-/Tageskontexte, in denen er aufgetaucht ist | -| Aktualität | 0.15 | Zeitverfallender Frische-Score | -| Konsolidierung | 0.10 | Stärke des Wiederauftretens über mehrere Tage | -| Konzeptuelle Dichte | 0.06 | Dichte von Konzept-Tags aus Snippet/Pfad | +| Signal | Gewicht | Beschreibung | +| ------------------- | ------- | ----------------------------------------------- | +| Häufigkeit | 0.24 | Wie viele kurzfristige Signale der Eintrag angesammelt hat | +| Relevanz | 0.30 | Durchschnittliche Abrufqualität für den Eintrag | +| Anfragevielfalt | 0.15 | Unterschiedliche Anfrage-/Tageskontexte, in denen er auftauchte | +| Aktualität | 0.15 | Zeitabklingender Frische-Score | +| Konsolidierung | 0.10 | Stärke des Wiederauftretens über mehrere Tage | +| Konzeptuelle Dichte | 0.06 | Dichte von Konzept-Tags aus Snippet/Pfad | -Treffer aus der Light- und REM-Phase fügen einen kleinen, mit der Aktualität abklingenden Boost aus +Treffer aus der Light- und REM-Phase fügen einen kleinen, zeitabklingenden Boost aus `memory/.dreams/phase-signals.json` hinzu. -## Planung +## Zeitplanung Wenn aktiviert, verwaltet `memory-core` automatisch einen Cron-Job für einen vollständigen Dreaming-Durchlauf. Jeder Durchlauf führt die Phasen in dieser Reihenfolge aus: light -> REM -> deep. -Standardmäßiges Ausführungsintervall: +Standardverhalten für die Ausführungsfrequenz: -| Einstellung | Standard | -| ------------------- | ----------- | +| Einstellung | Standard | +| -------------------- | ----------- | | `dreaming.frequency` | `0 3 * * *` | ## Schnellstart @@ -128,7 +128,7 @@ Dreaming aktivieren: } ``` -Dreaming mit einem benutzerdefinierten Durchlaufintervall aktivieren: +Dreaming mit einer benutzerdefinierten Durchlauf-Frequenz aktivieren: ```json { @@ -157,9 +157,9 @@ Dreaming mit einem benutzerdefinierten Durchlaufintervall aktivieren: /dreaming help ``` -## CLI-Arbeitsablauf +## CLI-Workflow -Verwenden Sie die Hochstufung per CLI für Vorschau oder manuelles Anwenden: +Verwenden Sie die CLI-Promotion für Vorschau oder manuelle Anwendung: ```bash openclaw memory promote @@ -168,8 +168,23 @@ openclaw memory promote --limit 5 openclaw memory status --deep ``` -Manuelles `memory promote` verwendet standardmäßig die Schwellenwerte der Deep-Phase, sofern diese nicht -mit CLI-Flags überschrieben werden. +Die manuelle Ausführung von `memory promote` verwendet standardmäßig die Schwellenwerte der Deep-Phase, sofern sie +nicht mit CLI-Flags überschrieben werden. + +Erklären, warum ein bestimmter Kandidat promoviert würde oder nicht: + +```bash +openclaw memory promote-explain "router vlan" +openclaw memory promote-explain "router vlan" --json +``` + +REM-Reflexionen, Kandidatenwahrheiten und Deep-Promotion-Ausgaben in der Vorschau anzeigen, ohne +etwas zu schreiben: + +```bash +openclaw memory rem-harness +openclaw memory rem-harness --json +``` ## Wichtige Standardwerte @@ -180,24 +195,24 @@ Alle Einstellungen befinden sich unter `plugins.entries.memory-core.config.dream | `enabled` | `false` | | `frequency` | `0 3 * * *` | -Phasenrichtlinie, Schwellenwerte und Speicherverhalten sind interne Implementierungs- -details (keine benutzerseitige Konfiguration). +Phasenrichtlinie, Schwellenwerte und Speicherverhalten sind interne Implementierungsdetails +(keine benutzerseitige Konfiguration). -Die vollständige Liste der Schlüssel finden Sie unter [Referenz zur Erinnerungskonfiguration](/de/reference/memory-config#dreaming-experimental). +Die vollständige Schlüsselliste finden Sie unter [Referenz zur Memory-Konfiguration](/de/reference/memory-config#dreaming-experimental). -## Dreams-Benutzeroberfläche +## Dreams-UI -Wenn aktiviert, zeigt der **Dreams**-Tab des Gateway Folgendes an: +Wenn aktiviert, zeigt der Gateway-Tab **Dreams** Folgendes an: -- aktuellen Dreaming-Aktivierungsstatus -- Status auf Phasenebene und Vorhandensein eines verwalteten Durchlaufs -- Anzahl kurzfristiger, langfristiger und heute hochgestufter Erinnerungen +- aktueller Aktivierungsstatus von Dreaming +- Status auf Phasenebene und Vorhandensein verwalteter Durchläufe +- Anzahl kurzfristiger, langfristiger und heute promovierter Erinnerungen - Zeitpunkt des nächsten geplanten Durchlaufs -- einen ausklappbaren Leser für das Traumtagebuch, gestützt durch `doctor.memory.dreamDiary` +- einen aufklappbaren Dream-Diary-Reader, der auf `doctor.memory.dreamDiary` basiert ## Verwandt -- [Erinnerungen](/de/concepts/memory) -- [Erinnerungssuche](/de/concepts/memory-search) +- [Memory](/de/concepts/memory) +- [Memory Search](/de/concepts/memory-search) - [memory CLI](/cli/memory) -- [Referenz zur Erinnerungskonfiguration](/de/reference/memory-config) +- [Referenz zur Memory-Konfiguration](/de/reference/memory-config) diff --git a/docs/de/gateway/configuration-reference.md b/docs/de/gateway/configuration-reference.md index 17dd3a02b..93bdc37fd 100644 --- a/docs/de/gateway/configuration-reference.md +++ b/docs/de/gateway/configuration-reference.md @@ -1,56 +1,56 @@ --- read_when: - - Sie benötigen genaue feldspezifische Konfigurationssemantik oder Standardwerte + - Sie benötigen die genaue feldweise Semantik oder Standardwerte der Konfiguration - Sie validieren Kanal-, Modell-, Gateway- oder Tool-Konfigurationsblöcke summary: Vollständige Referenz für jeden OpenClaw-Konfigurationsschlüssel, Standardwerte und Kanaleinstellungen title: Konfigurationsreferenz x-i18n: - generated_at: "2026-04-06T03:12:05Z" + generated_at: "2026-04-06T06:26:42Z" model: gpt-5.4 provider: openai - source_hash: 6aa6b24b593f6f07118817afabea4cc7842aca6b7c5602b45f479b40c1685230 + source_hash: 6ae6c19666f65433361e1c8b100ae710448c8aa055a60c140241a8aea09b98a5 source_path: gateway/configuration-reference.md workflow: 15 --- # Konfigurationsreferenz -Jedes Feld, das in `~/.openclaw/openclaw.json` verfügbar ist. Eine auf Aufgaben ausgerichtete Übersicht finden Sie unter [Konfiguration](/de/gateway/configuration). +Jedes Feld, das in `~/.openclaw/openclaw.json` verfügbar ist. Eine aufgabenorientierte Übersicht finden Sie unter [Configuration](/de/gateway/configuration). -Das Konfigurationsformat ist **JSON5** (Kommentare + nachgestellte Kommas sind erlaubt). Alle Felder sind optional — OpenClaw verwendet sichere Standardwerte, wenn sie weggelassen werden. +Das Konfigurationsformat ist **JSON5** (Kommentare + nachgestellte Kommas erlaubt). Alle Felder sind optional — OpenClaw verwendet sichere Standardwerte, wenn sie weggelassen werden. --- ## Kanäle -Jeder Kanal startet automatisch, sobald sein Konfigurationsabschnitt vorhanden ist (außer bei `enabled: false`). +Jeder Kanal startet automatisch, wenn sein Konfigurationsabschnitt vorhanden ist (außer `enabled: false`). ### DM- und Gruppenzugriff Alle Kanäle unterstützen DM-Richtlinien und Gruppenrichtlinien: -| DM-Richtlinie | Verhalten | -| ------------------ | -------------------------------------------------------------- | -| `pairing` (Standard) | Unbekannte Absender erhalten einen einmaligen Pairing-Code; der Eigentümer muss zustimmen | -| `allowlist` | Nur Absender in `allowFrom` (oder im gepaarten Allow-Store) | -| `open` | Alle eingehenden DMs erlauben (erfordert `allowFrom: ["*"]`) | -| `disabled` | Alle eingehenden DMs ignorieren | +| DM-Richtlinie | Verhalten | +| ------------------- | -------------------------------------------------------------- | +| `pairing` (Standard) | Unbekannte Absender erhalten einen einmaligen Pairing-Code; der Besitzer muss genehmigen | +| `allowlist` | Nur Absender in `allowFrom` (oder im gekoppelten Allow-Store) | +| `open` | Alle eingehenden DMs zulassen (erfordert `allowFrom: ["*"]`) | +| `disabled` | Alle eingehenden DMs ignorieren | -| Gruppenrichtlinie | Verhalten | -| ------------------- | ----------------------------------------------------- | +| Gruppenrichtlinie | Verhalten | +| --------------------- | ----------------------------------------------------- | | `allowlist` (Standard) | Nur Gruppen, die der konfigurierten Allowlist entsprechen | -| `open` | Gruppen-Allowlists umgehen (Mention-Gating gilt weiterhin) | -| `disabled` | Alle Gruppen-/Raumnachrichten blockieren | +| `open` | Gruppen-Allowlists umgehen (Mention-Gating gilt weiterhin) | +| `disabled` | Alle Gruppen-/Raumnachrichten blockieren | -`channels.defaults.groupPolicy` legt den Standard fest, wenn `groupPolicy` eines Anbieters nicht gesetzt ist. +`channels.defaults.groupPolicy` legt den Standard fest, wenn `groupPolicy` eines Providers nicht gesetzt ist. Pairing-Codes laufen nach 1 Stunde ab. Ausstehende DM-Pairing-Anfragen sind auf **3 pro Kanal** begrenzt. -Wenn ein Anbieterblock vollständig fehlt (`channels.` nicht vorhanden), fällt die Laufzeit-Gruppenrichtlinie auf `allowlist` zurück (fail-closed) und gibt beim Start eine Warnung aus. +Wenn ein Provider-Block vollständig fehlt (`channels.` fehlt), fällt die Laufzeit-Gruppenrichtlinie auf `allowlist` zurück (fail-closed) und gibt beim Start eine Warnung aus. -### Modell-Overrides pro Kanal +### Kanal-Modellüberschreibungen -Verwenden Sie `channels.modelByChannel`, um bestimmte Kanal-IDs an ein Modell zu binden. Werte akzeptieren `provider/model` oder konfigurierte Modell-Aliasse. Die Kanalzuordnung gilt, wenn eine Sitzung noch keinen Modell-Override hat (zum Beispiel durch `/model` gesetzt). +Verwenden Sie `channels.modelByChannel`, um bestimmte Kanal-IDs an ein Modell zu binden. Werte akzeptieren `provider/model` oder konfigurierte Modell-Aliasse. Die Kanalzuordnung wird angewendet, wenn eine Sitzung noch keine Modellüberschreibung hat (z. B. per `/model` gesetzt). ```json5 { @@ -73,7 +73,7 @@ Verwenden Sie `channels.modelByChannel`, um bestimmte Kanal-IDs an ein Modell zu ### Kanalstandards und Heartbeat -Verwenden Sie `channels.defaults` für gemeinsames Gruppenrichtlinien- und Heartbeat-Verhalten über Anbieter hinweg: +Verwenden Sie `channels.defaults` für gemeinsames Gruppenrichtlinien- und Heartbeat-Verhalten über alle Provider hinweg: ```json5 { @@ -91,15 +91,15 @@ Verwenden Sie `channels.defaults` für gemeinsames Gruppenrichtlinien- und Heart } ``` -- `channels.defaults.groupPolicy`: Fallback-Gruppenrichtlinie, wenn `groupPolicy` auf Anbieterebene nicht gesetzt ist. -- `channels.defaults.contextVisibility`: Standardmodus für ergänzende Kontextsichbarkeit für alle Kanäle. Werte: `all` (Standard, gesamten zitierten/Thread-/Verlaufs-Kontext einschließen), `allowlist` (nur Kontext von Absendern auf der Allowlist einschließen), `allowlist_quote` (wie allowlist, aber expliziten Zitat-/Antwortkontext beibehalten). Override pro Kanal: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: Gesunde Kanalstatus in der Heartbeat-Ausgabe einschließen. -- `channels.defaults.heartbeat.showAlerts`: Herabgestufte/Fehlerstatus in der Heartbeat-Ausgabe einschließen. -- `channels.defaults.heartbeat.useIndicator`: Kompakte Heartbeat-Ausgabe im Indikatorstil rendern. +- `channels.defaults.groupPolicy`: Fallback-Gruppenrichtlinie, wenn eine Provider-Ebene-`groupPolicy` nicht gesetzt ist. +- `channels.defaults.contextVisibility`: Standardmodus für die Sichtbarkeit von ergänzendem Kontext für alle Kanäle. Werte: `all` (Standard, schließt allen zitierten/Thread-/Verlaufs-Kontext ein), `allowlist` (schließt nur Kontext von Absendern auf der Allowlist ein), `allowlist_quote` (wie allowlist, behält aber expliziten Zitat-/Antwort-Kontext bei). Pro-Kanal-Überschreibung: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: gesunde Kanalstatus in der Heartbeat-Ausgabe einschließen. +- `channels.defaults.heartbeat.showAlerts`: degradierte/fehlerhafte Status in der Heartbeat-Ausgabe einschließen. +- `channels.defaults.heartbeat.useIndicator`: kompakte indikatorartige Heartbeat-Ausgabe rendern. ### WhatsApp -WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet automatisch, wenn eine verknüpfte Sitzung vorhanden ist. +WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet automatisch, wenn eine verknüpfte Sitzung existiert. ```json5 { @@ -110,7 +110,7 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom textChunkLimit: 4000, chunkMode: "length", // length | newline mediaMaxMb: 50, - sendReadReceipts: true, // blaue Haken (false im Self-Chat-Modus) + sendReadReceipts: true, // blaue Häkchen (false im Self-Chat-Modus) groups: { "*": { requireMention: true }, }, @@ -132,7 +132,7 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom } ``` - + ```json5 { @@ -150,10 +150,10 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom } ``` -- Ausgehende Befehle verwenden standardmäßig das Konto `default`, wenn vorhanden; andernfalls die erste konfigurierte Konto-ID (sortiert). -- Optional überschreibt `channels.whatsapp.defaultAccount` diese Fallback-Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Das Legacy-Authentifizierungsverzeichnis für ein einzelnes Baileys-Konto wird von `openclaw doctor` nach `whatsapp/default` migriert. -- Overrides pro Konto: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Ausgehende Befehle verwenden standardmäßig das Konto `default`, falls vorhanden; andernfalls die erste konfigurierte Konto-ID (sortiert). +- Optional überschreibt `channels.whatsapp.defaultAccount` diese Fallback-Auswahl des Standardkontos, wenn sie einer konfigurierten Konto-ID entspricht. +- Das alte Single-Account-Baileys-Auth-Verzeichnis wird von `openclaw doctor` nach `whatsapp/default` migriert. +- Pro-Konto-Überschreibungen: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -171,12 +171,12 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom "*": { requireMention: true }, "-1001234567890": { allowFrom: ["@admin"], - systemPrompt: "Antworten kurz halten.", + systemPrompt: "Halte Antworten kurz.", topics: { "99": { requireMention: false, skills: ["search"], - systemPrompt: "Beim Thema bleiben.", + systemPrompt: "Bleib beim Thema.", }, }, }, @@ -188,7 +188,7 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, - streaming: "partial", // off | partial | block | progress (Standard: off; explizit aktivieren, um Ratenlimits bei Vorschau-Bearbeitungen zu vermeiden) + streaming: "partial", // off | partial | block | progress (Standard: off; explizit aktivieren, um Vorschau-Bearbeitungs-Ratenlimits zu vermeiden) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, @@ -212,12 +212,12 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom ``` - Bot-Token: `channels.telegram.botToken` oder `channels.telegram.tokenFile` (nur reguläre Datei; Symlinks werden abgelehnt), mit `TELEGRAM_BOT_TOKEN` als Fallback für das Standardkonto. -- Optional überschreibt `channels.telegram.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Optional überschreibt `channels.telegram.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. - In Multi-Account-Setups (2+ Konto-IDs) setzen Sie einen expliziten Standard (`channels.telegram.defaultAccount` oder `channels.telegram.accounts.default`), um Fallback-Routing zu vermeiden; `openclaw doctor` warnt, wenn dies fehlt oder ungültig ist. -- `configWrites: false` blockiert von Telegram ausgelöste Konfigurationsschreibvorgänge (Supergroup-ID-Migrationen, `/config set|unset`). -- Top-Level-Einträge in `bindings[]` mit `type: "acp"` konfigurieren persistente ACP-Bindings für Foren-Topics (verwenden Sie das kanonische `chatId:topic:topicId` in `match.peer.id`). Die Feldsemantik wird in [ACP Agents](/de/tools/acp-agents#channel-specific-settings) gemeinsam beschrieben. -- Telegram-Streaming-Vorschauen verwenden `sendMessage` + `editMessageText` (funktioniert in Direkt- und Gruppenchats). -- Retry-Richtlinie: siehe [Retry-Richtlinie](/de/concepts/retry). +- `configWrites: false` blockiert von Telegram initiierte Konfigurationsschreibvorgänge (Supergroup-ID-Migrationen, `/config set|unset`). +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` konfigurieren persistente ACP-Bindings für Forenthemen (verwenden Sie das kanonische `chatId:topic:topicId` in `match.peer.id`). Die Feldsemantik ist gemeinsam dokumentiert unter [ACP Agents](/de/tools/acp-agents#channel-specific-settings). +- Telegram-Stream-Vorschauen verwenden `sendMessage` + `editMessageText` (funktioniert in Direkt- und Gruppenchats). +- Retry-Richtlinie: siehe [Retry policy](/de/concepts/retry). ### Discord @@ -272,7 +272,7 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom historyLimit: 20, textChunkLimit: 2000, chunkMode: "length", // length | newline - streaming: "off", // off | partial | block | progress (progress wird in Discord auf partial abgebildet) + streaming: "off", // off | partial | block | progress (progress wird auf Discord zu partial) maxLinesPerMessage: 17, ui: { components: { @@ -320,33 +320,33 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom ``` - Token: `channels.discord.token`, mit `DISCORD_BOT_TOKEN` als Fallback für das Standardkonto. -- Direkte ausgehende Aufrufe, die ein explizites Discord-`token` bereitstellen, verwenden dieses Token für den Aufruf; Kontoretry-/Richtlinieneinstellungen stammen weiterhin vom ausgewählten Konto im aktiven Laufzeit-Snapshot. -- Optional überschreibt `channels.discord.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Verwenden Sie `user:` (DM) oder `channel:` (Guild-Kanal) für Zustellziele; rohe numerische IDs werden abgelehnt. -- Guild-Slugs sind kleingeschrieben, Leerzeichen werden durch `-` ersetzt; Kanalschlüssel verwenden den Slug-Namen (ohne `#`). Bevorzugen Sie Guild-IDs. -- Vom Bot verfasste Nachrichten werden standardmäßig ignoriert. `allowBots: true` aktiviert sie; verwenden Sie `allowBots: "mentions"`, um nur Bot-Nachrichten zu akzeptieren, die den Bot erwähnen (eigene Nachrichten werden weiterhin gefiltert). -- `channels.discord.guilds..ignoreOtherMentions` (und Kanal-Overrides) verwirft Nachrichten, die einen anderen Benutzer oder eine Rolle erwähnen, aber nicht den Bot (ausgenommen @everyone/@here). -- `maxLinesPerMessage` (Standard 17) teilt hohe Nachrichten auch dann auf, wenn sie unter 2000 Zeichen liegen. -- `channels.discord.threadBindings` steuert an Discord-Threads gebundenes Routing: - - `enabled`: Discord-Override für threadgebundene Sitzungsfunktionen (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` und gebundene Zustellung/gebundenes Routing) - - `idleHours`: Discord-Override für automatisches Unfocus bei Inaktivität in Stunden (`0` deaktiviert) - - `maxAgeHours`: Discord-Override für harte Maximaldauer in Stunden (`0` deaktiviert) - - `spawnSubagentSessions`: Opt-in-Schalter für die automatische Thread-Erstellung/-Bindung bei `sessions_spawn({ thread: true })` -- Top-Level-Einträge in `bindings[]` mit `type: "acp"` konfigurieren persistente ACP-Bindings für Kanäle und Threads (verwenden Sie Kanal-/Thread-ID in `match.peer.id`). Die Feldsemantik wird in [ACP Agents](/de/tools/acp-agents#channel-specific-settings) gemeinsam beschrieben. -- `channels.discord.ui.components.accentColor` setzt die Akzentfarbe für Discord-Komponenten-v2-Container. -- `channels.discord.voice` aktiviert Discord-Sprachkanalunterhaltungen und optionale Auto-Join- + TTS-Overrides. -- `channels.discord.voice.daveEncryption` und `channels.discord.voice.decryptionFailureTolerance` werden an die DAVE-Optionen von `@discordjs/voice` durchgereicht (standardmäßig `true` und `24`). -- OpenClaw versucht zusätzlich, die Sprachübertragung wiederherzustellen, indem eine Sprachsitzung nach wiederholten Entschlüsselungsfehlern verlassen und erneut betreten wird. -- `channels.discord.streaming` ist der kanonische Schlüssel für den Streaming-Modus. Legacy-`streamMode`- und boolesche `streaming`-Werte werden automatisch migriert. -- `channels.discord.autoPresence` ordnet die Laufzeitverfügbarkeit der Bot-Präsenz zu (healthy => online, degraded => idle, exhausted => dnd) und erlaubt optionale Overrides für den Statustext. -- `channels.discord.dangerouslyAllowNameMatching` aktiviert veränderliches Namens-/Tag-Matching erneut (Break-Glass-Kompatibilitätsmodus). -- `channels.discord.execApprovals`: Discord-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern. - - `enabled`: `true`, `false` oder `"auto"` (Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmiger aus `approvers` oder `commands.ownerAllowFrom` aufgelöst werden können. - - `approvers`: Discord-Benutzer-IDs, die Exec-Anfragen genehmigen dürfen. Fällt bei Auslassung auf `commands.ownerAllowFrom` zurück. +- Direkte ausgehende Aufrufe, die ein explizites Discord-`token` angeben, verwenden dieses Token für den Aufruf; Account-Retry-/Richtlinieneinstellungen stammen weiterhin vom ausgewählten Konto im aktiven Laufzeit-Snapshot. +- Optional überschreibt `channels.discord.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. +- Verwenden Sie `user:` (DM) oder `channel:` (Guild-Kanal) für Zustellziele; bloße numerische IDs werden abgelehnt. +- Guild-Slugs sind kleingeschrieben, Leerzeichen werden durch `-` ersetzt; Kanal-Schlüssel verwenden den slugifizierten Namen (ohne `#`). Bevorzugen Sie Guild-IDs. +- Von Bots verfasste Nachrichten werden standardmäßig ignoriert. `allowBots: true` aktiviert sie; verwenden Sie `allowBots: "mentions"`, um nur Bot-Nachrichten zu akzeptieren, die den Bot erwähnen (eigene Nachrichten werden weiterhin gefiltert). +- `channels.discord.guilds..ignoreOtherMentions` (und Kanal-Überschreibungen) verwirft Nachrichten, die einen anderen Benutzer oder eine andere Rolle erwähnen, aber nicht den Bot (außer @everyone/@here). +- `maxLinesPerMessage` (Standard 17) teilt hohe Nachrichten, selbst wenn sie unter 2000 Zeichen liegen. +- `channels.discord.threadBindings` steuert Discord-Thread-gebundenes Routing: + - `enabled`: Discord-Überschreibung für Thread-gebundene Sitzungsfunktionen (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` sowie gebundene Zustellung/Weiterleitung) + - `idleHours`: Discord-Überschreibung für automatische Entfokussierung bei Inaktivität in Stunden (`0` deaktiviert) + - `maxAgeHours`: Discord-Überschreibung für hartes Maximalalter in Stunden (`0` deaktiviert) + - `spawnSubagentSessions`: Opt-in-Schalter für automatische Thread-Erstellung/-Bindung bei `sessions_spawn({ thread: true })` +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` konfigurieren persistente ACP-Bindings für Kanäle und Threads (verwenden Sie Kanal-/Thread-ID in `match.peer.id`). Die Feldsemantik ist gemeinsam dokumentiert unter [ACP Agents](/de/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` setzt die Akzentfarbe für Discord-Components-v2-Container. +- `channels.discord.voice` aktiviert Discord-Sprachkanal-Unterhaltungen sowie optionale Auto-Join- und TTS-Überschreibungen. +- `channels.discord.voice.daveEncryption` und `channels.discord.voice.decryptionFailureTolerance` werden an `@discordjs/voice`-DAVE-Optionen durchgereicht (`true` bzw. `24` standardmäßig). +- OpenClaw versucht zusätzlich eine Wiederherstellung des Sprachempfangs, indem eine Sprachsitzung nach wiederholten Entschlüsselungsfehlern verlassen und erneut beigetreten wird. +- `channels.discord.streaming` ist der kanonische Schlüssel für den Stream-Modus. Altes `streamMode` und boolesche `streaming`-Werte werden automatisch migriert. +- `channels.discord.autoPresence` ordnet die Laufzeitverfügbarkeit dem Bot-Status zu (healthy => online, degraded => idle, exhausted => dnd) und erlaubt optionale Überschreibungen des Statustexts. +- `channels.discord.dangerouslyAllowNameMatching` aktiviert veränderliches Name-/Tag-Matching erneut (Kompatibilitätsmodus als Notfallmaßnahme). +- `channels.discord.execApprovals`: Discord-native Zustellung von Exec-Genehmigungen und Autorisierung der Genehmigenden. + - `enabled`: `true`, `false` oder `"auto"` (Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmigende aus `approvers` oder `commands.ownerAllowFrom` aufgelöst werden können. + - `approvers`: Discord-Benutzer-IDs, die Exec-Anfragen genehmigen dürfen. Fällt auf `commands.ownerAllowFrom` zurück, wenn nicht gesetzt. - `agentFilter`: optionale Allowlist für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten. - - `sessionFilter`: optionale Sitzungsschlüssel-Muster (Substring oder Regex). - - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard) sendet an die DMs der Genehmiger, `"channel"` sendet an den Ursprungskanal, `"both"` sendet an beide. Wenn das Ziel `"channel"` enthält, sind die Schaltflächen nur für aufgelöste Genehmiger nutzbar. - - `cleanupAfterResolve`: wenn `true`, löscht Genehmigungs-DMs nach Genehmigung, Ablehnung oder Timeout. + - `sessionFilter`: optionale Sitzungs-Schlüssel-Muster (Substring oder Regex). + - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard) sendet an DMs der Genehmigenden, `"channel"` an den Ursprungskanal, `"both"` an beides. Wenn das Ziel `"channel"` einschließt, sind Buttons nur für aufgelöste Genehmigende nutzbar. + - `cleanupAfterResolve`: wenn `true`, werden Genehmigungs-DMs nach Genehmigung, Ablehnung oder Timeout gelöscht. **Modi für Reaktionsbenachrichtigungen:** `off` (keine), `own` (Nachrichten des Bots, Standard), `all` (alle Nachrichten), `allowlist` (von `guilds..users` auf allen Nachrichten). @@ -381,9 +381,9 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom - Service-Account-JSON: inline (`serviceAccount`) oder dateibasiert (`serviceAccountFile`). - Service-Account-SecretRef wird ebenfalls unterstützt (`serviceAccountRef`). -- Umgebungs-Fallbacks: `GOOGLE_CHAT_SERVICE_ACCOUNT` oder `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- Env-Fallbacks: `GOOGLE_CHAT_SERVICE_ACCOUNT` oder `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. - Verwenden Sie `spaces/` oder `users/` für Zustellziele. -- `channels.googlechat.dangerouslyAllowNameMatching` aktiviert veränderliches E-Mail-Prinzipal-Matching erneut (Break-Glass-Kompatibilitätsmodus). +- `channels.googlechat.dangerouslyAllowNameMatching` aktiviert veränderliches E-Mail-Prinzipal-Matching erneut (Kompatibilitätsmodus als Notfallmaßnahme). ### Slack @@ -448,28 +448,28 @@ WhatsApp läuft über den Web-Kanal des Gateways (Baileys Web). Er startet autom } ``` -- **Socket-Modus** erfordert sowohl `botToken` als auch `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` als Umgebungs-Fallback für das Standardkonto). +- **Socket-Modus** erfordert sowohl `botToken` als auch `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` als Env-Fallback für das Standardkonto). - **HTTP-Modus** erfordert `botToken` plus `signingSecret` (am Root oder pro Konto). - `botToken`, `appToken`, `signingSecret` und `userToken` akzeptieren Klartext-Strings oder SecretRef-Objekte. -- Slack-Konto-Snapshots stellen Felder pro Anmeldedatenquelle/-status bereit, etwa `botTokenSource`, `botTokenStatus`, `appTokenStatus` und im HTTP-Modus `signingSecretStatus`. `configured_unavailable` bedeutet, dass das Konto über SecretRef konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad den Geheimniswert aber nicht auflösen konnte. -- `configWrites: false` blockiert von Slack ausgelöste Konfigurationsschreibvorgänge. -- Optional überschreibt `channels.slack.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- `channels.slack.streaming` ist der kanonische Schlüssel für den Streaming-Modus. Legacy-`streamMode`- und boolesche `streaming`-Werte werden automatisch migriert. +- Slack-Konto-Snapshots stellen pro Anmeldeinformation Quell-/Status-Felder wie `botTokenSource`, `botTokenStatus`, `appTokenStatus` und im HTTP-Modus `signingSecretStatus` bereit. `configured_unavailable` bedeutet, dass das Konto über SecretRef konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad den Secret-Wert aber nicht auflösen konnte. +- `configWrites: false` blockiert von Slack initiierte Konfigurationsschreibvorgänge. +- Optional überschreibt `channels.slack.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. +- `channels.slack.streaming` ist der kanonische Schlüssel für den Stream-Modus. Altes `streamMode` und boolesche `streaming`-Werte werden automatisch migriert. - Verwenden Sie `user:` (DM) oder `channel:` für Zustellziele. **Modi für Reaktionsbenachrichtigungen:** `off`, `own` (Standard), `all`, `allowlist` (aus `reactionAllowlist`). -**Thread-Sitzungsisolation:** `thread.historyScope` gilt pro Thread (Standard) oder kanalweit gemeinsam. `thread.inheritParent` kopiert das Transkript des übergeordneten Kanals in neue Threads. +**Thread-Sitzungsisolation:** `thread.historyScope` ist pro Thread (Standard) oder kanalweit geteilt. `thread.inheritParent` kopiert das Transkript des übergeordneten Kanals in neue Threads. -- `typingReaction` fügt der eingehenden Slack-Nachricht während einer laufenden Antwort vorübergehend eine Reaktion hinzu und entfernt sie nach Abschluss wieder. Verwenden Sie einen Slack-Emoji-Shortcode wie `"hourglass_flowing_sand"`. -- `channels.slack.execApprovals`: Slack-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern. Gleiches Schema wie Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (Slack-Benutzer-IDs), `agentFilter`, `sessionFilter` und `target` (`"dm"`, `"channel"` oder `"both"`). +- `typingReaction` fügt der eingehenden Slack-Nachricht vorübergehend eine Reaktion hinzu, während eine Antwort läuft, und entfernt sie nach Abschluss. Verwenden Sie einen Slack-Emoji-Shortcode wie `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: Slack-native Zustellung von Exec-Genehmigungen und Autorisierung der Genehmigenden. Dasselbe Schema wie bei Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (Slack-Benutzer-IDs), `agentFilter`, `sessionFilter` und `target` (`"dm"`, `"channel"` oder `"both"`). -| Aktionsgruppe | Standard | Hinweise | -| ------------- | -------- | ---------------------- | +| Aktionsgruppe | Standard | Hinweise | +| ------------- | -------- | ------------------------ | | reactions | aktiviert | Reagieren + Reaktionen auflisten | | messages | aktiviert | Lesen/Senden/Bearbeiten/Löschen | | pins | aktiviert | Anheften/Lösen/Auflisten | -| memberInfo | aktiviert | Mitgliederinfos | +| memberInfo | aktiviert | Mitgliederinfo | | emojiList | aktiviert | Liste benutzerdefinierter Emojis | ### Mattermost @@ -494,7 +494,7 @@ Mattermost wird als Plugin ausgeliefert: `openclaw plugins install @openclaw/mat native: true, // Opt-in nativeSkills: true, callbackPath: "/api/channels/mattermost/command", - // Optional explizite URL für Reverse-Proxy-/öffentliche Deployments + // Optionale explizite URL für Reverse-Proxy-/öffentliche Deployments callbackUrl: "https://gateway.example.com/api/channels/mattermost/command", }, textChunkLimit: 4000, @@ -504,19 +504,19 @@ Mattermost wird als Plugin ausgeliefert: `openclaw plugins install @openclaw/mat } ``` -Chat-Modi: `oncall` (auf @-Erwähnung antworten, Standard), `onmessage` (jede Nachricht), `onchar` (Nachrichten, die mit einem Trigger-Präfix beginnen). +Chat-Modi: `oncall` (antwortet bei @-Erwähnung, Standard), `onmessage` (jede Nachricht), `onchar` (Nachrichten, die mit einem Trigger-Präfix beginnen). -Wenn Mattermost-native Befehle aktiviert sind: +Wenn native Mattermost-Befehle aktiviert sind: - `commands.callbackPath` muss ein Pfad sein (zum Beispiel `/api/channels/mattermost/command`), keine vollständige URL. - `commands.callbackUrl` muss auf den OpenClaw-Gateway-Endpunkt aufgelöst werden und vom Mattermost-Server aus erreichbar sein. -- Native Slash-Callbacks werden mit den pro Befehl erzeugten Tokens authentifiziert, die Mattermost bei der Registrierung des Slash-Befehls zurückgibt. Wenn die Registrierung fehlschlägt oder keine Befehle aktiviert werden, lehnt OpenClaw Callbacks mit `Unauthorized: invalid command token.` ab. -- Für private/tailnet/interne Callback-Hosts verlangt Mattermost möglicherweise, dass `ServiceSettings.AllowedUntrustedInternalConnections` den Callback-Host/-Domainnamen enthält. - Verwenden Sie Host-/Domainwerte, keine vollständigen URLs. -- `channels.mattermost.configWrites`: von Mattermost ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. -- `channels.mattermost.requireMention`: vor Antworten in Kanälen `@mention` verlangen. -- `channels.mattermost.groups..requireMention`: Override für Mention-Gating pro Kanal (`"*"` für Standard). -- Optional überschreibt `channels.mattermost.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Native Slash-Callbacks werden mit den pro Befehl zurückgegebenen Tokens authentifiziert, die Mattermost bei der Registrierung von Slash-Befehlen zurückgibt. Wenn die Registrierung fehlschlägt oder keine Befehle aktiviert werden, weist OpenClaw Callbacks mit `Unauthorized: invalid command token.` zurück. +- Für private/tailnet/interne Callback-Hosts kann Mattermost verlangen, dass `ServiceSettings.AllowedUntrustedInternalConnections` den Callback-Host/-Domain enthält. + Verwenden Sie Host-/Domain-Werte, keine vollständigen URLs. +- `channels.mattermost.configWrites`: von Mattermost initiierte Konfigurationsschreibvorgänge erlauben oder verweigern. +- `channels.mattermost.requireMention`: `@mention` vor einer Antwort in Kanälen verlangen. +- `channels.mattermost.groups..requireMention`: Mention-Gating-Überschreibung pro Kanal (`"*"` für Standard). +- Optional überschreibt `channels.mattermost.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. ### Signal @@ -539,13 +539,13 @@ Wenn Mattermost-native Befehle aktiviert sind: **Modi für Reaktionsbenachrichtigungen:** `off`, `own` (Standard), `all`, `allowlist` (aus `reactionAllowlist`). -- `channels.signal.account`: Kanalstart an eine bestimmte Signal-Kontoidentität binden. -- `channels.signal.configWrites`: von Signal ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. -- Optional überschreibt `channels.signal.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- `channels.signal.account`: Kanalstart auf eine bestimmte Signal-Kontoidentität festlegen. +- `channels.signal.configWrites`: von Signal initiierte Konfigurationsschreibvorgänge erlauben oder verweigern. +- Optional überschreibt `channels.signal.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. ### BlueBubbles -BlueBubbles ist der empfohlene iMessage-Pfad (plugin-gestützt, konfiguriert unter `channels.bluebubbles`). +BlueBubbles ist der empfohlene iMessage-Pfad (pluginbasiert, konfiguriert unter `channels.bluebubbles`). ```json5 { @@ -553,21 +553,21 @@ BlueBubbles ist der empfohlene iMessage-Pfad (plugin-gestützt, konfiguriert unt bluebubbles: { enabled: true, dmPolicy: "pairing", - // serverUrl, password, webhookPath, Gruppenkontrollen und erweiterte Aktionen: + // serverUrl, password, webhookPath, Gruppensteuerung und erweiterte Aktionen: // siehe /channels/bluebubbles }, }, } ``` -- Hier abgedeckte Kernschlüsselpfade: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Optional überschreibt `channels.bluebubbles.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Top-Level-Einträge in `bindings[]` mit `type: "acp"` können BlueBubbles-Unterhaltungen an persistente ACP-Sitzungen binden. Verwenden Sie einen BlueBubbles-Handle oder Ziel-String (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Gemeinsame Feldsemantik: [ACP Agents](/de/tools/acp-agents#channel-specific-settings). -- Die vollständige BlueBubbles-Kanalkonfiguration ist unter [BlueBubbles](/de/channels/bluebubbles) dokumentiert. +- Hier behandelte zentrale Schlüsselpfade: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Optional überschreibt `channels.bluebubbles.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` können BlueBubbles-Konversationen an persistente ACP-Sitzungen binden. Verwenden Sie in `match.peer.id` einen BlueBubbles-Handle oder Ziel-String (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`). Gemeinsame Feldsemantik: [ACP Agents](/de/tools/acp-agents#channel-specific-settings). +- Die vollständige BlueBubbles-Kanal-Konfiguration ist unter [BlueBubbles](/de/channels/bluebubbles) dokumentiert. ### iMessage -OpenClaw startet `imsg rpc` (JSON-RPC über stdio). Kein Daemon und kein Port erforderlich. +OpenClaw startet `imsg rpc` (JSON-RPC über stdio). Kein Daemon oder Port erforderlich. ```json5 { @@ -591,15 +591,15 @@ OpenClaw startet `imsg rpc` (JSON-RPC über stdio). Kein Daemon und kein Port er } ``` -- Optional überschreibt `channels.imessage.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Optional überschreibt `channels.imessage.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. -- Erfordert Vollzugriff auf die Messages-Datenbank. +- Erfordert Vollzugriff auf die Nachrichten-Datenbank. - Bevorzugen Sie `chat_id:`-Ziele. Verwenden Sie `imsg chats --limit 20`, um Chats aufzulisten. -- `cliPath` kann auf einen SSH-Wrapper verweisen; setzen Sie `remoteHost` (`host` oder `user@host`) für SCP-Anhangsabruf. +- `cliPath` kann auf einen SSH-Wrapper zeigen; setzen Sie `remoteHost` (`host` oder `user@host`) für SCP-Anhangsabrufe. - `attachmentRoots` und `remoteAttachmentRoots` beschränken eingehende Anhangspfade (Standard: `/Users/*/Library/Messages/Attachments`). -- SCP verwendet strikte Host-Key-Prüfung, stellen Sie also sicher, dass der Schlüssel des Relay-Hosts bereits in `~/.ssh/known_hosts` vorhanden ist. -- `channels.imessage.configWrites`: von iMessage ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. -- Top-Level-Einträge in `bindings[]` mit `type: "acp"` können iMessage-Unterhaltungen an persistente ACP-Sitzungen binden. Verwenden Sie einen normalisierten Handle oder ein explizites Chat-Ziel (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Gemeinsame Feldsemantik: [ACP Agents](/de/tools/acp-agents#channel-specific-settings). +- SCP verwendet strikte Host-Key-Prüfung, stellen Sie also sicher, dass der Relay-Host-Key bereits in `~/.ssh/known_hosts` vorhanden ist. +- `channels.imessage.configWrites`: von iMessage initiierte Konfigurationsschreibvorgänge erlauben oder verweigern. +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` können iMessage-Konversationen an persistente ACP-Sitzungen binden. Verwenden Sie in `match.peer.id` einen normalisierten Handle oder ein explizites Chat-Ziel (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`). Gemeinsame Feldsemantik: [ACP Agents](/de/tools/acp-agents#channel-specific-settings). @@ -612,7 +612,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix ist erweiterungsgestützt und wird unter `channels.matrix` konfiguriert. +Matrix ist erweiterungsbasiert und wird unter `channels.matrix` konfiguriert. ```json5 { @@ -642,24 +642,24 @@ Matrix ist erweiterungsgestützt und wird unter `channels.matrix` konfiguriert. } ``` -- Token-Auth verwendet `accessToken`; Passwort-Auth verwendet `userId` + `password`. -- `channels.matrix.proxy` leitet Matrix-HTTP-Traffic über einen expliziten HTTP(S)-Proxy. Benannte Konten können dies mit `channels.matrix.accounts..proxy` überschreiben. +- Token-Authentifizierung verwendet `accessToken`; Passwort-Authentifizierung verwendet `userId` + `password`. +- `channels.matrix.proxy` leitet Matrix-HTTP-Datenverkehr über einen expliziten HTTP(S)-Proxy. Benannte Konten können dies mit `channels.matrix.accounts..proxy` überschreiben. - `channels.matrix.allowPrivateNetwork` erlaubt private/interne Homeserver. `proxy` und `allowPrivateNetwork` sind unabhängige Steuerungen. - `channels.matrix.defaultAccount` wählt das bevorzugte Konto in Multi-Account-Setups aus. -- `channels.matrix.execApprovals`: Matrix-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern. - - `enabled`: `true`, `false` oder `"auto"` (Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmiger aus `approvers` oder `commands.ownerAllowFrom` aufgelöst werden können. +- `channels.matrix.execApprovals`: Matrix-native Zustellung von Exec-Genehmigungen und Autorisierung der Genehmigenden. + - `enabled`: `true`, `false` oder `"auto"` (Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmigende aus `approvers` oder `commands.ownerAllowFrom` aufgelöst werden können. - `approvers`: Matrix-Benutzer-IDs (z. B. `@owner:example.org`), die Exec-Anfragen genehmigen dürfen. - `agentFilter`: optionale Allowlist für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten. - - `sessionFilter`: optionale Sitzungsschlüssel-Muster (Substring oder Regex). + - `sessionFilter`: optionale Sitzungs-Schlüssel-Muster (Substring oder Regex). - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard), `"channel"` (Ursprungsraum) oder `"both"`. - - Overrides pro Konto: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` steuert, wie Matrix-DMs zu Sitzungen gruppiert werden: `per-user` (Standard) teilt nach geroutetem Peer, während `per-room` jeden DM-Raum isoliert. -- Matrix-Statusprüfungen und Live-Verzeichnisabfragen verwenden dieselbe Proxy-Richtlinie wie der Laufzeit-Traffic. -- Die vollständige Matrix-Konfiguration, Zielregeln und Setup-Beispiele sind unter [Matrix](/de/channels/matrix) dokumentiert. + - Pro-Konto-Überschreibungen: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` steuert, wie Matrix-DMs zu Sitzungen gruppiert werden: `per-user` (Standard) teilt nach weitergeleitetem Peer, während `per-room` jeden DM-Raum isoliert. +- Matrix-Statusprüfungen und Live-Verzeichnisabfragen verwenden dieselbe Proxy-Richtlinie wie der Laufzeitverkehr. +- Vollständige Matrix-Konfiguration, Zielregeln und Einrichtungsbeispiele sind unter [Matrix](/de/channels/matrix) dokumentiert. ### Microsoft Teams -Microsoft Teams ist erweiterungsgestützt und wird unter `channels.msteams` konfiguriert. +Microsoft Teams ist erweiterungsbasiert und wird unter `channels.msteams` konfiguriert. ```json5 { @@ -674,12 +674,12 @@ Microsoft Teams ist erweiterungsgestützt und wird unter `channels.msteams` konf } ``` -- Hier abgedeckte Kernschlüsselpfade: `channels.msteams`, `channels.msteams.configWrites`. -- Die vollständige Teams-Konfiguration (Anmeldedaten, Webhook, DM-/Gruppenrichtlinie, Overrides pro Team/Kanal) ist unter [Microsoft Teams](/de/channels/msteams) dokumentiert. +- Hier behandelte zentrale Schlüsselpfade: `channels.msteams`, `channels.msteams.configWrites`. +- Die vollständige Teams-Konfiguration (Anmeldedaten, Webhook, DM-/Gruppenrichtlinie, Überschreibungen pro Team/Kanal) ist unter [Microsoft Teams](/de/channels/msteams) dokumentiert. ### IRC -IRC ist erweiterungsgestützt und wird unter `channels.irc` konfiguriert. +IRC ist erweiterungsbasiert und wird unter `channels.irc` konfiguriert. ```json5 { @@ -700,13 +700,13 @@ IRC ist erweiterungsgestützt und wird unter `channels.irc` konfiguriert. } ``` -- Hier abgedeckte Kernschlüsselpfade: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Optional überschreibt `channels.irc.defaultAccount` die Standardkontenauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Die vollständige IRC-Kanalkonfiguration (Host/Port/TLS/Kanäle/Allowlists/Mention-Gating) ist unter [IRC](/de/channels/irc) dokumentiert. +- Hier behandelte zentrale Schlüsselpfade: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Optional überschreibt `channels.irc.defaultAccount` die Standardkonto-Auswahl, wenn sie einer konfigurierten Konto-ID entspricht. +- Die vollständige IRC-Kanal-Konfiguration (Host/Port/TLS/Kanäle/Allowlists/Mention-Gating) ist unter [IRC](/de/channels/irc) dokumentiert. ### Multi-Account (alle Kanäle) -Führen Sie mehrere Konten pro Kanal aus (jedes mit eigener `accountId`): +Mehrere Konten pro Kanal ausführen (jeweils mit eigener `accountId`): ```json5 { @@ -728,26 +728,26 @@ Führen Sie mehrere Konten pro Kanal aus (jedes mit eigener `accountId`): ``` - `default` wird verwendet, wenn `accountId` weggelassen wird (CLI + Routing). -- Umgebungs-Token gelten nur für das **default**-Konto. +- Env-Tokens gelten nur für das **Standard**konto. - Basis-Kanaleinstellungen gelten für alle Konten, sofern sie nicht pro Konto überschrieben werden. -- Verwenden Sie `bindings[].match.accountId`, um jedes Konto an einen anderen Agenten zu routen. -- Wenn Sie über `openclaw channels add` (oder Kanal-Onboarding) ein Nicht-Standardkonto hinzufügen, während Sie noch eine Top-Level-Einzelkonto-Kanalkonfiguration haben, überführt OpenClaw zunächst kontoabhängige Top-Level-Einzelkontowerte in die Kanalkonten-Zuordnung, damit das ursprüngliche Konto weiter funktioniert. Die meisten Kanäle verschieben sie nach `channels..accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten. -- Vorhandene kanalbezogene Bindings (ohne `accountId`) passen weiterhin zum Standardkonto; kontobezogene Bindings bleiben optional. -- `openclaw doctor --fix` repariert auch gemischte Shapes, indem kontoabhängige Top-Level-Einzelkontowerte in das für diesen Kanal beförderte Konto verschoben werden. Die meisten Kanäle verwenden `accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten. +- Verwenden Sie `bindings[].match.accountId`, um jedes Konto an einen anderen Agenten weiterzuleiten. +- Wenn Sie ein Nicht-Standardkonto über `openclaw channels add` (oder Kanal-Onboarding) hinzufügen, während Sie noch eine kanalweite Single-Account-Konfiguration auf oberster Ebene haben, verschiebt OpenClaw zuerst kontoabhängige Werte der obersten Ebene in die Kanalkonten-Map, damit das ursprüngliche Konto weiter funktioniert. Die meisten Kanäle verschieben sie in `channels..accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/Standardziel beibehalten. +- Bestehende nur kanalbezogene Bindings (ohne `accountId`) passen weiterhin auf das Standardkonto; kontobezogene Bindings bleiben optional. +- `openclaw doctor --fix` repariert auch gemischte Formen, indem kontoabhängige Werte der obersten Ebene in das für diesen Kanal hochgestufte Konto verschoben werden. Die meisten Kanäle verwenden `accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/Standardziel beibehalten. ### Andere Erweiterungskanäle -Viele Erweiterungskanäle werden als `channels.` konfiguriert und auf ihren jeweiligen Kanal-Seiten dokumentiert (zum Beispiel Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat und Twitch). -Siehe den vollständigen Kanalindex: [Kanäle](/de/channels). +Viele Erweiterungskanäle werden als `channels.` konfiguriert und auf ihren jeweiligen Kanalseiten dokumentiert (zum Beispiel Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat und Twitch). +Den vollständigen Kanalindex finden Sie unter: [Channels](/de/channels). ### Mention-Gating in Gruppenchats -Gruppennachrichten erfordern standardmäßig **eine Erwähnung** (Metadaten-Erwähnung oder sichere Regex-Muster). Gilt für WhatsApp, Telegram, Discord, Google Chat und iMessage-Gruppenchats. +Gruppennachrichten verlangen standardmäßig **eine Erwähnung** (Metadaten-Erwähnung oder sichere Regex-Muster). Gilt für WhatsApp-, Telegram-, Discord-, Google-Chat- und iMessage-Gruppenchats. -**Arten von Erwähnungen:** +**Erwähnungstypen:** -- **Metadaten-Erwähnungen**: Native Plattform-@-Erwähnungen. Im WhatsApp-Self-Chat-Modus ignoriert. -- **Textmuster**: Sichere Regex-Muster in `agents.list[].groupChat.mentionPatterns`. Ungültige Muster und unsichere verschachtelte Wiederholungen werden ignoriert. +- **Metadaten-Erwähnungen**: native @-Erwähnungen der Plattform. Im WhatsApp-Self-Chat-Modus ignoriert. +- **Textmuster**: sichere Regex-Muster in `agents.list[].groupChat.mentionPatterns`. Ungültige Muster und unsichere verschachtelte Wiederholungen werden ignoriert. - Mention-Gating wird nur erzwungen, wenn Erkennung möglich ist (native Erwähnungen oder mindestens ein Muster). ```json5 @@ -761,7 +761,7 @@ Gruppennachrichten erfordern standardmäßig **eine Erwähnung** (Metadaten-Erw } ``` -`messages.groupChat.historyLimit` legt den globalen Standard fest. Kanäle können ihn mit `channels..historyLimit` (oder pro Konto) überschreiben. Setzen Sie `0`, um ihn zu deaktivieren. +`messages.groupChat.historyLimit` setzt den globalen Standard. Kanäle können dies mit `channels..historyLimit` (oder pro Konto) überschreiben. Setzen Sie `0`, um es zu deaktivieren. #### DM-Verlaufslimits @@ -778,13 +778,13 @@ Gruppennachrichten erfordern standardmäßig **eine Erwähnung** (Metadaten-Erw } ``` -Auflösung: Override pro DM → Anbieterstandard → kein Limit (alles bleibt erhalten). +Auflösung: Überschreibung pro DM → Provider-Standard → kein Limit (alles bleibt erhalten). Unterstützt: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. #### Self-Chat-Modus -Nehmen Sie Ihre eigene Nummer in `allowFrom` auf, um den Self-Chat-Modus zu aktivieren (ignoriert native @-Erwähnungen, reagiert nur auf Textmuster): +Fügen Sie Ihre eigene Nummer in `allowFrom` ein, um den Self-Chat-Modus zu aktivieren (ignoriert native @-Erwähnungen, reagiert nur auf Textmuster): ```json5 { @@ -805,7 +805,7 @@ Nehmen Sie Ihre eigene Nummer in `allowFrom` auf, um den Self-Chat-Modus zu akti } ``` -### Befehle (Verarbeitung von Chat-Befehlen) +### Befehle (Chat-Befehlsverarbeitung) ```json5 { @@ -828,16 +828,16 @@ Nehmen Sie Ihre eigene Nummer in `allowFrom` auf, um den Self-Chat-Modus zu akti -- Textbefehle müssen **eigenständige** Nachrichten sein, die mit `/` beginnen. -- `native: "auto"` aktiviert native Befehle für Discord/Telegram, lässt Slack deaktiviert. -- Override pro Kanal: `channels.discord.commands.native` (bool oder `"auto"`). `false` löscht zuvor registrierte Befehle. +- Textbefehle müssen **eigenständige** Nachrichten mit führendem `/` sein. +- `native: "auto"` schaltet native Befehle für Discord/Telegram ein, lässt Slack aus. +- Pro Kanal überschreiben: `channels.discord.commands.native` (bool oder `"auto"`). `false` löscht zuvor registrierte Befehle. - `channels.telegram.customCommands` fügt zusätzliche Telegram-Bot-Menüeinträge hinzu. - `bash: true` aktiviert `! ` für die Host-Shell. Erfordert `tools.elevated.enabled` und einen Absender in `tools.elevated.allowFrom.`. -- `config: true` aktiviert `/config` (liest/schreibt `openclaw.json`). Für Gateway-`chat.send`-Clients erfordern persistente Schreibvorgänge mit `/config set|unset` außerdem `operator.admin`; das schreibgeschützte `/config show` bleibt normalen Operator-Clients mit Schreibbereich erhalten. +- `config: true` aktiviert `/config` (liest/schreibt `openclaw.json`). Für Gateway-`chat.send`-Clients erfordern persistente `/config set|unset`-Schreibvorgänge zusätzlich `operator.admin`; schreibgeschütztes `/config show` bleibt für normale, schreibberechtigte Operator-Clients verfügbar. - `channels..configWrites` steuert Konfigurationsmutationen pro Kanal (Standard: true). -- Für Multi-Account-Kanäle steuert `channels..accounts..configWrites` auch Schreibvorgänge, die auf dieses Konto zielen (zum Beispiel `/allowlist --config --account ` oder `/config set channels..accounts....`). -- `allowFrom` ist anbieterbezogen. Wenn gesetzt, ist es die **einzige** Autorisierungsquelle (Kanal-Allowlists/Pairing und `useAccessGroups` werden ignoriert). -- `useAccessGroups: false` erlaubt Befehlen, Richtlinien von Zugriffsgruppen zu umgehen, wenn `allowFrom` nicht gesetzt ist. +- Für Multi-Account-Kanäle steuert `channels..accounts..configWrites` ebenfalls Schreibvorgänge, die auf dieses Konto abzielen (z. B. `/allowlist --config --account ` oder `/config set channels..accounts....`). +- `allowFrom` ist providerbezogen. Wenn gesetzt, ist dies die **einzige** Autorisierungsquelle (Kanal-Allowlists/Pairing und `useAccessGroups` werden ignoriert). +- `useAccessGroups: false` erlaubt Befehlen, Access-Group-Richtlinien zu umgehen, wenn `allowFrom` nicht gesetzt ist. @@ -857,7 +857,7 @@ Standard: `~/.openclaw/workspace`. ### `agents.defaults.repoRoot` -Optionales Repository-Root, das in der Runtime-Zeile des System-Prompts angezeigt wird. Wenn nicht gesetzt, erkennt OpenClaw es automatisch, indem es vom Workspace nach oben läuft. +Optionales Repository-Root, das in der Runtime-Zeile des System-Prompts angezeigt wird. Wenn nicht gesetzt, erkennt OpenClaw es automatisch, indem es vom Workspace aus nach oben läuft. ```json5 { @@ -867,7 +867,7 @@ Optionales Repository-Root, das in der Runtime-Zeile des System-Prompts angezeig ### `agents.defaults.skills` -Optionale Standard-Allowlist für Skills bei Agenten, die `agents.list[].skills` nicht setzen. +Optionale Standard-Allowlist für Skills für Agenten, die `agents.list[].skills` nicht setzen. ```json5 { @@ -885,7 +885,7 @@ Optionale Standard-Allowlist für Skills bei Agenten, die `agents.list[].skills` - Lassen Sie `agents.defaults.skills` weg, um standardmäßig uneingeschränkte Skills zuzulassen. - Lassen Sie `agents.list[].skills` weg, um die Standards zu erben. - Setzen Sie `agents.list[].skills: []` für keine Skills. -- Eine nichtleere Liste in `agents.list[].skills` ist die endgültige Menge für diesen Agenten; sie wird nicht mit den Standards zusammengeführt. +- Eine nicht leere Liste in `agents.list[].skills` ist die endgültige Menge für diesen Agenten; sie wird nicht mit den Standards zusammengeführt. ### `agents.defaults.skipBootstrap` @@ -897,9 +897,21 @@ Deaktiviert die automatische Erstellung von Workspace-Bootstrap-Dateien (`AGENTS } ``` +### `agents.defaults.contextInjection` + +Steuert, wann Workspace-Bootstrap-Dateien in den System-Prompt eingefügt werden. Standard: `"always"`. + +- `"continuation-skip"`: bei sicheren Fortsetzungszügen (nach einer abgeschlossenen Assistentenantwort) wird die erneute Einfügung des Workspace-Bootstraps übersprungen, was die Prompt-Größe reduziert. Heartbeat-Läufe und Wiederholungen nach Kompaktierung bauen den Kontext weiterhin neu auf. + +```json5 +{ + agents: { defaults: { contextInjection: "continuation-skip" } }, +} +``` + ### `agents.defaults.bootstrapMaxChars` -Maximale Zeichenzahl pro Workspace-Bootstrap-Datei vor dem Abschneiden. Standard: `20000`. +Maximale Zeichen pro Workspace-Bootstrap-Datei vor dem Abschneiden. Standard: `20000`. ```json5 { @@ -909,7 +921,7 @@ Maximale Zeichenzahl pro Workspace-Bootstrap-Datei vor dem Abschneiden. Standard ### `agents.defaults.bootstrapTotalMaxChars` -Maximale Gesamtzeichenzahl, die über alle Workspace-Bootstrap-Dateien hinweg injiziert wird. Standard: `150000`. +Maximale Gesamtanzahl an eingefügten Zeichen über alle Workspace-Bootstrap-Dateien hinweg. Standard: `150000`. ```json5 { @@ -922,9 +934,9 @@ Maximale Gesamtzeichenzahl, die über alle Workspace-Bootstrap-Dateien hinweg in Steuert den für Agenten sichtbaren Warntext, wenn Bootstrap-Kontext abgeschnitten wird. Standard: `"once"`. -- `"off"`: niemals Warntext in den System-Prompt injizieren. -- `"once"`: Warnung einmal pro eindeutiger Trunkierungssignatur injizieren (empfohlen). -- `"always"`: bei jedem Lauf mit vorhandener Trunkierung Warnung injizieren. +- `"off"`: niemals Warntext in den System-Prompt einfügen. +- `"once"`: Warnung einmal pro eindeutiger Abschneide-Signatur einfügen (empfohlen). +- `"always"`: Warnung bei jedem Lauf einfügen, wenn Abschneidung vorliegt. ```json5 { @@ -934,11 +946,11 @@ Standard: `"once"`. ### `agents.defaults.imageMaxDimensionPx` -Maximale Pixelgröße der längsten Bildseite in Transkript-/Tool-Bildblöcken vor Anbieteraufrufen. +Maximale Pixelgröße der längsten Bildseite in Transkript-/Tool-Bildblöcken vor Provider-Aufrufen. Standard: `1200`. -Niedrigere Werte reduzieren in der Regel den Verbrauch von Vision-Token und die Größe des Request-Payloads bei screenshotlastigen Läufen. -Höhere Werte erhalten mehr visuelle Details. +Niedrigere Werte reduzieren normalerweise die Nutzung von Vision-Tokens und die Größe der Request-Payload bei screenshotlastigen Läufen. +Höhere Werte bewahren mehr visuelle Details. ```json5 { @@ -948,7 +960,7 @@ Höhere Werte erhalten mehr visuelle Details. ### `agents.defaults.userTimezone` -Zeitzone für den Kontext im System-Prompt (nicht für Nachrichtenzeitstempel). Fällt auf die Zeitzone des Hosts zurück. +Zeitzone für den Kontext des System-Prompts (nicht für Nachrichtenzeitstempel). Fällt auf die Host-Zeitzone zurück. ```json5 { @@ -996,7 +1008,7 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Präferenz). primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, - params: { cacheRetention: "long" }, // globale Standard-Anbieterparameter + params: { cacheRetention: "long" }, // globale Standard-Provider-Parameter pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", @@ -1012,42 +1024,42 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Präferenz). ``` - `model`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - String-Form setzt nur das primäre Modell. - - Objekt-Form setzt primäres Modell plus geordnete Failover-Modelle. + - Die String-Form setzt nur das primäre Modell. + - Die Objekt-Form setzt das primäre Modell plus geordnete Failover-Modelle. - `imageModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird vom `image`-Tool-Pfad als Konfiguration des Vision-Modells verwendet. - - Wird auch als Fallback-Routing verwendet, wenn das ausgewählte/Standardmodell keine Bild-Eingaben akzeptieren kann. + - Wird vom `image`-Toolpfad als Vision-Modell-Konfiguration verwendet. + - Wird auch als Fallback-Routing verwendet, wenn das ausgewählte/Standardmodell keine Bildeingabe akzeptieren kann. - `imageGenerationModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird von der gemeinsamen Bildgenerierungsfunktion und jeder zukünftigen Tool-/Plugin-Oberfläche verwendet, die Bilder erzeugt. + - Wird von der gemeinsamen Bildgenerierungs-Fähigkeit und jeder zukünftigen Tool-/Plugin-Oberfläche verwendet, die Bilder generiert. - Typische Werte: `google/gemini-3.1-flash-image-preview` für native Gemini-Bildgenerierung, `fal/fal-ai/flux/dev` für fal oder `openai/gpt-image-1` für OpenAI Images. - - Wenn Sie direkt einen Anbieter/ein Modell auswählen, konfigurieren Sie auch die passende Anbieter-Auth/API key dazu (zum Beispiel `GEMINI_API_KEY` oder `GOOGLE_API_KEY` für `google/*`, `OPENAI_API_KEY` für `openai/*`, `FAL_KEY` für `fal/*`). - - Wenn weggelassen, kann `image_generate` dennoch einen auth-gestützten Standardanbieter ableiten. Es versucht zuerst den aktuellen Standardanbieter und dann die übrigen registrierten Bildgenerierungsanbieter in Anbieter-ID-Reihenfolge. + - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Key (zum Beispiel `GEMINI_API_KEY` oder `GOOGLE_API_KEY` für `google/*`, `OPENAI_API_KEY` für `openai/*`, `FAL_KEY` für `fal/*`). + - Wenn nicht gesetzt, kann `image_generate` dennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die verbleibenden registrierten Bildgenerierungs-Provider in Provider-ID-Reihenfolge. - `musicGenerationModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird von der gemeinsamen Musikgenerierungsfunktion und dem eingebauten Tool `music_generate` verwendet. + - Wird von der gemeinsamen Musikgenerierungs-Fähigkeit und dem eingebauten `music_generate`-Tool verwendet. - Typische Werte: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` oder `minimax/music-2.5+`. - - Wenn weggelassen, kann `music_generate` dennoch einen auth-gestützten Standardanbieter ableiten. Es versucht zuerst den aktuellen Standardanbieter und dann die übrigen registrierten Musikgenerierungsanbieter in Anbieter-ID-Reihenfolge. - - Wenn Sie direkt einen Anbieter/ein Modell auswählen, konfigurieren Sie auch die passende Anbieter-Auth/API key dazu. + - Wenn nicht gesetzt, kann `music_generate` dennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die verbleibenden registrierten Musikgenerierungs-Provider in Provider-ID-Reihenfolge. + - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Key. - `videoGenerationModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird von der gemeinsamen Videogenerierungsfunktion und dem eingebauten Tool `video_generate` verwendet. + - Wird von der gemeinsamen Videogenerierungs-Fähigkeit und dem eingebauten `video_generate`-Tool verwendet. - Typische Werte: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` oder `qwen/wan2.7-r2v`. - - Wenn weggelassen, kann `video_generate` dennoch einen auth-gestützten Standardanbieter ableiten. Es versucht zuerst den aktuellen Standardanbieter und dann die übrigen registrierten Videogenerierungsanbieter in Anbieter-ID-Reihenfolge. - - Wenn Sie direkt einen Anbieter/ein Modell auswählen, konfigurieren Sie auch die passende Anbieter-Auth/API key dazu. - - Der gebündelte Qwen-Anbieter für Videogenerierung unterstützt derzeit bis zu 1 Ausgabevideo, 1 Eingabebild, 4 Eingabevideos, 10 Sekunden Dauer sowie die anbieterbezogenen Optionen `size`, `aspectRatio`, `resolution`, `audio` und `watermark`. + - Wenn nicht gesetzt, kann `video_generate` dennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die verbleibenden registrierten Videogenerierungs-Provider in Provider-ID-Reihenfolge. + - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Key. + - Der gebündelte Qwen-Videogenerierungs-Provider unterstützt derzeit bis zu 1 Ausgabevideo, 1 Eingabebild, 4 Eingabevideos, 10 Sekunden Dauer sowie Provider-spezifische Optionen `size`, `aspectRatio`, `resolution`, `audio` und `watermark`. - `pdfModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird vom Tool `pdf` für das Modell-Routing verwendet. - - Wenn weggelassen, fällt das PDF-Tool auf `imageModel` und dann auf das aufgelöste Sitzungs-/Standardmodell zurück. -- `pdfMaxBytesMb`: Standardgrößenlimit für PDFs im `pdf`-Tool, wenn `maxBytesMb` beim Aufruf nicht übergeben wird. -- `pdfMaxPages`: Standardmaximum an Seiten, die im Fallback-Extraktionsmodus des `pdf`-Tools berücksichtigt werden. -- `verboseDefault`: Standard-Verbose-Stufe für Agenten. Werte: `"off"`, `"on"`, `"full"`. Standard: `"off"`. -- `elevatedDefault`: Standardstufe für Elevated-Output für Agenten. Werte: `"off"`, `"on"`, `"ask"`, `"full"`. Standard: `"on"`. -- `model.primary`: Format `provider/model` (z. B. `openai/gpt-5.4`). Wenn Sie den Anbieter weglassen, versucht OpenClaw zuerst einen Alias, dann einen eindeutigen konfigurierten Anbieterabgleich für genau diese Modell-ID und fällt erst dann auf den konfigurierten Standardanbieter zurück (veraltetes Kompatibilitätsverhalten, daher `provider/model` bevorzugen). Wenn dieser Anbieter das konfigurierte Standardmodell nicht mehr anbietet, fällt OpenClaw auf das erste konfigurierte Anbieter-/Modellpaar zurück, statt einen veralteten, entfernten Standardanbieter anzuzeigen. -- `models`: der konfigurierte Modellkatalog und die Allowlist für `/model`. Jeder Eintrag kann `alias` (Kurzform) und `params` (anbieterspezifisch, z. B. `temperature`, `maxTokens`, `cacheRetention`, `context1m`) enthalten. -- `params`: globale Standard-Anbieterparameter, die auf alle Modelle angewendet werden. Setzen Sie sie unter `agents.defaults.params` (z. B. `{ cacheRetention: "long" }`). -- Merge-Priorität für `params` (Konfiguration): `agents.defaults.params` (globale Basis) wird durch `agents.defaults.models["provider/model"].params` (pro Modell) überschrieben, danach überschreibt `agents.list[].params` (passende Agent-ID) nach Schlüssel. Details siehe [Prompt Caching](/de/reference/prompt-caching). -- Konfigurationsschreiber, die diese Felder verändern (zum Beispiel `/models set`, `/models set-image` und Befehle zum Hinzufügen/Entfernen von Fallbacks), speichern die kanonische Objektform und erhalten nach Möglichkeit vorhandene Fallback-Listen. -- `maxConcurrent`: maximale Zahl paralleler Agent-Läufe über Sitzungen hinweg (jede Sitzung bleibt weiterhin serialisiert). Standard: 4. + - Wird vom `pdf`-Tool für das Modell-Routing verwendet. + - Wenn nicht gesetzt, fällt das PDF-Tool auf `imageModel` und dann auf das aufgelöste Sitzungs-/Standardmodell zurück. +- `pdfMaxBytesMb`: Standardgrößenlimit für PDF für das `pdf`-Tool, wenn `maxBytesMb` nicht zur Aufrufzeit übergeben wird. +- `pdfMaxPages`: standardmäßige maximale Seitenzahl, die vom Fallback-Extraktionsmodus im `pdf`-Tool berücksichtigt wird. +- `verboseDefault`: Standard-Verbose-Level für Agenten. Werte: `"off"`, `"on"`, `"full"`. Standard: `"off"`. +- `elevatedDefault`: Standard-Level für erhöhte Ausgabe für Agenten. Werte: `"off"`, `"on"`, `"ask"`, `"full"`. Standard: `"on"`. +- `model.primary`: Format `provider/model` (z. B. `openai/gpt-5.4`). Wenn Sie den Provider weglassen, versucht OpenClaw zuerst einen Alias, dann einen eindeutigen Treffer bei einem konfigurierten Provider für genau diese Modell-ID und fällt erst danach auf den konfigurierten Standard-Provider zurück (veraltetes Kompatibilitätsverhalten, daher bevorzugt explizit `provider/model`). Wenn dieser Provider das konfigurierte Standardmodell nicht mehr anbietet, fällt OpenClaw auf das erste konfigurierte Provider-/Modellpaar zurück, anstatt einen veralteten entfernten Provider-Standard zu verwenden. +- `models`: der konfigurierte Modellkatalog und die Allowlist für `/model`. Jeder Eintrag kann `alias` (Kurzform) und `params` (providerspezifisch, zum Beispiel `temperature`, `maxTokens`, `cacheRetention`, `context1m`) enthalten. +- `params`: globale Standard-Provider-Parameter, die auf alle Modelle angewendet werden. Setzen Sie dies unter `agents.defaults.params` (z. B. `{ cacheRetention: "long" }`). +- `params`-Merge-Priorität (Konfiguration): `agents.defaults.params` (globale Basis) wird durch `agents.defaults.models["provider/model"].params` (pro Modell) überschrieben, dann überschreibt `agents.list[].params` (passende Agent-ID) nach Schlüssel. Siehe [Prompt Caching](/de/reference/prompt-caching) für Details. +- Konfigurationsschreiber, die diese Felder verändern (zum Beispiel `/models set`, `/models set-image` und Befehle zum Hinzufügen/Entfernen von Fallbacks), speichern die kanonische Objektform und erhalten vorhandene Fallback-Listen nach Möglichkeit. +- `maxConcurrent`: maximale parallele Agent-Läufe über Sitzungen hinweg (jede Sitzung bleibt weiterhin serialisiert). Standard: 4. -**Eingebaute Alias-Kurzformen** (gelten nur, wenn das Modell in `agents.defaults.models` steht): +**Eingebaute Alias-Kurzformen** (gelten nur, wenn das Modell in `agents.defaults.models` enthalten ist): | Alias | Modell | | ------------------- | -------------------------------------- | @@ -1062,12 +1074,12 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Präferenz). Ihre konfigurierten Aliasse haben immer Vorrang vor den Standardwerten. -Z.AI-GLM-4.x-Modelle aktivieren den Thinking-Modus automatisch, es sei denn, Sie setzen `--thinking off` oder definieren `agents.defaults.models["zai/"].params.thinking` selbst. -Z.AI-Modelle aktivieren `tool_stream` standardmäßig für Tool-Call-Streaming. Setzen Sie `agents.defaults.models["zai/"].params.tool_stream` auf `false`, um dies zu deaktivieren. -Anthropic-Claude-4.6-Modelle verwenden standardmäßig `adaptive` thinking, wenn keine explizite Thinking-Stufe gesetzt ist. +Z.AI-GLM-4.x-Modelle aktivieren den Thinking-Modus automatisch, sofern Sie nicht `--thinking off` setzen oder `agents.defaults.models["zai/"].params.thinking` selbst definieren. +Z.AI-Modelle aktivieren `tool_stream` standardmäßig für Tool-Call-Streaming. Setzen Sie `agents.defaults.models["zai/"].params.tool_stream` auf `false`, um es zu deaktivieren. +Anthropic-Claude-4.6-Modelle verwenden standardmäßig `adaptive` Thinking, wenn kein explizites Thinking-Level gesetzt ist. - Sitzungen werden unterstützt, wenn `sessionArg` gesetzt ist. -- Bild-Pass-through wird unterstützt, wenn `imageArg` Dateipfade akzeptiert. +- Bild-Passthrough wird unterstützt, wenn `imageArg` Dateipfade akzeptiert. ### `agents.defaults.heartbeat` @@ -1081,13 +1093,13 @@ Periodische Heartbeat-Läufe. every: "30m", // 0m deaktiviert model: "openai/gpt-5.4-mini", includeReasoning: false, - lightContext: false, // Standard: false; true behält nur HEARTBEAT.md aus den Workspace-Bootstrap-Dateien + lightContext: false, // Standard: false; true behält nur HEARTBEAT.md aus Workspace-Bootstrap-Dateien isolatedSession: false, // Standard: false; true führt jeden Heartbeat in einer frischen Sitzung aus (kein Konversationsverlauf) session: "main", to: "+15555550123", directPolicy: "allow", // allow (Standard) | block target: "none", // Standard: none | Optionen: last | whatsapp | telegram | discord | ... - prompt: "Lesen Sie HEARTBEAT.md, falls vorhanden...", + prompt: "Lies HEARTBEAT.md, falls vorhanden...", ackMaxChars: 300, suppressToolErrorWarnings: false, }, @@ -1096,13 +1108,13 @@ Periodische Heartbeat-Läufe. } ``` -- `every`: Dauer-String (ms/s/m/h). Standard: `30m` (API-key-Auth) oder `1h` (OAuth-Auth). Setzen Sie `0m`, um zu deaktivieren. -- `suppressToolErrorWarnings`: unterdrückt bei `true` Tool-Fehlerwarn-Payloads während Heartbeat-Läufen. -- `directPolicy`: Zustellrichtlinie für Direkt-/DM-Ziele. `allow` (Standard) erlaubt Direktziel-Zustellung. `block` unterdrückt Direktziel-Zustellung und gibt `reason=dm-blocked` aus. -- `lightContext`: wenn `true`, verwenden Heartbeat-Läufe leichtgewichtigen Bootstrap-Kontext und behalten aus den Workspace-Bootstrap-Dateien nur `HEARTBEAT.md`. -- `isolatedSession`: wenn `true`, wird jeder Heartbeat-Lauf in einer frischen Sitzung ohne vorherigen Konversationsverlauf ausgeführt. Gleiches Isolationsmuster wie bei Cron `sessionTarget: "isolated"`. Reduziert die Tokenkosten pro Heartbeat von ~100K auf ~2–5K Token. +- `every`: Dauer-String (ms/s/m/h). Standard: `30m` (API-Key-Authentifizierung) oder `1h` (OAuth-Authentifizierung). Setzen Sie `0m`, um es zu deaktivieren. +- `suppressToolErrorWarnings`: wenn true, werden Warn-Payloads bei Tool-Fehlern während Heartbeat-Läufen unterdrückt. +- `directPolicy`: Richtlinie für Direkt-/DM-Zustellung. `allow` (Standard) erlaubt die direkte Zielzustellung. `block` unterdrückt direkte Zielzustellung und gibt `reason=dm-blocked` aus. +- `lightContext`: wenn true, verwenden Heartbeat-Läufe einen leichten Bootstrap-Kontext und behalten nur `HEARTBEAT.md` aus den Workspace-Bootstrap-Dateien. +- `isolatedSession`: wenn true, wird jeder Heartbeat-Lauf in einer frischen Sitzung ohne vorherigen Konversationsverlauf ausgeführt. Dasselbe Isolationsmuster wie bei Cron `sessionTarget: "isolated"`. Reduziert die Tokenkosten pro Heartbeat von ~100K auf ~2-5K Tokens. - Pro Agent: setzen Sie `agents.list[].heartbeat`. Wenn irgendein Agent `heartbeat` definiert, führen **nur diese Agenten** Heartbeats aus. -- Heartbeats führen vollständige Agent-Turns aus — kürzere Intervalle verbrauchen mehr Token. +- Heartbeats führen vollständige Agent-Züge aus — kürzere Intervalle verbrauchen mehr Tokens. ### `agents.defaults.compaction` @@ -1115,15 +1127,15 @@ Periodische Heartbeat-Läufe. timeoutSeconds: 900, reserveTokensFloor: 24000, identifierPolicy: "strict", // strict | off | custom - identifierInstructions: "Erhalten Sie Deployment-IDs, Ticket-IDs und Host:Port-Paare exakt.", // verwendet bei identifierPolicy=custom - postCompactionSections: ["Session Startup", "Red Lines"], // [] deaktiviert Re-Injektion - model: "openrouter/anthropic/claude-sonnet-4-6", // optionaler Override nur für Kompaktierungsmodell - notifyUser: true, // kurze Nachricht senden, wenn Kompaktierung startet (Standard: false) + identifierInstructions: "Deployment-IDs, Ticket-IDs und Host:Port-Paare exakt beibehalten.", // verwendet, wenn identifierPolicy=custom + postCompactionSections: ["Session Startup", "Red Lines"], // [] deaktiviert erneute Einfügung + model: "openrouter/anthropic/claude-sonnet-4-6", // optionale nur für Kompaktierung geltende Modellüberschreibung + notifyUser: true, // kurze Benachrichtigung senden, wenn Kompaktierung beginnt (Standard: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, systemPrompt: "Sitzung nähert sich der Kompaktierung. Dauerhafte Erinnerungen jetzt speichern.", - prompt: "Schreiben Sie alle bleibenden Notizen nach memory/YYYY-MM-DD.md; antworten Sie mit dem exakten stillen Token NO_REPLY, wenn nichts zu speichern ist.", + prompt: "Schreibe bleibende Notizen in memory/YYYY-MM-DD.md; antworte mit dem exakten stillen Token NO_REPLY, wenn nichts zu speichern ist.", }, }, }, @@ -1131,18 +1143,18 @@ Periodische Heartbeat-Läufe. } ``` -- `mode`: `default` oder `safeguard` (chunked summarization für lange Verläufe). Siehe [Kompaktierung](/de/concepts/compaction). -- `timeoutSeconds`: maximale Anzahl Sekunden, die OpenClaw für eine einzelne Kompaktierungsoperation zulässt, bevor sie abgebrochen wird. Standard: `900`. -- `identifierPolicy`: `strict` (Standard), `off` oder `custom`. `strict` stellt der Kompaktierungszusammenfassung eingebaute Leitlinien zum Erhalt undurchsichtiger Kennungen voran. -- `identifierInstructions`: optionaler benutzerdefinierter Text zur Kennungserhaltung, der verwendet wird, wenn `identifierPolicy=custom`. -- `postCompactionSections`: optionale H2/H3-Abschnittsnamen aus AGENTS.md, die nach der Kompaktierung erneut injiziert werden. Standard ist `["Session Startup", "Red Lines"]`; setzen Sie `[]`, um die Re-Injektion zu deaktivieren. Wenn nicht gesetzt oder explizit auf dieses Standardpaar gesetzt, werden ältere Überschriften `Every Session`/`Safety` auch als Legacy-Fallback akzeptiert. -- `model`: optionaler Override `provider/model-id` nur für die Kompaktierungszusammenfassung. Verwenden Sie dies, wenn die Hauptsitzung ein Modell beibehalten soll, Kompaktierungszusammenfassungen aber mit einem anderen Modell laufen sollen; wenn nicht gesetzt, verwendet die Kompaktierung das primäre Modell der Sitzung. -- `notifyUser`: wenn `true`, sendet beim Start der Kompaktierung eine kurze Mitteilung an den Benutzer (zum Beispiel „Kontext wird kompaktifiziert...“). Standardmäßig deaktiviert, damit die Kompaktierung still bleibt. -- `memoryFlush`: stiller agentischer Turn vor Auto-Kompaktierung, um dauerhafte Erinnerungen zu speichern. Wird übersprungen, wenn der Workspace schreibgeschützt ist. +- `mode`: `default` oder `safeguard` (chunked summarization für lange Verläufe). Siehe [Compaction](/de/concepts/compaction). +- `timeoutSeconds`: maximale Anzahl Sekunden für einen einzelnen Kompaktierungsvorgang, bevor OpenClaw ihn abbricht. Standard: `900`. +- `identifierPolicy`: `strict` (Standard), `off` oder `custom`. `strict` stellt der Kompaktierungszusammenfassung eingebaute Leitlinien zum Beibehalten opaker Kennungen voran. +- `identifierInstructions`: optionaler benutzerdefinierter Text zum Beibehalten von Kennungen, der verwendet wird, wenn `identifierPolicy=custom`. +- `postCompactionSections`: optionale AGENTS.md-H2/H3-Abschnittsnamen, die nach der Kompaktierung erneut eingefügt werden. Standard ist `["Session Startup", "Red Lines"]`; setzen Sie `[]`, um die erneute Einfügung zu deaktivieren. Wenn nicht gesetzt oder explizit auf dieses Standardpaar gesetzt, werden ältere Überschriften `Every Session`/`Safety` ebenfalls als Legacy-Fallback akzeptiert. +- `model`: optionale `provider/model-id`-Überschreibung nur für die Kompaktierungszusammenfassung. Verwenden Sie dies, wenn die Hauptsitzung ein Modell behalten soll, Kompaktierungszusammenfassungen aber mit einem anderen Modell laufen sollen; wenn nicht gesetzt, verwendet die Kompaktierung das primäre Modell der Sitzung. +- `notifyUser`: wenn `true`, sendet beim Start der Kompaktierung eine kurze Benachrichtigung an den Benutzer (zum Beispiel „Kontext wird kompaktiert...“). Standardmäßig deaktiviert, um die Kompaktierung still zu halten. +- `memoryFlush`: stiller agentischer Zug vor der Auto-Kompaktierung, um dauerhafte Erinnerungen zu speichern. Wird übersprungen, wenn der Workspace schreibgeschützt ist. ### `agents.defaults.contextPruning` -Prunt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor an das LLM gesendet wird. Ändert den Sitzungsverlauf auf der Festplatte **nicht**. +Schneidet **alte Tool-Ergebnisse** aus dem In-Memory-Kontext heraus, bevor sie an das LLM gesendet werden. Ändert **nicht** den Sitzungsverlauf auf der Festplatte. ```json5 { @@ -1156,7 +1168,7 @@ Prunt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor an das LLM gesen hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, - hardClear: { enabled: true, placeholder: "[Inhalt altes Tool-Ergebnis gelöscht]" }, + hardClear: { enabled: true, placeholder: "[Inhalt alter Tool-Ergebnisse gelöscht]" }, tools: { deny: ["browser", "canvas"] }, }, }, @@ -1164,25 +1176,25 @@ Prunt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor an das LLM gesen } ``` - + - `mode: "cache-ttl"` aktiviert Pruning-Durchläufe. -- `ttl` steuert, wie oft Pruning erneut laufen darf (nach dem letzten Cache-Touch). -- Pruning kürzt zunächst übergroße Tool-Ergebnisse weich und löscht bei Bedarf danach ältere Tool-Ergebnisse hart. +- `ttl` steuert, wie oft Pruning erneut laufen kann (nach dem letzten Cache-Zugriff). +- Pruning kürzt zuerst übergroße Tool-Ergebnisse weich und löscht dann ältere Tool-Ergebnisse hart, falls nötig. -**Soft-trim** behält Anfang + Ende und fügt in der Mitte `...` ein. +**Soft-Trim** behält Anfang + Ende bei und fügt in der Mitte `...` ein. -**Hard-clear** ersetzt das gesamte Tool-Ergebnis durch den Platzhalter. +**Hard-Clear** ersetzt das gesamte Tool-Ergebnis durch den Platzhalter. Hinweise: - Bildblöcke werden niemals gekürzt/gelöscht. -- Verhältnisse basieren auf Zeichen (ungefähr), nicht auf exakten Token-Zahlen. +- Verhältnisse basieren auf Zeichen (ungefähr), nicht auf exakten Token-Anzahlen. - Wenn weniger als `keepLastAssistants` Assistentennachrichten vorhanden sind, wird Pruning übersprungen. -Details zum Verhalten finden Sie unter [Session Pruning](/de/concepts/session-pruning). +Siehe [Session Pruning](/de/concepts/session-pruning) für Verhaltensdetails. ### Block-Streaming @@ -1194,17 +1206,17 @@ Details zum Verhalten finden Sie unter [Session Pruning](/de/concepts/session-pr blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200 }, blockStreamingCoalesce: { idleMs: 1000 }, - humanDelay: { mode: "natural" }, // off | natural | custom (mit minMs/maxMs) + humanDelay: { mode: "natural" }, // off | natural | custom (verwenden Sie minMs/maxMs) }, }, } ``` -- Nicht-Telegram-Kanäle erfordern explizit `*.blockStreaming: true`, um Blockantworten zu aktivieren. -- Kanal-Overrides: `channels..blockStreamingCoalesce` (und Varianten pro Konto). Signal/Slack/Discord/Google Chat verwenden standardmäßig `minChars: 1500`. -- `humanDelay`: zufällige Pause zwischen Blockantworten. `natural` = 800–2500 ms. Override pro Agent: `agents.list[].humanDelay`. +- Nicht-Telegram-Kanäle erfordern explizit `*.blockStreaming: true`, um Block-Antworten zu aktivieren. +- Kanal-Überschreibungen: `channels..blockStreamingCoalesce` (und Pro-Konto-Varianten). Signal/Slack/Discord/Google Chat verwenden standardmäßig `minChars: 1500`. +- `humanDelay`: zufällige Pause zwischen Block-Antworten. `natural` = 800–2500 ms. Pro-Agent-Überschreibung: `agents.list[].humanDelay`. -Details zu Verhalten + Chunking finden Sie unter [Streaming](/de/concepts/streaming). +Siehe [Streaming](/de/concepts/streaming) für Verhalten + Chunking-Details. ### Tippindikatoren @@ -1219,8 +1231,8 @@ Details zu Verhalten + Chunking finden Sie unter [Streaming](/de/concepts/stream } ``` -- Standards: `instant` für Direktchats/Erwähnungen, `message` für Gruppenchats ohne Erwähnung. -- Overrides pro Sitzung: `session.typingMode`, `session.typingIntervalSeconds`. +- Standards: `instant` für Direktchats/Erwähnungen, `message` für nicht erwähnte Gruppenchats. +- Pro-Sitzung-Überschreibungen: `session.typingMode`, `session.typingIntervalSeconds`. Siehe [Typing Indicators](/de/concepts/typing-indicators). @@ -1228,7 +1240,7 @@ Siehe [Typing Indicators](/de/concepts/typing-indicators). ### `agents.defaults.sandbox` -Optionale Sandboxing-Funktion für den eingebetteten Agenten. Den vollständigen Leitfaden finden Sie unter [Sandboxing](/de/gateway/sandboxing). +Optionale Sandboxing-Unterstützung für den eingebetteten Agenten. Den vollständigen Leitfaden finden Sie unter [Sandboxing](/de/gateway/sandboxing). ```json5 { @@ -1327,42 +1339,41 @@ Optionale Sandboxing-Funktion für den eingebetteten Agenten. Den vollständigen **Backend:** -- `docker`: lokales Docker-Runtime (Standard) -- `ssh`: generisches SSH-gestütztes Remote-Runtime -- `openshell`: OpenShell-Runtime +- `docker`: lokale Docker-Laufzeit (Standard) +- `ssh`: generische SSH-gestützte Remote-Laufzeit +- `openshell`: OpenShell-Laufzeit -Wenn `backend: "openshell"` ausgewählt ist, werden laufzeitspezifische Einstellungen nach -`plugins.entries.openshell.config` verschoben. +Wenn `backend: "openshell"` ausgewählt ist, verschieben sich laufzeitspezifische Einstellungen nach `plugins.entries.openshell.config`. **SSH-Backend-Konfiguration:** -- `target`: SSH-Ziel in der Form `user@host[:port]` +- `target`: SSH-Ziel im Format `user@host[:port]` - `command`: SSH-Client-Befehl (Standard: `ssh`) -- `workspaceRoot`: absolutes Remote-Root, das für Workspaces pro Scope verwendet wird +- `workspaceRoot`: absoluter Remote-Root, der für Workspaces pro Scope verwendet wird - `identityFile` / `certificateFile` / `knownHostsFile`: vorhandene lokale Dateien, die an OpenSSH übergeben werden - `identityData` / `certificateData` / `knownHostsData`: Inline-Inhalte oder SecretRefs, die OpenClaw zur Laufzeit in temporäre Dateien materialisiert -- `strictHostKeyChecking` / `updateHostKeys`: OpenSSH-Regler für die Host-Key-Richtlinie +- `strictHostKeyChecking` / `updateHostKeys`: OpenSSH-Host-Key-Richtlinien-Schalter -**SSH-Auth-Priorität:** +**SSH-Authentifizierungs-Priorität:** - `identityData` hat Vorrang vor `identityFile` - `certificateData` hat Vorrang vor `certificateFile` - `knownHostsData` hat Vorrang vor `knownHostsFile` -- SecretRef-gestützte `*Data`-Werte werden aus dem aktiven Geheimnis-Laufzeit-Snapshot aufgelöst, bevor die Sandbox-Sitzung startet +- SecretRef-gestützte `*Data`-Werte werden aus dem aktiven Secrets-Laufzeit-Snapshot aufgelöst, bevor die Sandbox-Sitzung startet -**Verhalten des SSH-Backends:** +**SSH-Backend-Verhalten:** -- initialisiert den Remote-Workspace einmal nach Erstellung oder Neuerstellung -- hält danach den Remote-SSH-Workspace als kanonisch -- routet `exec`, Dateitools und Medienpfade über SSH -- synchronisiert Remote-Änderungen nicht automatisch zurück auf den Host -- unterstützt keine Browser-Container in der Sandbox +- initialisiert den Remote-Workspace einmal nach Erstellen oder Neuerstellen +- behält dann den Remote-SSH-Workspace als kanonisch bei +- leitet `exec`, Dateitools und Medienpfade über SSH +- synchronisiert Remote-Änderungen nicht automatisch zurück zum Host +- unterstützt keine Sandbox-Browser-Container **Workspace-Zugriff:** - `none`: Sandbox-Workspace pro Scope unter `~/.openclaw/sandboxes` - `ro`: Sandbox-Workspace unter `/workspace`, Agent-Workspace schreibgeschützt unter `/agent` eingehängt -- `rw`: Agent-Workspace lesend/schreibend unter `/workspace` eingehängt +- `rw`: Agent-Workspace unter `/workspace` schreib-/lesbar eingehängt **Scope:** @@ -1398,30 +1409,30 @@ Wenn `backend: "openshell"` ausgewählt ist, werden laufzeitspezifische Einstell **OpenShell-Modus:** -- `mirror`: vor `exec` Remote von lokal initialisieren, nach `exec` zurücksynchronisieren; lokaler Workspace bleibt kanonisch -- `remote`: Remote einmal initialisieren, wenn die Sandbox erstellt wird, dann den Remote-Workspace als kanonisch beibehalten +- `mirror`: Remote vor `exec` aus lokalem Stand initialisieren, nach `exec` zurücksynchronisieren; lokaler Workspace bleibt kanonisch +- `remote`: Remote einmal beim Erstellen der Sandbox initialisieren, dann den Remote-Workspace als kanonisch beibehalten Im Modus `remote` werden hostlokale Änderungen, die außerhalb von OpenClaw vorgenommen werden, nach dem Initialisierungsschritt nicht automatisch in die Sandbox synchronisiert. -Der Transport erfolgt per SSH in die OpenShell-Sandbox, aber das Plugin besitzt den Sandbox-Lifecycle und die optionale Spiegel-Synchronisation. +Der Transport erfolgt per SSH in die OpenShell-Sandbox, aber das Plugin besitzt den Sandbox-Lebenszyklus und die optionale Mirror-Synchronisierung. -**`setupCommand`** läuft einmal nach Erstellung des Containers (via `sh -lc`). Benötigt Netzwerk-Egress, beschreibbares Root und Root-Benutzer. +**`setupCommand`** wird einmal nach der Container-Erstellung ausgeführt (über `sh -lc`). Benötigt Netzwerk-Egress, ein beschreibbares Root-Dateisystem und Root-Benutzer. -**Container verwenden standardmäßig `network: "none"`** — setzen Sie auf `"bridge"` (oder ein benutzerdefiniertes Bridge-Netzwerk), wenn der Agent ausgehenden Zugriff benötigt. +**Container verwenden standardmäßig `network: "none"`** — setzen Sie es auf `"bridge"` (oder ein benutzerdefiniertes Bridge-Netzwerk), wenn der Agent ausgehenden Zugriff benötigt. `"host"` ist blockiert. `"container:"` ist standardmäßig blockiert, es sei denn, Sie setzen explizit -`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (Break-Glass). +`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (Notfallmaßnahme). -**Eingehende Anhänge** werden im aktiven Workspace nach `media/inbound/*` bereitgestellt. +**Eingehende Anhänge** werden in `media/inbound/*` im aktiven Workspace bereitgestellt. -**`docker.binds`** mountet zusätzliche Host-Verzeichnisse; globale und agentenspezifische Binds werden zusammengeführt. +**`docker.binds`** bindet zusätzliche Host-Verzeichnisse ein; globale und pro Agent gesetzte Binds werden zusammengeführt. -**Sandbox-Browser** (`sandbox.browser.enabled`): Chromium + CDP in einem Container. noVNC-URL wird in den System-Prompt injiziert. Erfordert kein `browser.enabled` in `openclaw.json`. -Der Beobachterzugriff über noVNC verwendet standardmäßig VNC-Authentifizierung, und OpenClaw gibt eine kurzlebige Token-URL aus (anstatt das Passwort in der gemeinsamen URL offenzulegen). +**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP in einem Container. noVNC-URL wird in den System-Prompt eingefügt. Erfordert nicht `browser.enabled` in `openclaw.json`. +Der noVNC-Beobachterzugriff verwendet standardmäßig VNC-Authentifizierung, und OpenClaw gibt eine kurzlebige Token-URL aus (anstatt das Passwort in der geteilten URL offenzulegen). -- `allowHostControl: false` (Standard) verhindert, dass auf den Host-Browser aus Sandbox-Sitzungen gezielt zugegriffen wird. -- `network` verwendet standardmäßig `openclaw-sandbox-browser` (dediziertes Bridge-Netzwerk). Setzen Sie nur dann `bridge`, wenn Sie ausdrücklich globale Bridge-Konnektivität wünschen. -- `cdpSourceRange` kann optional CDP-Eingang am Container-Rand auf einen CIDR-Bereich beschränken (zum Beispiel `172.21.0.1/32`). -- `sandbox.browser.binds` mountet zusätzliche Host-Verzeichnisse nur in den Sandbox-Browser-Container. Wenn gesetzt (einschließlich `[]`), ersetzt es `docker.binds` für den Browser-Container. -- Start-Standards sind in `scripts/sandbox-browser-entrypoint.sh` definiert und für Container-Hosts optimiert: +- `allowHostControl: false` (Standard) blockiert, dass sandboxed Sitzungen den Host-Browser ansteuern. +- `network` ist standardmäßig `openclaw-sandbox-browser` (dediziertes Bridge-Netzwerk). Setzen Sie es nur auf `bridge`, wenn Sie explizit globale Bridge-Konnektivität möchten. +- `cdpSourceRange` kann CDP-Ingress optional am Container-Rand auf einen CIDR-Bereich beschränken (zum Beispiel `172.21.0.1/32`). +- `sandbox.browser.binds` bindet zusätzliche Host-Verzeichnisse nur in den Sandbox-Browser-Container ein. Wenn gesetzt (einschließlich `[]`), ersetzt es `docker.binds` für den Browser-Container. +- Start-Standards sind in `scripts/sandbox-browser-entrypoint.sh` definiert und für Container-Hosts abgestimmt: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -1439,16 +1450,11 @@ Der Beobachterzugriff über noVNC verwendet standardmäßig VNC-Authentifizierun - `--no-zygote` - `--metrics-recording-only` - `--disable-extensions` (standardmäßig aktiviert) - - `--disable-3d-apis`, `--disable-software-rasterizer` und `--disable-gpu` sind - standardmäßig aktiviert und können mit - `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` deaktiviert werden, wenn WebGL-/3D-Nutzung dies erfordert. + - `--disable-3d-apis`, `--disable-software-rasterizer` und `--disable-gpu` sind standardmäßig aktiviert und können mit `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` deaktiviert werden, wenn WebGL-/3D-Nutzung dies erfordert. - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` aktiviert Erweiterungen wieder, wenn Ihr Workflow davon abhängt. - - `--renderer-process-limit=2` kann mit - `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=` geändert werden; setzen Sie `0`, um das - Standard-Prozesslimit von Chromium zu verwenden. + - `--renderer-process-limit=2` kann mit `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=` geändert werden; setzen Sie `0`, um das Standard-Prozesslimit von Chromium zu verwenden. - plus `--no-sandbox` und `--disable-setuid-sandbox`, wenn `noSandbox` aktiviert ist. - - Die Standards sind die Basis des Container-Images; verwenden Sie ein benutzerdefiniertes Browser-Image mit benutzerdefiniertem - Entry-Point, um die Container-Standards zu ändern. + - Die Standards sind die Baseline des Container-Images; verwenden Sie ein benutzerdefiniertes Browser-Image mit eigenem Entrypoint, um Container-Standards zu ändern. @@ -1461,7 +1467,7 @@ scripts/sandbox-setup.sh # Haupt-Sandbox-Image scripts/sandbox-browser-setup.sh # optionales Browser-Image ``` -### `agents.list` (Overrides pro Agent) +### `agents.list` (Überschreibungen pro Agent) ```json5 { @@ -1474,9 +1480,9 @@ scripts/sandbox-browser-setup.sh # optionales Browser-Image workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // oder { primary, fallbacks } - thinkingDefault: "high", // Override pro Agent für Thinking-Stufe - reasoningDefault: "on", // Override pro Agent für Sichtbarkeit von Reasoning - fastModeDefault: false, // Override pro Agent für Schnellmodus + thinkingDefault: "high", // Thinking-Level-Überschreibung pro Agent + reasoningDefault: "on", // Überschreibung der Sichtbarkeit von Reasoning pro Agent + fastModeDefault: false, // Fast-Mode-Überschreibung pro Agent params: { cacheRetention: "none" }, // überschreibt passende defaults.models-Parameter nach Schlüssel skills: ["docs-search"], // ersetzt agents.defaults.skills, wenn gesetzt identity: { @@ -1510,25 +1516,25 @@ scripts/sandbox-browser-setup.sh # optionales Browser-Image ``` - `id`: stabile Agent-ID (erforderlich). -- `default`: wenn mehrere gesetzt sind, gewinnt der erste (Warnung wird protokolliert). Wenn keines gesetzt ist, ist der erste Listeneintrag der Standard. -- `model`: String-Form überschreibt nur `primary`; Objekt-Form `{ primary, fallbacks }` überschreibt beides (`[]` deaktiviert globale Fallbacks). Cron-Jobs, die nur `primary` überschreiben, erben weiterhin Standard-Fallbacks, sofern Sie nicht `fallbacks: []` setzen. -- `params`: Stream-Parameter pro Agent, die über den ausgewählten Modelleintrag in `agents.defaults.models` gemergt werden. Verwenden Sie dies für agentenspezifische Overrides wie `cacheRetention`, `temperature` oder `maxTokens`, ohne den gesamten Modellkatalog zu duplizieren. -- `skills`: optionale Skill-Allowlist pro Agent. Wenn weggelassen, erbt der Agent `agents.defaults.skills`, sofern gesetzt; eine explizite Liste ersetzt Standards statt zu mergen, und `[]` bedeutet keine Skills. -- `thinkingDefault`: optionale Standard-Thinking-Stufe pro Agent (`off | minimal | low | medium | high | xhigh | adaptive`). Überschreibt `agents.defaults.thinkingDefault` für diesen Agenten, wenn kein Override pro Nachricht oder Sitzung gesetzt ist. -- `reasoningDefault`: optionale Standardsichtbarkeit von Reasoning pro Agent (`on | off | stream`). Gilt, wenn kein Reasoning-Override pro Nachricht oder Sitzung gesetzt ist. -- `fastModeDefault`: optionaler Standard pro Agent für den Schnellmodus (`true | false`). Gilt, wenn kein Schnellmodus-Override pro Nachricht oder Sitzung gesetzt ist. -- `runtime`: optionaler Runtime-Deskriptor pro Agent. Verwenden Sie `type: "acp"` mit Standardwerten in `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), wenn der Agent standardmäßig ACP-Harness-Sitzungen verwenden soll. +- `default`: wenn mehrere gesetzt sind, gewinnt die erste (Warnung wird protokolliert). Wenn keine gesetzt ist, ist der erste Listeneintrag Standard. +- `model`: String-Form überschreibt nur `primary`; Objekt-Form `{ primary, fallbacks }` überschreibt beides (`[]` deaktiviert globale Fallbacks). Cron-Jobs, die nur `primary` überschreiben, erben weiterhin Standard-Fallbacks, es sei denn, Sie setzen `fallbacks: []`. +- `params`: Stream-Parameter pro Agent, die über den ausgewählten Modelleintrag in `agents.defaults.models` zusammengeführt werden. Verwenden Sie dies für agentenspezifische Überschreibungen wie `cacheRetention`, `temperature` oder `maxTokens`, ohne den gesamten Modellkatalog zu duplizieren. +- `skills`: optionale Skill-Allowlist pro Agent. Wenn weggelassen, erbt der Agent `agents.defaults.skills`, sofern gesetzt; eine explizite Liste ersetzt die Standards statt sie zusammenzuführen, und `[]` bedeutet keine Skills. +- `thinkingDefault`: optionales Standard-Thinking-Level pro Agent (`off | minimal | low | medium | high | xhigh | adaptive`). Überschreibt `agents.defaults.thinkingDefault` für diesen Agenten, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. +- `reasoningDefault`: optionale Standardsichtbarkeit von Reasoning pro Agent (`on | off | stream`). Gilt, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. +- `fastModeDefault`: optionale Standardeinstellung pro Agent für Fast Mode (`true | false`). Gilt, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. +- `runtime`: optionaler Laufzeit-Deskriptor pro Agent. Verwenden Sie `type: "acp"` mit `runtime.acp`-Standards (`agent`, `backend`, `mode`, `cwd`), wenn der Agent standardmäßig ACP-Harness-Sitzungen verwenden soll. - `identity.avatar`: workspace-relativer Pfad, `http(s)`-URL oder `data:`-URI. -- `identity` leitet Standards ab: `ackReaction` aus `emoji`, `mentionPatterns` aus `name`/`emoji`. +- `identity` leitet Standardwerte ab: `ackReaction` aus `emoji`, `mentionPatterns` aus `name`/`emoji`. - `subagents.allowAgents`: Allowlist von Agent-IDs für `sessions_spawn` (`["*"]` = beliebig; Standard: nur derselbe Agent). -- Sandbox-Vererbungs-Grenze: Wenn die anfordernde Sitzung in einer Sandbox läuft, lehnt `sessions_spawn` Ziele ab, die unsandboxed laufen würden. -- `subagents.requireAgentId`: wenn true, blockiert `sessions_spawn` Aufrufe ohne `agentId` (erzwingt explizite Profilauswahl; Standard: false). +- Sandbox-Vererbungs-Schutz: Wenn die anfordernde Sitzung sandboxed ist, lehnt `sessions_spawn` Ziele ab, die unsandboxed laufen würden. +- `subagents.requireAgentId`: wenn true, blockiert `sessions_spawn`-Aufrufe ohne `agentId` (erzwingt explizite Profilauswahl; Standard: false). --- ## Multi-Agent-Routing -Führen Sie mehrere isolierte Agenten innerhalb eines Gateways aus. Siehe [Multi-Agent](/de/concepts/multi-agent). +Mehrere isolierte Agenten in einem Gateway ausführen. Siehe [Multi-Agent](/de/concepts/multi-agent). ```json5 { @@ -1545,27 +1551,27 @@ Führen Sie mehrere isolierte Agenten innerhalb eines Gateways aus. Siehe [Multi } ``` -### Übereinstimmungsfelder für Bindings +### Binding-Match-Felder -- `type` (optional): `route` für normales Routing (fehlender Typ entspricht route), `acp` für persistente ACP-Unterhaltungs-Bindings. +- `type` (optional): `route` für normales Routing (fehlender Typ entspricht route), `acp` für persistente ACP-Konversationsbindungen. - `match.channel` (erforderlich) - `match.accountId` (optional; `*` = beliebiges Konto; weggelassen = Standardkonto) - `match.peer` (optional; `{ kind: direct|group|channel, id }`) - `match.guildId` / `match.teamId` (optional; kanalspezifisch) - `acp` (optional; nur für `type: "acp"`): `{ mode, label, cwd, backend }` -**Deterministische Reihenfolge der Übereinstimmung:** +**Deterministische Match-Reihenfolge:** 1. `match.peer` 2. `match.guildId` 3. `match.teamId` -4. `match.accountId` (exakt, ohne Peer/Guild/Team) +4. `match.accountId` (exakt, ohne peer/guild/team) 5. `match.accountId: "*"` (kanalweit) -6. Standard-Agent +6. Standardagent Innerhalb jeder Stufe gewinnt der erste passende `bindings`-Eintrag. -Für Einträge mit `type: "acp"` löst OpenClaw über die exakte Unterhaltungsidentität auf (`match.channel` + Konto + `match.peer.id`) und verwendet die obige Stufenreihenfolge für Route-Bindings nicht. +Für `type: "acp"`-Einträge löst OpenClaw nach exakter Konversationsidentität auf (`match.channel` + Konto + `match.peer.id`) und verwendet nicht die oben genannte Stufenreihenfolge für Route-Bindings. ### Zugriffsprofile pro Agent @@ -1662,7 +1668,7 @@ Für Einträge mit `type: "acp"` löst OpenClaw über die exakte Unterhaltungsid -Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/multi-agent-sandbox-tools). +Siehe [Multi-Agent Sandbox & Tools](/de/tools/multi-agent-sandbox-tools) für Details zur Priorität. --- @@ -1696,14 +1702,14 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ rotateBytes: "10mb", resetArchiveRetention: "30d", // Dauer oder false maxDiskBytes: "500mb", // optionales hartes Budget - highWaterBytes: "400mb", // optionales Bereinigungsziel + highWaterBytes: "400mb", // optionales Ziel für Cleanup }, threadBindings: { enabled: true, - idleHours: 24, // Standard für automatisches Unfocus bei Inaktivität in Stunden (`0` deaktiviert) - maxAgeHours: 0, // Standard für harte Maximaldauer in Stunden (`0` deaktiviert) + idleHours: 24, // Standard für automatische Entfokussierung bei Inaktivität in Stunden (`0` deaktiviert) + maxAgeHours: 0, // Standard für hartes Maximalalter in Stunden (`0` deaktiviert) }, - mainKey: "main", // Legacy (Laufzeit verwendet immer "main") + mainKey: "main", // veraltet (Laufzeit verwendet immer "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], @@ -1715,35 +1721,35 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ -- **`scope`**: grundlegende Strategie zur Sitzungsgruppierung für Gruppenchats. - - `per-sender` (Standard): Jeder Absender erhält eine isolierte Sitzung innerhalb eines Kanalkontexts. - - `global`: Alle Teilnehmer in einem Kanalkontext teilen sich eine einzige Sitzung (nur verwenden, wenn gemeinsam genutzter Kontext beabsichtigt ist). +- **`scope`**: grundlegende Sitzungsgruppierungsstrategie für Gruppenchats. + - `per-sender` (Standard): Jeder Absender erhält innerhalb eines Kanalkontexts eine isolierte Sitzung. + - `global`: Alle Teilnehmenden in einem Kanalkontext teilen eine einzelne Sitzung (nur verwenden, wenn geteilter Kontext beabsichtigt ist). - **`dmScope`**: wie DMs gruppiert werden. - - `main`: Alle DMs teilen sich die Hauptsitzung. - - `per-peer`: nach Absender-ID über Kanäle hinweg isolieren. - - `per-channel-peer`: pro Kanal + Absender isolieren (empfohlen für Multi-User-Inboxes). - - `per-account-channel-peer`: pro Konto + Kanal + Absender isolieren (empfohlen für Multi-Account). -- **`identityLinks`**: ordnet kanonische IDs anbieterpräfixierten Peers zu, um sitzungsübergreifendes Teilen über Kanäle hinweg zu ermöglichen. -- **`reset`**: primäre Reset-Richtlinie. `daily` setzt um `atHour` lokaler Zeit zurück; `idle` setzt nach `idleMinutes` zurück. Wenn beides konfiguriert ist, gewinnt das zuerst ablaufende. -- **`resetByType`**: Overrides pro Typ (`direct`, `group`, `thread`). Legacy-`dm` wird als Alias für `direct` akzeptiert. -- **`parentForkMaxTokens`**: maximal zulässige `totalTokens` der Parent-Sitzung beim Erstellen einer geforkten Thread-Sitzung (Standard `100000`). - - Wenn `totalTokens` des Parents über diesem Wert liegt, startet OpenClaw eine frische Thread-Sitzung, statt den Verlauf des Parent-Transkripts zu erben. - - Setzen Sie `0`, um diese Grenze zu deaktivieren und Parent-Forking immer zuzulassen. -- **`mainKey`**: Legacy-Feld. Die Laufzeit verwendet jetzt immer `"main"` für den Haupt-Bucket für Direktchats. -- **`agentToAgent.maxPingPongTurns`**: maximale Anzahl von Antwort-Zurück-Turns zwischen Agenten bei Agent-zu-Agent-Austausch (Ganzzahl, Bereich: `0`–`5`). `0` deaktiviert Ping-Pong-Ketten. -- **`sendPolicy`**: Abgleich nach `channel`, `chatType` (`direct|group|channel`, mit Legacy-Alias `dm`), `keyPrefix` oder `rawKeyPrefix`. Erstes `deny` gewinnt. -- **`maintenance`**: Aufräum- + Retentionskontrollen für den Sitzungsspeicher. - - `mode`: `warn` gibt nur Warnungen aus; `enforce` wendet Bereinigung an. + - `main`: Alle DMs teilen die Hauptsitzung. + - `per-peer`: Isolation nach Absender-ID über Kanäle hinweg. + - `per-channel-peer`: Isolation pro Kanal + Absender (empfohlen für Multi-User-Inboxes). + - `per-account-channel-peer`: Isolation pro Konto + Kanal + Absender (empfohlen für Multi-Account). +- **`identityLinks`**: ordnet kanonische IDs providerpräfixierten Peers für sitzungsübergreifende Freigabe über Kanäle hinweg zu. +- **`reset`**: primäre Reset-Richtlinie. `daily` setzt um `atHour` in lokaler Zeit zurück; `idle` setzt nach `idleMinutes` zurück. Wenn beides konfiguriert ist, gewinnt das zuerst ablaufende. +- **`resetByType`**: Überschreibungen pro Typ (`direct`, `group`, `thread`). Das alte `dm` wird als Alias für `direct` akzeptiert. +- **`parentForkMaxTokens`**: maximal erlaubte `totalTokens` der Parent-Sitzung beim Erstellen einer geforkten Thread-Sitzung (Standard `100000`). + - Wenn die Parent-`totalTokens` über diesem Wert liegen, startet OpenClaw eine frische Thread-Sitzung, statt den Verlauf des Parent-Transkripts zu übernehmen. + - Setzen Sie `0`, um diese Schutzmaßnahme zu deaktivieren und Parent-Forking immer zu erlauben. +- **`mainKey`**: veraltetes Feld. Die Laufzeit verwendet jetzt immer `"main"` für den Haupt-Direktchat-Bucket. +- **`agentToAgent.maxPingPongTurns`**: maximale Antwort-Rückantwort-Züge zwischen Agenten bei Agent-zu-Agent-Austausch (Ganzzahl, Bereich: `0`–`5`). `0` deaktiviert Ping-Pong-Verkettung. +- **`sendPolicy`**: Match nach `channel`, `chatType` (`direct|group|channel`, mit altem Alias `dm`), `keyPrefix` oder `rawKeyPrefix`. Das erste deny gewinnt. +- **`maintenance`**: Sitzungs-Store-Cleanup + Aufbewahrungssteuerung. + - `mode`: `warn` gibt nur Warnungen aus; `enforce` wendet Cleanup an. - `pruneAfter`: Altersgrenze für veraltete Einträge (Standard `30d`). - `maxEntries`: maximale Anzahl Einträge in `sessions.json` (Standard `500`). - `rotateBytes`: rotiert `sessions.json`, wenn diese Größe überschritten wird (Standard `10mb`). - - `resetArchiveRetention`: Retention für `*.reset.`-Transkriptarchive. Standardmäßig wie `pruneAfter`; setzen Sie `false`, um zu deaktivieren. - - `maxDiskBytes`: optionales Speicherbudget für das Sitzungsverzeichnis. Im Modus `warn` werden Warnungen protokolliert; im Modus `enforce` werden zuerst die ältesten Artefakte/Sitzungen entfernt. - - `highWaterBytes`: optionales Ziel nach Budget-Bereinigung. Standardmäßig `80%` von `maxDiskBytes`. -- **`threadBindings`**: globale Standardwerte für threadgebundene Sitzungsfunktionen. - - `enabled`: globaler Standardschalter (Anbieter können überschreiben; Discord verwendet `channels.discord.threadBindings.enabled`) - - `idleHours`: Standard für automatisches Unfocus bei Inaktivität in Stunden (`0` deaktiviert; Anbieter können überschreiben) - - `maxAgeHours`: Standard für harte Maximaldauer in Stunden (`0` deaktiviert; Anbieter können überschreiben) + - `resetArchiveRetention`: Aufbewahrung für `*.reset.`-Transkriptarchive. Standardmäßig identisch zu `pruneAfter`; setzen Sie `false`, um dies zu deaktivieren. + - `maxDiskBytes`: optionales Festplattenbudget für das Sitzungsverzeichnis. Im Modus `warn` werden Warnungen protokolliert; im Modus `enforce` werden zuerst die ältesten Artefakte/Sitzungen entfernt. + - `highWaterBytes`: optionales Ziel nach Budget-Cleanup. Standardmäßig `80%` von `maxDiskBytes`. +- **`threadBindings`**: globale Standards für Thread-gebundene Sitzungsfunktionen. + - `enabled`: globaler Standardschalter (Provider können überschreiben; Discord verwendet `channels.discord.threadBindings.enabled`) + - `idleHours`: Standard für automatische Entfokussierung bei Inaktivität in Stunden (`0` deaktiviert; Provider können überschreiben) + - `maxAgeHours`: Standard für hartes Maximalalter in Stunden (`0` deaktiviert; Provider können überschreiben) @@ -1781,36 +1787,36 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ ### Antwortpräfix -Overrides pro Kanal/Konto: `channels..responsePrefix`, `channels..accounts..responsePrefix`. +Überschreibungen pro Kanal/Konto: `channels..responsePrefix`, `channels..accounts..responsePrefix`. Auflösung (das spezifischste gewinnt): Konto → Kanal → global. `""` deaktiviert und stoppt die Kaskade. `"auto"` leitet `[{identity.name}]` ab. **Template-Variablen:** -| Variable | Beschreibung | Beispiel | -| ----------------- | -------------------- | --------------------------- | -| `{model}` | Kurzer Modellname | `claude-opus-4-6` | -| `{modelFull}` | Vollständige Modellkennung | `anthropic/claude-opus-4-6` | -| `{provider}` | Anbietername | `anthropic` | -| `{thinkingLevel}` | Aktuelle Thinking-Stufe | `high`, `low`, `off` | -| `{identity.name}` | Name der Agent-Identität | (wie `"auto"`) | +| Variable | Beschreibung | Beispiel | +| ----------------- | ---------------------- | --------------------------- | +| `{model}` | Kurzer Modellname | `claude-opus-4-6` | +| `{modelFull}` | Vollständiger Modellbezeichner | `anthropic/claude-opus-4-6` | +| `{provider}` | Providername | `anthropic` | +| `{thinkingLevel}` | Aktuelles Thinking-Level | `high`, `low`, `off` | +| `{identity.name}` | Name der Agent-Identität | (gleich wie `"auto"`) | -Variablen sind ohne Beachtung der Groß-/Kleinschreibung. `{think}` ist ein Alias für `{thinkingLevel}`. +Variablen sind nicht case-sensitiv. `{think}` ist ein Alias für `{thinkingLevel}`. -### Bestätigungsreaktion +### Ack-Reaktion -- Standardmäßig das `identity.emoji` des aktiven Agenten, ansonsten `"👀"`. Setzen Sie `""`, um zu deaktivieren. -- Overrides pro Kanal: `channels..ackReaction`, `channels..accounts..ackReaction`. +- Standardmäßig das `identity.emoji` des aktiven Agenten, sonst `"👀"`. Setzen Sie `""`, um es zu deaktivieren. +- Überschreibungen pro Kanal: `channels..ackReaction`, `channels..accounts..ackReaction`. - Auflösungsreihenfolge: Konto → Kanal → `messages.ackReaction` → Identity-Fallback. - Scope: `group-mentions` (Standard), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: entfernt die Bestätigungsreaktion nach der Antwort auf Slack, Discord und Telegram. +- `removeAckAfterReply`: entfernt Ack nach der Antwort auf Slack, Discord und Telegram. - `messages.statusReactions.enabled`: aktiviert Lifecycle-Statusreaktionen auf Slack, Discord und Telegram. - Bei Slack und Discord bleiben Statusreaktionen aktiviert, wenn Bestätigungsreaktionen aktiv sind und dieser Wert nicht gesetzt ist. - Bei Telegram setzen Sie ihn explizit auf `true`, um Lifecycle-Statusreaktionen zu aktivieren. + Auf Slack und Discord bleibt bei nicht gesetztem Wert die Statusreaktion aktiviert, wenn Ack-Reaktionen aktiv sind. + Auf Telegram muss explizit `true` gesetzt werden, um Lifecycle-Statusreaktionen zu aktivieren. ### Inbound-Debounce -Bündelt schnelle reine Textnachrichten desselben Absenders zu einem einzigen Agent-Turn. Medien/Anhänge flushen sofort. Steuerbefehle umgehen Debouncing. +Bündelt schnelle reine Textnachrichten desselben Absenders in einen einzelnen Agent-Zug. Medien/Anhänge flushen sofort. Steuerbefehle umgehen Debouncing. ### TTS (Text-to-Speech) @@ -1854,9 +1860,9 @@ Bündelt schnelle reine Textnachrichten desselben Absenders zu einem einzigen Ag ``` - `auto` steuert Auto-TTS. `/tts off|always|inbound|tagged` überschreibt dies pro Sitzung. -- `summaryModel` überschreibt `agents.defaults.model.primary` für die automatische Zusammenfassung. +- `summaryModel` überschreibt `agents.defaults.model.primary` für automatische Zusammenfassungen. - `modelOverrides` ist standardmäßig aktiviert; `modelOverrides.allowProvider` ist standardmäßig `false` (Opt-in). -- API keys fallen auf `ELEVENLABS_API_KEY`/`XI_API_KEY` und `OPENAI_API_KEY` zurück. +- API-Keys fallen auf `ELEVENLABS_API_KEY`/`XI_API_KEY` und `OPENAI_API_KEY` zurück. - `openai.baseUrl` überschreibt den OpenAI-TTS-Endpunkt. Auflösungsreihenfolge: Konfiguration, dann `OPENAI_TTS_BASE_URL`, dann `https://api.openai.com/v1`. - Wenn `openai.baseUrl` auf einen Nicht-OpenAI-Endpunkt zeigt, behandelt OpenClaw ihn als OpenAI-kompatiblen TTS-Server und lockert die Modell-/Stimmenvalidierung. @@ -1864,7 +1870,7 @@ Bündelt schnelle reine Textnachrichten desselben Absenders zu einem einzigen Ag ## Talk -Standardwerte für den Talk-Modus (macOS/iOS/Android). +Standards für den Talk-Modus (macOS/iOS/Android). ```json5 { @@ -1888,13 +1894,13 @@ Standardwerte für den Talk-Modus (macOS/iOS/Android). } ``` -- `talk.provider` muss einem Schlüssel in `talk.providers` entsprechen, wenn mehrere Talk-Anbieter konfiguriert sind. -- Legacy-flache Talk-Schlüssel (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) sind nur noch kompatibilitätsbedingt vorhanden und werden automatisch nach `talk.providers.` migriert. +- `talk.provider` muss einem Schlüssel in `talk.providers` entsprechen, wenn mehrere Talk-Provider konfiguriert sind. +- Veraltete flache Talk-Schlüssel (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) dienen nur der Kompatibilität und werden automatisch nach `talk.providers.` migriert. - Voice-IDs fallen auf `ELEVENLABS_VOICE_ID` oder `SAG_VOICE_ID` zurück. - `providers.*.apiKey` akzeptiert Klartext-Strings oder SecretRef-Objekte. -- Der Fallback `ELEVENLABS_API_KEY` gilt nur, wenn kein Talk-API key konfiguriert ist. -- `providers.*.voiceAliases` erlaubt Talk-Direktiven, freundliche Namen zu verwenden. -- `silenceTimeoutMs` steuert, wie lange der Talk-Modus nach Stille des Benutzers wartet, bevor das Transkript gesendet wird. Wenn nicht gesetzt, bleibt das plattformspezifische Standard-Pausenfenster erhalten (`700 ms auf macOS und Android, 900 ms auf iOS`). +- Der Fallback `ELEVENLABS_API_KEY` gilt nur, wenn kein Talk-API-Key konfiguriert ist. +- `providers.*.voiceAliases` erlaubt es Talk-Anweisungen, freundliche Namen zu verwenden. +- `silenceTimeoutMs` steuert, wie lange der Talk-Modus nach Benutzerschweigen wartet, bevor das Transkript gesendet wird. Wenn nicht gesetzt, bleibt das plattformspezifische Standard-Pausenfenster erhalten (`700 ms auf macOS und Android, 900 ms auf iOS`). --- @@ -1904,35 +1910,35 @@ Standardwerte für den Talk-Modus (macOS/iOS/Android). `tools.profile` setzt eine Basis-Allowlist vor `tools.allow`/`tools.deny`: -Lokales Onboarding setzt neue lokale Konfigurationen standardmäßig auf `tools.profile: "coding"`, wenn nicht gesetzt (vorhandene explizite Profile bleiben erhalten). +Lokales Onboarding setzt neue lokale Konfigurationen standardmäßig auf `tools.profile: "coding"`, wenn nicht gesetzt (bestehende explizite Profile bleiben erhalten). -| Profil | Umfasst | -| ----------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `minimal` | nur `session_status` | +| Profil | Enthält | +| ----------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `minimal` | nur `session_status` | | `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` | -| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` | -| `full` | Keine Einschränkung (wie nicht gesetzt) | +| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` | +| `full` | Keine Einschränkung (entspricht nicht gesetzt) | ### Tool-Gruppen -| Gruppe | Tools | -| ------------------ | ---------------------------------------------------------------------------------------------------------------------- | -| `group:runtime` | `exec`, `process`, `code_execution` (`bash` wird als Alias für `exec` akzeptiert) | -| `group:fs` | `read`, `write`, `edit`, `apply_patch` | +| Gruppe | Tools | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| `group:runtime` | `exec`, `process`, `code_execution` (`bash` wird als Alias für `exec` akzeptiert) | +| `group:fs` | `read`, `write`, `edit`, `apply_patch` | | `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | -| `group:memory` | `memory_search`, `memory_get` | -| `group:web` | `web_search`, `x_search`, `web_fetch` | -| `group:ui` | `browser`, `canvas` | -| `group:automation` | `cron`, `gateway` | -| `group:messaging` | `message` | -| `group:nodes` | `nodes` | -| `group:agents` | `agents_list` | -| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | -| `group:openclaw` | Alle eingebauten Tools (ohne Anbieter-Plugins) | +| `group:memory` | `memory_search`, `memory_get` | +| `group:web` | `web_search`, `x_search`, `web_fetch` | +| `group:ui` | `browser`, `canvas` | +| `group:automation` | `cron`, `gateway` | +| `group:messaging` | `message` | +| `group:nodes` | `nodes` | +| `group:agents` | `agents_list` | +| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | +| `group:openclaw` | Alle eingebauten Tools (ohne Provider-Plugins) | ### `tools.allow` / `tools.deny` -Globale Allow-/Deny-Richtlinie für Tools (deny gewinnt). Ohne Beachtung der Groß-/Kleinschreibung, unterstützt `*`-Wildcards. Wird auch angewendet, wenn die Docker-Sandbox deaktiviert ist. +Globale Tool-Allow-/Deny-Richtlinie (deny gewinnt). Nicht case-sensitiv, unterstützt `*`-Wildcards. Wird auch angewendet, wenn die Docker-Sandbox deaktiviert ist. ```json5 { @@ -1942,7 +1948,7 @@ Globale Allow-/Deny-Richtlinie für Tools (deny gewinnt). Ohne Beachtung der Gro ### `tools.byProvider` -Schränkt Tools für bestimmte Anbieter oder Modelle weiter ein. Reihenfolge: Basisprofil → Anbieterprofil → allow/deny. +Schränkt Tools für bestimmte Provider oder Modelle weiter ein. Reihenfolge: Basisprofil → Provider-Profil → allow/deny. ```json5 { @@ -1958,7 +1964,7 @@ Schränkt Tools für bestimmte Anbieter oder Modelle weiter ein. Reihenfolge: Ba ### `tools.elevated` -Steuert erhöhten Exec-Zugriff außerhalb der Sandbox: +Steuert erhöhten `exec`-Zugriff außerhalb der Sandbox: ```json5 { @@ -1974,9 +1980,9 @@ Steuert erhöhten Exec-Zugriff außerhalb der Sandbox: } ``` -- Override pro Agent (`agents.list[].tools.elevated`) kann nur weiter einschränken. -- `/elevated on|off|ask|full` speichert Zustand pro Sitzung; Inline-Direktiven gelten nur für eine einzelne Nachricht. -- Erhöhtes `exec` umgeht Sandboxing und verwendet den konfigurierten Escape-Pfad (`gateway` standardmäßig oder `node`, wenn das Exec-Ziel `node` ist). +- Die Pro-Agent-Überschreibung (`agents.list[].tools.elevated`) kann nur weiter einschränken. +- `/elevated on|off|ask|full` speichert den Status pro Sitzung; Inline-Direktiven gelten nur für eine einzelne Nachricht. +- Erhöhter `exec` umgeht Sandboxing und verwendet den konfigurierten Escape-Pfad (`gateway` standardmäßig oder `node`, wenn das Exec-Ziel `node` ist). ### `tools.exec` @@ -2000,7 +2006,7 @@ Steuert erhöhten Exec-Zugriff außerhalb der Sandbox: ### `tools.loopDetection` -Sicherheitsprüfungen für Tool-Loops sind standardmäßig **deaktiviert**. Setzen Sie `enabled: true`, um die Erkennung zu aktivieren. +Sicherheitsprüfungen auf Tool-Schleifen sind **standardmäßig deaktiviert**. Setzen Sie `enabled: true`, um die Erkennung zu aktivieren. Einstellungen können global in `tools.loopDetection` definiert und pro Agent unter `agents.list[].tools.loopDetection` überschrieben werden. ```json5 @@ -2022,13 +2028,13 @@ Einstellungen können global in `tools.loopDetection` definiert und pro Agent un } ``` -- `historySize`: maximale Tool-Call-Historie, die für die Loop-Analyse aufbewahrt wird. +- `historySize`: maximal aufbewahrter Tool-Call-Verlauf für Schleifenanalyse. - `warningThreshold`: Schwelle für Warnungen bei sich wiederholenden Mustern ohne Fortschritt. -- `criticalThreshold`: höhere Wiederholungsschwelle zum Blockieren kritischer Loops. +- `criticalThreshold`: höhere Wiederholungsschwelle zum Blockieren kritischer Schleifen. - `globalCircuitBreakerThreshold`: harte Stoppschwelle für jeden Lauf ohne Fortschritt. - `detectors.genericRepeat`: warnt bei wiederholten Aufrufen desselben Tools mit denselben Argumenten. - `detectors.knownPollNoProgress`: warnt/blockiert bei bekannten Poll-Tools (`process.poll`, `command_status` usw.). -- `detectors.pingPong`: warnt/blockiert bei alternierenden Paarmustern ohne Fortschritt. +- `detectors.pingPong`: warnt/blockiert bei alternierenden No-Progress-Paarmustern. - Wenn `warningThreshold >= criticalThreshold` oder `criticalThreshold >= globalCircuitBreakerThreshold`, schlägt die Validierung fehl. ### `tools.web` @@ -2046,7 +2052,7 @@ Einstellungen können global in `tools.loopDetection` definiert und pro Agent un }, fetch: { enabled: true, - provider: "firecrawl", // optional; für Auto-Erkennung weglassen + provider: "firecrawl", // optional; für Auto-Detect weglassen maxChars: 50000, maxCharsCap: 50000, maxResponseBytes: 2000000, @@ -2063,7 +2069,7 @@ Einstellungen können global in `tools.loopDetection` definiert und pro Agent un ### `tools.media` -Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): +Konfiguriert das Verständnis eingehender Medien (Bild/Audio/Video): ```json5 { @@ -2071,7 +2077,7 @@ Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): media: { concurrency: 2, asyncCompletion: { - directSend: false, // Opt-in: fertiggestellte asynchrone Musik/Videos direkt in den Kanal senden + directSend: false, // Opt-in: abgeschlossene asynchrone Musik/Videos direkt an den Kanal senden }, audio: { enabled: true, @@ -2095,13 +2101,13 @@ Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): } ``` - + -**Anbietereintrag** (`type: "provider"` oder weggelassen): +**Provider-Eintrag** (`type: "provider"` oder weggelassen): -- `provider`: API-Anbieter-ID (`openai`, `anthropic`, `google`/`gemini`, `groq` usw.) -- `model`: Override für Modell-ID -- `profile` / `preferredProfile`: Auswahl des Profils in `auth-profiles.json` +- `provider`: API-Provider-ID (`openai`, `anthropic`, `google`/`gemini`, `groq` usw.) +- `model`: Modell-ID-Überschreibung +- `profile` / `preferredProfile`: Auswahl des `auth-profiles.json`-Profils **CLI-Eintrag** (`type: "cli"`): @@ -2111,16 +2117,16 @@ Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): **Gemeinsame Felder:** - `capabilities`: optionale Liste (`image`, `audio`, `video`). Standards: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. -- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: Overrides pro Eintrag. -- Bei Fehlern wird auf den nächsten Eintrag zurückgegriffen. +- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: Überschreibungen pro Eintrag. +- Bei Fehlern wird auf den nächsten Eintrag zurückgefallen. -Anbieter-Auth folgt der Standardreihenfolge: `auth-profiles.json` → Umgebungsvariablen → `models.providers.*.apiKey`. +Provider-Authentifizierung folgt der Standardreihenfolge: `auth-profiles.json` → Env-Variablen → `models.providers.*.apiKey`. -**Felder für asynchronen Abschluss:** +**Felder für asynchrone Vervollständigung:** -- `asyncCompletion.directSend`: wenn `true`, versuchen fertiggestellte asynchrone `music_generate`- - und `video_generate`-Aufgaben zuerst die direkte Zustellung in den Kanal. Standard: `false` - (Legacy-Wake-/Modellzustellpfad über die Sitzung des Anfragenden). +- `asyncCompletion.directSend`: wenn `true`, versuchen abgeschlossene asynchrone `music_generate`- + und `video_generate`-Tasks zuerst direkte Kanalzustellung. Standard: `false` + (alter Pfad mit Wake/Model-Delivery über die anfordernde Sitzung). @@ -2139,9 +2145,9 @@ Anbieter-Auth folgt der Standardreihenfolge: `auth-profiles.json` → Umgebungsv ### `tools.sessions` -Steuert, welche Sitzungen von den Sitzungstools (`sessions_list`, `sessions_history`, `sessions_send`) adressiert werden können. +Steuert, welche Sitzungen von den Sitzungstools (`sessions_list`, `sessions_history`, `sessions_send`) angesprochen werden können. -Standard: `tree` (aktuelle Sitzung + von ihr erzeugte Sitzungen, etwa Subagents). +Standard: `tree` (aktuelle Sitzung + von ihr gestartete Sitzungen, wie Subagenten). ```json5 { @@ -2157,10 +2163,10 @@ Standard: `tree` (aktuelle Sitzung + von ihr erzeugte Sitzungen, etwa Subagents) Hinweise: - `self`: nur der aktuelle Sitzungsschlüssel. -- `tree`: aktuelle Sitzung + von der aktuellen Sitzung erzeugte Sitzungen (Subagents). -- `agent`: jede Sitzung, die zur aktuellen Agent-ID gehört (kann andere Benutzer einschließen, wenn Sie Sitzungen pro Absender unter derselben Agent-ID ausführen). +- `tree`: aktuelle Sitzung + von der aktuellen Sitzung gestartete Sitzungen (Subagenten). +- `agent`: jede Sitzung, die zur aktuellen Agent-ID gehört (kann andere Benutzer einschließen, wenn Sie Per-Sender-Sitzungen unter derselben Agent-ID ausführen). - `all`: jede Sitzung. Agentübergreifendes Targeting erfordert weiterhin `tools.agentToAgent`. -- Sandbox-Klammer: wenn die aktuelle Sitzung in einer Sandbox läuft und `agents.defaults.sandbox.sessionToolsVisibility="spawned"` ist, wird die Sichtbarkeit auf `tree` erzwungen, selbst wenn `tools.sessions.visibility="all"` gilt. +- Sandbox-Klammer: Wenn die aktuelle Sitzung sandboxed ist und `agents.defaults.sandbox.sessionToolsVisibility="spawned"` gilt, wird die Sichtbarkeit auf `tree` erzwungen, selbst wenn `tools.sessions.visibility="all"` gesetzt ist. ### `tools.sessions_spawn` @@ -2172,7 +2178,7 @@ Steuert die Unterstützung für Inline-Anhänge bei `sessions_spawn`. sessions_spawn: { attachments: { enabled: false, // Opt-in: auf true setzen, um Inline-Dateianhänge zu erlauben - maxTotalBytes: 5242880, // 5 MB gesamt über alle Dateien + maxTotalBytes: 5242880, // insgesamt 5 MB über alle Dateien maxFiles: 50, maxFileBytes: 1048576, // 1 MB pro Datei retainOnSessionKeep: false, // Anhänge beibehalten, wenn cleanup="keep" @@ -2184,16 +2190,16 @@ Steuert die Unterstützung für Inline-Anhänge bei `sessions_spawn`. Hinweise: -- Anhänge werden nur für `runtime: "subagent"` unterstützt. ACP-Runtime lehnt sie ab. +- Anhänge werden nur für `runtime: "subagent"` unterstützt. Die ACP-Laufzeit lehnt sie ab. - Dateien werden im Child-Workspace unter `.openclaw/attachments//` mit einer `.manifest.json` materialisiert. - Anhangsinhalte werden automatisch aus der Transkriptpersistenz redigiert. -- Base64-Eingaben werden mit strenger Alphabet-/Padding-Prüfung und einer Größenkontrolle vor der Dekodierung validiert. +- Base64-Eingaben werden mit strengen Alphabet-/Padding-Prüfungen und einer Größenschutzprüfung vor dem Dekodieren validiert. - Dateiberechtigungen sind `0700` für Verzeichnisse und `0600` für Dateien. -- Das Aufräumen folgt der `cleanup`-Richtlinie: `delete` entfernt Anhänge immer; `keep` behält sie nur, wenn `retainOnSessionKeep: true`. +- Cleanup folgt der `cleanup`-Richtlinie: `delete` entfernt Anhänge immer; `keep` behält sie nur, wenn `retainOnSessionKeep: true`. ### `tools.experimental` -Experimentelle Flags für eingebaute Tools. Standardmäßig aus, außer wenn eine laufzeitspezifische Auto-Aktivierungsregel greift. +Experimentelle eingebaute Tool-Flags. Standardmäßig aus, sofern keine laufzeitspezifische Auto-Aktivierungsregel greift. ```json5 { @@ -2207,9 +2213,9 @@ Experimentelle Flags für eingebaute Tools. Standardmäßig aus, außer wenn ein Hinweise: -- `planTool`: aktiviert das strukturierte Tool `update_plan` zur Nachverfolgung nichttrivialer mehrstufiger Arbeit. -- Standard: `false` für Nicht-OpenAI-Anbieter. OpenAI- und OpenAI-Codex-Läufe aktivieren es automatisch. -- Wenn aktiviert, fügt der System-Prompt auch Nutzungshinweise hinzu, sodass das Modell es nur für substanzielle Arbeit verwendet und höchstens einen Schritt als `in_progress` hält. +- `planTool`: aktiviert das strukturierte `update_plan`-Tool für die Verfolgung nichttrivialer mehrstufiger Arbeit. +- Standard: `false` für Nicht-OpenAI-Provider. OpenAI- und OpenAI-Codex-Läufe aktivieren es automatisch. +- Wenn aktiviert, fügt der System-Prompt auch Nutzungshinweise hinzu, damit das Modell es nur für wesentliche Arbeit verwendet und höchstens einen Schritt `in_progress` hält. ### `agents.defaults.subagents` @@ -2229,16 +2235,16 @@ Hinweise: } ``` -- `model`: Standardmodell für erzeugte Sub-Agents. Wenn weggelassen, erben Sub-Agents das Modell des Aufrufers. -- `allowAgents`: Standard-Allowlist der Ziel-Agent-IDs für `sessions_spawn`, wenn der anfordernde Agent kein eigenes `subagents.allowAgents` setzt (`["*"]` = beliebig; Standard: nur derselbe Agent). +- `model`: Standardmodell für gestartete Subagenten. Wenn weggelassen, erben Subagenten das Modell des Aufrufers. +- `allowAgents`: Standard-Allowlist für Ziel-Agent-IDs für `sessions_spawn`, wenn der anfordernde Agent nicht seine eigene `subagents.allowAgents` setzt (`["*"]` = beliebig; Standard: nur derselbe Agent). - `runTimeoutSeconds`: Standard-Timeout (Sekunden) für `sessions_spawn`, wenn der Tool-Aufruf `runTimeoutSeconds` weglässt. `0` bedeutet kein Timeout. - Tool-Richtlinie pro Subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. --- -## Benutzerdefinierte Anbieter und Base-URLs +## Benutzerdefinierte Provider und Base-URLs -OpenClaw verwendet den eingebauten Modellkatalog. Fügen Sie benutzerdefinierte Anbieter über `models.providers` in der Konfiguration oder `~/.openclaw/agents//agent/models.json` hinzu. +OpenClaw verwendet den eingebauten Modellkatalog. Fügen Sie benutzerdefinierte Provider über `models.providers` in der Konfiguration oder `~/.openclaw/agents//agent/models.json` hinzu. ```json5 { @@ -2267,48 +2273,48 @@ OpenClaw verwendet den eingebauten Modellkatalog. Fügen Sie benutzerdefinierte } ``` -- Verwenden Sie `authHeader: true` + `headers` für benutzerdefinierte Auth-Anforderungen. -- Überschreiben Sie das Agent-Konfigurations-Root mit `OPENCLAW_AGENT_DIR` (oder `PI_CODING_AGENT_DIR`, einem Legacy-Alias für Umgebungsvariablen). -- Merge-Priorität bei passenden Anbieter-IDs: - - Nichtleere `baseUrl`-Werte aus `models.json` des Agenten haben Vorrang. - - Nichtleere `apiKey`-Werte des Agenten haben nur dann Vorrang, wenn dieser Anbieter im aktuellen Konfigurations-/Auth-Profil-Kontext nicht über SecretRef verwaltet wird. - - SecretRef-verwaltete Anbieter-`apiKey`-Werte werden aus Quellmarkierungen aktualisiert (`ENV_VAR_NAME` für env-Refs, `secretref-managed` für file-/exec-Refs), statt aufgelöste Geheimnisse zu persistieren. - - SecretRef-verwaltete Header-Werte des Anbieters werden aus Quellmarkierungen aktualisiert (`secretref-env:ENV_VAR_NAME` für env-Refs, `secretref-managed` für file-/exec-Refs). - - Leere oder fehlende `apiKey`-/`baseUrl`-Werte des Agenten fallen auf `models.providers` in der Konfiguration zurück. - - Passende Modell-`contextWindow`-/`maxTokens`-Werte verwenden den höheren Wert aus expliziter Konfiguration und impliziten Katalogwerten. - - Passende Modell-`contextTokens` bewahren ein explizites Runtime-Limit, wenn vorhanden; verwenden Sie dies, um das effektive Kontextbudget zu begrenzen, ohne native Modellmetadaten zu ändern. +- Verwenden Sie `authHeader: true` + `headers` für benutzerdefinierte Authentifizierungsanforderungen. +- Überschreiben Sie das Agent-Konfigurations-Root mit `OPENCLAW_AGENT_DIR` (oder `PI_CODING_AGENT_DIR`, einem alten Alias für Umgebungsvariablen). +- Merge-Priorität für passende Provider-IDs: + - Nicht leere `baseUrl`-Werte aus Agent-`models.json` haben Vorrang. + - Nicht leere `apiKey`-Werte des Agenten haben nur Vorrang, wenn dieser Provider im aktuellen Konfigurations-/Auth-Profil-Kontext nicht SecretRef-verwaltet ist. + - SecretRef-verwaltete Provider-`apiKey`-Werte werden aus Quellmarkern aktualisiert (`ENV_VAR_NAME` für Env-Refs, `secretref-managed` für Datei-/Exec-Refs), anstatt aufgelöste Secrets zu persistieren. + - SecretRef-verwaltete Provider-Headerwerte werden aus Quellmarkern aktualisiert (`secretref-env:ENV_VAR_NAME` für Env-Refs, `secretref-managed` für Datei-/Exec-Refs). + - Leere oder fehlende Agent-`apiKey`/`baseUrl` fallen auf `models.providers` in der Konfiguration zurück. + - Passende Modell-`contextWindow`/`maxTokens` verwenden den höheren Wert aus expliziter Konfiguration und impliziten Katalogwerten. + - Passende Modell-`contextTokens` behalten eine explizite Laufzeitgrenze, wenn vorhanden; verwenden Sie dies, um den effektiven Kontext zu begrenzen, ohne native Modellmetadaten zu ändern. - Verwenden Sie `models.mode: "replace"`, wenn die Konfiguration `models.json` vollständig neu schreiben soll. - - Marker-Persistenz ist quellautoritatativ: Marker werden aus dem aktiven Quell-Konfigurations-Snapshot (vor der Auflösung) geschrieben, nicht aus aufgelösten Laufzeit-Geheimniswerten. + - Marker-Persistenz ist quellautoritativ: Marker werden aus dem aktiven Quell-Konfigurations-Snapshot (vor der Auflösung) geschrieben, nicht aus aufgelösten Laufzeit-Secret-Werten. -### Details zu Anbieterfeldern +### Details zu Provider-Feldern -- `models.mode`: Verhalten des Anbieterkatalogs (`merge` oder `replace`). -- `models.providers`: benutzerdefinierte Anbieter-Zuordnung nach Anbieter-ID. +- `models.mode`: Verhalten des Provider-Katalogs (`merge` oder `replace`). +- `models.providers`: benutzerdefinierte Provider-Map, nach Provider-ID indiziert. - `models.providers.*.api`: Request-Adapter (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` usw.). -- `models.providers.*.apiKey`: Anbieter-Anmeldedaten (SecretRef/env-Substitution bevorzugen). -- `models.providers.*.auth`: Auth-Strategie (`api-key`, `token`, `oauth`, `aws-sdk`). -- `models.providers.*.injectNumCtxForOpenAICompat`: für Ollama + `openai-completions` `options.num_ctx` in Requests injizieren (Standard: `true`). -- `models.providers.*.authHeader`: erzwingt Credential-Transport im Header `Authorization`, wenn erforderlich. +- `models.providers.*.apiKey`: Provider-Anmeldeinformation (bevorzugt SecretRef/Env-Substitution verwenden). +- `models.providers.*.auth`: Authentifizierungsstrategie (`api-key`, `token`, `oauth`, `aws-sdk`). +- `models.providers.*.injectNumCtxForOpenAICompat`: für Ollama + `openai-completions`, `options.num_ctx` in Requests einfügen (Standard: `true`). +- `models.providers.*.authHeader`: Credential-Transport im `Authorization`-Header erzwingen, wenn erforderlich. - `models.providers.*.baseUrl`: Base-URL der Upstream-API. - `models.providers.*.headers`: zusätzliche statische Header für Proxy-/Tenant-Routing. -- `models.providers.*.request`: Transport-Overrides für HTTP-Requests von Modellanbietern. - - `request.headers`: zusätzliche Header (mit Anbieter-Standards gemergt). Werte akzeptieren SecretRef. - - `request.auth`: Override für die Auth-Strategie. Modi: `"provider-default"` (eingebaute Auth des Anbieters verwenden), `"authorization-bearer"` (mit `token`), `"header"` (mit `headerName`, `value`, optional `prefix`). - - `request.proxy`: Override für HTTP-Proxy. Modi: `"env-proxy"` (verwende `HTTP_PROXY`/`HTTPS_PROXY` env vars), `"explicit-proxy"` (mit `url`). Beide Modi akzeptieren optional ein Unterobjekt `tls`. - - `request.tls`: TLS-Override für direkte Verbindungen. Felder: `ca`, `cert`, `key`, `passphrase` (alle akzeptieren SecretRef), `serverName`, `insecureSkipVerify`. -- `models.providers.*.models`: explizite Katalogeinträge für Anbietermodelle. +- `models.providers.*.request`: Transport-Überschreibungen für HTTP-Anfragen des Modell-Providers. + - `request.headers`: zusätzliche Header (werden mit Provider-Standards zusammengeführt). Werte akzeptieren SecretRef. + - `request.auth`: Authentifizierungsstrategie-Überschreibung. Modi: `"provider-default"` (eingebaute Provider-Authentifizierung verwenden), `"authorization-bearer"` (mit `token`), `"header"` (mit `headerName`, `value`, optional `prefix`). + - `request.proxy`: HTTP-Proxy-Überschreibung. Modi: `"env-proxy"` (verwende `HTTP_PROXY`/`HTTPS_PROXY`-Env-Variablen), `"explicit-proxy"` (mit `url`). Beide Modi akzeptieren optional ein `tls`-Unterobjekt. + - `request.tls`: TLS-Überschreibung für direkte Verbindungen. Felder: `ca`, `cert`, `key`, `passphrase` (alle akzeptieren SecretRef), `serverName`, `insecureSkipVerify`. +- `models.providers.*.models`: explizite Katalogeinträge für Provider-Modelle. - `models.providers.*.models.*.contextWindow`: native Metadaten des Modell-Kontextfensters. -- `models.providers.*.models.*.contextTokens`: optionales Laufzeitlimit für Kontext. Verwenden Sie dies, wenn Sie ein kleineres effektives Kontextbudget als das native `contextWindow` des Modells möchten. -- `models.providers.*.models.*.compat.supportsDeveloperRole`: optionaler Kompatibilitätshinweis. Für `api: "openai-completions"` mit einer nichtleeren, nichtnativen `baseUrl` (Host nicht `api.openai.com`) erzwingt OpenClaw dies zur Laufzeit auf `false`. Leere/fehlende `baseUrl` behält das Standardverhalten von OpenAI bei. +- `models.providers.*.models.*.contextTokens`: optionale Laufzeit-Kontextgrenze. Verwenden Sie dies, wenn Sie ein kleineres effektives Kontextbudget wollen als das native `contextWindow` des Modells. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: optionaler Kompatibilitätshinweis. Für `api: "openai-completions"` mit nicht leerer, nicht nativer `baseUrl` (Host nicht `api.openai.com`) erzwingt OpenClaw dies zur Laufzeit auf `false`. Leere/fehlende `baseUrl` behält Standard-OpenAI-Verhalten bei. - `plugins.entries.amazon-bedrock.config.discovery`: Root der Bedrock-Auto-Discovery-Einstellungen. - `plugins.entries.amazon-bedrock.config.discovery.enabled`: implizite Discovery ein-/ausschalten. - `plugins.entries.amazon-bedrock.config.discovery.region`: AWS-Region für Discovery. -- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: optionaler Anbieter-ID-Filter für gezielte Discovery. -- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: Polling-Intervall für Discovery-Refresh. +- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: optionaler Provider-ID-Filter für gezielte Discovery. +- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: Polling-Intervall für Discovery-Aktualisierung. - `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: Fallback-Kontextfenster für entdeckte Modelle. -- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: Fallback-Maximalzahl an Ausgabetoken für entdeckte Modelle. +- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: Fallback für maximale Ausgabetokens bei entdeckten Modellen. -### Anbieterbeispiele +### Provider-Beispiele @@ -2344,7 +2350,7 @@ OpenClaw verwendet den eingebauten Modellkatalog. Fügen Sie benutzerdefinierte } ``` -Verwenden Sie `cerebras/zai-glm-4.7` für Cerebras; `zai/glm-4.7` für direktes Z.AI. +Verwenden Sie `cerebras/zai-glm-4.7` für Cerebras; `zai/glm-4.7` für Z.AI direkt. @@ -2382,7 +2388,7 @@ Setzen Sie `ZAI_API_KEY`. `z.ai/*` und `z-ai/*` werden als Aliasse akzeptiert. K - Allgemeiner Endpunkt: `https://api.z.ai/api/paas/v4` - Coding-Endpunkt (Standard): `https://api.z.ai/api/coding/paas/v4` -- Für den allgemeinen Endpunkt definieren Sie einen benutzerdefinierten Anbieter mit Override der Base-URL. +- Für den allgemeinen Endpunkt definieren Sie einen benutzerdefinierten Provider mit Base-URL-Überschreibung. @@ -2423,7 +2429,9 @@ Setzen Sie `ZAI_API_KEY`. `z.ai/*` und `z-ai/*` werden als Aliasse akzeptiert. K Für den China-Endpunkt: `baseUrl: "https://api.moonshot.cn/v1"` oder `openclaw onboard --auth-choice moonshot-api-key-cn`. -Native Moonshot-Endpunkte geben Streaming-Nutzungskompatibilität auf dem gemeinsamen Transport `openai-completions` an, und OpenClaw knüpft dies jetzt an Endpunktfähigkeiten statt nur an die eingebaute Anbieter-ID. +Native Moonshot-Endpunkte bewerben Streaming-Nutzungskompatibilität auf dem gemeinsamen +`openai-completions`-Transport, und OpenClaw richtet dies jetzt anhand der Endpunkt- +Fähigkeiten statt nur anhand der eingebauten Provider-ID aus. @@ -2441,7 +2449,7 @@ Native Moonshot-Endpunkte geben Streaming-Nutzungskompatibilität auf dem gemein } ``` -Anthropic-kompatibel, eingebauter Anbieter. Kurzform: `openclaw onboard --auth-choice kimi-code-api-key`. +Anthropic-kompatibel, eingebauter Provider. Kurzform: `openclaw onboard --auth-choice kimi-code-api-key`. @@ -2523,17 +2531,17 @@ Die Base-URL sollte `/v1` weglassen (der Anthropic-Client hängt es an). Kurzfor Setzen Sie `MINIMAX_API_KEY`. Kurzformen: `openclaw onboard --auth-choice minimax-global-api` oder `openclaw onboard --auth-choice minimax-cn-api`. -Der Modellkatalog verwendet jetzt standardmäßig nur noch M2.7. -Auf dem Anthropic-kompatiblen Streaming-Pfad deaktiviert OpenClaw MiniMax thinking -standardmäßig, es sei denn, Sie setzen `thinking` explizit selbst. `/fast on` oder -`params.fastMode: true` schreibt `MiniMax-M2.7` nach +Der Modellkatalog verwendet jetzt standardmäßig nur M2.7. +Auf dem Anthropic-kompatiblen Streaming-Pfad deaktiviert OpenClaw MiniMax-Thinking +standardmäßig, sofern Sie `thinking` nicht explizit selbst setzen. `/fast on` oder +`params.fastMode: true` schreiben `MiniMax-M2.7` in `MiniMax-M2.7-highspeed` um. -Siehe [Lokale Modelle](/de/gateway/local-models). Kurz gesagt: Führen Sie ein großes lokales Modell über die LM Studio Responses API auf leistungsfähiger Hardware aus; lassen Sie gehostete Modelle für Fallbacks gemergt. +Siehe [Local Models](/de/gateway/local-models). Kurz gesagt: Führen Sie ein großes lokales Modell über die LM Studio Responses API auf leistungsfähiger Hardware aus; lassen Sie gehostete Modelle für Fallbacks zusammengeführt. @@ -2564,12 +2572,12 @@ Siehe [Lokale Modelle](/de/gateway/local-models). Kurz gesagt: Führen Sie ein g } ``` -- `allowBundled`: optionale Allowlist nur für gebündelte Skills (verwaltete/Workspace-Skills sind nicht betroffen). +- `allowBundled`: optionale Allowlist nur für gebündelte Skills (verwaltete/Workspace-Skills bleiben unberührt). - `load.extraDirs`: zusätzliche gemeinsame Skill-Roots (niedrigste Priorität). -- `install.preferBrew`: wenn true, werden Homebrew-Installer bevorzugt, wenn `brew` verfügbar ist, bevor auf andere Installer-Arten zurückgefallen wird. +- `install.preferBrew`: wenn true, bevorzugt Homebrew-Installer, wenn `brew` verfügbar ist, bevor auf andere Installertypen zurückgefallen wird. - `install.nodeManager`: Präferenz für Node-Installer bei `metadata.openclaw.install`-Spezifikationen (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` deaktiviert einen Skill, auch wenn er gebündelt/installiert ist. -- `entries..apiKey`: Komfortfeld für Skills, die eine primäre env-Variable deklarieren (Klartext-String oder SecretRef-Objekt). +- `entries..enabled: false` deaktiviert einen Skill, selbst wenn er gebündelt/installiert ist. +- `entries..apiKey`: Komfortfeld für Skills, die eine primäre Env-Variable deklarieren (Klartext-String oder SecretRef-Objekt). --- @@ -2598,34 +2606,34 @@ Siehe [Lokale Modelle](/de/gateway/local-models). Kurz gesagt: Führen Sie ein g ``` - Geladen aus `~/.openclaw/extensions`, `/.openclaw/extensions` sowie `plugins.load.paths`. -- Discovery akzeptiert native OpenClaw-Plugins sowie kompatible Codex- und Claude-Bundles, einschließlich manifestloser Claude-Bundles im Standardlayout. -- **Konfigurationsänderungen erfordern einen Neustart des Gateways.** -- `allow`: optionale Allowlist (nur aufgeführte Plugins werden geladen). `deny` gewinnt. -- `plugins.entries..apiKey`: Komfortfeld für API key auf Plugin-Ebene (wenn vom Plugin unterstützt). -- `plugins.entries..env`: Plugin-spezifische env-Variablenzuordnung. -- `plugins.entries..hooks.allowPromptInjection`: wenn `false`, blockiert der Core `before_prompt_build` und ignoriert prompt-mutierende Felder aus Legacy-`before_agent_start`, während Legacy-`modelOverride` und `providerOverride` erhalten bleiben. Gilt für native Plugin-Hooks und unterstützte hook-Verzeichnisse aus Bundles. -- `plugins.entries..subagent.allowModelOverride`: diesem Plugin explizit vertrauen, pro Lauf `provider`- und `model`-Overrides für Hintergrund-Subagent-Läufe anzufordern. -- `plugins.entries..subagent.allowedModels`: optionale Allowlist kanonischer Ziele `provider/model` für vertrauenswürdige Subagent-Overrides. Verwenden Sie `"*"` nur dann, wenn Sie absichtlich jedes Modell zulassen möchten. -- `plugins.entries..config`: plugindefiniertes Konfigurationsobjekt (wenn verfügbar anhand des nativen OpenClaw-Plugin-Schemas validiert). -- `plugins.entries.firecrawl.config.webFetch`: Firecrawl-Einstellungen für den Web-Fetch-Anbieter. - - `apiKey`: Firecrawl-API key (akzeptiert SecretRef). Fällt auf `plugins.entries.firecrawl.config.webSearch.apiKey`, Legacy-`tools.web.fetch.firecrawl.apiKey` oder die env-Variable `FIRECRAWL_API_KEY` zurück. +- Discovery akzeptiert native OpenClaw-Plugins sowie kompatible Codex-Bundles und Claude-Bundles, einschließlich Claude-Bundles im Standardlayout ohne Manifest. +- **Konfigurationsänderungen erfordern einen Gateway-Neustart.** +- `allow`: optionale Allowlist (nur aufgelistete Plugins werden geladen). `deny` gewinnt. +- `plugins.entries..apiKey`: Komfortfeld für API-Key auf Plugin-Ebene (wenn vom Plugin unterstützt). +- `plugins.entries..env`: pluginspezifische Env-Variablen-Map. +- `plugins.entries..hooks.allowPromptInjection`: wenn `false`, blockiert Core `before_prompt_build` und ignoriert promptverändernde Felder aus altem `before_agent_start`, während alte `modelOverride` und `providerOverride` beibehalten werden. Gilt für native Plugin-Hooks und unterstützte Bundle-Hook-Verzeichnisse. +- `plugins.entries..subagent.allowModelOverride`: diesem Plugin explizit vertrauen, pro Lauf Überschreibungen für `provider` und `model` bei Hintergrund-Subagent-Läufen anzufordern. +- `plugins.entries..subagent.allowedModels`: optionale Allowlist kanonischer `provider/model`-Ziele für vertrauenswürdige Subagent-Überschreibungen. Verwenden Sie `"*"` nur, wenn Sie bewusst jedes Modell zulassen möchten. +- `plugins.entries..config`: plugindefiniertes Konfigurationsobjekt (validiert anhand des nativen OpenClaw-Plugin-Schemas, falls verfügbar). +- `plugins.entries.firecrawl.config.webFetch`: Firecrawl-Einstellungen für den Web-Fetch-Provider. + - `apiKey`: Firecrawl-API-Key (akzeptiert SecretRef). Fällt auf `plugins.entries.firecrawl.config.webSearch.apiKey`, altes `tools.web.fetch.firecrawl.apiKey` oder die Env-Variable `FIRECRAWL_API_KEY` zurück. - `baseUrl`: Firecrawl-API-Base-URL (Standard: `https://api.firecrawl.dev`). - - `onlyMainContent`: nur Hauptinhalt aus Seiten extrahieren (Standard: `true`). + - `onlyMainContent`: nur den Hauptinhalt von Seiten extrahieren (Standard: `true`). - `maxAgeMs`: maximales Cache-Alter in Millisekunden (Standard: `172800000` / 2 Tage). - `timeoutSeconds`: Timeout des Scrape-Requests in Sekunden (Standard: `60`). - `plugins.entries.xai.config.xSearch`: Einstellungen für xAI X Search (Grok-Websuche). - - `enabled`: den X-Search-Anbieter aktivieren. - - `model`: Grok-Modell, das für die Suche verwendet wird (z. B. `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: Einstellungen für Memory-Dreaming (experimentell). Siehe [Dreaming](/concepts/dreaming) für Phasen und Schwellenwerte. - - `enabled`: Hauptschalter für Dreaming (Standard `false`). - - `frequency`: Cron-Kadenz für jeden vollständigen Dreaming-Durchlauf (Standardmäßig `"0 3 * * *"`). - - Phasenrichtlinie und Schwellenwerte sind Implementierungsdetails (keine benutzerorientierten Konfigurationsschlüssel). + - `enabled`: den X-Search-Provider aktivieren. + - `model`: Grok-Modell für die Suche (z. B. `"grok-4-1-fast"`). +- `plugins.entries.memory-core.config.dreaming`: Einstellungen für Memory Dreaming (experimentell). Siehe [Dreaming](/de/concepts/dreaming) für Phasen und Schwellenwerte. + - `enabled`: globaler Dreaming-Schalter (Standard `false`). + - `frequency`: Cron-Taktung für jeden vollständigen Dreaming-Durchlauf (standardmäßig `"0 3 * * *"`). + - Phasenrichtlinie und Schwellenwerte sind Implementierungsdetails (keine benutzerseitigen Konfigurationsschlüssel). - Aktivierte Claude-Bundle-Plugins können auch eingebettete Pi-Standards aus `settings.json` beitragen; OpenClaw wendet diese als bereinigte Agent-Einstellungen an, nicht als rohe OpenClaw-Konfigurations-Patches. -- `plugins.slots.memory`: aktive Memory-Plugin-ID auswählen oder `"none"`, um Memory-Plugins zu deaktivieren. -- `plugins.slots.contextEngine`: aktive Kontext-Engine-Plugin-ID auswählen; Standard ist `"legacy"`, sofern Sie keine andere Engine installieren und auswählen. -- `plugins.installs`: CLI-verwaltete Installationsmetadaten, die von `openclaw plugins update` verwendet werden. +- `plugins.slots.memory`: aktive Memory-Plugin-ID auswählen oder `"none"` setzen, um Memory-Plugins zu deaktivieren. +- `plugins.slots.contextEngine`: aktive Context-Engine-Plugin-ID auswählen; Standard ist `"legacy"`, sofern Sie keine andere Engine installieren und auswählen. +- `plugins.installs`: CLI-verwaltete Installationsmetadaten, verwendet von `openclaw plugins update`. - Enthält `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`. - - Behandeln Sie `plugins.installs.*` als verwalteten Zustand; bevorzugen Sie CLI-Befehle vor manuellen Bearbeitungen. + - Behandeln Sie `plugins.installs.*` als verwalteten Zustand; bevorzugen Sie CLI-Befehle gegenüber manuellen Änderungen. Siehe [Plugins](/de/tools/plugin). @@ -2640,8 +2648,8 @@ Siehe [Plugins](/de/tools/plugin). evaluateEnabled: true, defaultProfile: "user", ssrfPolicy: { - dangerouslyAllowPrivateNetwork: true, // Standard: Modus für vertrauenswürdige Netzwerke - // allowPrivateNetwork: true, // Legacy-Alias + dangerouslyAllowPrivateNetwork: true, // Standard im Modell für vertrauenswürdige Netzwerke + // allowPrivateNetwork: true, // alter Alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, @@ -2669,22 +2677,27 @@ Siehe [Plugins](/de/tools/plugin). - `evaluateEnabled: false` deaktiviert `act:evaluate` und `wait --fn`. - `ssrfPolicy.dangerouslyAllowPrivateNetwork` ist standardmäßig `true`, wenn nicht gesetzt (Modell für vertrauenswürdige Netzwerke). -- Setzen Sie `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` für strikt öffentliche Browser-Navigation. -- Im strikten Modus unterliegen Remote-CDP-Profilendpunkte (`profiles.*.cdpUrl`) derselben Sperre für private Netzwerke bei Erreichbarkeits-/Discovery-Prüfungen. -- `ssrfPolicy.allowPrivateNetwork` bleibt als Legacy-Alias unterstützt. +- Setzen Sie `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` für strikte Browser-Navigation nur auf öffentliche Ziele. +- Im strikten Modus unterliegen Endpunkte entfernter CDP-Profile (`profiles.*.cdpUrl`) denselben Sperren für private Netzwerke bei Reachability-/Discovery-Prüfungen. +- `ssrfPolicy.allowPrivateNetwork` bleibt als alter Alias unterstützt. - Im strikten Modus verwenden Sie `ssrfPolicy.hostnameAllowlist` und `ssrfPolicy.allowedHostnames` für explizite Ausnahmen. - Remote-Profile sind nur zum Anhängen (Start/Stopp/Reset deaktiviert). - `profiles.*.cdpUrl` akzeptiert `http://`, `https://`, `ws://` und `wss://`. Verwenden Sie HTTP(S), wenn OpenClaw `/json/version` erkennen soll; verwenden Sie WS(S), - wenn Ihr Anbieter Ihnen direkt eine DevTools-WebSocket-URL gibt. + wenn Ihr Anbieter Ihnen eine direkte DevTools-WebSocket-URL gibt. - `existing-session`-Profile sind nur hostseitig und verwenden Chrome MCP statt CDP. -- `existing-session`-Profile können `userDataDir` setzen, um auf ein bestimmtes Profil eines Chromium-basierten Browsers zu zielen, etwa Brave oder Edge. -- `existing-session`-Profile behalten die aktuellen Routenlimits von Chrome MCP: - snapshot-/ref-basierte Aktionen statt CSS-Selector-Targeting, Hooks für einen einzelnen Datei-Upload, keine Dialog-Timeout-Overrides, kein `wait --load networkidle` und kein `responsebody`, PDF-Export, Download-Interception oder Batch-Aktionen. -- Lokal verwaltete `openclaw`-Profile weisen `cdpPort` und `cdpUrl` automatisch zu; setzen Sie `cdpUrl` nur explizit für Remote-CDP. -- Auto-Erkennungsreihenfolge: Standardbrowser, falls Chromium-basiert → Chrome → Brave → Edge → Chromium → Chrome Canary. -- Control-Service: nur loopback (Port wird aus `gateway.port` abgeleitet, Standard `18791`). -- `extraArgs` hängt zusätzliche Start-Flags an den lokalen Chromium-Start an (zum Beispiel `--disable-gpu`, Fenstergröße oder Debug-Flags). +- `existing-session`-Profile können `userDataDir` setzen, um ein bestimmtes + Chromium-basiertes Browserprofil wie Brave oder Edge anzusteuern. +- `existing-session`-Profile behalten die aktuellen Begrenzungen des Chrome-MCP-Routings: + snapshot/ref-basierte Aktionen statt CSS-Selektor-Targeting, Hooks für Einzeldatei-Uploads, + keine Dialog-Timeout-Überschreibungen, kein `wait --load networkidle` und kein + `responsebody`, PDF-Export, Download-Abfangen oder Batch-Aktionen. +- Lokal verwaltete `openclaw`-Profile weisen `cdpPort` und `cdpUrl` automatisch zu; setzen Sie + `cdpUrl` nur explizit für Remote-CDP. +- Reihenfolge der Auto-Erkennung: Standardbrowser, falls Chromium-basiert → Chrome → Brave → Edge → Chromium → Chrome Canary. +- Control-Service: nur loopback (Port abgeleitet von `gateway.port`, Standard `18791`). +- `extraArgs` hängt zusätzliche Start-Flags an den lokalen Chromium-Start an (zum Beispiel + `--disable-gpu`, Fenstergröße oder Debug-Flags). --- @@ -2702,8 +2715,8 @@ Siehe [Plugins](/de/tools/plugin). } ``` -- `seamColor`: Akzentfarbe für das Chrome der nativen App-UI (Talk-Mode-Blasenfärbung usw.). -- `assistant`: Override der Identität in der Control UI. Fällt auf die aktive Agent-Identität zurück. +- `seamColor`: Akzentfarbe für die native App-UI-Chrome (Farbton der Talk-Mode-Blase usw.). +- `assistant`: Identity-Überschreibung für die Control UI. Fällt auf die aktive Agent-Identität zurück. --- @@ -2737,7 +2750,7 @@ Siehe [Plugins](/de/tools/plugin). basePath: "/openclaw", // root: "dist/control-ui", // allowedOrigins: ["https://control.example.com"], // erforderlich für nicht-loopback Control UI - // dangerouslyAllowHostHeaderOriginFallback: false, // gefährlicher Origin-Fallback-Modus über Host-Header + // dangerouslyAllowHostHeaderOriginFallback: false, // gefährlicher Host-Header-Origin-Fallback-Modus // allowInsecureAuth: false, // dangerouslyDisableDeviceAuth: false, }, @@ -2770,25 +2783,21 @@ Siehe [Plugins](/de/tools/plugin). -- `mode`: `local` (Gateway ausführen) oder `remote` (mit Remote-Gateway verbinden). Gateway verweigert den Start, sofern nicht `local`. -- `port`: einzelner multiplexter Port für WS + HTTP. Priorität: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. +- `mode`: `local` (Gateway ausführen) oder `remote` (mit entferntem Gateway verbinden). Das Gateway verweigert den Start, sofern nicht `local`. +- `port`: einzelner multiplexierter Port für WS + HTTP. Priorität: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. - `bind`: `auto`, `loopback` (Standard), `lan` (`0.0.0.0`), `tailnet` (nur Tailscale-IP) oder `custom`. -- **Legacy-Bind-Aliasse**: Verwenden Sie Bind-Modus-Werte in `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), nicht Host-Aliasse (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). -- **Docker-Hinweis**: Das Standard-Binding `loopback` lauscht innerhalb des Containers auf `127.0.0.1`. Bei Docker-Bridge-Networking (`-p 18789:18789`) kommt der Traffic über `eth0`, sodass das Gateway nicht erreichbar ist. Verwenden Sie `--network host` oder setzen Sie `bind: "lan"` (oder `bind: "custom"` mit `customBindHost: "0.0.0.0"`), um auf allen Schnittstellen zu lauschen. -- **Auth**: standardmäßig erforderlich. Nicht-loopback-Bindings erfordern Gateway-Auth. In der Praxis bedeutet das ein gemeinsames Token/Passwort oder einen identitätsbewussten Reverse-Proxy mit `gateway.auth.mode: "trusted-proxy"`. Der Onboarding-Assistent erzeugt standardmäßig ein Token. -- Wenn sowohl `gateway.auth.token` als auch `gateway.auth.password` konfiguriert sind (einschließlich SecretRefs), setzen Sie `gateway.auth.mode` explizit auf `token` oder `password`. Start- und Service-Installations-/Reparaturabläufe schlagen fehl, wenn beide konfiguriert sind und der Modus nicht gesetzt ist. -- `gateway.auth.mode: "none"`: expliziter Modus ohne Auth. Nur für vertrauenswürdige lokale loopback-Setups verwenden; diese Option wird in Onboarding-Prompts bewusst nicht angeboten. -- `gateway.auth.mode: "trusted-proxy"`: Auth an einen identitätsbewussten Reverse-Proxy delegieren und Identitätsheader von `gateway.trustedProxies` vertrauen (siehe [Trusted Proxy Auth](/de/gateway/trusted-proxy-auth)). Dieser Modus erwartet eine **nicht-loopback** Proxy-Quelle; Reverse-Proxies auf demselben Host über loopback erfüllen trusted-proxy auth nicht. -- `gateway.auth.allowTailscale`: wenn `true`, können Tailscale-Serve-Identitätsheader die Control UI-/WebSocket-Auth erfüllen (verifiziert via `tailscale whois`). HTTP-API-Endpunkte verwenden diese Tailscale-Header-Auth **nicht**; sie folgen stattdessen dem normalen HTTP-Auth-Modus des Gateways. Dieser tokenlose Flow setzt voraus, dass dem Gateway-Host vertraut wird. Standard ist `true`, wenn `tailscale.mode = "serve"`. -- `gateway.auth.rateLimit`: optionaler Limiter für fehlgeschlagene Authentifizierungen. Gilt pro Client-IP und pro Auth-Scope (gemeinsames Geheimnis und Device-Token werden unabhängig verfolgt). Blockierte Versuche geben `429` + `Retry-After` zurück. - - Auf dem asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dasselbe `{scope, clientIp}` vor dem Schreiben des Fehlers serialisiert. Gleichzeitige fehlerhafte Versuche desselben Clients können daher beim zweiten Request den Limiter auslösen, statt dass beide einfach als Mismatch durchrutschen. - - `gateway.auth.rateLimit.exemptLoopback` ist standardmäßig `true`; setzen Sie `false`, wenn Sie bewusst möchten, dass auch localhost-Traffic ratenbegrenzt wird (für Test-Setups oder strikte Proxy-Deployments). -- Browser-originierte WS-Auth-Versuche werden immer mit deaktivierter Loopback-Ausnahme gedrosselt (Defense in Depth gegen Browser-basierte Brute-Force-Angriffe auf localhost). -- Auf loopback werden diese browser-originieren Sperren pro normalisiertem `Origin`-Wert isoliert, sodass wiederholte Fehlschläge von einer localhost-Origin nicht automatisch eine andere Origin sperren. -- `tailscale.mode`: `serve` (nur tailnet, loopback-Binding) oder `funnel` (öffentlich, Auth erforderlich). -- `controlUi.allowedOrigins`: explizite Browser-Origin-Allowlist für Gateway-WebSocket-Verbindungen. Erforderlich, wenn Browser-Clients von nicht-loopback Origins erwartet werden. -- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: gefährlicher Modus, der Host-Header-Origin-Fallback für Deployments aktiviert, die sich bewusst auf Host-Header-Origin-Richtlinien verlassen. -- `remote.transport`: `ssh` (Standard) oder `direct` (ws/wss). Für `direct` muss `remote.url` `ws://` oder `wss://` sein. -- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: clientseitiger Break-Glass-Override, der Klartext-`ws://` zu vertrauenswürdigen privaten Netzwerk-IP-Adressen erlaubt; Standard bleibt loopback-only für Klartext. -- `gateway.remote.token` / `.password` sind Anmeldedatenfelder für den Remote-Client. Sie konfigurieren Gateway-Auth nicht eigenständig. -- `gateway.push.apns.relay.baseUrl`: Basis-HTTPS-URL für das externe APNs-Relay, das von offiziellen/TestFlight-i \ No newline at end of file +- **Alte Bind-Aliasse**: Verwenden Sie Bind-Modus-Werte in `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), nicht Host-Aliasse (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). +- **Docker-Hinweis**: Das Standard-Bind `loopback` lauscht innerhalb des Containers auf `127.0.0.1`. Bei Docker-Bridge-Networking (`-p 18789:18789`) kommt Verkehr auf `eth0` an, daher ist das Gateway nicht erreichbar. Verwenden Sie `--network host`, oder setzen Sie `bind: "lan"` (oder `bind: "custom"` mit `customBindHost: "0.0.0.0"`), um auf allen Interfaces zu lauschen. +- **Auth**: standardmäßig erforderlich. Nicht-Loopback-Bindings erfordern Gateway-Authentifizierung. In der Praxis bedeutet das ein gemeinsames Token/Passwort oder einen Identity-aware Reverse Proxy mit `gateway.auth.mode: "trusted-proxy"`. Der Onboarding-Assistent generiert standardmäßig ein Token. +- Wenn sowohl `gateway.auth.token` als auch `gateway.auth.password` konfiguriert sind (einschließlich SecretRefs), setzen Sie `gateway.auth.mode` explizit auf `token` oder `password`. Start- sowie Service-Installations-/Reparatur-Flows schlagen fehl, wenn beide konfiguriert sind und der Modus nicht gesetzt ist. +- `gateway.auth.mode: "none"`: expliziter No-Auth-Modus. Verwenden Sie ihn nur für vertrauenswürdige lokale loopback-Setups; diese Option wird bewusst nicht in Onboarding-Prompts angeboten. +- `gateway.auth.mode: "trusted-proxy"`: delegiert Auth an einen identity-aware Reverse Proxy und vertraut Identitäts-Headern aus `gateway.trustedProxies` (siehe [Trusted Proxy Auth](/de/gateway/trusted-proxy-auth)). Dieser Modus erwartet eine **nicht-loopback** Proxy-Quelle; Reverse Proxys auf demselben Host über loopback erfüllen die trusted-proxy-Authentifizierung nicht. +- `gateway.auth.allowTailscale`: wenn `true`, können Tailscale-Serve-Identity-Header die Authentifizierung für Control UI/WebSocket erfüllen (verifiziert über `tailscale whois`). HTTP-API-Endpunkte verwenden **nicht** diese Tailscale-Header-Authentifizierung; sie folgen stattdessen dem normalen HTTP-Auth-Modus des Gateways. Dieser tokenlose Flow setzt voraus, dass dem Gateway-Host vertraut wird. Standard ist `true`, wenn `tailscale.mode = "serve"`. +- `gateway.auth.rateLimit`: optionaler Limiter für fehlgeschlagene Authentifizierungen. Gilt pro Client-IP und pro Auth-Scope (gemeinsames Secret und Device-Token werden unabhängig verfolgt). Blockierte Versuche liefern `429` + `Retry-After`. + - Auf dem asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dasselbe `{scope, clientIp}` vor dem Schreiben des Fehlers serialisiert. Gleichzeitige fehlerhafte Versuche desselben Clients können den Limiter daher bereits bei der zweiten Anfrage auslösen, statt dass beide als einfache Fehlmismatchs durchrutschen. + - `gateway.auth.rateLimit.exemptLoopback` ist standardmäßig `true`; setzen Sie `false`, wenn Sie absichtlich möchten, dass auch localhost-Traffic ratenbegrenzt wird (für Test-Setups oder strikte Proxy-Deployments). +- Browser-Origin-WS-Authentifizierungsversuche werden immer mit deaktivierter Loopback-Ausnahme gedrosselt (Defense-in-Depth gegen browserbasierte Brute-Force-Angriffe auf localhost). +- Auf loopback werden diese browser-origin-basierten Sperren pro normalisiertem `Origin`- + Wert isoliert, sodass wiederholte Fehlschläge von einem localhost-Origin nicht automatisch + einen anderen Origin aussperren. +- `tailscale.mode`: `serve \ No newline at end of file diff --git a/docs/de/plugins/sdk-migration.md b/docs/de/plugins/sdk-migration.md index fee4cfb05..8a8110c6b 100644 --- a/docs/de/plugins/sdk-migration.md +++ b/docs/de/plugins/sdk-migration.md @@ -5,100 +5,78 @@ read_when: - Sie aktualisieren ein Plugin auf die moderne Plugin-Architektur - Sie pflegen ein externes OpenClaw-Plugin sidebarTitle: Migrate to SDK -summary: Von der veralteten Rückwärtskompatibilitätsschicht auf das moderne Plugin SDK migrieren +summary: Migrieren Sie von der veralteten Abwärtskompatibilitätsschicht zum modernen Plugin SDK title: Migration des Plugin SDK x-i18n: - generated_at: "2026-04-06T03:10:34Z" + generated_at: "2026-04-06T06:22:04Z" model: gpt-5.4 provider: openai - source_hash: b71ce69b30c3bb02da1b263b1d11dc3214deae5f6fc708515e23b5a1c7bb7c8f + source_hash: 94f12d1376edd8184714cc4dbea4a88fa8ed652f65e9365ede6176f3bf441b33 source_path: plugins/sdk-migration.md workflow: 15 --- # Migration des Plugin SDK -OpenClaw hat sich von einer breiten Rückwärtskompatibilitätsschicht zu einer modernen Plugin-Architektur -mit fokussierten, dokumentierten Imports entwickelt. Wenn Ihr Plugin vor -der neuen Architektur erstellt wurde, hilft Ihnen dieser Leitfaden bei der Migration. +OpenClaw ist von einer umfassenden Abwärtskompatibilitätsschicht zu einer modernen Plugin-Architektur mit gezielten, dokumentierten Imports übergegangen. Wenn Ihr Plugin vor der neuen Architektur erstellt wurde, hilft Ihnen diese Anleitung bei der Migration. ## Was sich ändert -Das alte Plugin-System stellte zwei weit offene Oberflächen bereit, über die Plugins -alles importieren konnten, was sie über einen einzigen Einstiegspunkt benötigten: +Das alte Plugin-System stellte zwei weit offene Oberflächen bereit, über die Plugins alles importieren konnten, was sie über einen einzigen Einstiegspunkt benötigten: -- **`openclaw/plugin-sdk/compat`** — ein einzelner Import, der Dutzende von - Hilfsfunktionen re-exportierte. Er wurde eingeführt, damit ältere hook-basierte Plugins weiter funktionieren, - während die neue Plugin-Architektur aufgebaut wurde. -- **`openclaw/extension-api`** — eine Brücke, die Plugins direkten Zugriff auf - hostseitige Hilfsfunktionen wie den eingebetteten Agent-Runner gab. +- **`openclaw/plugin-sdk/compat`** — ein einzelner Import, der Dutzende von Helfern re-exportierte. Er wurde eingeführt, damit ältere hook-basierte Plugins weiter funktionierten, während die neue Plugin-Architektur entwickelt wurde. +- **`openclaw/extension-api`** — eine Brücke, die Plugins direkten Zugriff auf hostseitige Helfer wie den eingebetteten Agent-Runner gab. -Beide Oberflächen sind jetzt **veraltet**. Sie funktionieren zur Laufzeit weiterhin, aber neue -Plugins dürfen sie nicht verwenden, und bestehende Plugins sollten vor der nächsten -Hauptversion migrieren, in der sie entfernt werden. +Beide Oberflächen sind jetzt **veraltet**. Sie funktionieren zur Laufzeit weiterhin, aber neue Plugins dürfen sie nicht verwenden, und bestehende Plugins sollten migrieren, bevor sie in der nächsten Hauptversion entfernt werden. - Die Rückwärtskompatibilitätsschicht wird in einer zukünftigen Hauptversion entfernt. - Plugins, die weiterhin aus diesen Oberflächen importieren, funktionieren dann nicht mehr. + Die Abwärtskompatibilitätsschicht wird in einer zukünftigen Hauptversion entfernt. + Plugins, die weiterhin aus diesen Oberflächen importieren, werden dann nicht mehr funktionieren. ## Warum sich das geändert hat Der alte Ansatz verursachte Probleme: -- **Langsamer Start** — der Import einer Hilfsfunktion lud Dutzende nicht zusammenhängender Module -- **Zirkuläre Abhängigkeiten** — breite Re-Exports machten es leicht, Import-Zyklen zu erzeugen +- **Langsamer Start** — der Import eines einzelnen Helfers lud Dutzende nicht zusammenhängender Module +- **Zirkuläre Abhängigkeiten** — umfangreiche Re-Exports machten es leicht, Importzyklen zu erzeugen - **Unklare API-Oberfläche** — es gab keine Möglichkeit zu erkennen, welche Exporte stabil und welche intern waren -Das moderne Plugin SDK behebt dies: Jeder Importpfad (`openclaw/plugin-sdk/\`) -ist ein kleines, in sich geschlossenes Modul mit klarem Zweck und dokumentiertem Vertrag. +Das moderne Plugin SDK behebt das: Jeder Importpfad (`openclaw/plugin-sdk/\`) ist ein kleines, in sich geschlossenes Modul mit einem klaren Zweck und dokumentiertem Vertrag. -Veraltete bequeme Provider-Seams für gebündelte Kanäle sind ebenfalls verschwunden. Imports -wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, -`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, -kanalmarkenspezifische Helper-Seams und -`openclaw/plugin-sdk/telegram-core` waren private Monorepo-Abkürzungen, keine -stabilen Plugin-Verträge. Verwenden Sie stattdessen schmale generische SDK-Subpaths. Innerhalb des -gebündelten Plugin-Workspace behalten Sie Provider-eigene Hilfsfunktionen in der eigenen -`api.ts` oder `runtime-api.ts` dieses Plugins. +Veraltete Convenience-Seams für Provider bei gebündelten Kanälen sind ebenfalls entfernt worden. Imports wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, kanalmarkenspezifische Helper-Seams und `openclaw/plugin-sdk/telegram-core` waren private Mono-Repo-Abkürzungen, keine stabilen Plugin-Verträge. Verwenden Sie stattdessen schmale generische SDK-Subpaths. Innerhalb des gebündelten Plugin-Workspaces sollten Provider-eigene Helfer im eigenen `api.ts` oder `runtime-api.ts` dieses Plugins bleiben. Aktuelle Beispiele für gebündelte Provider: -- Anthropic behält Claude-spezifische Stream-Hilfsfunktionen in seiner eigenen `api.ts` / - `contract-api.ts`-Seam -- OpenAI behält Provider-Builder, Helfer für Standardmodelle und Realtime-Provider-Builder - in seiner eigenen `api.ts` -- OpenRouter behält Provider-Builder sowie Hilfsfunktionen für Onboarding/Konfiguration in seiner eigenen - `api.ts` +- Anthropic behält Claude-spezifische Stream-Helfer in seinem eigenen `api.ts` / `contract-api.ts`-Seam +- OpenAI behält Provider-Builder, Helfer für Standardmodelle und Realtime-Provider-Builder in seinem eigenen `api.ts` +- OpenRouter behält Provider-Builder sowie Onboarding-/Konfigurationshelfer in seinem eigenen `api.ts` ## So migrieren Sie - - Wenn Ihr Plugin `openclaw/plugin-sdk/windows-spawn` verwendet, schlagen nicht aufgelöste Windows- - `.cmd`/`.bat`-Wrapper jetzt fail-closed fehl, sofern Sie nicht explizit - `allowShellFallback: true` übergeben. + + Wenn Ihr Plugin `openclaw/plugin-sdk/windows-spawn` verwendet, schlagen nicht aufgelöste Windows-Wrapper vom Typ `.cmd`/`.bat` jetzt standardmäßig fehl, sofern Sie nicht ausdrücklich `allowShellFallback: true` übergeben. ```typescript - // Before + // Vorher const program = applyWindowsSpawnProgramPolicy({ candidate }); - // After + // Nachher const program = applyWindowsSpawnProgramPolicy({ candidate, - // Only set this for trusted compatibility callers that intentionally - // accept shell-mediated fallback. + // Setzen Sie dies nur für vertrauenswürdige Kompatibilitätsaufrufer, + // die bewusst shell-vermittelten Fallback akzeptieren. allowShellFallback: true, }); ``` - Wenn Ihr Aufrufer nicht absichtlich auf Shell-Fallback angewiesen ist, setzen Sie - `allowShellFallback` nicht und behandeln Sie stattdessen den ausgelösten Fehler. + Wenn Ihr Aufrufer nicht bewusst auf Shell-Fallback angewiesen ist, setzen Sie `allowShellFallback` nicht und behandeln Sie stattdessen den ausgelösten Fehler. - Durchsuchen Sie Ihr Plugin nach Imports aus einer der beiden veralteten Oberflächen: + Suchen Sie in Ihrem Plugin nach Imports aus einer der beiden veralteten Oberflächen: ```bash grep -r "plugin-sdk/compat" my-plugin/ @@ -107,36 +85,35 @@ Aktuelle Beispiele für gebündelte Provider: - - Jeder Export aus der alten Oberfläche wird auf einen spezifischen modernen Importpfad abgebildet: + + Jeder Export aus der alten Oberfläche entspricht einem bestimmten modernen Importpfad: ```typescript - // Before (deprecated backwards-compatibility layer) + // Vorher (veraltete Abwärtskompatibilitätsschicht) import { createChannelReplyPipeline, createPluginRuntimeStore, resolveControlCommandGate, } from "openclaw/plugin-sdk/compat"; - // After (modern focused imports) + // Nachher (moderne gezielte Imports) import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline"; import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store"; import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth"; ``` - Für hostseitige Hilfsfunktionen verwenden Sie die injizierte Plugin-Runtime, anstatt direkt - zu importieren: + Verwenden Sie für hostseitige Helfer die injizierte Plugin-Laufzeitumgebung, anstatt direkt zu importieren: ```typescript - // Before (deprecated extension-api bridge) + // Vorher (veraltete extension-api-Brücke) import { runEmbeddedPiAgent } from "openclaw/extension-api"; const result = await runEmbeddedPiAgent({ sessionId, prompt }); - // After (injected runtime) + // Nachher (injizierte Laufzeitumgebung) const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt }); ``` - Dasselbe Muster gilt für andere veraltete Bridge-Hilfsfunktionen: + Dasselbe Muster gilt für andere veraltete Bridge-Helfer: | Alter Import | Modernes Äquivalent | | --- | --- | @@ -146,7 +123,7 @@ Aktuelle Beispiele für gebündelte Provider: | `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` | | `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` | | `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` | - | Sitzungsstore-Hilfsfunktionen | `api.runtime.agent.session.*` | + | Session-Store-Helfer | `api.runtime.agent.session.*` | @@ -160,168 +137,169 @@ Aktuelle Beispiele für gebündelte Provider: ## Referenz der Importpfade - + | Importpfad | Zweck | Wichtige Exporte | | --- | --- | --- | - | `plugin-sdk/plugin-entry` | Kanonische Hilfsfunktion für Plugin-Einstiegspunkt | `definePluginEntry` | - | `plugin-sdk/core` | Veralteter Sammel-Re-Export für Definitionen/Builder von Kanaleinstiegspunkten | `defineChannelPluginEntry`, `createChatChannelPlugin` | - | `plugin-sdk/config-schema` | Export des Root-Konfigurationsschemas | `OpenClawSchema` | - | `plugin-sdk/provider-entry` | Hilfsfunktion für Single-Provider-Einstiegspunkt | `defineSingleProviderPluginEntry` | - | `plugin-sdk/channel-core` | Fokussierte Definitionen und Builder für Kanaleinstiegspunkte | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | - | `plugin-sdk/setup` | Gemeinsame Hilfsfunktionen für Setup-Assistenten | Allowlist-Prompts, Builder für Setup-Status | - | `plugin-sdk/setup-runtime` | Runtime-Hilfsfunktionen zur Setup-Zeit | Import-sichere Setup-Patch-Adapter, Hilfsfunktionen für Lookup-Hinweise, `promptResolvedAllowFrom`, `splitSetupEntries`, delegierte Setup-Proxys | - | `plugin-sdk/setup-adapter-runtime` | Hilfsfunktionen für Setup-Adapter | `createEnvPatchedAccountSetupAdapter` | - | `plugin-sdk/setup-tools` | Hilfsfunktionen für Setup-Tooling | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Hilfsfunktionen für mehrere Konten | Hilfsfunktionen für Kontolisten/Konfiguration/Action-Gates | - | `plugin-sdk/account-id` | Hilfsfunktionen für Account-IDs | `DEFAULT_ACCOUNT_ID`, Normalisierung von Account-IDs | - | `plugin-sdk/account-resolution` | Hilfsfunktionen für Kontosuche | Kontosuche + Hilfsfunktionen für Standard-Fallback | - | `plugin-sdk/account-helpers` | Schmale Hilfsfunktionen für Konten | Hilfsfunktionen für Kontolisten/Kontoaktionen | - | `plugin-sdk/channel-setup` | Adapter für Setup-Assistenten | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | - | `plugin-sdk/channel-pairing` | Primitive für DM-Kopplung | `createChannelPairingController` | - | `plugin-sdk/channel-reply-pipeline` | Verdrahtung für Antwortpräfix + Eingabeanzeige | `createChannelReplyPipeline` | - | `plugin-sdk/channel-config-helpers` | Factorys für Konfigurationsadapter | `createHybridChannelConfigAdapter` | - | `plugin-sdk/channel-config-schema` | Builder für Konfigurationsschemas | Typen für Kanalkonfigurationsschemas | - | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für Telegram-Befehlskonfiguration | Normalisierung von Befehlsnamen, Kürzen von Beschreibungen, Validierung von Duplikaten/Konflikten | + | `plugin-sdk/plugin-entry` | Kanonischer Plugin-Entry-Helfer | `definePluginEntry` | + | `plugin-sdk/core` | Veralteter umfassender Re-Export für Channel-Entry-Definitionen/-Builder | `defineChannelPluginEntry`, `createChatChannelPlugin` | + | `plugin-sdk/config-schema` | Root-Config-Schema-Export | `OpenClawSchema` | + | `plugin-sdk/provider-entry` | Single-Provider-Entry-Helfer | `defineSingleProviderPluginEntry` | + | `plugin-sdk/channel-core` | Gezielte Channel-Entry-Definitionen und -Builder | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | + | `plugin-sdk/setup` | Gemeinsame Helfer für den Einrichtungsassistenten | Allowlist-Prompts, Builder für Einrichtungsstatus | + | `plugin-sdk/setup-runtime` | Laufzeithelfer für die Einrichtung | Importsichere Patch-Adapter für die Einrichtung, Helfer für Lookup-Hinweise, `promptResolvedAllowFrom`, `splitSetupEntries`, delegierte Setup-Proxys | + | `plugin-sdk/setup-adapter-runtime` | Helfer für Setup-Adapter | `createEnvPatchedAccountSetupAdapter` | + | `plugin-sdk/setup-tools` | Helfer für Einrichtungswerkzeuge | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | + | `plugin-sdk/account-core` | Helfer für mehrere Accounts | Helfer für Account-Liste/Config/Action-Gate | + | `plugin-sdk/account-id` | Helfer für Account-IDs | `DEFAULT_ACCOUNT_ID`, Normalisierung von Account-IDs | + | `plugin-sdk/account-resolution` | Helfer für die Account-Auflösung | Account-Lookup- und Standard-Fallback-Helfer | + | `plugin-sdk/account-helpers` | Schmale Account-Helfer | Helfer für Account-Listen/Account-Aktionen | + | `plugin-sdk/channel-setup` | Adapter für den Einrichtungsassistenten | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | + | `plugin-sdk/channel-pairing` | Grundbausteine für DM-Pairing | `createChannelPairingController` | + | `plugin-sdk/channel-reply-pipeline` | Verkabelung für Antwortpräfix + Tippstatus | `createChannelReplyPipeline` | + | `plugin-sdk/channel-config-helpers` | Fabriken für Config-Adapter | `createHybridChannelConfigAdapter` | + | `plugin-sdk/channel-config-schema` | Builder für Config-Schemata | Typen für Channel-Config-Schemata | + | `plugin-sdk/telegram-command-config` | Helfer für Telegram-Befehlskonfiguration | Normalisierung von Befehlsnamen, Kürzen von Beschreibungen, Validierung von Duplikaten/Konflikten | | `plugin-sdk/channel-policy` | Auflösung von Gruppen-/DM-Richtlinien | `resolveChannelGroupRequireMention` | - | `plugin-sdk/channel-lifecycle` | Verfolgung des Kontostatus | `createAccountStatusSink` | - | `plugin-sdk/inbound-envelope` | Hilfsfunktionen für Inbound-Umschläge | Gemeinsame Hilfsfunktionen für Route- + Umschlag-Builder | - | `plugin-sdk/inbound-reply-dispatch` | Hilfsfunktionen für eingehende Antworten | Gemeinsame Hilfsfunktionen für Aufzeichnung und Dispatch | - | `plugin-sdk/messaging-targets` | Parsen von Messaging-Zielen | Hilfsfunktionen zum Parsen/Abgleichen von Zielen | - | `plugin-sdk/outbound-media` | Hilfsfunktionen für ausgehende Medien | Gemeinsames Laden ausgehender Medien | - | `plugin-sdk/outbound-runtime` | Runtime-Hilfsfunktionen für Outbound | Hilfsfunktionen für ausgehende Identität/Sende-Delegation | - | `plugin-sdk/thread-bindings-runtime` | Hilfsfunktionen für Thread-Bindings | Hilfsfunktionen für Lebenszyklus und Adapter von Thread-Bindings | - | `plugin-sdk/agent-media-payload` | Veraltete Hilfsfunktionen für Medien-Payloads | Builder für Agent-Medien-Payloads für veraltete Feldlayouts | - | `plugin-sdk/channel-runtime` | Veralteter Kompatibilitäts-Shim | Nur veraltete Kanal-Runtime-Hilfsfunktionen | - | `plugin-sdk/channel-send-result` | Typen für Sendeergebnisse | Typen für Antwortergebnisse | + | `plugin-sdk/channel-lifecycle` | Nachverfolgung des Account-Status | `createAccountStatusSink` | + | `plugin-sdk/inbound-envelope` | Helfer für eingehende Envelopes | Gemeinsame Helfer für Route- und Envelope-Builder | + | `plugin-sdk/inbound-reply-dispatch` | Helfer für eingehende Antworten | Gemeinsame Helfer zum Aufzeichnen und Dispatchen | + | `plugin-sdk/messaging-targets` | Parsing von Messaging-Zielen | Helfer zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/outbound-media` | Helfer für ausgehende Medien | Gemeinsames Laden ausgehender Medien | + | `plugin-sdk/outbound-runtime` | Laufzeithelfer für ausgehende Vorgänge | Helfer für ausgehende Identität/Sende-Delegation | + | `plugin-sdk/thread-bindings-runtime` | Helfer für Thread-Bindings | Helfer für Thread-Binding-Lebenszyklus und Adapter | + | `plugin-sdk/agent-media-payload` | Veraltete Helfer für Medien-Payloads | Agent-Medien-Payload-Builder für veraltete Feldlayouts | + | `plugin-sdk/channel-runtime` | Veralteter Kompatibilitäts-Shim | Nur veraltete Laufzeit-Hilfsfunktionen für Channels | + | `plugin-sdk/channel-send-result` | Send-Result-Typen | Typen für Antwortergebnisse | | `plugin-sdk/runtime-store` | Persistenter Plugin-Speicher | `createPluginRuntimeStore` | - | `plugin-sdk/runtime` | Breite Runtime-Hilfsfunktionen | Hilfsfunktionen für Runtime/Logging/Backup/Plugin-Installation | - | `plugin-sdk/runtime-env` | Schmale Hilfsfunktionen für Runtime-Umgebung | Logger/Runtime-Umgebung, Timeout-, Retry- und Backoff-Hilfsfunktionen | - | `plugin-sdk/plugin-runtime` | Gemeinsame Plugin-Runtime-Hilfsfunktionen | Hilfsfunktionen für Plugin-Befehle/Hooks/HTTP/interaktive Funktionen | - | `plugin-sdk/hook-runtime` | Hilfsfunktionen für Hook-Pipelines | Gemeinsame Hilfsfunktionen für Webhook-/interne Hook-Pipelines | - | `plugin-sdk/lazy-runtime` | Hilfsfunktionen für Lazy Runtime | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | - | `plugin-sdk/process-runtime` | Prozesshilfsfunktionen | Gemeinsame Exec-Hilfsfunktionen | - | `plugin-sdk/cli-runtime` | CLI-Runtime-Hilfsfunktionen | Befehlsformatierung, Wartezeiten, Versionshilfsfunktionen | - | `plugin-sdk/gateway-runtime` | Gateway-Hilfsfunktionen | Gateway-Client und Hilfsfunktionen für Patches des Kanalstatus | - | `plugin-sdk/config-runtime` | Konfigurationshilfsfunktionen | Hilfsfunktionen zum Laden/Schreiben von Konfiguration | - | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für Telegram-Befehle | Fallback-stabile Hilfsfunktionen zur Telegram-Befehlsvalidierung, wenn die Vertragsoberfläche des gebündelten Telegram-Plugins nicht verfügbar ist | - | `plugin-sdk/approval-runtime` | Hilfsfunktionen für Genehmigungs-Prompts | Exec-/Plugin-Genehmigungs-Payload, Hilfsfunktionen für Genehmigungsfähigkeit/-profil, native Genehmigungs-Routing-/Runtime-Hilfsfunktionen | - | `plugin-sdk/approval-auth-runtime` | Hilfsfunktionen für Genehmigungs-Authentifizierung | Auflösung von Genehmigenden, Authentifizierung für Aktionen im selben Chat | - | `plugin-sdk/approval-client-runtime` | Hilfsfunktionen für Genehmigungs-Client | Hilfsfunktionen für Profile/Filter nativer Exec-Genehmigungen | - | `plugin-sdk/approval-delivery-runtime` | Hilfsfunktionen für Genehmigungszustellung | Adapter für native Genehmigungsfähigkeit/-zustellung | - | `plugin-sdk/approval-native-runtime` | Hilfsfunktionen für Genehmigungsziele | Hilfsfunktionen für native Genehmigungsziel-/Kontobindung | - | `plugin-sdk/approval-reply-runtime` | Hilfsfunktionen für Genehmigungsantworten | Hilfsfunktionen für Antwort-Payloads von Exec-/Plugin-Genehmigungen | - | `plugin-sdk/security-runtime` | Sicherheitshilfsfunktionen | Gemeinsame Hilfsfunktionen für Vertrauen, DM-Gating, externe Inhalte und Secret-Erfassung | - | `plugin-sdk/ssrf-policy` | Hilfsfunktionen für SSRF-Richtlinien | Hilfsfunktionen für Host-Allowlist und Richtlinien für private Netzwerke | - | `plugin-sdk/ssrf-runtime` | SSRF-Runtime-Hilfsfunktionen | Pinned-Dispatcher, Guarded Fetch, SSRF-Richtlinienhilfsfunktionen | - | `plugin-sdk/collection-runtime` | Hilfsfunktionen für begrenzten Cache | `pruneMapToMaxSize` | - | `plugin-sdk/diagnostic-runtime` | Hilfsfunktionen für Diagnose-Gating | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | - | `plugin-sdk/error-runtime` | Hilfsfunktionen zur Fehlerformatierung | `formatUncaughtError`, `isApprovalNotFoundError`, Hilfsfunktionen für Fehlergraphen | - | `plugin-sdk/fetch-runtime` | Wrapped Fetch-/Proxy-Hilfsfunktionen | `resolveFetch`, Proxy-Hilfsfunktionen | - | `plugin-sdk/host-runtime` | Hilfsfunktionen zur Host-Normalisierung | `normalizeHostname`, `normalizeScpRemoteHost` | - | `plugin-sdk/retry-runtime` | Retry-Hilfsfunktionen | `RetryConfig`, `retryAsync`, Policy-Runner | + | `plugin-sdk/runtime` | Umfassende Laufzeithelfer | Laufzeit-/Logging-/Backup-/Plugin-Installationshelfer | + | `plugin-sdk/runtime-env` | Schmale Helfer für die Laufzeitumgebung | Logger-/Laufzeitumgebungs-, Timeout-, Retry- und Backoff-Helfer | + | `plugin-sdk/plugin-runtime` | Gemeinsame Helfer für die Plugin-Laufzeit | Plugin-Befehls-/Hook-/HTTP-/interaktive Helfer | + | `plugin-sdk/hook-runtime` | Helfer für Hook-Pipelines | Gemeinsame Pipeline-Helfer für Webhook-/interne Hooks | + | `plugin-sdk/lazy-runtime` | Helfer für Lazy Runtime | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | + | `plugin-sdk/process-runtime` | Prozesshelfer | Gemeinsame Exec-Helfer | + | `plugin-sdk/cli-runtime` | CLI-Laufzeithelfer | Helfer für Befehlsformatierung, Waits und Versionsfunktionen | + | `plugin-sdk/gateway-runtime` | Gateway-Helfer | Gateway-Client und Patch-Helfer für Channel-Status | + | `plugin-sdk/config-runtime` | Config-Helfer | Helfer zum Laden/Schreiben von Config | + | `plugin-sdk/telegram-command-config` | Telegram-Befehlshelfer | Fallback-stabile Telegram-Befehlsvalidierungshelfer, wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | + | `plugin-sdk/approval-runtime` | Helfer für Genehmigungs-Prompts | Payloads für Exec-/Plugin-Genehmigungen, Helfer für Genehmigungsfähigkeiten/-profile, natives Routing/Laufzeitverhalten für Genehmigungen | + | `plugin-sdk/approval-auth-runtime` | Helfer für Genehmigungsautorisierung | Auflösung von Approvern, Aktionsautorisierung im selben Chat | + | `plugin-sdk/approval-client-runtime` | Helfer für Genehmigungsclients | Helfer für native Exec-Genehmigungsprofile/-filter | + | `plugin-sdk/approval-delivery-runtime` | Helfer für Genehmigungszustellung | Native Adapter für Genehmigungsfähigkeiten/-zustellung | + | `plugin-sdk/approval-native-runtime` | Helfer für Genehmigungsziele | Native Helfer für Ziel-/Account-Binding von Genehmigungen | + | `plugin-sdk/approval-reply-runtime` | Helfer für Genehmigungsantworten | Helfer für Antwort-Payloads bei Exec-/Plugin-Genehmigungen | + | `plugin-sdk/security-runtime` | Sicherheitshelfer | Gemeinsame Helfer für Trust, DM-Gating, externe Inhalte und Geheimnissammlung | + | `plugin-sdk/ssrf-policy` | Helfer für SSRF-Richtlinien | Helfer für Host-Allowlists und Richtlinien für private Netzwerke | + | `plugin-sdk/ssrf-runtime` | SSRF-Laufzeithelfer | Helfer für Pinned Dispatcher, Guarded Fetch und SSRF-Richtlinien | + | `plugin-sdk/collection-runtime` | Helfer für begrenzte Caches | `pruneMapToMaxSize` | + | `plugin-sdk/diagnostic-runtime` | Helfer für Diagnose-Gating | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | + | `plugin-sdk/error-runtime` | Helfer zur Fehlerformatierung | `formatUncaughtError`, `isApprovalNotFoundError`, Helfer für Fehlergraphen | + | `plugin-sdk/fetch-runtime` | Helfer für Wrapped Fetch/Proxys | `resolveFetch`, Proxy-Helfer | + | `plugin-sdk/host-runtime` | Helfer zur Host-Normalisierung | `normalizeHostname`, `normalizeScpRemoteHost` | + | `plugin-sdk/retry-runtime` | Retry-Helfer | `RetryConfig`, `retryAsync`, Policy-Runner | | `plugin-sdk/allow-from` | Formatierung von Allowlists | `formatAllowFromLowercase` | - | `plugin-sdk/allowlist-resolution` | Mapping von Allowlist-Eingaben | `mapAllowlistResolutionInputs` | - | `plugin-sdk/command-auth` | Befehls-Gating- und Hilfsfunktionen für Befehlsoberflächen | `resolveControlCommandGate`, Hilfsfunktionen für Sender-Autorisierung, Hilfsfunktionen für Befehlsregistrierung | - | `plugin-sdk/secret-input` | Parsing von Secret-Eingaben | Hilfsfunktionen für Secret-Eingaben | - | `plugin-sdk/webhook-ingress` | Hilfsfunktionen für Webhook-Anfragen | Hilfsfunktionen für Webhook-Ziele | - | `plugin-sdk/webhook-request-guards` | Hilfsfunktionen für Guards von Webhook-Bodys | Hilfsfunktionen zum Lesen/Begrenzen von Request-Bodys | - | `plugin-sdk/reply-runtime` | Gemeinsame Antwort-Runtime | Inbound-Dispatch, Heartbeat, Antwortplanung, Chunking | - | `plugin-sdk/reply-dispatch-runtime` | Schmale Hilfsfunktionen für Antwort-Dispatch | Hilfsfunktionen für Finalisierung + Provider-Dispatch | - | `plugin-sdk/reply-history` | Hilfsfunktionen für Antwortverlauf | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/allowlist-resolution` | Zuordnung von Allowlist-Eingaben | `mapAllowlistResolutionInputs` | + | `plugin-sdk/command-auth` | Befehls-Gating und Helfer für Befehlsoberflächen | `resolveControlCommandGate`, Helfer für Senderautorisierung, Helfer für Befehlsregistrierung | + | `plugin-sdk/secret-input` | Parsing geheimer Eingaben | Helfer für geheime Eingaben | + | `plugin-sdk/webhook-ingress` | Helfer für Webhook-Anfragen | Hilfsfunktionen für Webhook-Ziele | + | `plugin-sdk/webhook-request-guards` | Guard-Helfer für Webhook-Bodys | Helfer zum Lesen/Begrenzen von Request-Bodys | + | `plugin-sdk/reply-runtime` | Gemeinsame Antwort-Laufzeit | Inbound-Dispatch, Heartbeat, Antwortplanung, Chunking | + | `plugin-sdk/reply-dispatch-runtime` | Schmale Helfer für Antwort-Dispatch | Helfer zum Finalisieren + Provider-Dispatch | + | `plugin-sdk/reply-history` | Helfer für Antwortverlauf | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | Planung von Antwortreferenzen | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Hilfsfunktionen für Antwort-Chunks | Hilfsfunktionen für Text-/Markdown-Chunking | - | `plugin-sdk/session-store-runtime` | Hilfsfunktionen für Session-Store | Hilfsfunktionen für Store-Pfad + updated-at | - | `plugin-sdk/state-paths` | Hilfsfunktionen für State-Pfade | Hilfsfunktionen für State- und OAuth-Verzeichnisse | - | `plugin-sdk/routing` | Hilfsfunktionen für Routing/Sitzungsschlüssel | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, Hilfsfunktionen zur Normalisierung von Sitzungsschlüsseln | - | `plugin-sdk/status-helpers` | Hilfsfunktionen für Kanalstatus | Builder für Zusammenfassungen von Kanal-/Kontostatus, Runtime-State-Standards, Hilfsfunktionen für Issue-Metadaten | - | `plugin-sdk/target-resolver-runtime` | Hilfsfunktionen für Target Resolver | Gemeinsame Hilfsfunktionen für Target Resolver | - | `plugin-sdk/string-normalization-runtime` | Hilfsfunktionen für String-Normalisierung | Hilfsfunktionen für Slug-/String-Normalisierung | - | `plugin-sdk/request-url` | Hilfsfunktionen für Request-URLs | String-URLs aus request-ähnlichen Eingaben extrahieren | - | `plugin-sdk/run-command` | Hilfsfunktionen für zeitgesteuerte Befehle | Timed Command Runner mit normalisiertem stdout/stderr | + | `plugin-sdk/reply-chunking` | Helfer für Antwort-Chunks | Helfer für Text-/Markdown-Chunking | + | `plugin-sdk/session-store-runtime` | Helfer für Session-Stores | Helfer für Store-Pfad + updated-at | + | `plugin-sdk/state-paths` | Helfer für State-Pfade | Helfer für State- und OAuth-Verzeichnisse | + | `plugin-sdk/routing` | Helfer für Routing/Session-Keys | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, Helfer zur Session-Key-Normalisierung | + | `plugin-sdk/status-helpers` | Helfer für Channel-Status | Builder für Channel-/Account-Statuszusammenfassungen, Standardwerte für Laufzeitzustand, Issue-Metadaten-Helfer | + | `plugin-sdk/target-resolver-runtime` | Helfer für Target Resolver | Gemeinsame Helfer für Target Resolver | + | `plugin-sdk/string-normalization-runtime` | Helfer zur String-Normalisierung | Helfer zur Slug-/String-Normalisierung | + | `plugin-sdk/request-url` | Helfer für Request-URLs | Extrahieren von String-URLs aus request-ähnlichen Eingaben | + | `plugin-sdk/run-command` | Helfer für getimte Befehle | Runner für getimte Befehle mit normalisiertem stdout/stderr | | `plugin-sdk/param-readers` | Param-Reader | Gemeinsame Param-Reader für Tool/CLI | - | `plugin-sdk/tool-send` | Extraktion von Tool-Send | Kanonische Send-Zielfelder aus Tool-Argumenten extrahieren | - | `plugin-sdk/temp-path` | Hilfsfunktionen für Temp-Pfade | Gemeinsame Hilfsfunktionen für Temp-Download-Pfade | - | `plugin-sdk/logging-core` | Logging-Hilfsfunktionen | Subsystem-Logger und Hilfsfunktionen für Schwärzung | - | `plugin-sdk/markdown-table-runtime` | Hilfsfunktionen für Markdown-Tabellen | Hilfsfunktionen für Modus von Markdown-Tabellen | - | `plugin-sdk/reply-payload` | Typen für Nachrichtenantworten | Typen für Antwort-Payloads | - | `plugin-sdk/provider-setup` | Kuratierte Hilfsfunktionen für das Setup lokaler/self-hosted Provider | Hilfsfunktionen für Discovery/Konfiguration self-hosted Provider | - | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Hilfsfunktionen für das Setup self-hosted OpenAI-kompatibler Provider | Dieselben Hilfsfunktionen für Discovery/Konfiguration self-hosted Provider | - | `plugin-sdk/provider-auth-runtime` | Runtime-Hilfsfunktionen für Provider-Authentifizierung | Hilfsfunktionen zur Auflösung von Runtime-API-Schlüsseln | - | `plugin-sdk/provider-auth-api-key` | Hilfsfunktionen für die Einrichtung von Provider-API-Schlüsseln | Hilfsfunktionen für API-Key-Onboarding/Profilschreibvorgänge | - | `plugin-sdk/provider-auth-result` | Hilfsfunktionen für Provider-Auth-Ergebnisse | Standard-Builder für OAuth-Auth-Ergebnisse | - | `plugin-sdk/provider-auth-login` | Hilfsfunktionen für interaktive Provider-Anmeldung | Gemeinsame Hilfsfunktionen für interaktive Anmeldung | - | `plugin-sdk/provider-env-vars` | Hilfsfunktionen für Provider-Env-Variablen | Hilfsfunktionen für die Suche von Env-Variablen für Provider-Authentifizierung | - | `plugin-sdk/provider-model-shared` | Gemeinsame Hilfsfunktionen für Provider-Modell/Wiedergabe | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Hilfsfunktionen für Provider-Endpunkte und Normalisierung von Modell-IDs | - | `plugin-sdk/provider-catalog-shared` | Gemeinsame Hilfsfunktionen für Provider-Kataloge | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-onboard` | Patches für Provider-Onboarding | Hilfsfunktionen für Onboarding-Konfiguration | - | `plugin-sdk/provider-http` | Hilfsfunktionen für Provider-HTTP | Generische Hilfsfunktionen für HTTP-/Endpunktfähigkeiten von Providern | - | `plugin-sdk/provider-web-fetch` | Hilfsfunktionen für Web-Fetch von Providern | Hilfsfunktionen für Registrierung/Cache von Web-Fetch-Providern | - | `plugin-sdk/provider-web-search` | Hilfsfunktionen für Web-Suche von Providern | Hilfsfunktionen für Registrierung/Cache/Konfiguration von Web-Such-Providern | - | `plugin-sdk/provider-tools` | Hilfsfunktionen für Provider-Tool-/Schema-Kompatibilität | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung + Diagnostik und xAI-Kompatibilitäts-Hilfsfunktionen wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | - | `plugin-sdk/provider-usage` | Hilfsfunktionen für Provider-Nutzung | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` und andere Hilfsfunktionen für Provider-Nutzung | - | `plugin-sdk/provider-stream` | Hilfsfunktionen für Provider-Stream-Wrapper | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Typen für Stream-Wrapper und gemeinsame Wrapper-Hilfsfunktionen für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/keyed-async-queue` | Geordnete Async-Warteschlange | `KeyedAsyncQueue` | - | `plugin-sdk/media-runtime` | Gemeinsame Medienhilfsfunktionen | Hilfsfunktionen für Media Fetch/Transform/Store plus Builder für Medien-Payloads | - | `plugin-sdk/media-understanding` | Hilfsfunktionen für Medienverständnis | Typen für Media-Understanding-Provider plus providerseitige Exporte für Bild-/Audio-Hilfsfunktionen | - | `plugin-sdk/text-runtime` | Gemeinsame Texthilfsfunktionen | Entfernen von assistant-sichtbarem Text, Hilfsfunktionen für Rendern/Chunking/Tabellen von Markdown, Schwärzungshilfsfunktionen, Directive-Tag-Hilfsfunktionen, Safe-Text-Utilities und verwandte Hilfsfunktionen für Text/Logging | - | `plugin-sdk/text-chunking` | Hilfsfunktionen für Text-Chunking | Hilfsfunktion für ausgehendes Text-Chunking | - | `plugin-sdk/speech` | Hilfsfunktionen für Speech | Typen für Speech-Provider plus providerseitige Hilfsfunktionen für Direktiven, Registry und Validierung | - | `plugin-sdk/speech-core` | Gemeinsamer Speech-Kern | Typen für Speech-Provider, Registry, Direktiven, Normalisierung | - | `plugin-sdk/realtime-transcription` | Hilfsfunktionen für Realtime-Transkription | Hilfsfunktionen für Provider-Typen und Registry | - | `plugin-sdk/realtime-voice` | Hilfsfunktionen für Realtime-Voice | Hilfsfunktionen für Provider-Typen und Registry | - | `plugin-sdk/image-generation-core` | Gemeinsamer Bildgenerierungs-Kern | Hilfsfunktionen für Bildgenerierungstypen, Failover, Auth und Registry | - | `plugin-sdk/music-generation` | Hilfsfunktionen für Musikgenerierung | Typen für Musikgenerierungs-Provider/Requests/Ergebnisse | - | `plugin-sdk/music-generation-core` | Gemeinsamer Musikgenerierungs-Kern | Hilfsfunktionen für Musikgenerierungstypen, Failover, Providersuche und Parsen von Modellreferenzen | - | `plugin-sdk/video-generation` | Hilfsfunktionen für Videogenerierung | Typen für Videogenerierungs-Provider/Requests/Ergebnisse | - | `plugin-sdk/video-generation-core` | Gemeinsamer Videogenerierungs-Kern | Hilfsfunktionen für Videogenerierungstypen, Failover, Providersuche und Parsen von Modellreferenzen | - | `plugin-sdk/interactive-runtime` | Hilfsfunktionen für interaktive Antworten | Normalisierung/Reduktion von Payloads für interaktive Antworten | - | `plugin-sdk/channel-config-primitives` | Primitive für Kanalkonfiguration | Schmale Primitive für Kanalkonfigurationsschemas | - | `plugin-sdk/channel-config-writes` | Hilfsfunktionen für Schreibvorgänge an Kanalkonfiguration | Hilfsfunktionen für Autorisierung von Schreibvorgängen an Kanalkonfiguration | - | `plugin-sdk/channel-plugin-common` | Gemeinsames Kanal-Präludium | Exporte für gemeinsames Kanal-Plugin-Präludium | - | `plugin-sdk/channel-status` | Hilfsfunktionen für Kanalstatus | Gemeinsame Hilfsfunktionen für Snapshot/Zusammenfassung des Kanalstatus | - | `plugin-sdk/allowlist-config-edit` | Hilfsfunktionen für Allowlist-Konfiguration | Hilfsfunktionen zum Bearbeiten/Lesen von Allowlist-Konfiguration | - | `plugin-sdk/group-access` | Hilfsfunktionen für Gruppenzugriff | Gemeinsame Hilfsfunktionen für Entscheidungen zum Gruppenzugriff | - | `plugin-sdk/direct-dm` | Hilfsfunktionen für direkte DMs | Gemeinsame Hilfsfunktionen für Auth/Guards direkter DMs | - | `plugin-sdk/extension-shared` | Gemeinsame Erweiterungshilfsfunktionen | Primitive Hilfsfunktionen für passive Kanäle/Status | - | `plugin-sdk/webhook-targets` | Hilfsfunktionen für Webhook-Ziele | Registry für Webhook-Ziele und Hilfsfunktionen zur Routeninstallation | - | `plugin-sdk/webhook-path` | Hilfsfunktionen für Webhook-Pfade | Hilfsfunktionen zur Normalisierung von Webhook-Pfaden | - | `plugin-sdk/web-media` | Gemeinsame Hilfsfunktionen für Web-Medien | Hilfsfunktionen zum Laden entfernter/lokaler Medien | - | `plugin-sdk/zod` | Re-Export von Zod | Re-exportiertes `zod` für Konsumenten des Plugin SDK | - | `plugin-sdk/memory-core` | Gebündelte Hilfsfunktionen für memory-core | Oberfläche von Hilfsfunktionen für Memory-Manager/Konfiguration/Datei/CLI | - | `plugin-sdk/memory-core-engine-runtime` | Runtime-Fassade für Memory-Engine | Runtime-Fassade für Memory-Index/-Suche | - | `plugin-sdk/memory-core-host-engine-foundation` | Foundation-Engine für Memory-Host | Exporte der Foundation-Engine für Memory-Host | - | `plugin-sdk/memory-core-host-engine-embeddings` | Embedding-Engine für Memory-Host | Exporte der Embedding-Engine für Memory-Host | - | `plugin-sdk/memory-core-host-engine-qmd` | QMD-Engine für Memory-Host | Exporte der QMD-Engine für Memory-Host | - | `plugin-sdk/memory-core-host-engine-storage` | Storage-Engine für Memory-Host | Exporte der Storage-Engine für Memory-Host | - | `plugin-sdk/memory-core-host-multimodal` | Multimodale Hilfsfunktionen für Memory-Host | Multimodale Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-query` | Query-Hilfsfunktionen für Memory-Host | Query-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-secret` | Secret-Hilfsfunktionen für Memory-Host | Secret-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-status` | Status-Hilfsfunktionen für Memory-Host | Status-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Runtime für Memory-Host | CLI-Runtime-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-runtime-core` | Core-Runtime für Memory-Host | Core-Runtime-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-core-host-runtime-files` | Datei-/Runtime-Hilfsfunktionen für Memory-Host | Datei-/Runtime-Hilfsfunktionen für Memory-Host | - | `plugin-sdk/memory-lancedb` | Gebündelte Hilfsfunktionen für memory-lancedb | Hilfsoberfläche für memory-lancedb | - | `plugin-sdk/testing` | Test-Utilities | Test-Hilfsfunktionen und Mocks | + | `plugin-sdk/tool-send` | Extraktion für Tool-Send | Extrahieren kanonischer Send-Zielfelder aus Tool-Argumenten | + | `plugin-sdk/temp-path` | Helfer für temporäre Pfade | Gemeinsame Helfer für temporäre Download-Pfade | + | `plugin-sdk/logging-core` | Logging-Helfer | Subsystem-Logger und Redaktionshelfer | + | `plugin-sdk/markdown-table-runtime` | Helfer für Markdown-Tabellen | Helfer für Markdown-Tabellenmodi | + | `plugin-sdk/reply-payload` | Typen für Nachrichtenantworten | Antwort-Payload-Typen | + | `plugin-sdk/provider-setup` | Kuratierte Helfer für die Einrichtung lokaler/self-hosted Provider | Helfer für Erkennung/Config self-hosted Provider | + | `plugin-sdk/self-hosted-provider-setup` | Gezielte Helfer für die Einrichtung OpenAI-kompatibler self-hosted Provider | Dieselben Helfer für Erkennung/Config self-hosted Provider | + | `plugin-sdk/provider-auth-runtime` | Laufzeithelfer für Provider-Authentifizierung | Helfer zur Auflösung von API-Schlüsseln zur Laufzeit | + | `plugin-sdk/provider-auth-api-key` | Helfer für die Einrichtung von Provider-API-Schlüsseln | Helfer für API-Key-Onboarding/Profilschreibung | + | `plugin-sdk/provider-auth-result` | Helfer für Provider-Authentifizierungsergebnisse | Standard-Builder für OAuth-Authentifizierungsergebnisse | + | `plugin-sdk/provider-auth-login` | Helfer für interaktive Provider-Anmeldung | Gemeinsame Helfer für interaktive Anmeldung | + | `plugin-sdk/provider-env-vars` | Helfer für Provider-Umgebungsvariablen | Helfer für das Lookup von Auth-Umgebungsvariablen bei Providern | + | `plugin-sdk/provider-model-shared` | Gemeinsame Helfer für Provider-Modell-/Replay | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Helfer für Provider-Endpunkte und Helfer zur Modell-ID-Normalisierung | + | `plugin-sdk/provider-catalog-shared` | Gemeinsame Helfer für Provider-Kataloge | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | + | `plugin-sdk/provider-onboard` | Patches für Provider-Onboarding | Helfer für Onboarding-Config | + | `plugin-sdk/provider-http` | Helfer für Provider-HTTP | Generische Helfer für Provider-HTTP/Endpoint-Fähigkeiten | + | `plugin-sdk/provider-web-fetch` | Helfer für Provider-Web-Fetch | Helfer für Registrierung/Cache von Web-Fetch-Providern | + | `plugin-sdk/provider-web-search` | Helfer für Provider-Web-Suche | Helfer für Registrierung/Cache/Config von Web-Such-Providern | + | `plugin-sdk/provider-tools` | Helfer für Kompatibilität von Provider-Tools/-Schemas | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung + Diagnosefunktionen sowie xAI-Kompatibilitätshelfer wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-usage` | Helfer für Provider-Nutzung | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` und weitere Helfer für Provider-Nutzung | + | `plugin-sdk/provider-stream` | Helfer für Provider-Stream-Wrapper | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Stream-Wrapper-Typen und gemeinsame Wrapper-Helfer für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/keyed-async-queue` | Geordnete Async-Queue | `KeyedAsyncQueue` | + | `plugin-sdk/media-runtime` | Gemeinsame Medienhelfer | Helfer zum Abrufen/Transformieren/Speichern von Medien sowie Builder für Medien-Payloads | + | `plugin-sdk/media-generation-runtime` | Gemeinsame Helfer für Mediengenerierung | Gemeinsame Helfer für Failover, Kandidatenauswahl und Meldungen bei fehlenden Modellen für Bild-/Video-/Musikgenerierung | + | `plugin-sdk/media-understanding` | Helfer für Medienverständnis | Provider-Typen für Medienverständnis sowie providerseitige Exporte für Bild-/Audio-Helfer | + | `plugin-sdk/text-runtime` | Gemeinsame Texthelfer | Entfernen assistentensichtbarer Texte, Helfer für Markdown-Rendering/Chunking/Tabellen, Redaktionshelfer, Helfer für Directive-Tags, Safe-Text-Utilities und verwandte Text-/Logging-Helfer | + | `plugin-sdk/text-chunking` | Helfer für Text-Chunking | Helfer für ausgehendes Text-Chunking | + | `plugin-sdk/speech` | Speech-Helfer | Provider-Typen für Speech sowie providerseitige Helfer für Direktiven, Registrierung und Validierung | + | `plugin-sdk/speech-core` | Gemeinsamer Speech-Kern | Provider-Typen für Speech, Registrierung, Direktiven, Normalisierung | + | `plugin-sdk/realtime-transcription` | Helfer für Realtime-Transkription | Provider-Typen und Registrierungshelfer | + | `plugin-sdk/realtime-voice` | Helfer für Realtime-Voice | Provider-Typen und Registrierungshelfer | + | `plugin-sdk/image-generation-core` | Gemeinsamer Kern für Bildgenerierung | Helfer für Typen, Failover, Authentifizierung und Registrierung der Bildgenerierung | + | `plugin-sdk/music-generation` | Helfer für Musikgenerierung | Provider-/Request-/Result-Typen für Musikgenerierung | + | `plugin-sdk/music-generation-core` | Gemeinsamer Kern für Musikgenerierung | Typen für Musikgenerierung, Failover-Helfer, Provider-Lookup und Parsing von Model-Refs | + | `plugin-sdk/video-generation` | Helfer für Videogenerierung | Provider-/Request-/Result-Typen für Videogenerierung | + | `plugin-sdk/video-generation-core` | Gemeinsamer Kern für Videogenerierung | Typen für Videogenerierung, Failover-Helfer, Provider-Lookup und Parsing von Model-Refs | + | `plugin-sdk/interactive-runtime` | Helfer für interaktive Antworten | Normalisierung/Reduktion interaktiver Antwort-Payloads | + | `plugin-sdk/channel-config-primitives` | Primitive für Channel-Config | Schmale Primitive für Channel-Config-Schemata | + | `plugin-sdk/channel-config-writes` | Helfer zum Schreiben von Channel-Config | Helfer zur Autorisierung von Channel-Config-Schreibvorgängen | + | `plugin-sdk/channel-plugin-common` | Gemeinsames Channel-Präludium | Exporte des gemeinsamen Channel-Plugin-Präludiums | + | `plugin-sdk/channel-status` | Helfer für Channel-Status | Gemeinsame Helfer für Snapshots/Zusammenfassungen des Channel-Status | + | `plugin-sdk/allowlist-config-edit` | Helfer für Allowlist-Config | Helfer zum Bearbeiten/Lesen von Allowlist-Config | + | `plugin-sdk/group-access` | Helfer für Gruppenzugriff | Gemeinsame Helfer für Entscheidungen zum Gruppenzugriff | + | `plugin-sdk/direct-dm` | Helfer für direkte DMs | Gemeinsame Helfer für Authentifizierung/Guards bei direkten DMs | + | `plugin-sdk/extension-shared` | Gemeinsame Helfer für Erweiterungen | Primitive Helfer für passive Channels/Status | + | `plugin-sdk/webhook-targets` | Helfer für Webhook-Ziele | Registry für Webhook-Ziele und Helfer für Route-Installation | + | `plugin-sdk/webhook-path` | Helfer für Webhook-Pfade | Helfer zur Normalisierung von Webhook-Pfaden | + | `plugin-sdk/web-media` | Gemeinsame Helfer für Web-Medien | Helfer zum Laden entfernter/lokaler Medien | + | `plugin-sdk/zod` | Zod-Re-Export | Re-exportiertes `zod` für Plugin-SDK-Konsumenten | + | `plugin-sdk/memory-core` | Gebündelte Helfer für memory-core | Helper-Oberfläche für Memory-Manager/Config/Datei/CLI | + | `plugin-sdk/memory-core-engine-runtime` | Laufzeit-Fassade der Memory-Engine | Laufzeit-Fassade für Memory-Index/Suche | + | `plugin-sdk/memory-core-host-engine-foundation` | Host-Foundation-Engine für Memory | Exporte der Host-Foundation-Engine für Memory | + | `plugin-sdk/memory-core-host-engine-embeddings` | Host-Embedding-Engine für Memory | Exporte der Host-Embedding-Engine für Memory | + | `plugin-sdk/memory-core-host-engine-qmd` | Host-QMD-Engine für Memory | Exporte der Host-QMD-Engine für Memory | + | `plugin-sdk/memory-core-host-engine-storage` | Host-Storage-Engine für Memory | Exporte der Host-Storage-Engine für Memory | + | `plugin-sdk/memory-core-host-multimodal` | Multimodale Host-Helfer für Memory | Multimodale Host-Helfer für Memory | + | `plugin-sdk/memory-core-host-query` | Host-Query-Helfer für Memory | Host-Query-Helfer für Memory | + | `plugin-sdk/memory-core-host-secret` | Host-Helfer für Geheimnisse in Memory | Host-Helfer für Geheimnisse in Memory | + | `plugin-sdk/memory-core-host-events` | Host-Helfer für Event-Journale in Memory | Host-Helfer für Event-Journale in Memory | + | `plugin-sdk/memory-core-host-status` | Host-Helfer für Status in Memory | Host-Helfer für Status in Memory | + | `plugin-sdk/memory-core-host-runtime-cli` | Host-CLI-Laufzeit für Memory | Host-CLI-Laufzeithelfer für Memory | + | `plugin-sdk/memory-core-host-runtime-core` | Host-Core-Laufzeit für Memory | Host-Core-Laufzeithelfer für Memory | + | `plugin-sdk/memory-core-host-runtime-files` | Host-Datei-/Laufzeithelfer für Memory | Host-Datei-/Laufzeithelfer für Memory | + | `plugin-sdk/memory-host-core` | Alias für Host-Core-Laufzeit von Memory | Anbieterneutraler Alias für Host-Core-Laufzeithelfer von Memory | + | `plugin-sdk/memory-host-events` | Alias für Host-Event-Journal von Memory | Anbieterneutraler Alias für Host-Helfer des Event-Journals von Memory | + | `plugin-sdk/memory-host-files` | Alias für Host-Datei-/Laufzeit von Memory | Anbieterneutraler Alias für Host-Datei-/Laufzeithelfer von Memory | + | `plugin-sdk/memory-host-markdown` | Helfer für verwaltetes Markdown | Gemeinsame Helfer für verwaltetes Markdown bei Memory-nahen Plugins | + | `plugin-sdk/memory-host-search` | Fassade für aktive Memory-Suche | Lazy Runtime-Fassade des Search-Managers für aktives Memory | + | `plugin-sdk/memory-host-status` | Alias für Host-Status von Memory | Anbieterneutraler Alias für Host-Statushelfer von Memory | + | `plugin-sdk/memory-lancedb` | Gebündelte Helfer für memory-lancedb | Helper-Oberfläche für memory-lancedb | + | `plugin-sdk/testing` | Test-Utilities | Test-Helfer und Mocks | -Diese Tabelle ist absichtlich die häufige Migrations-Teilmenge, nicht die vollständige -SDK-Oberfläche. Die vollständige Liste mit mehr als 200 Einstiegspunkten befindet sich in -`scripts/lib/plugin-sdk-entrypoints.json`. +Diese Tabelle ist bewusst die übliche Migrations-Teilmenge und nicht die vollständige SDK-Oberfläche. Die vollständige Liste mit über 200 Entry-Points befindet sich in `scripts/lib/plugin-sdk-entrypoints.json`. -Diese Liste enthält weiterhin einige Helper-Seams für gebündelte Plugins wie -`plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, -`plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese bleiben für die Wartung -gebündelter Plugins und aus Kompatibilitätsgründen exportiert, werden aber absichtlich -nicht in der Tabelle häufiger Migrationen aufgeführt und sind kein empfohlenes Ziel für -neuen Plugin-Code. +Diese Liste enthält weiterhin einige Helper-Seams für gebündelte Plugins wie `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese bleiben für die Wartung gebündelter Plugins und zur Kompatibilität exportiert, werden jedoch bewusst aus der üblichen Migrationstabelle ausgelassen und sind nicht das empfohlene Ziel für neuen Plugin-Code. -Dieselbe Regel gilt für andere Familien gebündelter Hilfsfunktionen, wie: +Dieselbe Regel gilt für andere Familien gebündelter Helfer wie: -- Browser-Support-Hilfsfunktionen: `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` +- Browser-Support-Helfer: `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` - Matrix: `plugin-sdk/matrix*` - LINE: `plugin-sdk/line*` - IRC: `plugin-sdk/irc*` -- gebündelte Helper-/Plugin-Oberflächen wie `plugin-sdk/googlechat`, +- gebündelte Helfer-/Plugin-Oberflächen wie `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`, `plugin-sdk/mattermost*`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, @@ -330,22 +308,18 @@ Dieselbe Regel gilt für andere Familien gebündelter Hilfsfunktionen, wie: `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership` und `plugin-sdk/voice-call` -`plugin-sdk/github-copilot-token` stellt derzeit die schmale -Token-Helper-Oberfläche `DEFAULT_COPILOT_API_BASE_URL`, -`deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` bereit. +`plugin-sdk/github-copilot-token` stellt derzeit die schmale Token-Helferoberfläche `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` bereit. -Verwenden Sie den schmalsten Import, der zur Aufgabe passt. Wenn Sie keinen Export finden können, -prüfen Sie den Quellcode unter `src/plugin-sdk/` oder fragen Sie in Discord. +Verwenden Sie den schmalsten Import, der zur Aufgabe passt. Wenn Sie einen Export nicht finden können, prüfen Sie den Quellcode unter `src/plugin-sdk/` oder fragen Sie in Discord. ## Zeitplan für die Entfernung | Wann | Was passiert | -| --- | --- | -| **Jetzt** | Veraltete Oberflächen geben Runtime-Warnungen aus | -| **Nächste Hauptversion** | Veraltete Oberflächen werden entfernt; Plugins, die sie noch verwenden, schlagen fehl | +| ---------------------- | ----------------------------------------------------------------------- | +| **Jetzt** | Veraltete Oberflächen geben Laufzeitwarnungen aus | +| **Nächste Hauptversion** | Veraltete Oberflächen werden entfernt; Plugins, die sie weiterhin verwenden, schlagen fehl | -Alle Core-Plugins wurden bereits migriert. Externe Plugins sollten vor -der nächsten Hauptversion migrieren. +Alle Kern-Plugins wurden bereits migriert. Externe Plugins sollten vor der nächsten Hauptversion migrieren. ## Warnungen vorübergehend unterdrücken @@ -356,13 +330,13 @@ OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run ``` -Dies ist eine vorübergehende Notlösung, keine dauerhafte Lösung. +Dies ist ein vorübergehender Notausgang, keine dauerhafte Lösung. -## Verwandt +## Verwandte Themen -- [Erste Schritte](/de/plugins/building-plugins) — Ihr erstes Plugin erstellen -- [SDK Overview](/de/plugins/sdk-overview) — vollständige Referenz für Subpath-Imports -- [Channel Plugins](/de/plugins/sdk-channel-plugins) — Channel-Plugins erstellen -- [Provider Plugins](/de/plugins/sdk-provider-plugins) — Provider-Plugins erstellen -- [Plugin Internals](/de/plugins/architecture) — tiefer Einblick in die Architektur -- [Plugin Manifest](/de/plugins/manifest) — Referenz zum Manifest-Schema +- [Erste Schritte](/de/plugins/building-plugins) — Erstellen Sie Ihr erstes Plugin +- [SDK-Überblick](/de/plugins/sdk-overview) — vollständige Referenz für Subpath-Imports +- [Channel-Plugins](/de/plugins/sdk-channel-plugins) — Erstellen von Channel-Plugins +- [Provider-Plugins](/de/plugins/sdk-provider-plugins) — Erstellen von Provider-Plugins +- [Plugin-Interna](/de/plugins/architecture) — detaillierter Einblick in die Architektur +- [Plugin-Manifest](/de/plugins/manifest) — Referenz für das Manifest-Schema diff --git a/docs/de/plugins/sdk-overview.md b/docs/de/plugins/sdk-overview.md index 68bab0557..a83111963 100644 --- a/docs/de/plugins/sdk-overview.md +++ b/docs/de/plugins/sdk-overview.md @@ -1,16 +1,16 @@ --- read_when: - - Sie müssen wissen, aus welchem SDK-Subpath Sie importieren sollen - - Sie möchten eine Referenz für alle Registrierungsmethoden auf OpenClawPluginApi - - Sie suchen einen bestimmten SDK-Export + - Sie müssen wissen, aus welchem SDK-Subpath importiert werden soll + - Sie möchten eine Referenz für alle Registrierungsmethoden in OpenClawPluginApi + - Sie schlagen einen bestimmten SDK-Export nach sidebarTitle: SDK Overview -summary: Import-Map, Referenz der Registrierungs-API und SDK-Architektur +summary: Import-Map, Referenz zur Registrierungs-API und SDK-Architektur title: Überblick über das Plugin SDK x-i18n: - generated_at: "2026-04-06T03:10:48Z" + generated_at: "2026-04-06T06:22:17Z" model: gpt-5.4 provider: openai - source_hash: d801641f26f39dc21490d2a69a337ff1affb147141360916b8b58a267e9f822a + source_hash: acd2887ef52c66b2f234858d812bb04197ecd0bfb3e4f7bf3622f8fdc765acad source_path: plugins/sdk-overview.md workflow: 15 --- @@ -18,42 +18,43 @@ x-i18n: # Überblick über das Plugin SDK Das Plugin SDK ist der typisierte Vertrag zwischen Plugins und dem Core. Diese Seite ist die -Referenz dafür, **was Sie importieren** und **was Sie registrieren können**. +Referenz dafür, **was importiert werden soll** und **was Sie registrieren können**. - **Suchen Sie eine Schritt-für-Schritt-Anleitung?** - - Erstes Plugin? Beginnen Sie mit [Getting Started](/de/plugins/building-plugins) - - Kanal-Plugin? Siehe [Channel Plugins](/de/plugins/sdk-channel-plugins) + **Suchen Sie nach einer Schritt-für-Schritt-Anleitung?** + - Erstes Plugin? Beginnen Sie mit [Erste Schritte](/de/plugins/building-plugins) + - Channel-Plugin? Siehe [Channel Plugins](/de/plugins/sdk-channel-plugins) - Provider-Plugin? Siehe [Provider Plugins](/de/plugins/sdk-provider-plugins) -## Import-Konvention +## Importkonvention -Importieren Sie immer aus einem bestimmten Subpath: +Importieren Sie immer aus einem spezifischen Subpath: ```typescript import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; ``` -Jeder Subpath ist ein kleines, in sich abgeschlossenes Modul. Das hält den Start schnell und -verhindert Probleme mit zirkulären Abhängigkeiten. Für kanalbezogene Entry-/Build-Helfer -bevorzugen Sie `openclaw/plugin-sdk/channel-core`; verwenden Sie `openclaw/plugin-sdk/core` für -die breitere Sammeloberfläche und gemeinsame Hilfsfunktionen wie +Jeder Subpath ist ein kleines, in sich geschlossenes Modul. Das hält den Start schnell und +verhindert Probleme mit zirkulären Abhängigkeiten. Für kanalbezogene Entry-/Build-Helper +bevorzugen Sie `openclaw/plugin-sdk/channel-core`; verwenden Sie `openclaw/plugin-sdk/core` +für die breitere Oberflächen-API und gemeinsam genutzte Helper wie `buildChannelConfigSchema`. -Fügen Sie keine providerbenannten Convenience-Schnittstellen hinzu und verlassen Sie sich nicht auf -solche wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, +Fügen Sie keine nach Providern benannten Convenience-Seams hinzu und machen Sie sich nicht von ihnen abhängig, wie etwa +`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp` oder -kanalgebrandete Hilfs-Schnittstellen. Gebündelte Plugins sollten generische -SDK-Subpaths innerhalb ihrer eigenen `api.ts`- oder `runtime-api.ts`-Barrels zusammensetzen, und der Core +kanalmarkenspezifischen Helper-Seams. Gebündelte Plugins sollten generische +SDK-Subpaths in ihren eigenen `api.ts`- oder `runtime-api.ts`-Barrels zusammensetzen, und der Core sollte entweder diese pluginlokalen Barrels verwenden oder einen schmalen generischen SDK- Vertrag hinzufügen, wenn der Bedarf wirklich kanalübergreifend ist. -Die generierte Export-Map enthält weiterhin eine kleine Menge an Hilfs-Schnittstellen für gebündelte Plugins, -wie `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, +Die generierte Export-Map enthält weiterhin eine kleine Gruppe von Helper- +Seams für gebündelte Plugins wie `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese -Subpaths existieren nur für die Wartung und Kompatibilität gebündelter Plugins; sie werden absichtlich aus der allgemeinen Tabelle unten ausgelassen und sind nicht der empfohlene +Subpaths existieren nur für die Wartung gebündelter Plugins und für Kompatibilität; sie werden +in der allgemeinen Tabelle unten bewusst ausgelassen und sind nicht der empfohlene Importpfad für neue Drittanbieter-Plugins. ## Subpath-Referenz @@ -61,11 +62,11 @@ Importpfad für neue Drittanbieter-Plugins. Die am häufigsten verwendeten Subpaths, nach Zweck gruppiert. Die generierte vollständige Liste von mehr als 200 Subpaths befindet sich in `scripts/lib/plugin-sdk-entrypoints.json`. -Reservierte Hilfs-Subpaths für gebündelte Plugins erscheinen weiterhin in dieser generierten Liste. +Reservierte Helper-Subpaths für gebündelte Plugins erscheinen weiterhin in dieser generierten Liste. Behandeln Sie diese als Implementierungsdetail-/Kompatibilitätsoberflächen, sofern eine Dokumentationsseite -nicht ausdrücklich eine davon als öffentlich hervorhebt. +nicht ausdrücklich einen davon als öffentlich hervorhebt. -### Plugin-Entry +### Plugin-Einstiegspunkt | Subpath | Wichtige Exporte | | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | @@ -75,208 +76,216 @@ nicht ausdrücklich eine davon als öffentlich hervorhebt. | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - + | Subpath | Wichtige Exporte | | --- | --- | | `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | | `plugin-sdk/config-schema` | Root-`openclaw.json`-Zod-Schema-Export (`OpenClawSchema`) | - | `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | - | `plugin-sdk/setup` | Gemeinsame Hilfsfunktionen für Einrichtungsassistenten, Allowlist-Eingabeaufforderungen, Builder für Einrichtungsstatus | + | `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, sowie `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | + | `plugin-sdk/setup` | Gemeinsam genutzte Setup-Wizard-Helper, Allowlist-Prompts, Builder für Setup-Status | | `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` | | `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Hilfsfunktionen für Multi-Account-Konfiguration/Aktions-Gates, Hilfsfunktionen für Fallbacks auf Standardkonten | - | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, Hilfsfunktionen zur Normalisierung von Konto-IDs | - | `plugin-sdk/account-resolution` | Hilfsfunktionen für Konto-Lookup und Standard-Fallback | - | `plugin-sdk/account-helpers` | Schmale Hilfsfunktionen für Kontolisten/Kontoaktionen | + | `plugin-sdk/account-core` | Helper für Multi-Account-Konfigurations-/Action-Gates, Helper für den Fallback auf Standardkonten | + | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, Normalisierungs-Helper für Konto-IDs | + | `plugin-sdk/account-resolution` | Konto-Lookup plus Helper für Standard-Fallback | + | `plugin-sdk/account-helpers` | Schmale Helper für Kontolisten-/Kontoaktionen | | `plugin-sdk/channel-pairing` | `createChannelPairingController` | | `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` | - | `plugin-sdk/channel-config-schema` | Typen für Kanalkonfigurations-Schemas | - | `plugin-sdk/telegram-command-config` | Hilfsfunktionen zur Normalisierung/Validierung benutzerdefinierter Telegram-Befehle mit Fallback auf gebündelten Vertrag | + | `plugin-sdk/channel-config-schema` | Typen für Channel-Konfigurationsschemas | + | `plugin-sdk/telegram-command-config` | Normalisierungs-/Validierungs-Helper für benutzerdefinierte Telegram-Befehle mit Fallback für gebündelte Verträge | | `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` | | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` | - | `plugin-sdk/inbound-envelope` | Gemeinsame Hilfsfunktionen für eingehende Routen und Envelope-Builder | - | `plugin-sdk/inbound-reply-dispatch` | Gemeinsame Hilfsfunktionen zum Aufzeichnen und Verteilen eingehender Nachrichten | - | `plugin-sdk/messaging-targets` | Hilfsfunktionen zum Parsen/Abgleichen von Zielen | - | `plugin-sdk/outbound-media` | Gemeinsame Hilfsfunktionen zum Laden ausgehender Medien | - | `plugin-sdk/outbound-runtime` | Hilfsfunktionen für ausgehende Identität/Sende-Delegation | - | `plugin-sdk/thread-bindings-runtime` | Hilfsfunktionen für Lifecycle und Adapter von Thread-Bindings | + | `plugin-sdk/inbound-envelope` | Gemeinsam genutzte Helper für Inbound-Routen und Envelope-Builder | + | `plugin-sdk/inbound-reply-dispatch` | Gemeinsam genutzte Helper zum Aufzeichnen und Weiterleiten eingehender Daten | + | `plugin-sdk/messaging-targets` | Helper zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/outbound-media` | Gemeinsam genutzte Helper zum Laden ausgehender Medien | + | `plugin-sdk/outbound-runtime` | Helper für ausgehende Identität/Sende-Delegation | + | `plugin-sdk/thread-bindings-runtime` | Lifecycle- und Adapter-Helper für Thread-Bindings | | `plugin-sdk/agent-media-payload` | Legacy-Builder für Agent-Medien-Payloads | - | `plugin-sdk/conversation-runtime` | Hilfsfunktionen für Konversations-/Thread-Binding, Pairing und konfigurierte Bindings | - | `plugin-sdk/runtime-config-snapshot` | Hilfsfunktion für Laufzeit-Konfigurations-Snapshots | - | `plugin-sdk/runtime-group-policy` | Hilfsfunktionen zur Auflösung von Gruppenrichtlinien zur Laufzeit | - | `plugin-sdk/channel-status` | Gemeinsame Hilfsfunktionen für Snapshots/Zusammenfassungen des Kanalstatus | - | `plugin-sdk/channel-config-primitives` | Schmale Primitive für Kanalkonfigurations-Schemas | - | `plugin-sdk/channel-config-writes` | Hilfsfunktionen für die Autorisierung von Schreibvorgängen in Kanalkonfigurationen | - | `plugin-sdk/channel-plugin-common` | Gemeinsame Prelude-Exporte für Kanal-Plugins | - | `plugin-sdk/allowlist-config-edit` | Hilfsfunktionen zum Bearbeiten/Lesen von Allowlist-Konfigurationen | - | `plugin-sdk/group-access` | Gemeinsame Hilfsfunktionen für Entscheidungen zum Gruppenzugriff | - | `plugin-sdk/direct-dm` | Gemeinsame Hilfsfunktionen für Authentifizierung/Guards bei direkten DMs | - | `plugin-sdk/interactive-runtime` | Hilfsfunktionen zur Normalisierung/Reduktion interaktiver Antwort-Payloads | - | `plugin-sdk/channel-inbound` | Debounce-, Mention-Matching- und Envelope-Hilfsfunktionen | + | `plugin-sdk/conversation-runtime` | Konversations-/Thread-Binding-, Pairing- und konfigurierte Binding-Helper | + | `plugin-sdk/runtime-config-snapshot` | Helper für Runtime-Konfigurations-Snapshots | + | `plugin-sdk/runtime-group-policy` | Helper zur Auflösung von Runtime-Gruppenrichtlinien | + | `plugin-sdk/channel-status` | Gemeinsam genutzte Helper für Snapshots/Zusammenfassungen des Channel-Status | + | `plugin-sdk/channel-config-primitives` | Schmale Primitive für Channel-Konfigurationsschemas | + | `plugin-sdk/channel-config-writes` | Autorisierungs-Helper für Schreibvorgänge in Channel-Konfigurationen | + | `plugin-sdk/channel-plugin-common` | Gemeinsam genutzte Prelude-Exporte für Channel-Plugins | + | `plugin-sdk/allowlist-config-edit` | Helper zum Bearbeiten/Lesen von Allowlist-Konfigurationen | + | `plugin-sdk/group-access` | Gemeinsam genutzte Entscheidungs-Helper für Gruppenzugriff | + | `plugin-sdk/direct-dm` | Gemeinsam genutzte Auth-/Guard-Helper für direkte DMs | + | `plugin-sdk/interactive-runtime` | Helper zur Normalisierung/Reduktion interaktiver Antwort-Payloads | + | `plugin-sdk/channel-inbound` | Debounce-, Mention-Matching- und Envelope-Helper | | `plugin-sdk/channel-send-result` | Typen für Antwortergebnisse | | `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` | - | `plugin-sdk/channel-targets` | Hilfsfunktionen zum Parsen/Abgleichen von Zielen | - | `plugin-sdk/channel-contract` | Typen für Kanalverträge | - | `plugin-sdk/channel-feedback` | Verdrahtung für Feedback/Reaktionen | + | `plugin-sdk/channel-targets` | Helper zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/channel-contract` | Typen für Channel-Verträge | + | `plugin-sdk/channel-feedback` | Verdrahtung von Feedback/Reaktionen | | Subpath | Wichtige Exporte | | --- | --- | | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/provider-setup` | Kuratierte Hilfsfunktionen für die Einrichtung lokaler/selbst gehosteter Provider | - | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Hilfsfunktionen für die Einrichtung selbst gehosteter OpenAI-kompatibler Provider | - | `plugin-sdk/provider-auth-runtime` | Hilfsfunktionen zur Auflösung von API-Schlüsseln zur Laufzeit für Provider-Plugins | - | `plugin-sdk/provider-auth-api-key` | Hilfsfunktionen für API-Schlüssel-Onboarding/Profilschreibvorgänge | + | `plugin-sdk/provider-setup` | Kuratierte Setup-Helper für lokale/selbstgehostete Provider | + | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Setup-Helper für selbstgehostete OpenAI-kompatible Provider | + | `plugin-sdk/provider-auth-runtime` | Runtime-Helper zur Auflösung von API-Schlüsseln für Provider-Plugins | + | `plugin-sdk/provider-auth-api-key` | Helper für API-Key-Onboarding/Profilschreibvorgänge | | `plugin-sdk/provider-auth-result` | Standard-Builder für OAuth-Authentifizierungsergebnisse | - | `plugin-sdk/provider-auth-login` | Gemeinsame Hilfsfunktionen für interaktive Anmeldung bei Provider-Plugins | - | `plugin-sdk/provider-env-vars` | Hilfsfunktionen für die Suche nach Provider-Auth-Umgebungsvariablen | + | `plugin-sdk/provider-auth-login` | Gemeinsam genutzte interaktive Login-Helper für Provider-Plugins | + | `plugin-sdk/provider-env-vars` | Helper zum Lookup von Auth-Umgebungsvariablen für Provider | | `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile` | - | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Hilfsfunktionen für Provider-Endpoints und Model-ID-Normalisierung wie `normalizeNativeXaiModelId` | + | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsam genutzte Replay-Policy-Builder, Helper für Provider-Endpunkte und Helper zur Normalisierung von Modell-IDs wie `normalizeNativeXaiModelId` | | `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-http` | Generische Hilfsfunktionen für HTTP-/Endpoint-Funktionen von Providern | - | `plugin-sdk/provider-web-fetch` | Hilfsfunktionen zur Registrierung/Zwischenspeicherung von Web-Fetch-Providern | - | `plugin-sdk/provider-web-search` | Hilfsfunktionen zur Registrierung/Zwischenspeicherung/Konfiguration von Websuch-Providern | - | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung und -Diagnose sowie xAI-Kompatibilitätshelfer wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-http` | Generische Helper für HTTP-/Endpunkt-Fähigkeiten von Providern | + | `plugin-sdk/provider-web-fetch` | Helper für Registrierung/Cache von Web-Fetch-Providern | + | `plugin-sdk/provider-web-search` | Helper für Registrierung/Cache/Konfiguration von Web-Such-Providern | + | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung plus Diagnostik und xAI-Kompatibilitäts-Helper wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | | `plugin-sdk/provider-usage` | `fetchClaudeUsage` und Ähnliches | - | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Typen für Stream-Wrapper sowie gemeinsame Wrapper-Hilfsfunktionen für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/provider-onboard` | Hilfsfunktionen zum Patchen der Onboarding-Konfiguration | - | `plugin-sdk/global-singleton` | Prozesslokale Hilfsfunktionen für Singletons/Maps/Caches | + | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Stream-Wrapper-Typen und gemeinsam genutzte Wrapper-Helper für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-onboard` | Helper zum Patchen der Onboarding-Konfiguration | + | `plugin-sdk/global-singleton` | Prozesslokale Singleton-/Map-/Cache-Helper | - + | Subpath | Wichtige Exporte | | --- | --- | - | `plugin-sdk/command-auth` | `resolveControlCommandGate`, Hilfsfunktionen für Befehlsregister, Hilfsfunktionen für Sender-Autorisierung | - | `plugin-sdk/approval-auth-runtime` | Hilfsfunktionen zur Auflösung von Genehmigern und für Same-Chat-Aktionsauthentifizierung | - | `plugin-sdk/approval-client-runtime` | Hilfsfunktionen für native Exec-Genehmigungsprofile/-filter | - | `plugin-sdk/approval-delivery-runtime` | Adapter für native Genehmigungsfunktionen/Zustellung | - | `plugin-sdk/approval-native-runtime` | Hilfsfunktionen für native Genehmigungsziele und Konto-Bindings | - | `plugin-sdk/approval-reply-runtime` | Hilfsfunktionen für Antwort-Payloads bei Exec-/Plugin-Genehmigungen | - | `plugin-sdk/command-auth-native` | Native Befehlsauthentifizierung und Hilfsfunktionen für native Sitzungsziele | - | `plugin-sdk/command-detection` | Gemeinsame Hilfsfunktionen zur Befehlserkennung | - | `plugin-sdk/command-surface` | Hilfsfunktionen zur Normalisierung von Befehlsinhalten und Befehlsoberflächen | + | `plugin-sdk/command-auth` | `resolveControlCommandGate`, Helper für Befehlsregister, Helper zur Sender-Autorisierung | + | `plugin-sdk/approval-auth-runtime` | Helper zur Auflösung von Genehmigenden und zur Action-Auth im selben Chat | + | `plugin-sdk/approval-client-runtime` | Helper für native Exec-Genehmigungsprofile/-filter | + | `plugin-sdk/approval-delivery-runtime` | Native Adapter für Genehmigungsfähigkeiten/-zustellung | + | `plugin-sdk/approval-native-runtime` | Native Helper für Genehmigungsziele und Kontobindung | + | `plugin-sdk/approval-reply-runtime` | Helper für Exec-/Plugin-Genehmigungs-Antwort-Payloads | + | `plugin-sdk/command-auth-native` | Native Befehlsauthentifizierung plus native Session-Ziel-Helper | + | `plugin-sdk/command-detection` | Gemeinsam genutzte Helper zur Befehlserkennung | + | `plugin-sdk/command-surface` | Helper für Befehls-Body-Normalisierung und Befehlsoberfläche | | `plugin-sdk/allow-from` | `formatAllowFromLowercase` | - | `plugin-sdk/security-runtime` | Gemeinsame Hilfsfunktionen für Vertrauen, DM-Gating, externe Inhalte und Secret-Erfassung | - | `plugin-sdk/ssrf-policy` | Hilfsfunktionen für Host-Allowlists und SSRF-Richtlinien für private Netzwerke | - | `plugin-sdk/ssrf-runtime` | Hilfsfunktionen für Pinned-Dispatcher, SSRF-geschützten Fetch und SSRF-Richtlinien | - | `plugin-sdk/secret-input` | Hilfsfunktionen zum Parsen von Secret-Eingaben | - | `plugin-sdk/webhook-ingress` | Hilfsfunktionen für Webhook-Anfragen/Ziele | - | `plugin-sdk/webhook-request-guards` | Hilfsfunktionen für Größe/Timeout von Request-Bodies | + | `plugin-sdk/security-runtime` | Gemeinsam genutzte Helper für Vertrauensmodell, DM-Gating, externe Inhalte und Secret-Erfassung | + | `plugin-sdk/ssrf-policy` | Helper für Host-Allowlists und SSRF-Richtlinien für private Netzwerke | + | `plugin-sdk/ssrf-runtime` | Helper für Pinned Dispatcher, SSRF-geschütztes Fetch und SSRF-Richtlinien | + | `plugin-sdk/secret-input` | Helper zum Parsen von Secret-Eingaben | + | `plugin-sdk/webhook-ingress` | Helper für Webhook-Anfragen/-Ziele | + | `plugin-sdk/webhook-request-guards` | Helper für Body-Größe/Timeout von Anfragen | - + | Subpath | Wichtige Exporte | | --- | --- | - | `plugin-sdk/runtime` | Breite Hilfsfunktionen für Laufzeit, Logging, Backup, Plugin-Installation | - | `plugin-sdk/runtime-env` | Schmale Hilfsfunktionen für Laufzeitumgebung, Logger, Timeout, Retry und Backoff | + | `plugin-sdk/runtime` | Breite Runtime-/Logging-/Backup-/Plugin-Install-Helper | + | `plugin-sdk/runtime-env` | Schmale Helper für Runtime-Umgebung, Logger, Timeout, Retry und Backoff | | `plugin-sdk/runtime-store` | `createPluginRuntimeStore` | - | `plugin-sdk/plugin-runtime` | Gemeinsame Hilfsfunktionen für Plugin-Befehle/Hooks/HTTP/Interaktivität | - | `plugin-sdk/hook-runtime` | Gemeinsame Hilfsfunktionen für Webhooks und interne Hook-Pipelines | - | `plugin-sdk/lazy-runtime` | Hilfsfunktionen für verzögerte Laufzeitimporte/-Bindings wie `createLazyRuntimeModule`, `createLazyRuntimeMethod` und `createLazyRuntimeSurface` | - | `plugin-sdk/process-runtime` | Hilfsfunktionen für Prozessausführung | - | `plugin-sdk/cli-runtime` | Hilfsfunktionen für CLI-Formatierung, Warten und Versionen | - | `plugin-sdk/gateway-runtime` | Hilfsfunktionen für Gateway-Client und Patches des Kanalstatus | - | `plugin-sdk/config-runtime` | Hilfsfunktionen für Laden/Schreiben von Konfigurationen | - | `plugin-sdk/telegram-command-config` | Normalisierung von Telegram-Befehlsnamen/-beschreibungen und Prüfungen auf Duplikate/Konflikte, auch wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | - | `plugin-sdk/approval-runtime` | Hilfsfunktionen für Exec-/Plugin-Genehmigungen, Builder für Genehmigungsfunktionen, Auth-/Profil-Hilfsfunktionen, natives Routing/Laufzeit-Hilfsfunktionen | - | `plugin-sdk/reply-runtime` | Gemeinsame Hilfsfunktionen für eingehende Nachrichten/Antwort-Laufzeit, Chunking, Dispatch, Heartbeat, Antwort-Planer | - | `plugin-sdk/reply-dispatch-runtime` | Schmale Hilfsfunktionen für Antwort-Dispatch/Finalisierung | - | `plugin-sdk/reply-history` | Gemeinsame Hilfsfunktionen für den Kurzfenster-Antwortverlauf wie `buildHistoryContext`, `recordPendingHistoryEntry` und `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/plugin-runtime` | Gemeinsam genutzte Helper für Plugin-Befehle/-Hooks/-HTTP/-Interaktivität | + | `plugin-sdk/hook-runtime` | Gemeinsam genutzte Pipeline-Helper für Webhooks/interne Hooks | + | `plugin-sdk/lazy-runtime` | Helper für Lazy-Runtime-Import/Binding wie `createLazyRuntimeModule`, `createLazyRuntimeMethod` und `createLazyRuntimeSurface` | + | `plugin-sdk/process-runtime` | Prozess-Exec-Helper | + | `plugin-sdk/cli-runtime` | Helper für CLI-Formatierung, Warten und Versionen | + | `plugin-sdk/gateway-runtime` | Helper für Gateway-Client und Patches des Channel-Status | + | `plugin-sdk/config-runtime` | Helper zum Laden/Schreiben von Konfigurationen | + | `plugin-sdk/telegram-command-config` | Normalisierung von Telegram-Befehlsnamen/-beschreibungen sowie Prüfungen auf Duplikate/Konflikte, auch wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | + | `plugin-sdk/approval-runtime` | Helper für Exec-/Plugin-Genehmigungen, Builder für Genehmigungsfähigkeiten, Auth-/Profil-Helper, native Routing-/Runtime-Helper | + | `plugin-sdk/reply-runtime` | Gemeinsam genutzte Inbound-/Antwort-Runtime-Helper, Chunking, Dispatch, Heartbeat, Antwortplaner | + | `plugin-sdk/reply-dispatch-runtime` | Schmale Helper für Reply-Dispatch/Finalisierung | + | `plugin-sdk/reply-history` | Gemeinsam genutzte Helper für Antwortverlauf in kurzen Zeitfenstern wie `buildHistoryContext`, `recordPendingHistoryEntry` und `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Schmale Hilfsfunktionen für Text-/Markdown-Chunking | - | `plugin-sdk/session-store-runtime` | Hilfsfunktionen für Sitzungsspeicherpfade und `updated-at` | - | `plugin-sdk/state-paths` | Hilfsfunktionen für Pfade von State-/OAuth-Verzeichnissen | - | `plugin-sdk/routing` | Hilfsfunktionen für Route-/Sitzungsschlüssel-/Konto-Bindings wie `resolveAgentRoute`, `buildAgentSessionKey` und `resolveDefaultAgentBoundAccountId` | - | `plugin-sdk/status-helpers` | Gemeinsame Hilfsfunktionen für Statuszusammenfassungen von Kanal/Konto, Standardwerte für Laufzeitstatus und Metadaten von Problemen | - | `plugin-sdk/target-resolver-runtime` | Gemeinsame Hilfsfunktionen zur Zielauflösung | - | `plugin-sdk/string-normalization-runtime` | Hilfsfunktionen zur Slug-/String-Normalisierung | + | `plugin-sdk/reply-chunking` | Schmale Helper für Text-/Markdown-Chunking | + | `plugin-sdk/session-store-runtime` | Helper für Session-Store-Pfade und `updated-at` | + | `plugin-sdk/state-paths` | Pfad-Helper für Status-/OAuth-Verzeichnisse | + | `plugin-sdk/routing` | Helper für Routen-/Session-Key-/Kontobindung wie `resolveAgentRoute`, `buildAgentSessionKey` und `resolveDefaultAgentBoundAccountId` | + | `plugin-sdk/status-helpers` | Gemeinsam genutzte Helper für Zusammenfassungen des Channel-/Kontostatus, Runtime-Status-Standards und Issue-Metadaten | + | `plugin-sdk/target-resolver-runtime` | Gemeinsam genutzte Helper zur Zielauflösung | + | `plugin-sdk/string-normalization-runtime` | Helper zur Slug-/String-Normalisierung | | `plugin-sdk/request-url` | String-URLs aus fetch-/request-ähnlichen Eingaben extrahieren | - | `plugin-sdk/run-command` | Zeitgesteuerter Command-Runner mit normalisierten stdout-/stderr-Ergebnissen | + | `plugin-sdk/run-command` | Zeitgesteuerter Befehlsrunner mit normalisierten stdout-/stderr-Ergebnissen | | `plugin-sdk/param-readers` | Allgemeine Reader für Tool-/CLI-Parameter | - | `plugin-sdk/tool-send` | Kanonische Sendefelder für Ziele aus Tool-Argumenten extrahieren | - | `plugin-sdk/temp-path` | Gemeinsame Hilfsfunktionen für temporäre Download-Pfade | - | `plugin-sdk/logging-core` | Hilfsfunktionen für Subsystem-Logger und Schwärzung | - | `plugin-sdk/markdown-table-runtime` | Hilfsfunktionen für Markdown-Tabellenmodi | - | `plugin-sdk/json-store` | Kleine Hilfsfunktionen zum Lesen/Schreiben von JSON-Status | - | `plugin-sdk/file-lock` | Wiederbetretbare Hilfsfunktionen für Dateisperren | - | `plugin-sdk/persistent-dedupe` | Hilfsfunktionen für festplattenbasierte Dedupe-Caches | - | `plugin-sdk/acp-runtime` | Hilfsfunktionen für ACP-Laufzeit/Sitzungen und Antwort-Dispatch | - | `plugin-sdk/agent-config-primitives` | Schmale Primitive für Schemas der Agent-Laufzeitkonfiguration | - | `plugin-sdk/boolean-param` | Loser Boolean-Parameter-Reader | - | `plugin-sdk/dangerous-name-runtime` | Hilfsfunktionen zur Auflösung von Übereinstimmungen mit gefährlichen Namen | - | `plugin-sdk/device-bootstrap` | Hilfsfunktionen für Device-Bootstrap und Pairing-Tokens | - | `plugin-sdk/extension-shared` | Gemeinsame Primitive für passive Kanäle und Statushilfsfunktionen | - | `plugin-sdk/models-provider-runtime` | Hilfsfunktionen für den `/models`-Befehl und Provider-Antworten | - | `plugin-sdk/skill-commands-runtime` | Hilfsfunktionen zum Auflisten von Skill-Befehlen | - | `plugin-sdk/native-command-registry` | Hilfsfunktionen zum Registrieren/Erstellen/Serialisieren nativer Befehle | - | `plugin-sdk/provider-zai-endpoint` | Hilfsfunktionen zur Erkennung von Z.AI-Endpoints | - | `plugin-sdk/infra-runtime` | Hilfsfunktionen für Systemereignisse/Heartbeat | - | `plugin-sdk/collection-runtime` | Kleine Hilfsfunktionen für begrenzte Caches | - | `plugin-sdk/diagnostic-runtime` | Hilfsfunktionen für Diagnose-Flags und -Ereignisse | - | `plugin-sdk/error-runtime` | Fehlergraph, Formatierung, gemeinsame Hilfsfunktionen zur Fehlerklassifikation, `isApprovalNotFoundError` | - | `plugin-sdk/fetch-runtime` | Gewrappter Fetch sowie Hilfsfunktionen für Proxys und gepinnte Lookups | - | `plugin-sdk/host-runtime` | Hilfsfunktionen zur Normalisierung von Hostnamen und SCP-Hosts | - | `plugin-sdk/retry-runtime` | Hilfsfunktionen für Retry-Konfiguration und Retry-Runner | - | `plugin-sdk/agent-runtime` | Hilfsfunktionen für Agent-Verzeichnisse, Identität und Workspaces | - | `plugin-sdk/directory-runtime` | Konfigurationsgestützte Verzeichnisabfrage/-deduplizierung | + | `plugin-sdk/tool-send` | Kanonische Send-Zielfelder aus Tool-Argumenten extrahieren | + | `plugin-sdk/temp-path` | Gemeinsam genutzte Helper für temporäre Download-Pfade | + | `plugin-sdk/logging-core` | Helper für Subsystem-Logger und Redaction | + | `plugin-sdk/markdown-table-runtime` | Helper für Modi von Markdown-Tabellen | + | `plugin-sdk/json-store` | Kleine Helper zum Lesen/Schreiben von JSON-Status | + | `plugin-sdk/file-lock` | Re-entrant-Dateisperren-Helper | + | `plugin-sdk/persistent-dedupe` | Helper für festplattenbasierte Dedupe-Caches | + | `plugin-sdk/acp-runtime` | ACP-Runtime-/Session- und Reply-Dispatch-Helper | + | `plugin-sdk/agent-config-primitives` | Schmale Primitive für Agent-Runtime-Konfigurationsschemas | + | `plugin-sdk/boolean-param` | Toleranter Reader für boolesche Parameter | + | `plugin-sdk/dangerous-name-runtime` | Helper zur Auflösung von Übereinstimmungen bei gefährlichen Namen | + | `plugin-sdk/device-bootstrap` | Helper für Geräte-Bootstrap und Pairing-Tokens | + | `plugin-sdk/extension-shared` | Gemeinsam genutzte Primitive für passive Channels und Status-Helper | + | `plugin-sdk/models-provider-runtime` | Helper für `/models`-Befehle und Provider-Antworten | + | `plugin-sdk/skill-commands-runtime` | Helper zum Auflisten von Skill-Befehlen | + | `plugin-sdk/native-command-registry` | Native Helper für Befehlsregister/-Build/-Serialisierung | + | `plugin-sdk/provider-zai-endpoint` | Helper zur Erkennung von Z.AI-Endpunkten | + | `plugin-sdk/infra-runtime` | Helper für Systemereignisse/Heartbeat | + | `plugin-sdk/collection-runtime` | Kleine Helper für begrenzte Caches | + | `plugin-sdk/diagnostic-runtime` | Helper für Diagnose-Flags und -Ereignisse | + | `plugin-sdk/error-runtime` | Fehlergraph, Formatierung, gemeinsam genutzte Helper zur Fehlerklassifizierung, `isApprovalNotFoundError` | + | `plugin-sdk/fetch-runtime` | Helper für Wrapped Fetch, Proxy und Pinned Lookup | + | `plugin-sdk/host-runtime` | Helper zur Normalisierung von Hostnamen und SCP-Hosts | + | `plugin-sdk/retry-runtime` | Helper für Retry-Konfiguration und Retry-Runner | + | `plugin-sdk/agent-runtime` | Helper für Agent-Verzeichnisse, -Identität und -Workspace | + | `plugin-sdk/directory-runtime` | Konfigurationsgestützte Verzeichnisabfrage/Deduplizierung | | `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` | - + | Subpath | Wichtige Exporte | | --- | --- | - | `plugin-sdk/media-runtime` | Gemeinsame Hilfsfunktionen zum Abrufen/Transformieren/Speichern von Medien sowie Builder für Medien-Payloads | - | `plugin-sdk/media-understanding` | Typen für Media-Understanding-Provider sowie providerseitige Exporte für Bild-/Audio-Hilfsfunktionen | - | `plugin-sdk/text-runtime` | Gemeinsame Hilfsfunktionen für Text/Markdown/Logging wie das Entfernen von für Assistants sichtbarem Text, Hilfsfunktionen für Markdown-Rendering/Chunking/Tabellen, Schwärzung, Directive-Tags und sichere Text-Utilities | - | `plugin-sdk/text-chunking` | Hilfsfunktion für das Chunking ausgehender Texte | - | `plugin-sdk/speech` | Typen für Sprach-Provider sowie providerseitige Hilfsfunktionen für Directives, Register und Validierung | - | `plugin-sdk/speech-core` | Gemeinsame Typen für Sprach-Provider sowie Hilfsfunktionen für Register, Directives und Normalisierung | - | `plugin-sdk/realtime-transcription` | Typen für Realtime-Transcription-Provider und Hilfsfunktionen für Register | - | `plugin-sdk/realtime-voice` | Typen für Realtime-Voice-Provider und Hilfsfunktionen für Register | + | `plugin-sdk/media-runtime` | Gemeinsam genutzte Helper zum Abrufen/Transformieren/Speichern von Medien sowie Builder für Medien-Payloads | + | `plugin-sdk/media-generation-runtime` | Gemeinsam genutzte Failover-Helper für Mediengenerierung, Kandidatenauswahl und Meldungen für fehlende Modelle | + | `plugin-sdk/media-understanding` | Typen für Media-Understanding-Provider sowie Provider-seitige Exporte für Bild-/Audio-Helper | + | `plugin-sdk/text-runtime` | Gemeinsam genutzte Helper für Text/Markdown/Logging wie das Entfernen von für Assistenten sichtbarem Text, Helper für Markdown-Rendering/Chunking/Tabellen, Redaction-Helper, Directive-Tag-Helper und Safe-Text-Utilities | + | `plugin-sdk/text-chunking` | Helper für Chunking ausgehender Texte | + | `plugin-sdk/speech` | Typen für Speech-Provider sowie Provider-seitige Helper für Direktiven, Register und Validierung | + | `plugin-sdk/speech-core` | Gemeinsam genutzte Typen, Register-, Direktiven- und Normalisierungs-Helper für Speech-Provider | + | `plugin-sdk/realtime-transcription` | Typen für Realtime-Transcription-Provider und Register-Helper | + | `plugin-sdk/realtime-voice` | Typen für Realtime-Voice-Provider und Register-Helper | | `plugin-sdk/image-generation` | Typen für Image-Generation-Provider | - | `plugin-sdk/image-generation-core` | Gemeinsame Typen für Bildgenerierung, Failover, Authentifizierung und Hilfsfunktionen für Register | - | `plugin-sdk/music-generation` | Typen für Music-Generation-Provider/Requests/Results | - | `plugin-sdk/music-generation-core` | Gemeinsame Typen für Musikgenerierung, Failover-Hilfsfunktionen, Provider-Lookup und Parsing von Modellreferenzen | - | `plugin-sdk/video-generation` | Typen für Video-Generation-Provider/Requests/Results | - | `plugin-sdk/video-generation-core` | Gemeinsame Typen für Videoerzeugung, Failover-Hilfsfunktionen, Provider-Lookup und Parsing von Modellreferenzen | - | `plugin-sdk/webhook-targets` | Hilfsfunktionen für Webhook-Zielregister und Routeninstallation | - | `plugin-sdk/webhook-path` | Hilfsfunktionen zur Normalisierung von Webhook-Pfaden | - | `plugin-sdk/web-media` | Gemeinsame Hilfsfunktionen zum Laden lokaler/entfernter Medien | - | `plugin-sdk/zod` | Re-exportiertes `zod` für Nutzer des Plugin SDK | + | `plugin-sdk/image-generation-core` | Gemeinsam genutzte Typen, Failover-, Auth- und Register-Helper für Bildgenerierung | + | `plugin-sdk/music-generation` | Typen für Music-Generation-Provider/-Requests/-Ergebnisse | + | `plugin-sdk/music-generation-core` | Gemeinsam genutzte Typen, Failover-Helper, Provider-Lookup und Parsing von Modellreferenzen für Musikgenerierung | + | `plugin-sdk/video-generation` | Typen für Video-Generation-Provider/-Requests/-Ergebnisse | + | `plugin-sdk/video-generation-core` | Gemeinsam genutzte Typen, Failover-Helper, Provider-Lookup und Parsing von Modellreferenzen für Videogenerierung | + | `plugin-sdk/webhook-targets` | Webhook-Zielregister und Helper zur Routeninstallation | + | `plugin-sdk/webhook-path` | Helper zur Normalisierung von Webhook-Pfaden | + | `plugin-sdk/web-media` | Gemeinsam genutzte Helper zum Laden entfernter/lokaler Medien | + | `plugin-sdk/zod` | Re-exportiertes `zod` für Plugin-SDK-Konsumenten | | `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` | - + | Subpath | Wichtige Exporte | | --- | --- | - | `plugin-sdk/memory-core` | Gebündelte `memory-core`-Hilfsoberfläche für Manager-/Konfigurations-/Datei-/CLI-Hilfsfunktionen | - | `plugin-sdk/memory-core-engine-runtime` | Laufzeit-Fassade für Memory-Index/Suche | - | `plugin-sdk/memory-core-host-engine-foundation` | Exporte für die Foundation-Engine des Memory-Hosts | - | `plugin-sdk/memory-core-host-engine-embeddings` | Exporte für die Embedding-Engine des Memory-Hosts | - | `plugin-sdk/memory-core-host-engine-qmd` | Exporte für die QMD-Engine des Memory-Hosts | - | `plugin-sdk/memory-core-host-engine-storage` | Exporte für die Storage-Engine des Memory-Hosts | - | `plugin-sdk/memory-core-host-multimodal` | Hilfsfunktionen für multimodale Memory-Hosts | - | `plugin-sdk/memory-core-host-query` | Hilfsfunktionen für Memory-Host-Abfragen | - | `plugin-sdk/memory-core-host-secret` | Hilfsfunktionen für Secrets des Memory-Hosts | - | `plugin-sdk/memory-core-host-status` | Hilfsfunktionen für den Status des Memory-Hosts | - | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Laufzeit-Hilfsfunktionen für den Memory-Host | - | `plugin-sdk/memory-core-host-runtime-core` | Core-Laufzeit-Hilfsfunktionen für den Memory-Host | - | `plugin-sdk/memory-core-host-runtime-files` | Hilfsfunktionen für Dateien/Laufzeit des Memory-Hosts | - | `plugin-sdk/memory-lancedb` | Gebündelte `memory-lancedb`-Hilfsoberfläche | + | `plugin-sdk/memory-core` | Gebündelte Hilfsoberfläche von memory-core für Manager-/Konfigurations-/Datei-/CLI-Helper | + | `plugin-sdk/memory-core-engine-runtime` | Runtime-Fassade für Memory-Index/Suche | + | `plugin-sdk/memory-core-host-engine-foundation` | Exporte der Foundation-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-embeddings` | Exporte der Embedding-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-qmd` | Exporte der QMD-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-storage` | Exporte der Storage-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-multimodal` | Multimodale Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-query` | Query-Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-secret` | Secret-Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-events` | Helper für Event-Journale des Memory-Hosts | + | `plugin-sdk/memory-core-host-status` | Status-Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Runtime-Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-core` | Core-Runtime-Helper des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-files` | Datei-/Runtime-Helper des Memory-Hosts | + | `plugin-sdk/memory-host-core` | Herstellerneutraler Alias für Core-Runtime-Helper des Memory-Hosts | + | `plugin-sdk/memory-host-events` | Herstellerneutraler Alias für Helper für Event-Journale des Memory-Hosts | + | `plugin-sdk/memory-host-files` | Herstellerneutraler Alias für Datei-/Runtime-Helper des Memory-Hosts | + | `plugin-sdk/memory-host-markdown` | Gemeinsam genutzte Managed-Markdown-Helper für memory-nahe Plugins | + | `plugin-sdk/memory-host-search` | Aktive Memory-Runtime-Fassade für den Zugriff auf Search-Manager | + | `plugin-sdk/memory-host-status` | Herstellerneutraler Alias für Status-Helper des Memory-Hosts | + | `plugin-sdk/memory-lancedb` | Gebündelte Hilfsoberfläche von memory-lancedb | - - | Familie | Aktuelle Subpaths | Beabsichtigte Verwendung | + + | Family | Aktuelle Subpaths | Vorgesehene Verwendung | | --- | --- | --- | - | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Hilfsfunktionen für gebündelte Browser-Plugins (`browser-support` bleibt das Kompatibilitäts-Barrel) | - | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Hilfs-/Laufzeitoberfläche für das gebündelte Matrix-Plugin | - | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Hilfs-/Laufzeitoberfläche für das gebündelte LINE-Plugin | - | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Hilfsoberfläche für das gebündelte IRC-Plugin | - | Kanalspezifische Hilfsfunktionen | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Gebündelte Kompatibilitäts-/Hilfs-Schnittstellen für Kanäle | - | Auth-/pluginspezifische Hilfsfunktionen | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Gebündelte Hilfs-Schnittstellen für Funktionen/Plugins; `plugin-sdk/github-copilot-token` exportiert derzeit `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` | + | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Support-Helper für das gebündelte Browser-Plugin (`browser-support` bleibt das Kompatibilitäts-Barrel) | + | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Helper-/Runtime-Oberfläche des gebündelten Matrix-Plugins | + | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Helper-/Runtime-Oberfläche des gebündelten LINE-Plugins | + | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Hilfsoberfläche des gebündelten IRC-Plugins | + | Channelspezifische Helper | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Kompatibilitäts-/Helper-Seams für gebündelte Channels | + | Auth-/pluginspezifische Helper | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Helper-Seams für gebündelte Features/Plugins; `plugin-sdk/github-copilot-token` exportiert derzeit `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` | @@ -285,55 +294,57 @@ nicht ausdrücklich eine davon als öffentlich hervorhebt. Der Callback `register(api)` erhält ein `OpenClawPluginApi`-Objekt mit diesen Methoden: -### Registrierung von Funktionen +### Registrierung von Fähigkeiten -| Methode | Was registriert wird | -| ------------------------------------------------ | ------------------------------- | -| `api.registerProvider(...)` | Text-Inferenz (LLM) | -| `api.registerChannel(...)` | Messaging-Kanal | -| `api.registerSpeechProvider(...)` | Text-to-Speech- / STT-Synthese | -| `api.registerRealtimeTranscriptionProvider(...)` | Streaming-Echtzeit-Transkription | -| `api.registerRealtimeVoiceProvider(...)` | Duplex-Echtzeit-Sprachsitzungen | -| `api.registerMediaUnderstandingProvider(...)` | Bild-/Audio-/Videoanalyse | -| `api.registerImageGenerationProvider(...)` | Bildgenerierung | -| `api.registerMusicGenerationProvider(...)` | Musikgenerierung | -| `api.registerVideoGenerationProvider(...)` | Videoerzeugung | -| `api.registerWebFetchProvider(...)` | Web-Fetch- / Scrape-Provider | -| `api.registerWebSearchProvider(...)` | Websuche | +| Methode | Was registriert wird | +| ------------------------------------------------ | -------------------------------- | +| `api.registerProvider(...)` | Textinferenz (LLM) | +| `api.registerChannel(...)` | Messaging-Channel | +| `api.registerSpeechProvider(...)` | Text-to-Speech- / STT-Synthese | +| `api.registerRealtimeTranscriptionProvider(...)` | Streamende Realtime-Transkription | +| `api.registerRealtimeVoiceProvider(...)` | Duplex-Realtime-Voice-Sitzungen | +| `api.registerMediaUnderstandingProvider(...)` | Bild-/Audio-/Videoanalyse | +| `api.registerImageGenerationProvider(...)` | Bildgenerierung | +| `api.registerMusicGenerationProvider(...)` | Musikgenerierung | +| `api.registerVideoGenerationProvider(...)` | Videogenerierung | +| `api.registerWebFetchProvider(...)` | Web-Fetch-/Scrape-Provider | +| `api.registerWebSearchProvider(...)` | Websuche | ### Tools und Befehle -| Methode | Was registriert wird | -| ------------------------------- | ----------------------------------------------- | +| Methode | Was registriert wird | +| ------------------------------ | --------------------------------------------- | | `api.registerTool(tool, opts?)` | Agent-Tool (erforderlich oder `{ optional: true }`) | -| `api.registerCommand(def)` | Benutzerdefinierter Befehl (umgeht das LLM) | +| `api.registerCommand(def)` | Benutzerdefinierter Befehl (umgeht das LLM) | ### Infrastruktur -| Methode | Was registriert wird | -| --------------------------------------------- | ------------------------ | -| `api.registerHook(events, handler, opts?)` | Event-Hook | -| `api.registerHttpRoute(params)` | Gateway-HTTP-Endpoint | -| `api.registerGatewayMethod(name, handler)` | Gateway-RPC-Methode | -| `api.registerCli(registrar, opts?)` | CLI-Unterbefehl | -| `api.registerService(service)` | Hintergrunddienst | -| `api.registerInteractiveHandler(registration)` | Interaktiver Handler | +| Methode | Was registriert wird | +| --------------------------------------------- | -------------------------------------- | +| `api.registerHook(events, handler, opts?)` | Event-Hook | +| `api.registerHttpRoute(params)` | Gateway-HTTP-Endpunkt | +| `api.registerGatewayMethod(name, handler)` | Gateway-RPC-Methode | +| `api.registerCli(registrar, opts?)` | CLI-Unterbefehl | +| `api.registerService(service)` | Hintergrunddienst | +| `api.registerInteractiveHandler(registration)` | Interaktiver Handler | +| `api.registerMemoryPromptSupplement(builder)` | Additiver, memory-naher Prompt-Abschnitt | +| `api.registerMemoryCorpusSupplement(adapter)` | Additiver Such-/Lese-Korpus für Memory | Reservierte Core-Admin-Namespaces (`config.*`, `exec.approvals.*`, `wizard.*`, -`update.*`) bleiben immer `operator.admin`, selbst wenn ein Plugin versucht, einen -engeren Geltungsbereich für Gateway-Methoden zuzuweisen. Bevorzugen Sie pluginspezifische Präfixe für +`update.*`) bleiben immer `operator.admin`, auch wenn ein Plugin versucht, einen +engeren Scope für Gateway-Methoden zuzuweisen. Bevorzugen Sie pluginspezifische Präfixe für plugin-eigene Methoden. -### Registrierungsmetadaten für CLI +### CLI-Registrierungsmetadaten -`api.registerCli(registrar, opts?)` akzeptiert zwei Arten von Top-Level-Metadaten: +`api.registerCli(registrar, opts?)` akzeptiert zwei Arten von Metadaten auf oberster Ebene: - `commands`: explizite Befehlswurzeln, die dem Registrar gehören -- `descriptors`: Parse-Zeit-Befehlsdeskriptoren, die für Root-CLI-Hilfe, - Routing und verzögerte Registrierung von Plugin-CLI verwendet werden +- `descriptors`: Parse-Zeit-Befehlsdeskriptoren für Root-CLI-Hilfe, + Routing und verzögerte Registrierung von Plugin-CLI -Wenn ein Plugin-Befehl im normalen Root-CLI-Pfad verzögert geladen bleiben soll, -geben Sie `descriptors` an, die jede Top-Level-Befehlswurzel abdecken, die von diesem +Wenn ein Plugin-Befehl im normalen Root-CLI-Pfad lazy geladen bleiben soll, +geben Sie `descriptors` an, die jede Befehlswurzel auf oberster Ebene abdecken, die durch diesen Registrar bereitgestellt wird. ```typescript @@ -346,7 +357,7 @@ api.registerCli( descriptors: [ { name: "matrix", - description: "Manage Matrix accounts, verification, devices, and profile state", + description: "Matrix-Konten, Verifizierung, Geräte und Profilstatus verwalten", hasSubcommands: true, }, ], @@ -354,50 +365,50 @@ api.registerCli( ); ``` -Verwenden Sie `commands` allein nur dann, wenn Sie keine verzögerte Root-CLI-Registrierung benötigen. -Dieser eager Kompatibilitätspfad wird weiterhin unterstützt, installiert jedoch keine -deskriptorbasierten Platzhalter für verzögertes Laden zur Parse-Zeit. +Verwenden Sie `commands` allein nur dann, wenn Sie keine lazy Registrierung der Root-CLI benötigen. +Dieser eager Kompatibilitätspfad wird weiterhin unterstützt, aber er installiert keine +descriptor-gestützten Platzhalter für verzögertes Laden zur Parse-Zeit. ### Exklusive Slots | Methode | Was registriert wird | | ------------------------------------------ | ------------------------------------- | -| `api.registerContextEngine(id, factory)` | Context Engine (jeweils nur eine aktiv) | +| `api.registerContextEngine(id, factory)` | Kontext-Engine (jeweils nur eine aktiv) | | `api.registerMemoryPromptSection(builder)` | Builder für Memory-Prompt-Abschnitte | | `api.registerMemoryFlushPlan(resolver)` | Resolver für Memory-Flush-Pläne | -| `api.registerMemoryRuntime(runtime)` | Adapter für Memory-Laufzeit | +| `api.registerMemoryRuntime(runtime)` | Adapter für die Memory-Runtime | ### Memory-Embedding-Adapter -| Methode | Was registriert wird | -| --------------------------------------------- | ----------------------------------------------------- | +| Methode | Was registriert wird | +| --------------------------------------------- | ---------------------------------------------------- | | `api.registerMemoryEmbeddingProvider(adapter)` | Memory-Embedding-Adapter für das aktive Plugin | - `registerMemoryPromptSection`, `registerMemoryFlushPlan` und `registerMemoryRuntime` sind exklusiv für Memory-Plugins. - `registerMemoryEmbeddingProvider` erlaubt dem aktiven Memory-Plugin, einen - oder mehrere Embedding-Adapter-IDs zu registrieren (zum Beispiel `openai`, `gemini` oder eine benutzerdefinierte - plugindefinierte ID). -- Benutzerkonfiguration wie `agents.defaults.memorySearch.provider` und - `agents.defaults.memorySearch.fallback` wird gegen diese registrierten + oder mehrere Embedding-Adapter-IDs zu registrieren (zum Beispiel `openai`, `gemini` oder eine + benutzerdefinierte, vom Plugin definierte ID). +- Benutzerkonfigurationen wie `agents.defaults.memorySearch.provider` und + `agents.defaults.memorySearch.fallback` werden gegen diese registrierten Adapter-IDs aufgelöst. ### Ereignisse und Lifecycle -| Methode | Was sie tut | -| ------------------------------------------- | ---------------------------- | -| `api.on(hookName, handler, opts?)` | Typisierter Lifecycle-Hook | -| `api.onConversationBindingResolved(handler)` | Callback für Konversations-Binding | +| Methode | Was sie macht | +| -------------------------------------------- | ----------------------------- | +| `api.on(hookName, handler, opts?)` | Typisierter Lifecycle-Hook | +| `api.onConversationBindingResolved(handler)` | Callback für Konversationsbindung | ### Hook-Entscheidungssemantik -- `before_tool_call`: die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `before_tool_call`: die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `block`), nicht als Überschreibung. -- `before_install`: die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `before_install`: die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `block`), nicht als Überschreibung. -- `reply_dispatch`: die Rückgabe von `{ handled: true, ... }` ist final. Sobald ein Handler die Zustellung beansprucht, werden Handler mit niedrigerer Priorität und der Standardpfad für Model-Dispatch übersprungen. -- `message_sending`: die Rückgabe von `{ cancel: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `message_sending`: die Rückgabe von `{ cancel: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `cancel`), nicht als Überschreibung. +- `before_tool_call`: Die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `before_tool_call`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `block`), nicht als Überschreibung. +- `before_install`: Die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `before_install`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `block`), nicht als Überschreibung. +- `reply_dispatch`: Die Rückgabe von `{ handled: true, ... }` ist final. Sobald ein Handler den Dispatch übernimmt, werden Handler mit niedrigerer Priorität und der Standard-Model-Dispatch-Pfad übersprungen. +- `message_sending`: Die Rückgabe von `{ cancel: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `message_sending`: Die Rückgabe von `{ cancel: false }` wird als keine Entscheidung behandelt (wie das Weglassen von `cancel`), nicht als Überschreibung. ### Felder des API-Objekts @@ -407,13 +418,13 @@ deskriptorbasierten Platzhalter für verzögertes Laden zur Parse-Zeit. | `api.name` | `string` | Anzeigename | | `api.version` | `string?` | Plugin-Version (optional) | | `api.description` | `string?` | Plugin-Beschreibung (optional) | -| `api.source` | `string` | Quellpfad des Plugins | -| `api.rootDir` | `string?` | Root-Verzeichnis des Plugins (optional) | -| `api.config` | `OpenClawConfig` | Aktueller Konfigurations-Snapshot (aktive In-Memory-Laufzeitaufnahme, wenn verfügbar) | +| `api.source` | `string` | Plugin-Quellpfad | +| `api.rootDir` | `string?` | Plugin-Root-Verzeichnis (optional) | +| `api.config` | `OpenClawConfig` | Aktueller Konfigurations-Snapshot (aktiver In-Memory-Runtime-Snapshot, falls verfügbar) | | `api.pluginConfig` | `Record` | Pluginspezifische Konfiguration aus `plugins.entries..config` | -| `api.runtime` | `PluginRuntime` | [Runtime Helpers](/de/plugins/sdk-runtime) | -| `api.logger` | `PluginLogger` | Scoped Logger (`debug`, `info`, `warn`, `error`) | -| `api.registrationMode` | `PluginRegistrationMode` | Aktueller Lademodus; `"setup-runtime"` ist das schlanke Fenster vor vollständigem Entry bei Start/Einrichtung | +| `api.runtime` | `PluginRuntime` | [Runtime-Helper](/de/plugins/sdk-runtime) | +| `api.logger` | `PluginLogger` | Bereichsspezifischer Logger (`debug`, `info`, `warn`, `error`) | +| `api.registrationMode` | `PluginRegistrationMode` | Aktueller Lademodus; `"setup-runtime"` ist das leichtgewichtige Start-/Setup-Fenster vor dem vollständigen Entry | | `api.resolvePath(input)` | `(string) => string` | Pfad relativ zum Plugin-Root auflösen | ## Interne Modulkonvention @@ -422,49 +433,49 @@ Verwenden Sie innerhalb Ihres Plugins lokale Barrel-Dateien für interne Importe ``` my-plugin/ - api.ts # Öffentliche Exporte für externe Nutzer - runtime-api.ts # Nur interne Laufzeit-Exporte - index.ts # Plugin-Entry-Point - setup-entry.ts # Schlanker nur-Setup-Entry (optional) + api.ts # Öffentliche Exporte für externe Konsumenten + runtime-api.ts # Nur interne Runtime-Exporte + index.ts # Plugin-Einstiegspunkt + setup-entry.ts # Leichtgewichtiger, nur für Setup gedachter Einstiegspunkt (optional) ``` - Importieren Sie Ihr eigenes Plugin in Produktionscode niemals über `openclaw/plugin-sdk/`. - Leiten Sie interne Importe über `./api.ts` oder + Importieren Sie Ihr eigenes Plugin niemals über `openclaw/plugin-sdk/` + aus Produktionscode. Leiten Sie interne Importe über `./api.ts` oder `./runtime-api.ts`. Der SDK-Pfad ist nur der externe Vertrag. -Fassadengeladene öffentliche Oberflächen gebündelter Plugins (`api.ts`, `runtime-api.ts`, -`index.ts`, `setup-entry.ts` und ähnliche öffentliche Entry-Dateien) bevorzugen jetzt den -aktiven Laufzeit-Konfigurations-Snapshot, wenn OpenClaw bereits läuft. Wenn noch kein Laufzeit- +Öffentliche Oberflächen facadengeladener gebündelter Plugins (`api.ts`, `runtime-api.ts`, +`index.ts`, `setup-entry.ts` und ähnliche öffentliche Entry-Dateien) bevorzugen nun den +aktiven Runtime-Konfigurations-Snapshot, wenn OpenClaw bereits läuft. Wenn noch kein Runtime- Snapshot existiert, greifen sie auf die auf der Festplatte aufgelöste Konfigurationsdatei zurück. -Provider-Plugins können außerdem ein schmales pluginlokales Vertrags-Barrel bereitstellen, wenn eine -Hilfsfunktion absichtlich providerspezifisch ist und noch nicht in einen generischen SDK- -Subpath gehört. Aktuelles gebündeltes Beispiel: Der Anthropic-Provider hält seine Claude- -Stream-Hilfsfunktionen in seiner eigenen öffentlichen `api.ts`- / `contract-api.ts`-Schnittstelle, statt +Provider-Plugins können auch ein schmales, pluginlokales Vertrags-Barrel bereitstellen, wenn ein +Helper absichtlich providerspezifisch ist und noch nicht in einen generischen SDK- +Subpath gehört. Aktuelles gebündeltes Beispiel: Der Anthropic-Provider behält seine Claude- +Stream-Helper in seiner eigenen öffentlichen `api.ts`- / `contract-api.ts`-Seam, anstatt Anthropic-Beta-Header- und `service_tier`-Logik in einen generischen -`plugin-sdk/*`-Vertrag hochzustufen. +`plugin-sdk/*`-Vertrag zu übernehmen. Weitere aktuelle gebündelte Beispiele: - `@openclaw/openai-provider`: `api.ts` exportiert Provider-Builder, - Hilfsfunktionen für Standardmodelle und Builder für Realtime-Provider -- `@openclaw/openrouter-provider`: `api.ts` exportiert den Provider-Builder sowie - Hilfsfunktionen für Onboarding/Konfiguration + Standardmodell-Helper und Realtime-Provider-Builder +- `@openclaw/openrouter-provider`: `api.ts` exportiert den Provider-Builder plus + Onboarding-/Konfigurations-Helper - Produktionscode von Erweiterungen sollte auch Importe aus `openclaw/plugin-sdk/` - vermeiden. Wenn eine Hilfsfunktion wirklich gemeinsam genutzt wird, stufen Sie sie zu einem neutralen SDK-Subpath - wie `openclaw/plugin-sdk/speech`, `.../provider-model-shared` oder einer anderen - funktionsorientierten Oberfläche hoch, statt zwei Plugins miteinander zu koppeln. + Produktionscode von Extensions sollte außerdem Importe über `openclaw/plugin-sdk/` + vermeiden. Wenn ein Helper wirklich gemeinsam genutzt wird, verschieben Sie ihn in einen neutralen SDK-Subpath + wie `openclaw/plugin-sdk/speech`, `.../provider-model-shared` oder eine andere + fähigkeitsorientierte Oberfläche, anstatt zwei Plugins miteinander zu koppeln. -## Verwandt +## Verwandte Themen -- [Entry Points](/de/plugins/sdk-entrypoints) — Optionen für `definePluginEntry` und `defineChannelPluginEntry` -- [Runtime Helpers](/de/plugins/sdk-runtime) — vollständige Referenz für den Namespace `api.runtime` -- [Setup and Config](/de/plugins/sdk-setup) — Paketierung, Manifeste, Konfigurationsschemas -- [Testing](/de/plugins/sdk-testing) — Testhilfsprogramme und Lint-Regeln -- [SDK Migration](/de/plugins/sdk-migration) — Migration von veralteten Oberflächen -- [Plugin Internals](/de/plugins/architecture) — ausführliche Architektur und Funktionsmodell +- [Einstiegspunkte](/de/plugins/sdk-entrypoints) — Optionen für `definePluginEntry` und `defineChannelPluginEntry` +- [Runtime-Helper](/de/plugins/sdk-runtime) — vollständige Referenz des `api.runtime`-Namespace +- [Setup und Konfiguration](/de/plugins/sdk-setup) — Packaging, Manifeste, Konfigurationsschemas +- [Tests](/de/plugins/sdk-testing) — Test-Utilities und Lint-Regeln +- [SDK-Migration](/de/plugins/sdk-migration) — Migration von veralteten Oberflächen +- [Plugin-Interna](/de/plugins/architecture) — tiefe Architektur und Fähigkeitsmodell diff --git a/docs/de/tools/image-generation.md b/docs/de/tools/image-generation.md index c3499d168..cd0db4e13 100644 --- a/docs/de/tools/image-generation.md +++ b/docs/de/tools/image-generation.md @@ -1,30 +1,30 @@ --- read_when: - Bilder über den Agenten generieren - - Provider und Modelle für die Bildgenerierung konfigurieren + - Anbieter und Modelle für die Bildgenerierung konfigurieren - Die Parameter des Tools `image_generate` verstehen -summary: Bilder mit konfigurierten Providern generieren und bearbeiten (OpenAI, Google Gemini, fal, MiniMax, ComfyUI, Vydra) +summary: Bilder mit konfigurierten Anbietern erstellen und bearbeiten (OpenAI, Google Gemini, fal, MiniMax, ComfyUI, Vydra) title: Bildgenerierung x-i18n: - generated_at: "2026-04-06T03:12:40Z" + generated_at: "2026-04-06T06:21:07Z" model: gpt-5.4 provider: openai - source_hash: dde416dd1441a06605db85b5813cf61ccfc525813d6db430b7b7dfa53d6a3134 + source_hash: 903cc522c283a8da2cbd449ae3e25f349a74d00ecfdaf0f323fd8aa3f2107aea source_path: tools/image-generation.md workflow: 15 --- # Bildgenerierung -Das Tool `image_generate` ermöglicht es dem Agenten, Bilder mit Ihren konfigurierten Providern zu erstellen und zu bearbeiten. Generierte Bilder werden automatisch als Medienanhänge in der Antwort des Agenten zugestellt. +Das Tool `image_generate` ermöglicht es dem Agenten, Bilder mit Ihren konfigurierten Anbietern zu erstellen und zu bearbeiten. Generierte Bilder werden automatisch als Medienanhänge in der Antwort des Agenten bereitgestellt. -Das Tool erscheint nur, wenn mindestens ein Provider für Bildgenerierung verfügbar ist. Wenn Sie `image_generate` nicht in den Tools Ihres Agenten sehen, konfigurieren Sie `agents.defaults.imageGenerationModel` oder richten Sie einen API-Schlüssel für einen Provider ein. +Das Tool erscheint nur, wenn mindestens ein Anbieter für die Bildgenerierung verfügbar ist. Wenn `image_generate` nicht in den Tools Ihres Agenten angezeigt wird, konfigurieren Sie `agents.defaults.imageGenerationModel` oder richten Sie einen API-Schlüssel für einen Anbieter ein. ## Schnellstart -1. Legen Sie für mindestens einen Provider einen API-Schlüssel fest (zum Beispiel `OPENAI_API_KEY` oder `GEMINI_API_KEY`). +1. Legen Sie für mindestens einen Anbieter einen API-Schlüssel fest (zum Beispiel `OPENAI_API_KEY` oder `GEMINI_API_KEY`). 2. Legen Sie optional Ihr bevorzugtes Modell fest: ```json5 @@ -39,22 +39,22 @@ Das Tool erscheint nur, wenn mindestens ein Provider für Bildgenerierung verfü } ``` -3. Fragen Sie den Agenten: _„Erzeuge ein Bild eines freundlichen Hummer-Maskottchens.“_ +3. Fragen Sie den Agenten: _„Erstelle ein Bild eines freundlichen Hummer-Maskottchens.“_ -Der Agent ruft `image_generate` automatisch auf. Kein Tool-Allowlisting erforderlich — es ist standardmäßig aktiviert, wenn ein Provider verfügbar ist. +Der Agent ruft `image_generate` automatisch auf. Keine Tool-Positivliste erforderlich — es ist standardmäßig aktiviert, wenn ein Anbieter verfügbar ist. -## Unterstützte Provider +## Unterstützte Anbieter -| Provider | Standardmodell | Unterstützung für Bearbeitung | API-Schlüssel | -| -------- | ------------------------------ | ---------------------------------- | ------------------------------------------------------ | -| OpenAI | `gpt-image-1` | Ja (bis zu 5 Bilder) | `OPENAI_API_KEY` | -| Google | `gemini-3.1-flash-image-preview` | Ja | `GEMINI_API_KEY` oder `GOOGLE_API_KEY` | -| fal | `fal-ai/flux/dev` | Ja | `FAL_KEY` | -| MiniMax | `image-01` | Ja (Subjektreferenz) | `MINIMAX_API_KEY` oder MiniMax OAuth (`minimax-portal`) | -| ComfyUI | `workflow` | Ja (1 Bild, workflowkonfiguriert) | `COMFY_API_KEY` oder `COMFY_CLOUD_API_KEY` für Cloud | -| Vydra | `grok-imagine` | Nein | `VYDRA_API_KEY` | +| Anbieter | Standardmodell | Bearbeitungsunterstützung | API-Schlüssel | +| -------- | -------------------------------- | ---------------------------------- | ----------------------------------------------------- | +| OpenAI | `gpt-image-1` | Ja (bis zu 5 Bilder) | `OPENAI_API_KEY` | +| Google | `gemini-3.1-flash-image-preview` | Ja | `GEMINI_API_KEY` oder `GOOGLE_API_KEY` | +| fal | `fal-ai/flux/dev` | Ja | `FAL_KEY` | +| MiniMax | `image-01` | Ja (Subjektreferenz) | `MINIMAX_API_KEY` oder MiniMax OAuth (`minimax-portal`) | +| ComfyUI | `workflow` | Ja (1 Bild, im Workflow konfiguriert) | `COMFY_API_KEY` oder `COMFY_CLOUD_API_KEY` für die Cloud | +| Vydra | `grok-imagine` | Nein | `VYDRA_API_KEY` | -Verwenden Sie `action: "list"`, um verfügbare Provider und Modelle zur Laufzeit zu prüfen: +Verwenden Sie `action: "list"`, um verfügbare Anbieter und Modelle zur Laufzeit zu prüfen: ``` /tool image_generate action=list @@ -62,20 +62,20 @@ Verwenden Sie `action: "list"`, um verfügbare Provider und Modelle zur Laufzeit ## Tool-Parameter -| Parameter | Typ | Beschreibung | -| ------------- | -------- | ----------------------------------------------------------------------------------- | -| `prompt` | string | Prompt für die Bildgenerierung (erforderlich für `action: "generate"`) | -| `action` | string | `"generate"` (Standard) oder `"list"`, um Provider zu prüfen | -| `model` | string | Override für Provider/Modell, z. B. `openai/gpt-image-1` | -| `image` | string | Einzelner Pfad oder URL eines Referenzbilds für den Bearbeitungsmodus | -| `images` | string[] | Mehrere Referenzbilder für den Bearbeitungsmodus (bis zu 5) | -| `size` | string | Größenhinweis: `1024x1024`, `1536x1024`, `1024x1536`, `1024x1792`, `1792x1024` | +| Parameter | Typ | Beschreibung | +| ------------- | -------- | ------------------------------------------------------------------------------------ | +| `prompt` | string | Prompt für die Bildgenerierung (erforderlich für `action: "generate"`) | +| `action` | string | `"generate"` (Standard) oder `"list"` zum Prüfen von Anbietern | +| `model` | string | Anbieter-/Modell-Überschreibung, z. B. `openai/gpt-image-1` | +| `image` | string | Einzelner Referenzbildpfad oder URL für den Bearbeitungsmodus | +| `images` | string[] | Mehrere Referenzbilder für den Bearbeitungsmodus (bis zu 5) | +| `size` | string | Größenhinweis: `1024x1024`, `1536x1024`, `1024x1536`, `1024x1792`, `1792x1024` | | `aspectRatio` | string | Seitenverhältnis: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` | -| `resolution` | string | Auflösungshinweis: `1K`, `2K` oder `4K` | -| `count` | number | Anzahl der zu generierenden Bilder (1–4) | -| `filename` | string | Hinweis für den Ausgabedateinamen | +| `resolution` | string | Auflösungshinweis: `1K`, `2K` oder `4K` | +| `count` | number | Anzahl der zu generierenden Bilder (1–4) | +| `filename` | string | Hinweis für den Ausgabedateinamen | -Nicht alle Provider unterstützen alle Parameter. Das Tool übergibt, was der jeweilige Provider unterstützt, ignoriert den Rest und meldet verworfene Overrides im Tool-Ergebnis. +Nicht alle Anbieter unterstützen alle Parameter. Das Tool übergibt, was jeder Anbieter unterstützt, ignoriert den Rest und meldet verworfene Überschreibungen im Tool-Ergebnis. ## Konfiguration @@ -94,59 +94,59 @@ Nicht alle Provider unterstützen alle Parameter. Das Tool übergibt, was der je } ``` -### Reihenfolge der Providerauswahl +### Reihenfolge der Anbieterauswahl -Beim Generieren eines Bildes versucht OpenClaw Provider in dieser Reihenfolge: +Beim Generieren eines Bildes versucht OpenClaw Anbieter in dieser Reihenfolge: -1. **Parameter `model`** aus dem Tool-Aufruf (falls der Agent einen angibt) +1. Parameter **`model`** aus dem Tool-Aufruf (wenn der Agent einen angibt) 2. **`imageGenerationModel.primary`** aus der Konfiguration 3. **`imageGenerationModel.fallbacks`** in Reihenfolge -4. **Automatische Erkennung** — verwendet nur auth-gestützte Provider-Standards: - - zuerst den aktuellen Standardprovider - - dann die übrigen registrierten Provider für Bildgenerierung in Provider-ID-Reihenfolge +4. **Automatische Erkennung** — verwendet nur authentifizierungsbasierte Anbieterstandards: + - zuerst den aktuellen Standardanbieter + - verbleibende registrierte Anbieter für Bildgenerierung in der Reihenfolge ihrer Anbieter-IDs -Wenn ein Provider fehlschlägt (Auth-Fehler, Rate Limit usw.), wird automatisch der nächste Kandidat versucht. Wenn alle fehlschlagen, enthält der Fehler Details aus jedem Versuch. +Wenn ein Anbieter fehlschlägt (Authentifizierungsfehler, Ratenbegrenzung usw.), wird automatisch der nächste Kandidat versucht. Wenn alle fehlschlagen, enthält der Fehler Details aus jedem Versuch. Hinweise: -- Die automatische Erkennung ist auth-bewusst. Ein Provider-Standard wird nur dann in die Kandidatenliste aufgenommen, - wenn OpenClaw diesen Provider tatsächlich authentifizieren kann. -- Verwenden Sie `action: "list"`, um die aktuell registrierten Provider, ihre - Standardmodelle und Hinweise zu Auth-Env-Variablen zu prüfen. +- Die automatische Erkennung ist authentifizierungsbewusst. Ein Anbieterstandard wird nur dann in die Kandidatenliste aufgenommen, + wenn OpenClaw diesen Anbieter tatsächlich authentifizieren kann. +- Verwenden Sie `action: "list"`, um die aktuell registrierten Anbieter, ihre + Standardmodelle und Hinweise zu Authentifizierungs-Umgebungsvariablen zu prüfen. ### Bildbearbeitung -OpenAI, Google, fal, MiniMax und ComfyUI unterstützen die Bearbeitung von Referenzbildern. Übergeben Sie einen Pfad oder eine URL zu einem Referenzbild: +OpenAI, Google, fal, MiniMax und ComfyUI unterstützen das Bearbeiten von Referenzbildern. Übergeben Sie einen Referenzbildpfad oder eine URL: ``` -"Erzeuge eine Aquarellversion dieses Fotos" + image: "/path/to/photo.jpg" +"Erstelle eine Aquarellversion dieses Fotos" + image: "/path/to/photo.jpg" ``` OpenAI und Google unterstützen bis zu 5 Referenzbilder über den Parameter `images`. fal, MiniMax und ComfyUI unterstützen 1. -MiniMax-Bildgenerierung ist über beide gebündelten MiniMax-Auth-Pfade verfügbar: +Die Bildgenerierung mit MiniMax ist über beide gebündelten MiniMax-Authentifizierungspfade verfügbar: - `minimax/image-01` für Setups mit API-Schlüssel - `minimax-portal/image-01` für Setups mit OAuth -## Provider-Fähigkeiten +## Anbieterfunktionen -| Fähigkeit | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra | -| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ----- | +| Funktion | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra | +| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ------- | | Generieren | Ja (bis zu 4) | Ja (bis zu 4) | Ja (bis zu 4) | Ja (bis zu 9) | Ja (workflowdefinierte Ausgaben) | Ja (1) | -| Bearbeiten/Referenz | Ja (bis zu 5 Bilder) | Ja (bis zu 5 Bilder) | Ja (1 Bild) | Ja (1 Bild, Subjektreferenz) | Ja (1 Bild, workflowkonfiguriert) | Nein | -| Größensteuerung | Ja | Ja | Ja | Nein | Nein | Nein | -| Seitenverhältnis | Nein | Ja | Ja (nur Generieren) | Ja | Nein | Nein | -| Auflösung (1K/2K/4K) | Nein | Ja | Ja | Nein | Nein | Nein | +| Bearbeiten/Referenz | Ja (bis zu 5 Bilder) | Ja (bis zu 5 Bilder) | Ja (1 Bild) | Ja (1 Bild, Subjektreferenz) | Ja (1 Bild, im Workflow konfiguriert) | Nein | +| Größensteuerung | Ja | Ja | Ja | Nein | Nein | Nein | +| Seitenverhältnis | Nein | Ja | Ja (nur Generierung) | Ja | Nein | Nein | +| Auflösung (1K/2K/4K) | Nein | Ja | Ja | Nein | Nein | Nein | ## Verwandt -- [Tools-Übersicht](/de/tools) — alle verfügbaren Agenten-Tools -- [fal](/providers/fal) — Einrichtung des Bild- und Videoproviders fal -- [ComfyUI](/providers/comfy) — Einrichtung von lokalem ComfyUI und Comfy Cloud Workflows -- [Google (Gemini)](/de/providers/google) — Einrichtung des Bildproviders Gemini -- [MiniMax](/de/providers/minimax) — Einrichtung des Bildproviders MiniMax -- [OpenAI](/de/providers/openai) — Einrichtung des Providers OpenAI Images -- [Vydra](/providers/vydra) — Einrichtung von Bild, Video und Sprache mit Vydra -- [Konfigurationsreferenz](/de/gateway/configuration-reference#agent-defaults) — Konfiguration von `imageGenerationModel` +- [Tools Overview](/de/tools) — alle verfügbaren Agenten-Tools +- [fal](/de/providers/fal) — Einrichtung des fal-Anbieters für Bilder und Videos +- [ComfyUI](/de/providers/comfy) — Einrichtung lokaler ComfyUI- und Comfy-Cloud-Workflows +- [Google (Gemini)](/de/providers/google) — Einrichtung des Gemini-Bildanbieters +- [MiniMax](/de/providers/minimax) — Einrichtung des MiniMax-Bildanbieters +- [OpenAI](/de/providers/openai) — Einrichtung des OpenAI-Images-Anbieters +- [Vydra](/de/providers/vydra) — Einrichtung von Vydra für Bilder, Videos und Sprache +- [Configuration Reference](/de/gateway/configuration-reference#agent-defaults) — Konfiguration von `imageGenerationModel` - [Models](/de/concepts/models) — Modellkonfiguration und Failover diff --git a/docs/de/tools/video-generation.md b/docs/de/tools/video-generation.md index e94fcdfa0..24e15bd69 100644 --- a/docs/de/tools/video-generation.md +++ b/docs/de/tools/video-generation.md @@ -1,80 +1,80 @@ --- read_when: - - Videos über den Agent erzeugen - - Provider und Modelle für die Videoerzeugung konfigurieren + - Videos über den Agenten generieren + - Provider und Modelle für die Videogenerierung konfigurieren - Die Parameter des Tools `video_generate` verstehen -summary: Videos aus Text, Bildern oder vorhandenen Videos mit 12 Provider-Backends erzeugen -title: Videoerzeugung +summary: Erzeugen Sie Videos aus Text, Bildern oder vorhandenen Videos mit 12 Provider-Backends +title: Videogenerierung x-i18n: - generated_at: "2026-04-06T03:13:34Z" + generated_at: "2026-04-06T06:21:15Z" model: gpt-5.4 provider: openai - source_hash: 4afec87368232221db1aa5a3980254093d6a961b17271b2dcbf724e6bd455b16 + source_hash: 90d8a392b35adbd899232b02c55c10895b9d7ffc9858d6ca448f2e4e4a57f12f source_path: tools/video-generation.md workflow: 15 --- -# Videoerzeugung +# Videogenerierung -OpenClaw-Agents können Videos aus Text-Prompts, Referenzbildern oder vorhandenen Videos erzeugen. Zwölf Provider-Backends werden unterstützt, jedes mit unterschiedlichen Modelloptionen, Eingabemodi und Funktionssätzen. Der Agent wählt automatisch den richtigen Provider basierend auf Ihrer Konfiguration und den verfügbaren API-Schlüsseln aus. +OpenClaw-Agenten können Videos aus Text-Prompts, Referenzbildern oder vorhandenen Videos erzeugen. Zwölf Provider-Backends werden unterstützt, jeweils mit unterschiedlichen Modelloptionen, Eingabemodi und Funktionsumfängen. Der Agent wählt automatisch den richtigen Provider basierend auf Ihrer Konfiguration und den verfügbaren API-Schlüsseln aus. -Das Tool `video_generate` erscheint nur, wenn mindestens ein Provider für Videoerzeugung verfügbar ist. Wenn Sie es nicht in Ihren Agent-Tools sehen, setzen Sie einen API-Schlüssel für einen Provider oder konfigurieren Sie `agents.defaults.videoGenerationModel`. +Das Tool `video_generate` wird nur angezeigt, wenn mindestens ein Provider für die Videogenerierung verfügbar ist. Wenn Sie es in Ihren Agenten-Tools nicht sehen, legen Sie einen API-Schlüssel für einen Provider fest oder konfigurieren Sie `agents.defaults.videoGenerationModel`. ## Schnellstart -1. Setzen Sie einen API-Schlüssel für einen unterstützten Provider: +1. Legen Sie einen API-Schlüssel für einen beliebigen unterstützten Provider fest: ```bash export GEMINI_API_KEY="your-key" ``` -2. Heften Sie optional ein Standardmodell fest: +2. Optional ein Standardmodell festlegen: ```bash openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview" ``` -3. Fragen Sie den Agent: +3. Fragen Sie den Agenten: -> Erzeuge ein 5-sekündiges cineastisches Video eines freundlichen Hummers, der bei Sonnenuntergang surft. +> Erzeuge ein 5-sekündiges cineastisches Video von einem freundlichen Hummer, der bei Sonnenuntergang surft. -Der Agent ruft `video_generate` automatisch auf. Keine Tool-Allowlist ist erforderlich. +Der Agent ruft `video_generate` automatisch auf. Kein Tool-Allowlisting ist erforderlich. ## Was passiert, wenn Sie ein Video erzeugen -Die Videoerzeugung ist asynchron. Wenn der Agent `video_generate` in einer Sitzung aufruft: +Die Videogenerierung erfolgt asynchron. Wenn der Agent in einer Sitzung `video_generate` aufruft: -1. OpenClaw sendet die Anfrage an den Provider und gibt sofort eine Task-ID zurück. -2. Der Provider verarbeitet den Job im Hintergrund (typischerweise 30 Sekunden bis 5 Minuten, abhängig von Provider und Auflösung). -3. Wenn das Video bereit ist, weckt OpenClaw dieselbe Sitzung mit einem internen Abschlussereignis. -4. Der Agent veröffentlicht das fertige Video zurück in der ursprünglichen Konversation. +1. OpenClaw sendet die Anfrage an den Provider und gibt sofort eine Aufgaben-ID zurück. +2. Der Provider verarbeitet den Auftrag im Hintergrund (typischerweise 30 Sekunden bis 5 Minuten, abhängig von Provider und Auflösung). +3. Wenn das Video bereit ist, weckt OpenClaw dieselbe Sitzung mit einem internen Abschlussereignis auf. +4. Der Agent postet das fertige Video zurück in die ursprüngliche Unterhaltung. -Während ein Job läuft, geben doppelte `video_generate`-Aufrufe in derselben Sitzung den aktuellen Task-Status zurück, statt eine weitere Erzeugung zu starten. Verwenden Sie `openclaw tasks list` oder `openclaw tasks show `, um den Fortschritt über die CLI zu prüfen. +Während ein Auftrag läuft, geben doppelte `video_generate`-Aufrufe in derselben Sitzung den aktuellen Aufgabenstatus zurück, anstatt eine weitere Generierung zu starten. Verwenden Sie `openclaw tasks list` oder `openclaw tasks show `, um den Fortschritt über die CLI zu prüfen. -Außerhalb sitzungsgebundener Agent-Ausführungen (zum Beispiel bei direkten Tool-Aufrufen) fällt das Tool auf Inline-Erzeugung zurück und gibt im selben Turn den endgültigen Medienpfad zurück. +Außerhalb von sitzungsbasierten Agenten-Ausführungen (zum Beispiel bei direkten Tool-Aufrufen) greift das Tool auf die Inline-Generierung zurück und gibt im selben Durchlauf den endgültigen Medienpfad zurück. ## Unterstützte Provider -| Provider | Standardmodell | Text | Bildreferenz | Videoreferenz | API-Schlüssel | -| -------- | ----------------------------- | ---- | ---------------- | ---------------- | --------------------------------------- | -| Alibaba | `wan2.6-t2v` | Ja | Ja (Remote-URL) | Ja (Remote-URL) | `MODELSTUDIO_API_KEY` | -| BytePlus | `seedance-1-0-lite-t2v-250428`| Ja | 1 Bild | Nein | `BYTEPLUS_API_KEY` | -| ComfyUI | `workflow` | Ja | 1 Bild | Nein | `COMFY_API_KEY` oder `COMFY_CLOUD_API_KEY` | -| fal | `fal-ai/minimax/video-01-live`| Ja | 1 Bild | Nein | `FAL_KEY` | -| Google | `veo-3.1-fast-generate-preview` | Ja | 1 Bild | 1 Video | `GEMINI_API_KEY` | -| MiniMax | `MiniMax-Hailuo-2.3` | Ja | 1 Bild | Nein | `MINIMAX_API_KEY` | -| OpenAI | `sora-2` | Ja | 1 Bild | 1 Video | `OPENAI_API_KEY` | -| Qwen | `wan2.6-t2v` | Ja | Ja (Remote-URL) | Ja (Remote-URL) | `QWEN_API_KEY` | -| Runway | `gen4.5` | Ja | 1 Bild | 1 Video | `RUNWAYML_API_SECRET` | -| Together | `Wan-AI/Wan2.2-T2V-A14B` | Ja | 1 Bild | Nein | `TOGETHER_API_KEY` | -| Vydra | `veo3` | Ja | 1 Bild (`kling`) | Nein | `VYDRA_API_KEY` | -| xAI | `grok-imagine-video` | Ja | 1 Bild | 1 Video | `XAI_API_KEY` | +| Provider | Standardmodell | Text | Bildreferenz | Videoreferenz | API-Schlüssel | +| -------- | ------------------------------ | ---- | ----------------- | ---------------- | ---------------------------------------- | +| Alibaba | `wan2.6-t2v` | Ja | Ja (Remote-URL) | Ja (Remote-URL) | `MODELSTUDIO_API_KEY` | +| BytePlus | `seedance-1-0-lite-t2v-250428` | Ja | 1 Bild | Nein | `BYTEPLUS_API_KEY` | +| ComfyUI | `workflow` | Ja | 1 Bild | Nein | `COMFY_API_KEY` oder `COMFY_CLOUD_API_KEY` | +| fal | `fal-ai/minimax/video-01-live` | Ja | 1 Bild | Nein | `FAL_KEY` | +| Google | `veo-3.1-fast-generate-preview` | Ja | 1 Bild | 1 Video | `GEMINI_API_KEY` | +| MiniMax | `MiniMax-Hailuo-2.3` | Ja | 1 Bild | Nein | `MINIMAX_API_KEY` | +| OpenAI | `sora-2` | Ja | 1 Bild | 1 Video | `OPENAI_API_KEY` | +| Qwen | `wan2.6-t2v` | Ja | Ja (Remote-URL) | Ja (Remote-URL) | `QWEN_API_KEY` | +| Runway | `gen4.5` | Ja | 1 Bild | 1 Video | `RUNWAYML_API_SECRET` | +| Together | `Wan-AI/Wan2.2-T2V-A14B` | Ja | 1 Bild | Nein | `TOGETHER_API_KEY` | +| Vydra | `veo3` | Ja | 1 Bild (`kling`) | Nein | `VYDRA_API_KEY` | +| xAI | `grok-imagine-video` | Ja | 1 Bild | 1 Video | `XAI_API_KEY` | -Einige Provider akzeptieren zusätzliche oder alternative API-Schlüssel-Umgebungsvariablen. Details finden Sie auf den einzelnen [Provider-Seiten](#related). +Einige Provider akzeptieren zusätzliche oder alternative API-Schlüssel-Umgebungsvariablen. Weitere Details finden Sie auf den einzelnen [Provider-Seiten](#related). -Führen Sie `video_generate action=list` aus, um verfügbare Provider und Modelle zur Laufzeit zu prüfen. +Führen Sie `video_generate action=list` aus, um verfügbare Provider und Modelle zur Laufzeit anzuzeigen. ## Tool-Parameter @@ -93,43 +93,43 @@ Führen Sie `video_generate action=list` aus, um verfügbare Provider und Modell | `video` | string | Einzelnes Referenzvideo (Pfad oder URL) | | `videos` | string[] | Mehrere Referenzvideos (bis zu 4) | -### Stilsteuerung +### Stilsteuerungen -| Parameter | Typ | Beschreibung | -| ----------------- | ------- | ------------------------------------------------------------------------ | +| Parameter | Typ | Beschreibung | +| ----------------- | ------- | ---------------------------------------------------------------------- | | `aspectRatio` | string | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` | -| `resolution` | string | `480P`, `720P` oder `1080P` | -| `durationSeconds` | number | Zieldauer in Sekunden (auf den nächstgelegenen vom Provider unterstützten Wert gerundet) | -| `size` | string | Größenhinweis, wenn der Provider ihn unterstützt | -| `audio` | boolean | Erzeugten Ton aktivieren, wenn unterstützt | -| `watermark` | boolean | Watermarking des Providers aktivieren/deaktivieren, wenn unterstützt | +| `resolution` | string | `480P`, `720P` oder `1080P` | +| `durationSeconds` | number | Zieldauer in Sekunden (auf den nächsten vom Provider unterstützten Wert gerundet) | +| `size` | string | Größenhinweis, wenn der Provider dies unterstützt | +| `audio` | boolean | Generierten Ton aktivieren, wenn unterstützt | +| `watermark` | boolean | Wasserzeichen des Providers aktivieren/deaktivieren, wenn unterstützt | ### Erweitert | Parameter | Typ | Beschreibung | | ---------- | ------ | ------------------------------------------------- | | `action` | string | `"generate"` (Standard), `"status"` oder `"list"` | -| `model` | string | Provider-/Modell-Überschreibung (z. B. `runway/gen4.5`) | +| `model` | string | Provider-/Modell-Override (z. B. `runway/gen4.5`) | | `filename` | string | Hinweis für den Ausgabedateinamen | -Nicht alle Provider unterstützen alle Parameter. Nicht unterstützte Überschreibungen werden best effort ignoriert und als Warnungen im Tool-Ergebnis gemeldet. Harte Funktionsgrenzen (zum Beispiel zu viele Referenzeingaben) schlagen vor dem Absenden fehl. +Nicht alle Provider unterstützen alle Parameter. Nicht unterstützte Overrides werden nach bestem Bemühen ignoriert und als Warnungen im Tool-Ergebnis gemeldet. Harte Funktionsgrenzen (wie zu viele Referenzeingaben) schlagen vor dem Absenden fehl. ## Aktionen -- **generate** (Standard) -- ein Video aus dem angegebenen Prompt und optionalen Referenzeingaben erzeugen. -- **status** -- den Status des laufenden Video-Tasks für die aktuelle Sitzung prüfen, ohne eine weitere Erzeugung zu starten. -- **list** -- verfügbare Provider, Modelle und ihre Funktionen anzeigen. +- **generate** (Standard) -- erzeugt ein Video aus dem angegebenen Prompt und optionalen Referenzeingaben. +- **status** -- prüft den Status der laufenden Videoaufgabe für die aktuelle Sitzung, ohne eine weitere Generierung zu starten. +- **list** -- zeigt verfügbare Provider, Modelle und ihre Fähigkeiten an. ## Modellauswahl Beim Erzeugen eines Videos löst OpenClaw das Modell in dieser Reihenfolge auf: -1. **Tool-Parameter `model`** -- wenn der Agent im Aufruf eines angibt. +1. **`model`-Tool-Parameter** -- wenn der Agent beim Aufruf einen angibt. 2. **`videoGenerationModel.primary`** -- aus der Konfiguration. -3. **`videoGenerationModel.fallbacks`** -- werden in Reihenfolge versucht. -4. **Automatische Erkennung** -- verwendet Provider mit gültiger Authentifizierung, beginnend mit dem aktuellen Standard-Provider, dann die übrigen Provider in alphabetischer Reihenfolge. +3. **`videoGenerationModel.fallbacks`** -- wird der Reihe nach versucht. +4. **Automatische Erkennung** -- verwendet Provider mit gültiger Authentifizierung, beginnend mit dem aktuellen Standard-Provider, danach die übrigen Provider in alphabetischer Reihenfolge. -Wenn ein Provider fehlschlägt, wird automatisch der nächste Kandidat versucht. Wenn alle Kandidaten fehlschlagen, enthält der Fehler Details aus jedem Versuch. +Wenn ein Provider fehlschlägt, wird automatisch der nächste Kandidat versucht. Wenn alle Kandidaten fehlschlagen, enthält der Fehler Details zu jedem Versuch. ```json5 { @@ -146,24 +146,24 @@ Wenn ein Provider fehlschlägt, wird automatisch der nächste Kandidat versucht. ## Hinweise zu Providern -| Provider | Hinweise | -| -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| Alibaba | Verwendet den asynchronen DashScope-/Model-Studio-Endpoint. Referenzbilder und -videos müssen Remote-`http(s)`-URLs sein. | -| BytePlus | Nur eine einzelne Bildreferenz. | -| ComfyUI | Workflow-gesteuerte lokale oder Cloud-Ausführung. Unterstützt Text-zu-Video und Bild-zu-Video über den konfigurierten Graphen. | -| fal | Verwendet einen queue-gestützten Ablauf für lang laufende Jobs. Nur eine einzelne Bildreferenz. | -| Google | Verwendet Gemini/Veo. Unterstützt ein Bild oder ein Video als Referenz. | -| MiniMax | Nur eine einzelne Bildreferenz. | -| OpenAI | Nur die Überschreibung `size` wird weitergegeben. Andere Stilüberschreibungen (`aspectRatio`, `resolution`, `audio`, `watermark`) werden mit einer Warnung ignoriert. | -| Qwen | Verwendet dasselbe DashScope-Backend wie Alibaba. Referenzeingaben müssen Remote-`http(s)`-URLs sein; lokale Dateien werden direkt abgelehnt. | +| Provider | Hinweise | +| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Alibaba | Verwendet den asynchronen DashScope-/Model-Studio-Endpunkt. Referenzbilder und -videos müssen entfernte `http(s)`-URLs sein. | +| BytePlus | Nur eine einzelne Bildreferenz. | +| ComfyUI | Workflow-gesteuerte lokale oder Cloud-Ausführung. Unterstützt Text-zu-Video und Bild-zu-Video über den konfigurierten Graphen. | +| fal | Verwendet einen warteschlangenbasierten Ablauf für lang laufende Aufträge. Nur eine einzelne Bildreferenz. | +| Google | Verwendet Gemini/Veo. Unterstützt ein Bild oder eine Videoreferenz. | +| MiniMax | Nur eine einzelne Bildreferenz. | +| OpenAI | Nur der Override `size` wird weitergeleitet. Andere Stil-Overrides (`aspectRatio`, `resolution`, `audio`, `watermark`) werden mit einer Warnung ignoriert. | +| Qwen | Dasselbe DashScope-Backend wie Alibaba. Referenzeingaben müssen entfernte `http(s)`-URLs sein; lokale Dateien werden vorab abgelehnt. | | Runway | Unterstützt lokale Dateien über Daten-URIs. Video-zu-Video erfordert `runway/gen4_aleph`. Reine Textläufe bieten die Seitenverhältnisse `16:9` und `9:16`. | -| Together | Nur eine einzelne Bildreferenz. | -| Vydra | Verwendet direkt `https://www.vydra.ai/api/v1`, um Redirects zu vermeiden, bei denen Authentifizierung verloren geht. `veo3` ist gebündelt nur als Text-zu-Video; `kling` erfordert eine Remote-Bild-URL. | -| xAI | Unterstützt Text-zu-Video-, Bild-zu-Video- sowie Remote-Video-Bearbeitungs-/Erweiterungsabläufe. | +| Together | Nur eine einzelne Bildreferenz. | +| Vydra | Verwendet `https://www.vydra.ai/api/v1` direkt, um Weiterleitungen zu vermeiden, bei denen die Authentifizierung verloren geht. `veo3` ist nur als Text-zu-Video gebündelt; `kling` erfordert eine entfernte Bild-URL. | +| xAI | Unterstützt Text-zu-Video, Bild-zu-Video und entfernte Abläufe zum Bearbeiten/Erweitern von Videos. | ## Konfiguration -Setzen Sie das Standardmodell für die Videoerzeugung in Ihrer OpenClaw-Konfiguration: +Legen Sie das Standardmodell für die Videogenerierung in Ihrer OpenClaw-Konfiguration fest: ```json5 { @@ -186,19 +186,19 @@ openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2 ## Verwandt -- [Tools Overview](/de/tools) -- [Background Tasks](/de/automation/tasks) -- Task-Verfolgung für asynchrone Videoerzeugung -- [Alibaba Model Studio](/providers/alibaba) -- [BytePlus](/providers/byteplus) -- [ComfyUI](/providers/comfy) -- [fal](/providers/fal) +- [Tools-Übersicht](/de/tools) +- [Hintergrundaufgaben](/de/automation/tasks) -- Aufgabenverfolgung für die asynchrone Videogenerierung +- [Alibaba Model Studio](/de/providers/alibaba) +- [BytePlus](/de/concepts/model-providers#byteplus-international) +- [ComfyUI](/de/providers/comfy) +- [fal](/de/providers/fal) - [Google (Gemini)](/de/providers/google) - [MiniMax](/de/providers/minimax) - [OpenAI](/de/providers/openai) - [Qwen](/de/providers/qwen) -- [Runway](/providers/runway) +- [Runway](/de/providers/runway) - [Together AI](/de/providers/together) -- [Vydra](/providers/vydra) +- [Vydra](/de/providers/vydra) - [xAI](/de/providers/xai) -- [Configuration Reference](/de/gateway/configuration-reference#agent-defaults) -- [Models](/de/concepts/models) +- [Konfigurationsreferenz](/de/gateway/configuration-reference#agent-defaults) +- [Modelle](/de/concepts/models)