From 314c37e5de8e7ecaf0942c3c72b2fbb6060b5667 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Wed, 8 Apr 2026 06:06:53 +0000 Subject: [PATCH] chore(i18n): refresh de translations --- docs/de/channels/slack.md | 279 +++-- docs/de/concepts/memory.md | 126 ++- docs/de/concepts/model-providers.md | 471 ++++---- docs/de/concepts/qa-e2e-automation.md | 56 +- docs/de/concepts/streaming.md | 139 +-- docs/de/gateway/configuration-reference.md | 1138 ++++++++++---------- docs/de/gateway/configuration.md | 300 +++--- docs/de/plugins/memory-wiki.md | 343 ++++++ docs/de/providers/glm.md | 28 +- docs/de/providers/zai.md | 32 +- docs/de/refactor/qa.md | 264 ++--- docs/de/tools/slash-commands.md | 333 +++--- docs/de/tools/tts.md | 194 ++-- 13 files changed, 1994 insertions(+), 1709 deletions(-) create mode 100644 docs/de/plugins/memory-wiki.md diff --git a/docs/de/channels/slack.md b/docs/de/channels/slack.md index 224b1328e..14a9bbfd8 100644 --- a/docs/de/channels/slack.md +++ b/docs/de/channels/slack.md @@ -1,20 +1,20 @@ --- read_when: - - Slack einrichten oder Fehler bei Slack Socket/HTTP-Modus beheben + - Slack einrichten oder den Slack-Socket-/HTTP-Modus debuggen summary: Slack-Einrichtung und Laufzeitverhalten (Socket Mode + HTTP-Request-URLs) title: Slack x-i18n: - generated_at: "2026-04-07T06:14:53Z" + generated_at: "2026-04-08T06:02:07Z" model: gpt-5.4 provider: openai - source_hash: 2b8fd2cc6c638ee82069f0af2c2b6f6f49c87da709b941433a0343724a9907ea + source_hash: cad132131ddce688517def7c14703ad314441c67aacc4cc2a2a721e1d1c01942 source_path: channels/slack.md workflow: 15 --- # Slack -Status: produktionsreif für DMs + Kanäle über Slack-App-Integrationen. Der Standardmodus ist Socket Mode; HTTP-Request-URLs werden ebenfalls unterstützt. +Status: produktionsbereit für DMs und Channels über Slack-App-Integrationen. Der Standardmodus ist Socket Mode; HTTP-Request-URLs werden ebenfalls unterstützt. @@ -23,7 +23,7 @@ Status: produktionsreif für DMs + Kanäle über Slack-App-Integrationen. Der St Natives Befehlsverhalten und Befehlskatalog. - + Kanalübergreifende Diagnose- und Reparaturleitfäden. @@ -33,12 +33,12 @@ Status: produktionsreif für DMs + Kanäle über Slack-App-Integrationen. Der St - - Klicken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**: + + Drücken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**: - - wählen Sie **from a manifest** und dann einen Workspace für Ihre App aus - - fügen Sie das [Beispielmanifest](#manifest-and-scope-checklist) unten ein und fahren Sie mit der Erstellung fort - - erstellen Sie ein **App-Level Token** (`xapp-...`) mit `connections:write` + - wählen Sie **from a manifest** und wählen Sie einen Workspace für Ihre App aus + - fügen Sie das [Beispiel-Manifest](#manifest-and-scope-checklist) von unten ein und fahren Sie mit der Erstellung fort + - erzeugen Sie ein **App-Level Token** (`xapp-...`) mit `connections:write` - installieren Sie die App und kopieren Sie das angezeigte **Bot Token** (`xoxb-...`) @@ -79,12 +79,12 @@ openclaw gateway - - Klicken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**: + + Drücken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**: - - wählen Sie **from a manifest** und dann einen Workspace für Ihre App aus - - fügen Sie das [Beispielmanifest](#manifest-and-scope-checklist) ein und aktualisieren Sie vor dem Erstellen die URLs - - speichern Sie das **Signing Secret** zur Anfrageverifizierung + - wählen Sie **from a manifest** und wählen Sie einen Workspace für Ihre App aus + - fügen Sie das [Beispiel-Manifest](#manifest-and-scope-checklist) ein und aktualisieren Sie die URLs vor dem Erstellen + - speichern Sie das **Signing Secret** zur Verifizierung von Anfragen - installieren Sie die App und kopieren Sie das angezeigte **Bot Token** (`xoxb-...`) @@ -290,13 +290,13 @@ openclaw gateway - - Fügen Sie den Bot-Scope `chat:write.customize` hinzu, wenn ausgehende Nachrichten die Identität des aktiven Agenten (benutzerdefinierter Nutzername und Symbol) statt der Standardidentität der Slack-App verwenden sollen. + + Fügen Sie die Bot-Scope-Berechtigung `chat:write.customize` hinzu, wenn ausgehende Nachrichten die aktive Agentenidentität (benutzerdefinierter Benutzername und Symbol) statt der Standardidentität der Slack-App verwenden sollen. Wenn Sie ein Emoji-Symbol verwenden, erwartet Slack die Syntax `:emoji_name:`. - Wenn Sie `channels.slack.userToken` konfigurieren, sind typische Lesescopes: + Wenn Sie `channels.slack.userToken` konfigurieren, sind typische Lese-Scopes: - `channels:history`, `groups:history`, `im:history`, `mpim:history` - `channels:read`, `groups:read`, `im:read`, `mpim:read` @@ -304,7 +304,7 @@ openclaw gateway - `reactions:read` - `pins:read` - `emoji:read` - - `search:read` (wenn Sie auf Slack-Suchlesevorgänge angewiesen sind) + - `search:read` (wenn Sie von Slack-Such-Lesezugriffen abhängen) @@ -312,29 +312,24 @@ openclaw gateway ## Token-Modell - `botToken` + `appToken` sind für Socket Mode erforderlich. -- HTTP-Modus erfordert `botToken` + `signingSecret`. -- `botToken`, `appToken`, `signingSecret` und `userToken` akzeptieren Klartextzeichenfolgen - oder SecretRef-Objekte. -- Konfigurationstoken überschreiben das Env-Fallback. +- Der HTTP-Modus erfordert `botToken` + `signingSecret`. +- `botToken`, `appToken`, `signingSecret` und `userToken` akzeptieren Klartextzeichenfolgen oder SecretRef-Objekte. +- Konfigurations-Token überschreiben das Env-Fallback. - Das Env-Fallback `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` gilt nur für das Standardkonto. - `userToken` (`xoxp-...`) ist nur in der Konfiguration verfügbar (kein Env-Fallback) und verwendet standardmäßig schreibgeschütztes Verhalten (`userTokenReadOnly: true`). -Verhalten der Statusaufnahme: +Verhalten der Statusübersicht: -- Die Slack-Kontoinspektion verfolgt pro Anmeldedaten `*Source`- und `*Status`- - Felder (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Die Slack-Kontoinspektion verfolgt pro Zugangsdaten `*Source`- und `*Status`-Felder (`botToken`, `appToken`, `signingSecret`, `userToken`). - Status ist `available`, `configured_unavailable` oder `missing`. -- `configured_unavailable` bedeutet, dass das Konto über SecretRef - oder eine andere nicht inline angegebene Geheimnisquelle konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad - den tatsächlichen Wert aber nicht auflösen konnte. -- Im HTTP-Modus ist `signingSecretStatus` enthalten; im Socket Mode ist das - erforderliche Paar `botTokenStatus` + `appTokenStatus`. +- `configured_unavailable` bedeutet, dass das Konto über SecretRef oder eine andere nicht-inline Secret-Quelle konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad den tatsächlichen Wert jedoch nicht auflösen konnte. +- Im HTTP-Modus wird `signingSecretStatus` eingeschlossen; im Socket Mode ist das erforderliche Paar `botTokenStatus` + `appTokenStatus`. -Für Aktionen/Verzeichnislesevorgänge kann das User-Token bevorzugt werden, wenn es konfiguriert ist. Für Schreibvorgänge bleibt das Bot-Token bevorzugt; Schreibvorgänge mit User-Token sind nur zulässig, wenn `userTokenReadOnly: false` gesetzt ist und kein Bot-Token verfügbar ist. +Für Aktionen/Verzeichnislesevorgänge kann das User-Token bevorzugt werden, wenn es konfiguriert ist. Für Schreibvorgänge bleibt das Bot-Token bevorzugt; Schreibvorgänge mit User-Token sind nur erlaubt, wenn `userTokenReadOnly: false` und das Bot-Token nicht verfügbar ist. -## Aktionen und Einschränkungen +## Aktionen und Gates Slack-Aktionen werden über `channels.slack.actions.*` gesteuert. @@ -348,7 +343,7 @@ Verfügbare Aktionsgruppen in den aktuellen Slack-Tools: | memberInfo | enabled | | emojiList | enabled | -Die aktuellen Slack-Nachrichtenaktionen umfassen `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` und `emoji-list`. +Aktuelle Slack-Nachrichtenaktionen umfassen `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` und `emoji-list`. ## Zugriffskontrolle und Routing @@ -363,13 +358,13 @@ Die aktuellen Slack-Nachrichtenaktionen umfassen `send`, `upload-file`, `downloa DM-Flags: - - `dm.enabled` (standardmäßig true) + - `dm.enabled` (Standard true) - `channels.slack.allowFrom` (bevorzugt) - `dm.allowFrom` (veraltet) - `dm.groupEnabled` (Gruppen-DMs standardmäßig false) - `dm.groupChannels` (optionale MPIM-Allowlist) - Vorrang bei mehreren Konten: + Priorität bei mehreren Konten: - `channels.slack.accounts.default.allowFrom` gilt nur für das Konto `default`. - Benannte Konten übernehmen `channels.slack.allowFrom`, wenn ihr eigenes `allowFrom` nicht gesetzt ist. @@ -379,35 +374,35 @@ Die aktuellen Slack-Nachrichtenaktionen umfassen `send`, `upload-file`, `downloa - - `channels.slack.groupPolicy` steuert die Kanalbehandlung: + + `channels.slack.groupPolicy` steuert die Channel-Behandlung: - `open` - `allowlist` - `disabled` - Die Kanal-Allowlist befindet sich unter `channels.slack.channels` und sollte stabile Kanal-IDs verwenden. + Die Channel-Allowlist befindet sich unter `channels.slack.channels` und sollte stabile Channel-IDs verwenden. - Laufzeithinweis: Wenn `channels.slack` vollständig fehlt (nur Env-Setup), fällt die Laufzeit auf `groupPolicy="allowlist"` zurück und protokolliert eine Warnung (selbst wenn `channels.defaults.groupPolicy` gesetzt ist). + Laufzeithinweis: Wenn `channels.slack` vollständig fehlt (nur Env-Einrichtung), fällt die Laufzeit auf `groupPolicy="allowlist"` zurück und protokolliert eine Warnung (auch wenn `channels.defaults.groupPolicy` gesetzt ist). Auflösung von Namen/IDs: - - Einträge in Kanal-Allowlists und DM-Allowlists werden beim Start aufgelöst, wenn der Tokenzugriff dies erlaubt - - nicht aufgelöste Einträge mit Kanalnamen bleiben wie konfiguriert erhalten, werden aber standardmäßig für das Routing ignoriert - - eingehende Autorisierung und Kanalrouting sind standardmäßig ID-orientiert; direktes Matching von Nutzernamen/Slugs erfordert `channels.slack.dangerouslyAllowNameMatching: true` + - Einträge in der Channel-Allowlist und der DM-Allowlist werden beim Start aufgelöst, wenn der Token-Zugriff dies zulässt + - nicht aufgelöste Channel-Namenseinträge bleiben wie konfiguriert erhalten, werden für das Routing aber standardmäßig ignoriert + - eingehende Autorisierung und Channel-Routing sind standardmäßig ID-first; direkte Benutzername-/Slug-Abgleiche erfordern `channels.slack.dangerouslyAllowNameMatching: true` - - Kanalnachrichten sind standardmäßig durch Erwähnungen eingeschränkt. + + Channel-Nachrichten sind standardmäßig durch Erwähnungen begrenzt. Quellen für Erwähnungen: - explizite App-Erwähnung (`<@botId>`) - Regex-Muster für Erwähnungen (`agents.list[].groupChat.mentionPatterns`, Fallback `messages.groupChat.mentionPatterns`) - - implizites Antwortverhalten in Bot-Threads (deaktiviert, wenn `thread.requireExplicitMention` `true` ist) + - implizites Antwort-im-Bot-Thread-Verhalten (deaktiviert, wenn `thread.requireExplicitMention` `true` ist) - Steuerung pro Kanal (`channels.slack.channels.`; Namen nur über Auflösung beim Start oder `dangerouslyAllowNameMatching`): + Steuerelemente pro Channel (`channels.slack.channels.`; Namen nur über Auflösung beim Start oder `dangerouslyAllowNameMatching`): - `requireMention` - `users` (Allowlist) @@ -421,28 +416,28 @@ Die aktuellen Slack-Nachrichtenaktionen umfassen `send`, `upload-file`, `downloa -## Threading, Sitzungen und Antwort-Tags +## Threading, Sessions und Antwort-Tags -- DMs werden als `direct` geroutet; Kanäle als `channel`; MPIMs als `group`. -- Mit dem Standard `session.dmScope=main` werden Slack-DMs in der Hauptsitzung des Agenten zusammengeführt. -- Kanalsitzungen: `agent::slack:channel:`. -- Thread-Antworten können bei Bedarf Thread-Sitzungssuffixe (`:thread:`) erstellen. -- Der Standardwert von `channels.slack.thread.historyScope` ist `thread`; der Standardwert von `thread.inheritParent` ist `false`. -- `channels.slack.thread.initialHistoryLimit` steuert, wie viele vorhandene Thread-Nachrichten abgerufen werden, wenn eine neue Thread-Sitzung startet (Standard `20`; setzen Sie `0`, um dies zu deaktivieren). -- `channels.slack.thread.requireExplicitMention` (Standard `false`): Wenn `true`, werden implizite Thread-Erwähnungen unterdrückt, sodass der Bot in Threads nur auf explizite `@bot`-Erwähnungen antwortet, selbst wenn der Bot bereits am Thread beteiligt war. Ohne diese Einstellung umgehen Antworten in einem Thread mit Bot-Beteiligung die Einschränkung `requireMention`. +- DMs werden als `direct` geroutet, Channels als `channel`, MPIMs als `group`. +- Mit dem Standard `session.dmScope=main` werden Slack-DMs zur Hauptsession des Agenten zusammengefasst. +- Channel-Sessions: `agent::slack:channel:`. +- Thread-Antworten können bei Bedarf Thread-Session-Suffixe (`:thread:`) erzeugen. +- Standard für `channels.slack.thread.historyScope` ist `thread`; Standard für `thread.inheritParent` ist `false`. +- `channels.slack.thread.initialHistoryLimit` steuert, wie viele vorhandene Thread-Nachrichten abgerufen werden, wenn eine neue Thread-Session startet (Standard `20`; auf `0` setzen, um dies zu deaktivieren). +- `channels.slack.thread.requireExplicitMention` (Standard `false`): Wenn `true`, werden implizite Thread-Erwähnungen unterdrückt, sodass der Bot in Threads nur auf explizite `@bot`-Erwähnungen antwortet, selbst wenn der Bot bereits am Thread teilgenommen hat. Ohne dies umgehen Antworten in einem Thread mit Bot-Beteiligung das `requireMention`-Gate. -Steuerung für Antwort-Threads: +Steuerung für Antwort-Threading: - `channels.slack.replyToMode`: `off|first|all|batched` (Standard `off`) - `channels.slack.replyToModeByChatType`: pro `direct|group|channel` -- veraltetes Fallback für direkte Chats: `channels.slack.dm.replyToMode` +- veralteter Fallback für direkte Chats: `channels.slack.dm.replyToMode` Manuelle Antwort-Tags werden unterstützt: - `[[reply_to_current]]` - `[[reply_to:]]` -Hinweis: `replyToMode="off"` deaktiviert **jegliches** Antwort-Threading in Slack, einschließlich expliziter `[[reply_to_*]]`-Tags. Dies unterscheidet sich von Telegram, wo explizite Tags auch im Modus `"off"` weiterhin berücksichtigt werden. Der Unterschied spiegelt die Threading-Modelle der Plattformen wider: Slack-Threads verbergen Nachrichten im Kanal, während Telegram-Antworten im Hauptchatverlauf sichtbar bleiben. +Hinweis: `replyToMode="off"` deaktiviert **jegliches** Antwort-Threading in Slack, einschließlich expliziter `[[reply_to_*]]`-Tags. Dies unterscheidet sich von Telegram, wo explizite Tags im Modus `"off"` weiterhin berücksichtigt werden. Der Unterschied spiegelt die Threading-Modelle der Plattformen wider: Slack-Threads verbergen Nachrichten im Channel, während Telegram-Antworten im Haupt-Chatverlauf sichtbar bleiben. ## Bestätigungsreaktionen @@ -453,7 +448,7 @@ Reihenfolge der Auflösung: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- Fallback auf Agentenidentitäts-Emoji (`agents.list[].identity.emoji`, andernfalls "👀") +- Emoji-Fallback der Agentenidentität (`agents.list[].identity.emoji`, sonst "👀") Hinweise: @@ -462,18 +457,20 @@ Hinweise: ## Text-Streaming -`channels.slack.streaming` steuert das Verhalten der Livevorschau: +`channels.slack.streaming` steuert das Verhalten der Live-Vorschau: -- `off`: Livevorschau-Streaming deaktivieren. +- `off`: Live-Vorschau-Streaming deaktivieren. - `partial` (Standard): Vorschautext durch die neueste Teilausgabe ersetzen. - `block`: Chunkweise Vorschauaktualisierungen anhängen. - `progress`: Fortschrittsstatustext während der Generierung anzeigen und dann den endgültigen Text senden. -`channels.slack.nativeStreaming` steuert das native Text-Streaming von Slack, wenn `streaming` auf `partial` steht (Standard: `true`). +`channels.slack.streaming.nativeTransport` steuert das native Slack-Text-Streaming, wenn `channels.slack.streaming.mode` auf `partial` gesetzt ist (Standard: `true`). -- Ein Antwort-Thread muss verfügbar sein, damit natives Text-Streaming angezeigt wird. Die Thread-Auswahl folgt weiterhin `replyToMode`. Ohne Thread wird die normale Entwurfsvorschau verwendet. -- Medien und Nicht-Text-Payloads greifen auf die normale Zustellung zurück. -- Wenn das Streaming mitten in der Antwort fehlschlägt, greift OpenClaw für verbleibende Payloads auf die normale Zustellung zurück. +- Für natives Text-Streaming und die Anzeige des Slack-Assistenten-Thread-Status muss ein Antwort-Thread verfügbar sein. Die Auswahl des Threads folgt weiterhin `replyToMode`. +- Wurzeln von Channel- und Gruppen-Chats können weiterhin die normale Entwurfsvorschau verwenden, wenn natives Streaming nicht verfügbar ist. +- Slack-DMs auf oberster Ebene bleiben standardmäßig außerhalb von Threads und zeigen daher keine Thread-ähnliche Vorschau an; verwenden Sie Thread-Antworten oder `typingReaction`, wenn dort sichtbarer Fortschritt angezeigt werden soll. +- Medien und Nicht-Text-Payloads fallen auf die normale Zustellung zurück. +- Wenn das Streaming mitten in einer Antwort fehlschlägt, fällt OpenClaw für verbleibende Payloads auf die normale Zustellung zurück. Verwenden Sie die Entwurfsvorschau anstelle des nativen Slack-Text-Streamings: @@ -481,8 +478,10 @@ Verwenden Sie die Entwurfsvorschau anstelle des nativen Slack-Text-Streamings: { channels: { slack: { - streaming: "partial", - nativeStreaming: false, + streaming: { + mode: "partial", + nativeTransport: false, + }, }, }, } @@ -490,12 +489,13 @@ Verwenden Sie die Entwurfsvorschau anstelle des nativen Slack-Text-Streamings: Veraltete Schlüssel: -- `channels.slack.streamMode` (`replace | status_final | append`) wird automatisch zu `channels.slack.streaming` migriert. -- boolesches `channels.slack.streaming` wird automatisch zu `channels.slack.nativeStreaming` migriert. +- `channels.slack.streamMode` (`replace | status_final | append`) wird automatisch zu `channels.slack.streaming.mode` migriert. +- boolesches `channels.slack.streaming` wird automatisch zu `channels.slack.streaming.mode` und `channels.slack.streaming.nativeTransport` migriert. +- das veraltete `channels.slack.nativeStreaming` wird automatisch zu `channels.slack.streaming.nativeTransport` migriert. ## Fallback für Tippreaktion -`typingReaction` fügt der eingehenden Slack-Nachricht vorübergehend eine Reaktion hinzu, während OpenClaw eine Antwort verarbeitet, und entfernt sie wieder, wenn der Lauf abgeschlossen ist. Das ist besonders nützlich außerhalb von Thread-Antworten, die standardmäßig einen Statusindikator "is typing..." verwenden. +`typingReaction` fügt der eingehenden Slack-Nachricht vorübergehend eine Reaktion hinzu, während OpenClaw eine Antwort verarbeitet, und entfernt sie, wenn der Durchlauf abgeschlossen ist. Dies ist besonders nützlich außerhalb von Thread-Antworten, die standardmäßig einen Statusindikator "is typing..." verwenden. Reihenfolge der Auflösung: @@ -505,66 +505,66 @@ Reihenfolge der Auflösung: Hinweise: - Slack erwartet Shortcodes (zum Beispiel `"hourglass_flowing_sand"`). -- Die Reaktion erfolgt nach bestem Bemühen, und die Bereinigung wird nach Abschluss der Antwort oder des Fehlerpfads automatisch versucht. +- Die Reaktion erfolgt nach Best Effort, und die Bereinigung wird nach Abschluss der Antwort oder des Fehlerpfads automatisch versucht. ## Medien, Chunking und Zustellung - Slack-Dateianhänge werden von von Slack gehosteten privaten URLs heruntergeladen (tokenauthentifizierter Anfragefluss) und in den Medienspeicher geschrieben, wenn der Abruf erfolgreich ist und Größenbeschränkungen dies zulassen. + Slack-Dateianhänge werden von privaten, bei Slack gehosteten URLs heruntergeladen (anfrageauthentifizierter Token-Flow) und bei erfolgreichem Abruf und zulässiger Größe in den Medienspeicher geschrieben. - Die Standardobergrenze für eingehende Laufzeitgrößen ist `20MB`, sofern sie nicht durch `channels.slack.mediaMaxMb` überschrieben wird. + Die Standardobergrenze für eingehende Daten zur Laufzeit beträgt `20MB`, sofern sie nicht durch `channels.slack.mediaMaxMb` überschrieben wird. - Text-Chunks verwenden `channels.slack.textChunkLimit` (Standard 4000) - - `channels.slack.chunkMode="newline"` aktiviert eine absatzorientierte Aufteilung - - Dateisendungen verwenden Slack-Upload-APIs und können Thread-Antworten (`thread_ts`) einschließen - - die Obergrenze für ausgehende Medien folgt `channels.slack.mediaMaxMb`, wenn konfiguriert; andernfalls verwenden Kanalsendungen die Standardwerte nach MIME-Art aus der Medienpipeline + - `channels.slack.chunkMode="newline"` aktiviert das Aufteilen nach Absätzen zuerst + - Dateisendungen verwenden die Slack-Upload-APIs und können Thread-Antworten (`thread_ts`) einschließen + - die Obergrenze für ausgehende Medien folgt `channels.slack.mediaMaxMb`, wenn konfiguriert; andernfalls verwenden Channel-Sendungen die standardmäßigen MIME-Art-Vorgaben aus der Medienpipeline - + Bevorzugte explizite Ziele: - `user:` für DMs - - `channel:` für Kanäle + - `channel:` für Channels - Slack-DMs werden beim Senden an Nutzerziele über die Slack-Konversations-APIs geöffnet. + Slack-DMs werden über die Slack-Conversation-APIs geöffnet, wenn an Benutzerziele gesendet wird. ## Befehle und Slash-Verhalten -- Der Auto-Modus für native Befehle ist für Slack **deaktiviert** (`commands.native: "auto"` aktiviert keine nativen Slack-Befehle). +- Der native Befehls-Automodus ist für Slack **deaktiviert** (`commands.native: "auto"` aktiviert keine nativen Slack-Befehle). - Aktivieren Sie native Slack-Befehlshandler mit `channels.slack.commands.native: true` (oder global `commands.native: true`). - Wenn native Befehle aktiviert sind, registrieren Sie passende Slash-Befehle in Slack (`/`-Namen), mit einer Ausnahme: - registrieren Sie `/agentstatus` für den Statusbefehl (Slack reserviert `/status`) -- Wenn native Befehle nicht aktiviert sind, können Sie einen einzelnen konfigurierten Slash-Befehl über `channels.slack.slashCommand` ausführen. -- Native Argumentmenüs passen ihre Renderstrategie nun an: +- Wenn native Befehle nicht aktiviert sind, können Sie mit `channels.slack.slashCommand` einen einzelnen konfigurierten Slash-Befehl ausführen. +- Native Argumentmenüs passen ihre Rendering-Strategie jetzt an: - bis zu 5 Optionen: Button-Blöcke - 6-100 Optionen: statisches Auswahlmenü - mehr als 100 Optionen: externe Auswahl mit asynchroner Optionsfilterung, wenn Handler für Interaktivitätsoptionen verfügbar sind - - wenn codierte Optionswerte die Slack-Limits überschreiten, fällt der Ablauf auf Buttons zurück -- Für lange Options-Payloads verwenden Slash-Befehlsargumentmenüs einen Bestätigungsdialog, bevor ein ausgewählter Wert gesendet wird. + - wenn codierte Optionswerte die Slack-Grenzen überschreiten, fällt der Ablauf auf Buttons zurück +- Für lange Options-Payloads verwenden Slash-Befehlsargumentmenüs vor dem Senden eines ausgewählten Werts einen Bestätigungsdialog. -Standard-Slash-Befehlseinstellungen: +Standardeinstellungen für Slash-Befehle: - `enabled: false` - `name: "openclaw"` - `sessionPrefix: "slack:slash"` - `ephemeral: true` -Slash-Sitzungen verwenden isolierte Schlüssel: +Slash-Sessions verwenden isolierte Schlüssel: - `agent::slack:slash:` -und führen die Befehlsausführung weiterhin gegen die Sitzung der Zielkonversation aus (`CommandTargetSessionKey`). +und routen die Befehlsausführung weiterhin gegen die Ziel-Conversation-Session (`CommandTargetSessionKey`). ## Interaktive Antworten -Slack kann vom Agenten verfasste interaktive Antwortsteuerungen rendern, aber diese Funktion ist standardmäßig deaktiviert. +Slack kann interaktive, von Agenten verfasste Antwortsteuerelemente rendern, diese Funktion ist jedoch standardmäßig deaktiviert. Global aktivieren: @@ -598,44 +598,43 @@ Oder nur für ein Slack-Konto aktivieren: } ``` -Wenn aktiviert, können Agenten nur für Slack bestimmte Antwortdirektiven ausgeben: +Wenn aktiviert, können Agenten nur für Slack geltende Antwortdirektiven ausgeben: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -Diese Direktiven werden in Slack Block Kit kompiliert und leiten Klicks oder Auswahlen über den vorhandenen Slack-Interaktionsereignispfad zurück. +Diese Direktiven werden in Slack Block Kit kompiliert und leiten Klicks oder Auswahlen über den bestehenden Slack-Interaktionsereignispfad zurück. Hinweise: -- Dies ist eine Slack-spezifische UI. Andere Kanäle übersetzen Slack-Block-Kit-Direktiven nicht in ihre eigenen Button-Systeme. -- Die interaktiven Callback-Werte sind von OpenClaw erzeugte undurchsichtige Token, keine unverarbeiteten vom Agenten verfassten Werte. -- Wenn generierte interaktive Blöcke die Grenzen von Slack Block Kit überschreiten würden, greift OpenClaw auf die ursprüngliche Textantwort zurück, anstatt eine ungültige Blocks-Payload zu senden. +- Dies ist Slack-spezifische UI. Andere Channels übersetzen Slack-Block-Kit-Direktiven nicht in ihre eigenen Button-Systeme. +- Die interaktiven Callback-Werte sind von OpenClaw erzeugte undurchsichtige Token, keine rohen, vom Agenten verfassten Werte. +- Wenn erzeugte interaktive Blöcke die Slack-Block-Kit-Grenzen überschreiten würden, fällt OpenClaw auf die ursprüngliche Textantwort zurück, anstatt eine ungültige Blocks-Payload zu senden. -## Exec-Freigaben in Slack +## Exec-Genehmigungen in Slack -Slack kann als nativer Freigabeclient mit interaktiven Buttons und Interaktionen fungieren, anstatt auf die Web-UI oder das Terminal zurückzufallen. +Slack kann als nativer Genehmigungs-Client mit interaktiven Buttons und Interaktionen fungieren, statt auf die Web-UI oder das Terminal zurückzufallen. -- Exec-Freigaben verwenden `channels.slack.execApprovals.*` für natives DM-/Kanalrouting. -- Plugin-Freigaben können weiterhin über dieselbe native Slack-Button-Oberfläche aufgelöst werden, wenn die Anfrage bereits in Slack landet und die Freigabe-ID-Art `plugin:` ist. -- Die Autorisierung von Freigebenden wird weiterhin erzwungen: Nur als Freigebende identifizierte Nutzer können Anfragen über Slack genehmigen oder ablehnen. +- Exec-Genehmigungen verwenden `channels.slack.execApprovals.*` für natives DM-/Channel-Routing. +- Plugin-Genehmigungen können weiterhin über dieselbe native Slack-Button-Oberfläche aufgelöst werden, wenn die Anfrage bereits in Slack landet und die Art der Genehmigungs-ID `plugin:` ist. +- Die Autorisierung des Genehmigers wird weiterhin erzwungen: Nur Benutzer, die als Genehmiger identifiziert wurden, können Anfragen über Slack genehmigen oder ablehnen. -Dies verwendet dieselbe gemeinsam genutzte Oberfläche für Freigabebuttons wie andere Kanäle. Wenn `interactivity` in Ihren Slack-App-Einstellungen aktiviert ist, werden Freigabeaufforderungen direkt als Block-Kit-Buttons in der Unterhaltung gerendert. -Wenn diese Buttons vorhanden sind, sind sie die primäre UX für Freigaben; OpenClaw -sollte einen manuellen `/approve`-Befehl nur einfügen, wenn das Toolergebnis angibt, dass Chat- -Freigaben nicht verfügbar sind oder die manuelle Freigabe der einzige Weg ist. +Dies verwendet dieselbe gemeinsame Oberfläche für Genehmigungsbuttons wie andere Channels. Wenn `interactivity` in Ihren Slack-App-Einstellungen aktiviert ist, werden Genehmigungsaufforderungen direkt in der Konversation als Block-Kit-Buttons gerendert. +Wenn diese Buttons vorhanden sind, sind sie die primäre UX für Genehmigungen; OpenClaw +sollte einen manuellen `/approve`-Befehl nur dann einschließen, wenn das Tool-Ergebnis angibt, dass Chat-Genehmigungen nicht verfügbar sind oder eine manuelle Genehmigung der einzige Weg ist. Konfigurationspfad: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers` (optional; greift nach Möglichkeit auf `commands.ownerAllowFrom` zurück) +- `channels.slack.execApprovals.approvers` (optional; fällt nach Möglichkeit auf `commands.ownerAllowFrom` zurück) - `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, Standard: `dm`) - `agentFilter`, `sessionFilter` -Slack aktiviert native Exec-Freigaben automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und sich mindestens ein -Freigebender auflösen lässt. Setzen Sie `enabled: false`, um Slack ausdrücklich als nativen Freigabeclient zu deaktivieren. -Setzen Sie `enabled: true`, um native Freigaben zu erzwingen, wenn sich Freigebende auflösen lassen. +Slack aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein +Genehmiger aufgelöst wird. Setzen Sie `enabled: false`, um Slack ausdrücklich als nativen Genehmigungs-Client zu deaktivieren. +Setzen Sie `enabled: true`, um native Genehmigungen zu erzwingen, wenn Genehmiger aufgelöst werden. -Standardverhalten ohne explizite Slack-Exec-Freigabekonfiguration: +Standardverhalten ohne explizite Slack-Exec-Genehmigungskonfiguration: ```json5 { @@ -645,8 +644,8 @@ Standardverhalten ohne explizite Slack-Exec-Freigabekonfiguration: } ``` -Eine explizite Slack-native Konfiguration ist nur erforderlich, wenn Sie Freigebende überschreiben, Filter hinzufügen oder -die Zustellung im Ursprungschat aktivieren möchten: +Eine explizite Slack-native Konfiguration ist nur erforderlich, wenn Sie Genehmiger überschreiben, Filter hinzufügen oder +die Zustellung im Ursprungs-Chat aktivieren möchten: ```json5 { @@ -662,50 +661,50 @@ die Zustellung im Ursprungschat aktivieren möchten: } ``` -Die gemeinsame Weiterleitung `approvals.exec` ist separat. Verwenden Sie sie nur, wenn Exec-Freigabeaufforderungen zusätzlich -an andere Chats oder explizite Ziele außerhalb des Bandes weitergeleitet werden müssen. Die gemeinsame Weiterleitung `approvals.plugin` ist ebenfalls -separat; native Slack-Buttons können Plugin-Freigaben weiterhin auflösen, wenn diese Anfragen bereits +Gemeinsame `approvals.exec`-Weiterleitung ist davon getrennt. Verwenden Sie sie nur, wenn Aufforderungen für Exec-Genehmigungen zusätzlich +an andere Chats oder explizite Ziele außerhalb des Bands weitergeleitet werden müssen. Gemeinsame `approvals.plugin`-Weiterleitung ist ebenfalls +getrennt; native Slack-Buttons können Plugin-Genehmigungen weiterhin auflösen, wenn diese Anfragen bereits in Slack landen. -`/approve` im selben Chat funktioniert auch in Slack-Kanälen und DMs, die bereits Befehle unterstützen. Siehe [Exec approvals](/de/tools/exec-approvals) für das vollständige Weiterleitungsmodell für Freigaben. +Dasselbe Chat-`/approve` funktioniert auch in Slack-Channels und DMs, die bereits Befehle unterstützen. Siehe [Exec approvals](/de/tools/exec-approvals) für das vollständige Modell zur Weiterleitung von Genehmigungen. ## Ereignisse und Betriebsverhalten - Nachrichtenbearbeitungen/-löschungen/Thread-Broadcasts werden in Systemereignisse abgebildet. - Ereignisse zum Hinzufügen/Entfernen von Reaktionen werden in Systemereignisse abgebildet. -- Ereignisse zum Beitreten/Verlassen von Mitgliedern, zum Erstellen/Umbenennen von Kanälen sowie zum Hinzufügen/Entfernen von Pins werden in Systemereignisse abgebildet. -- `channel_id_changed` kann Kanal-Konfigurationsschlüssel migrieren, wenn `configWrites` aktiviert ist. -- Kanalthemen/-zwecke gelten als nicht vertrauenswürdiger Kontext und können in den Routing-Kontext eingefügt werden. -- Der Starter des Threads und das anfängliche Einspeisen des Thread-Verlaufs in den Kontext werden bei Bedarf durch konfigurierte Absender-Allowlists gefiltert. -- Block-Aktionen und modale Interaktionen erzeugen strukturierte `Slack interaction: ...`-Systemereignisse mit umfangreichen Payload-Feldern: +- Ereignisse zu Beitritt/Verlassen von Mitgliedern, erstellten/umbenannten Channels und Hinzufügen/Entfernen von Pins werden in Systemereignisse abgebildet. +- `channel_id_changed` kann Channel-Konfigurationsschlüssel migrieren, wenn `configWrites` aktiviert ist. +- Channel-Topic-/Purpose-Metadaten werden als nicht vertrauenswürdiger Kontext behandelt und können in den Routing-Kontext eingespeist werden. +- Thread-Starter und anfängliche Kontextvorbelegung mit Thread-Verlauf werden bei Bedarf anhand konfigurierter Sender-Allowlists gefiltert. +- Block-Aktionen und Modal-Interaktionen erzeugen strukturierte `Slack interaction: ...`-Systemereignisse mit umfangreichen Payload-Feldern: - Block-Aktionen: ausgewählte Werte, Labels, Picker-Werte und `workflow_*`-Metadaten - - modale Ereignisse `view_submission` und `view_closed` mit gerouteten Kanalmetadaten und Formulareingaben + - modale `view_submission`- und `view_closed`-Ereignisse mit gerouteten Channel-Metadaten und Formulareingaben ## Verweise auf die Konfigurationsreferenz Primäre Referenz: -- [Configuration reference - Slack](/de/gateway/configuration-reference#slack) +- [Konfigurationsreferenz - Slack](/de/gateway/configuration-reference#slack) Wichtige Slack-Felder: - Modus/Auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` - DM-Zugriff: `dm.enabled`, `dmPolicy`, `allowFrom` (veraltet: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` - - Kompatibilitätsschalter: `dangerouslyAllowNameMatching` (nur im Notfall; deaktiviert lassen, sofern nicht erforderlich) - - Kanalzugriff: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` + - Kompatibilitätsschalter: `dangerouslyAllowNameMatching` (Break-Glass; ausgeschaltet lassen, sofern nicht benötigt) + - Channel-Zugriff: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - Threading/Verlauf: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - - Zustellung: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming` + - Zustellung: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport` - Betrieb/Funktionen: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` ## Fehlerbehebung - + Prüfen Sie in dieser Reihenfolge: - `groupPolicy` - - Kanal-Allowlist (`channels.slack.channels`) + - Channel-Allowlist (`channels.slack.channels`) - `requireMention` - - `users`-Allowlist pro Kanal + - `users`-Allowlist pro Channel Nützliche Befehle: @@ -730,37 +729,37 @@ openclaw pairing list slack - - Prüfen Sie Bot- und App-Token sowie die Aktivierung von Socket Mode in den Slack-App-Einstellungen. + + Validieren Sie Bot- und App-Token sowie die Aktivierung von Socket Mode in den Slack-App-Einstellungen. Wenn `openclaw channels status --probe --json` `botTokenStatus` oder `appTokenStatus: "configured_unavailable"` anzeigt, ist das Slack-Konto - konfiguriert, aber die aktuelle Laufzeit konnte den durch SecretRef gestützten - Wert nicht auflösen. + konfiguriert, aber die aktuelle Laufzeit konnte den durch SecretRef + gesicherten Wert nicht auflösen. - Prüfen Sie: + Validieren Sie: - Signing Secret - Webhook-Pfad - - Slack-Request-URLs (Events + Interaktivität + Slash-Befehle) - - eindeutigen `webhookPath` pro HTTP-Konto + - Slack-Request-URLs (Events + Interactivity + Slash Commands) + - eindeutiger `webhookPath` pro HTTP-Konto Wenn `signingSecretStatus: "configured_unavailable"` in Konto- - Aufnahmen erscheint, ist das HTTP-Konto konfiguriert, aber die aktuelle Laufzeit konnte das - durch SecretRef gestützte Signing Secret nicht auflösen. + Übersichten erscheint, ist das HTTP-Konto konfiguriert, aber die aktuelle Laufzeit konnte das durch SecretRef + gesicherte Signing Secret nicht auflösen. - Prüfen Sie, ob beabsichtigt war: + Prüfen Sie, ob Sie Folgendes beabsichtigt haben: - - nativer Befehlsmodus (`channels.slack.commands.native: true`) mit passenden in Slack registrierten Slash-Befehlen - - oder Einzel-Slash-Befehlsmodus (`channels.slack.slashCommand.enabled: true`) + - nativen Befehlsmodus (`channels.slack.commands.native: true`) mit passenden in Slack registrierten Slash-Befehlen + - oder den Modus für einen einzelnen Slash-Befehl (`channels.slack.slashCommand.enabled: true`) - Prüfen Sie außerdem `commands.useAccessGroups` sowie Kanal-/Nutzer-Allowlists. + Prüfen Sie außerdem `commands.useAccessGroups` sowie Channel-/Benutzer-Allowlists. @@ -770,7 +769,7 @@ openclaw pairing list slack - [Kopplung](/de/channels/pairing) - [Gruppen](/de/channels/groups) - [Sicherheit](/de/gateway/security) -- [Kanalrouting](/de/channels/channel-routing) +- [Channel-Routing](/de/channels/channel-routing) - [Fehlerbehebung](/de/channels/troubleshooting) - [Konfiguration](/de/gateway/configuration) - [Slash-Befehle](/de/tools/slash-commands) diff --git a/docs/de/concepts/memory.md b/docs/de/concepts/memory.md index 26d2bf641..2783d1432 100644 --- a/docs/de/concepts/memory.md +++ b/docs/de/concepts/memory.md @@ -1,23 +1,23 @@ --- read_when: - - Sie möchten verstehen, wie der Speicher funktioniert + - Sie möchten verstehen, wie Speicher funktioniert - Sie möchten wissen, welche Speicherdateien geschrieben werden summary: Wie OpenClaw sich Dinge sitzungsübergreifend merkt -title: Speicherüberblick +title: Überblick über den Speicher x-i18n: - generated_at: "2026-04-06T03:06:36Z" + generated_at: "2026-04-08T06:01:19Z" model: gpt-5.4 provider: openai - source_hash: d19d4fa9c4b3232b7a97f7a382311d2a375b562040de15e9fe4a0b1990b825e7 + source_hash: 3bb8552341b0b651609edaaae826a22fdc535d240aed4fad4af4b069454004af source_path: concepts/memory.md workflow: 15 --- -# Speicherüberblick +# Überblick über den Speicher -OpenClaw merkt sich Dinge, indem es **einfache Markdown-Dateien** im Workspace -Ihres Agenten schreibt. Das Modell „erinnert“ sich nur an das, was auf der -Festplatte gespeichert wird -- es gibt keinen versteckten Zustand. +OpenClaw merkt sich Dinge, indem **einfache Markdown-Dateien** im Workspace +Ihres Agenten geschrieben werden. Das Modell „erinnert“ sich nur an das, was +auf der Festplatte gespeichert wird – es gibt keinen versteckten Zustand. ## So funktioniert es @@ -30,43 +30,60 @@ Ihr Agent hat drei speicherbezogene Dateien: - **`DREAMS.md`** (experimentell, optional) -- Dream Diary und Zusammenfassungen von Dreaming-Durchläufen zur menschlichen Überprüfung. -Diese Dateien befinden sich im Workspace des Agenten (Standard: -`~/.openclaw/workspace`). +Diese Dateien befinden sich im Agent-Workspace (standardmäßig `~/.openclaw/workspace`). -Wenn Sie möchten, dass Ihr Agent sich etwas merkt, sagen Sie es ihm einfach: -„Merke dir, dass ich TypeScript bevorzuge.“ Er schreibt es dann in die passende -Datei. +Wenn Sie möchten, dass sich Ihr Agent etwas merkt, bitten Sie ihn einfach darum: „Merke dir, dass ich +TypeScript bevorzuge.“ Er schreibt es in die passende Datei. ## Speicher-Tools -Der Agent hat zwei Tools für die Arbeit mit Speicher: +Der Agent verfügt über zwei Tools für die Arbeit mit Speicher: - **`memory_search`** -- findet relevante Notizen mithilfe semantischer Suche, auch wenn die Formulierung vom Original abweicht. - **`memory_get`** -- liest eine bestimmte Speicherdatei oder einen Zeilenbereich. -Beide Tools werden vom aktiven Speicher-Plugin bereitgestellt (Standard: -`memory-core`). +Beide Tools werden vom aktiven Speicher-Plugin bereitgestellt (standardmäßig: `memory-core`). + +## Begleit-Plugin Memory Wiki + +Wenn sich dauerhafter Speicher eher wie eine gepflegte Wissensdatenbank als +nur wie rohe Notizen verhalten soll, verwenden Sie das gebündelte Plugin `memory-wiki`. + +`memory-wiki` kompiliert dauerhaftes Wissen in einen Wiki-Tresor mit: + +- deterministischer Seitenstruktur +- strukturierten Aussagen und Belegen +- Verfolgung von Widersprüchen und Aktualität +- generierten Dashboards +- kompilierten Digests für Agent-/Runtime-Konsumenten +- wiki-nativen Tools wie `wiki_search`, `wiki_get`, `wiki_apply` und `wiki_lint` + +Es ersetzt nicht das aktive Speicher-Plugin. Das aktive Speicher-Plugin ist +weiterhin für Abruf, Promotion und Dreaming zuständig. `memory-wiki` ergänzt es +um eine wissensbezogene Ebene mit Herkunftsnachweisen. + +Siehe [Memory Wiki](/de/plugins/memory-wiki). ## Speichersuche Wenn ein Embedding-Anbieter konfiguriert ist, verwendet `memory_search` eine -**hybride Suche** -- eine Kombination aus Vektorähnlichkeit (semantische +**hybride Suche** – eine Kombination aus Vektorähnlichkeit (semantische Bedeutung) und Schlüsselwortabgleich (exakte Begriffe wie IDs und Codesymbole). -Dies funktioniert sofort, sobald Sie einen API-Schlüssel für einen unterstützten +Das funktioniert sofort, sobald Sie einen API-Schlüssel für einen unterstützten Anbieter haben. -OpenClaw erkennt Ihren Embedding-Anbieter automatisch anhand verfügbarer -API-Schlüssel. Wenn Sie einen konfigurierten OpenAI-, Gemini-, Voyage- oder -Mistral-Schlüssel haben, ist die Speichersuche automatisch aktiviert. +OpenClaw erkennt Ihren Embedding-Anbieter automatisch anhand verfügbarer API-Schlüssel. Wenn Sie +einen OpenAI-, Gemini-, Voyage- oder Mistral-Schlüssel konfiguriert haben, ist +die Speichersuche automatisch aktiviert. -Details dazu, wie die Suche funktioniert, zu Tuning-Optionen und zur -Anbietereinrichtung finden Sie unter +Ausführliche Informationen zur Funktionsweise der Suche, zu +Optimierungsoptionen und zur Einrichtung von Anbietern finden Sie unter [Memory Search](/de/concepts/memory-search). ## Speicher-Backends @@ -77,64 +94,73 @@ SQLite-basiert. Funktioniert sofort mit Schlüsselwortsuche, Vektorähnlichkeit hybrider Suche. Keine zusätzlichen Abhängigkeiten. -Local-first-Sidecar mit Reranking, Query Expansion und der Möglichkeit, +Lokaler Sidecar mit Reranking, Query-Erweiterung und der Möglichkeit, Verzeichnisse außerhalb des Workspace zu indizieren. -AI-native sitzungsübergreifender Speicher mit Benutzermodellierung, +KI-nativer sitzungsübergreifender Speicher mit Benutzermodellierung, semantischer Suche und Multi-Agent-Bewusstsein. Plugin-Installation. -## Automatischer Speicher-Flush +## Wissens-Wiki-Ebene + + + +Kompiliert dauerhaften Speicher in einen Wiki-Tresor mit Herkunftsnachweisen, +Dashboards, Bridge-Modus und Obsidian-freundlichen Workflows. + + + +## Automatische Speicherleerung Bevor [Kompaktierung](/de/concepts/compaction) Ihre Unterhaltung zusammenfasst, -führt OpenClaw einen stillen Durchlauf aus, der den Agenten daran erinnert, -wichtigen Kontext in Speicherdateien zu speichern. Dies ist standardmäßig -aktiviert -- Sie müssen nichts konfigurieren. +führt OpenClaw einen stillen Turn aus, der den Agenten daran erinnert, wichtigen +Kontext in Speicherdateien zu sichern. Dies ist standardmäßig aktiviert – Sie +müssen nichts konfigurieren. -Der Speicher-Flush verhindert Kontextverlust während der Kompaktierung. Wenn Ihr -Agent wichtige Fakten in der Unterhaltung hat, die noch nicht in eine Datei -geschrieben wurden, werden sie automatisch gespeichert, bevor die Zusammenfassung -erfolgt. +Die Speicherleerung verhindert Kontextverlust während der Kompaktierung. Wenn Ihr Agent wichtige +Fakten in der Unterhaltung hat, die noch nicht in eine Datei geschrieben wurden, +werden sie automatisch gespeichert, bevor die Zusammenfassung erfolgt. ## Dreaming (experimentell) -Dreaming ist ein optionaler Konsolidierungsdurchlauf im Hintergrund für den -Speicher. Er sammelt kurzfristige Signale, bewertet Kandidaten und übernimmt nur -qualifizierte Einträge in den Langzeitspeicher (`MEMORY.md`). +Dreaming ist ein optionaler Hintergrunddurchlauf zur Konsolidierung von +Speicher. Dabei werden kurzfristige Signale gesammelt, Kandidaten bewertet und +nur qualifizierte Elemente in den Langzeitspeicher (`MEMORY.md`) übernommen. -Es ist darauf ausgelegt, den Langzeitspeicher signalstark zu halten: +Es soll dafür sorgen, dass der Langzeitspeicher ein starkes Signal-Rausch-Verhältnis behält: - **Opt-in**: standardmäßig deaktiviert. -- **Geplant**: Wenn aktiviert, verwaltet `memory-core` automatisch einen +- **Geplant**: wenn aktiviert, verwaltet `memory-core` automatisch einen wiederkehrenden Cron-Job für einen vollständigen Dreaming-Durchlauf. -- **Schwellenwertbasiert**: Übernahmen müssen Schranken für Bewertung, - Erinnerungsfrequenz und Query-Diversität bestehen. +- **Schwellenwertbasiert**: Übernahmen müssen Grenzwerte für Bewertung, + Abruffrequenz und Query-Diversität erfüllen. - **Überprüfbar**: Phasenzusammenfassungen und Tagebucheinträge werden zur menschlichen Überprüfung in `DREAMS.md` geschrieben. -Zum Phasenverhalten, zu Bewertungssignalen und zu Details des Dream Diary siehe -[Dreaming (experimental)](/concepts/dreaming). +Informationen zum Phasenverhalten, zu Bewertungssignalen und Details zum Dream Diary finden Sie unter +[Dreaming (experimental)](/de/concepts/dreaming). ## CLI ```bash -openclaw memory status # Indexstatus und Anbieter prüfen -openclaw memory search "query" # Über die Befehlszeile suchen -openclaw memory index --force # Den Index neu aufbauen +openclaw memory status # Check index status and provider +openclaw memory search "query" # Search from the command line +openclaw memory index --force # Rebuild the index ``` ## Weiterführende Informationen -- [Builtin Memory Engine](/de/concepts/memory-builtin) -- Standard-Backend auf SQLite-Basis -- [QMD Memory Engine](/de/concepts/memory-qmd) -- erweitertes Local-first-Sidecar -- [Honcho Memory](/de/concepts/memory-honcho) -- AI-native sitzungsübergreifender Speicher +- [Builtin Memory Engine](/de/concepts/memory-builtin) -- standardmäßiges SQLite-Backend +- [QMD Memory Engine](/de/concepts/memory-qmd) -- fortgeschrittener lokaler Sidecar +- [Honcho Memory](/de/concepts/memory-honcho) -- KI-nativer sitzungsübergreifender Speicher +- [Memory Wiki](/de/plugins/memory-wiki) -- kompilierter Wissens-Tresor und wiki-native Tools - [Memory Search](/de/concepts/memory-search) -- Suchpipeline, Anbieter und - Tuning -- [Dreaming (experimental)](/concepts/dreaming) -- Hintergrundübernahme + Optimierung +- [Dreaming (experimental)](/de/concepts/dreaming) -- Hintergrund-Promotion von kurzfristigem Abruf in den Langzeitspeicher - [Referenz zur Speicherkonfiguration](/de/reference/memory-config) -- alle Konfigurationsoptionen - [Kompaktierung](/de/concepts/compaction) -- wie Kompaktierung mit Speicher interagiert diff --git a/docs/de/concepts/model-providers.md b/docs/de/concepts/model-providers.md index 8bd7fa6ee..267f67834 100644 --- a/docs/de/concepts/model-providers.md +++ b/docs/de/concepts/model-providers.md @@ -1,14 +1,14 @@ --- read_when: - - Sie benötigen eine Referenz zur Modelleinrichtung pro Anbieter + - Sie benötigen eine Referenz zur Modelleinrichtung für einzelne Anbieter - Sie möchten Beispielkonfigurationen oder CLI-Onboarding-Befehle für Modellanbieter -summary: Überblick über Modellanbieter mit Beispielkonfigurationen + CLI-Abläufen +summary: Übersicht über Modellanbieter mit Beispielkonfigurationen und CLI-Abläufen title: Modellanbieter x-i18n: - generated_at: "2026-04-08T02:15:50Z" + generated_at: "2026-04-08T06:03:09Z" model: gpt-5.4 provider: openai - source_hash: 26b36a2bc19a28a7ef39aa8e81a0050fea1d452ac4969122e5cdf8755e690258 + source_hash: 558ac9e34b67fcc3dd6791a01bebc17e1c34152fa6c5611593d681e8cfa532d9 source_path: concepts/model-providers.md workflow: 15 --- @@ -16,25 +16,24 @@ x-i18n: # Modellanbieter Diese Seite behandelt **LLM-/Modellanbieter** (keine Chat-Kanäle wie WhatsApp/Telegram). -Informationen zu Regeln für die Modellauswahl finden Sie unter [/concepts/models](/de/concepts/models). +Regeln zur Modellauswahl finden Sie unter [/concepts/models](/de/concepts/models). ## Schnellregeln -- Modell-Refs verwenden `provider/model` (Beispiel: `opencode/claude-opus-4-6`). +- Modellreferenzen verwenden `provider/model` (Beispiel: `opencode/claude-opus-4-6`). - Wenn Sie `agents.defaults.models` festlegen, wird es zur Allowlist. - CLI-Helfer: `openclaw onboard`, `openclaw models list`, `openclaw models set `. -- Fallback-Laufzeitregeln, Cooldown-Sonden und Persistenz von Sitzungsüberschreibungen - sind unter [/concepts/model-failover](/de/concepts/model-failover) - dokumentiert. +- Fallback-Laufzeitregeln, Cooldown-Prüfungen und die Persistenz von Sitzungsüberschreibungen sind in [/concepts/model-failover](/de/concepts/model-failover) dokumentiert. - `models.providers.*.models[].contextWindow` sind native Modellmetadaten; - `models.providers.*.models[].contextTokens` ist die effektive Laufzeitobergrenze. -- Anbieter-Plugins können Modellkataloge über `registerProvider({ catalog })` einspeisen; + `models.providers.*.models[].contextTokens` ist die effektive Laufzeitgrenze. +- Anbieter-Plugins können Modellkataloge über `registerProvider({ catalog })` einfügen; OpenClaw führt diese Ausgabe in `models.providers` zusammen, bevor `models.json` geschrieben wird. -- Anbieter-Manifeste können `providerAuthEnvVars` deklarieren, damit generische - umgebungsvariablenbasierte Auth-Sonden die Plugin-Laufzeit nicht laden müssen. Die verbleibende Core-Env-Var-Zuordnung - ist jetzt nur noch für Nicht-Plugin-/Core-Anbieter und einige Fälle mit generischer Priorität - gedacht, etwa Anthropic-Onboarding mit API-Schlüssel zuerst. +- Anbieter-Manifeste können `providerAuthEnvVars` deklarieren, sodass generische + umgebungsvariablenbasierte Auth-Prüfungen die Plugin-Laufzeit nicht laden + müssen. Die verbleibende Core-Umgebungsvariablenzuordnung ist jetzt nur noch + für Nicht-Plugin-/Core-Anbieter und einige generische Vorrangfälle da, etwa + Anthropic-Onboarding mit API-Schlüssel zuerst. - Anbieter-Plugins können auch das Laufzeitverhalten des Anbieters über `normalizeModelId`, `normalizeTransport`, `normalizeConfig`, `applyNativeStreamingUsageCompat`, `resolveConfigApiKey`, @@ -52,218 +51,143 @@ Informationen zu Regeln für die Modellauswahl finden Sie unter [/concepts/model `augmentModelCatalog`, `isBinaryThinking`, `supportsXHighThinking`, `resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`, `prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot` und - `onModelSelected` besitzen. -- Hinweis: Laufzeit-`capabilities` des Anbieters sind gemeinsame Runner-Metadaten (Anbieterfamilie, - Transcript-/Tooling-Besonderheiten, Transport-/Cache-Hinweise). Sie sind nicht - dasselbe wie das [öffentliche Fähigkeitsmodell](/de/plugins/architecture#public-capability-model), - das beschreibt, was ein Plugin registriert (Text-Inferenz, Sprache usw.). + `onModelSelected` steuern. +- Hinweis: Laufzeit-`capabilities` des Anbieters sind gemeinsame Runner-Metadaten (Anbieterfamilie, Besonderheiten bei Transkripten/Tools, Transport-/Cache-Hinweise). Sie sind nicht dasselbe wie das [öffentliche Fähigkeitsmodell](/de/plugins/architecture#public-capability-model), + das beschreibt, was ein Plugin registriert (Textinferenz, Sprache usw.). ## Plugin-eigenes Anbieterverhalten -Anbieter-Plugins können jetzt den Großteil der anbieterbezogenen Logik besitzen, während OpenClaw -die generische Inferenzschleife beibehält. +Anbieter-Plugins können jetzt den Großteil der anbieterspezifischen Logik +übernehmen, während OpenClaw die generische Inferenzschleife beibehält. Typische Aufteilung: -- `auth[].run` / `auth[].runNonInteractive`: Der Anbieter besitzt die Onboarding-/Login- - Abläufe für `openclaw onboard`, `openclaw models auth` und Headless-Einrichtung -- `wizard.setup` / `wizard.modelPicker`: Der Anbieter besitzt Labels für Auth-Auswahl, - Legacy-Aliase, Hinweise zur Allowlist im Onboarding und Einrichtungseinträge in Onboarding-/Modellwählern +- `auth[].run` / `auth[].runNonInteractive`: Der Anbieter übernimmt Onboarding-/Login-Abläufe für `openclaw onboard`, `openclaw models auth` und Headless-Einrichtung +- `wizard.setup` / `wizard.modelPicker`: Der Anbieter übernimmt Beschriftungen für Auth-Auswahl, Legacy-Aliasse, Hinweise zur Onboarding-Allowlist und Einrichtungseinträge in Onboarding-/Modellauswahlen - `catalog`: Der Anbieter erscheint in `models.providers` - `normalizeModelId`: Der Anbieter normalisiert Legacy-/Vorschau-Modell-IDs vor Lookup oder Kanonisierung -- `normalizeTransport`: Der Anbieter normalisiert für die Transportfamilie `api` / `baseUrl` - vor der generischen Modellzusammenstellung; OpenClaw prüft zuerst den zugeordneten Anbieter, - dann andere anbieterpluginfähige Plugins, bis eines den - Transport tatsächlich ändert -- `normalizeConfig`: Der Anbieter normalisiert die Konfiguration `models.providers.` vor - der Nutzung zur Laufzeit; OpenClaw prüft zuerst den zugeordneten Anbieter, dann andere - anbieterpluginfähige Plugins, bis eines die Konfiguration tatsächlich ändert. Wenn kein - Anbieter-Hook die Konfiguration umschreibt, normalisieren gebündelte Helfer der Google-Familie weiterhin - unterstützte Google-Anbietereinträge. -- `applyNativeStreamingUsageCompat`: Der Anbieter wendet endpunktgesteuerte Kompatibilitäts-Umschreibungen für native Streaming-Nutzung auf Konfigurationsanbieter an -- `resolveConfigApiKey`: Der Anbieter löst Auth über Umgebungsmarker für Konfigurationsanbieter auf, - ohne das vollständige Laufzeit-Auth laden zu müssen. `amazon-bedrock` hat hier außerdem einen - eingebauten AWS-Umgebungsmarker-Resolver, obwohl die Bedrock-Laufzeit-Auth - die Standardkette des AWS SDK verwendet. -- `resolveSyntheticAuth`: Der Anbieter kann Verfügbarkeit für lokale/self-hosted oder andere - konfigurationsgestützte Auth bereitstellen, ohne Klartext-Geheimnisse zu speichern -- `shouldDeferSyntheticProfileAuth`: Der Anbieter kann gespeicherte synthetische Profil- - Platzhalter mit niedrigerer Priorität markieren als env-/konfigurationsgestützte Auth -- `resolveDynamicModel`: Der Anbieter akzeptiert Modell-IDs, die noch nicht im lokalen - statischen Katalog vorhanden sind -- `prepareDynamicModel`: Der Anbieter benötigt vor einem erneuten Versuch der - dynamischen Auflösung eine Metadatenaktualisierung -- `normalizeResolvedModel`: Der Anbieter benötigt Umschreibungen für Transport oder Basis-URL -- `contributeResolvedModelCompat`: Der Anbieter liefert Kompatibilitäts-Flags für seine - Herstellermodelle, selbst wenn sie über einen anderen kompatiblen Transport ankommen -- `capabilities`: Der Anbieter veröffentlicht Besonderheiten zu Transcript/Tooling/Anbieterfamilie -- `normalizeToolSchemas`: Der Anbieter bereinigt Tool-Schemas, bevor der eingebettete - Runner sie sieht -- `inspectToolSchemas`: Der Anbieter stellt transportbezogene Schemawarnungen - nach der Normalisierung bereit -- `resolveReasoningOutputMode`: Der Anbieter wählt native oder getaggte - Verträge für Reasoning-Ausgaben -- `prepareExtraParams`: Der Anbieter setzt Standardwerte oder normalisiert anfragespezifische Parameter pro Modell -- `createStreamFn`: Der Anbieter ersetzt den normalen Stream-Pfad durch einen - vollständig benutzerdefinierten Transport -- `wrapStreamFn`: Der Anbieter wendet Wrapper für Anfrage-Header/Body/Modell-Kompatibilität an -- `resolveTransportTurnState`: Der Anbieter liefert native Transport- - Header oder Metadaten pro Turn -- `resolveWebSocketSessionPolicy`: Der Anbieter liefert native WebSocket-Sitzungs- - Header oder eine Cooldown-Richtlinie für Sitzungen -- `createEmbeddingProvider`: Der Anbieter besitzt das Verhalten für Memory-Embeddings, wenn es - beim Anbieter-Plugin statt beim Core-Embedding-Switchboard liegen soll -- `formatApiKey`: Der Anbieter formatiert gespeicherte Auth-Profile in die zur Laufzeit - vom Transport erwartete Zeichenfolge `apiKey` -- `refreshOAuth`: Der Anbieter besitzt die OAuth-Aktualisierung, wenn die gemeinsamen - `pi-ai`-Refresher nicht ausreichen -- `buildAuthDoctorHint`: Der Anbieter hängt Reparaturhinweise an, wenn die OAuth-Aktualisierung - fehlschlägt -- `matchesContextOverflowError`: Der Anbieter erkennt anbieterspezifische - Fehler bei Überschreitung des Kontextfensters, die generische Heuristiken übersehen würden -- `classifyFailoverReason`: Der Anbieter ordnet anbieterspezifische rohe Transport-/API- - Fehler Failover-Gründen wie Ratenbegrenzung oder Überlastung zu +- `normalizeTransport`: Der Anbieter normalisiert `api` / `baseUrl` der + Transportfamilie vor der generischen Modellerstellung; OpenClaw prüft zuerst + den passenden Anbieter, dann andere hook-fähige Anbieter-Plugins, bis eines + den Transport tatsächlich ändert +- `normalizeConfig`: Der Anbieter normalisiert die Konfiguration + `models.providers.`, bevor die Laufzeit sie verwendet; OpenClaw prüft + zuerst den passenden Anbieter, dann andere hook-fähige Anbieter-Plugins, bis + eines die Konfiguration tatsächlich ändert. Wenn kein Anbieter-Hook die + Konfiguration umschreibt, normalisieren gebündelte Google-Familien-Helfer + weiterhin unterstützte Google-Anbietereinträge. +- `applyNativeStreamingUsageCompat`: Der Anbieter wendet endpointgesteuerte native Streaming-Usage-Kompatibilitätsanpassungen für Konfigurationsanbieter an +- `resolveConfigApiKey`: Der Anbieter löst umgebungsmarkierungsbasierte Auth für Konfigurationsanbieter auf, ohne das vollständige Laufzeit-Auth laden zu müssen. `amazon-bedrock` hat hier außerdem einen eingebauten AWS-Umgebungsmarkierungs-Resolver, obwohl die Bedrock-Laufzeit-Auth die Standardkette des AWS SDK verwendet. +- `resolveSyntheticAuth`: Der Anbieter kann lokale/self-hosted oder andere + konfigurationsgestützte Auth-Verfügbarkeit bereitstellen, ohne Klartext-Geheimnisse zu speichern +- `shouldDeferSyntheticProfileAuth`: Der Anbieter kann gespeicherte synthetische Profilplatzhalter als nachrangig gegenüber umgebungs-/konfigurationsgestützter Auth markieren +- `resolveDynamicModel`: Der Anbieter akzeptiert Modell-IDs, die noch nicht im + lokalen statischen Katalog vorhanden sind +- `prepareDynamicModel`: Der Anbieter benötigt eine Metadatenaktualisierung, + bevor die dynamische Auflösung erneut versucht wird +- `normalizeResolvedModel`: Der Anbieter benötigt Umschreibungen für Transport + oder Basis-URL +- `contributeResolvedModelCompat`: Der Anbieter steuert Kompatibilitätsflags für seine Anbietermodelle bei, selbst wenn sie über einen anderen kompatiblen Transport ankommen +- `capabilities`: Der Anbieter veröffentlicht Besonderheiten bei Transkripten/Tools/Anbieterfamilien +- `normalizeToolSchemas`: Der Anbieter bereinigt Toolschemas, bevor der eingebettete Runner sie sieht +- `inspectToolSchemas`: Der Anbieter gibt transportspezifische Schemawarnungen nach der Normalisierung aus +- `resolveReasoningOutputMode`: Der Anbieter wählt native gegenüber getaggten Reasoning-Ausgabeverträgen +- `prepareExtraParams`: Der Anbieter legt pro-Modell-Anfrageparameter standardmäßig fest oder normalisiert sie +- `createStreamFn`: Der Anbieter ersetzt den normalen Stream-Pfad durch einen vollständig benutzerdefinierten Transport +- `wrapStreamFn`: Der Anbieter wendet Wrapper für Anfrageheader/-body/Modellkompatibilität an +- `resolveTransportTurnState`: Der Anbieter liefert native Transportheader + oder Metadaten pro Zug +- `resolveWebSocketSessionPolicy`: Der Anbieter liefert native WebSocket-Sitzungsheader oder eine Sitzungs-Cooldown-Richtlinie +- `createEmbeddingProvider`: Der Anbieter besitzt das Verhalten für Memory-Embeddings, wenn es besser zum Anbieter-Plugin als zur Core-Embedding-Switchboard gehört +- `formatApiKey`: Der Anbieter formatiert gespeicherte Auth-Profile in den zur Laufzeit erwarteten `apiKey`-String des Transports +- `refreshOAuth`: Der Anbieter übernimmt OAuth-Aktualisierung, wenn die gemeinsamen `pi-ai`-Refresher nicht ausreichen +- `buildAuthDoctorHint`: Der Anbieter hängt Reparaturhinweise an, wenn die OAuth-Aktualisierung fehlschlägt +- `matchesContextOverflowError`: Der Anbieter erkennt anbieterspezifische Fehler bei Kontextfensterüberläufen, die generische Heuristiken übersehen würden +- `classifyFailoverReason`: Der Anbieter ordnet anbieterspezifische rohe Transport-/API-Fehler Failover-Gründen wie Ratenlimit oder Überlastung zu - `isCacheTtlEligible`: Der Anbieter entscheidet, welche Upstream-Modell-IDs Prompt-Cache-TTL unterstützen -- `buildMissingAuthMessage`: Der Anbieter ersetzt den generischen Fehler des Auth-Speichers - durch einen anbieterspezifischen Wiederherstellungshinweis -- `suppressBuiltInModel`: Der Anbieter blendet veraltete Upstream-Zeilen aus und kann einen - herstellereigenen Fehler für direkte Auflösungsfehler zurückgeben -- `augmentModelCatalog`: Der Anbieter hängt nach - Erkennung und Konfigurationszusammenführung synthetische/finale Katalogzeilen an -- `isBinaryThinking`: Der Anbieter besitzt die UX für binäres Denken an/aus -- `supportsXHighThinking`: Der Anbieter aktiviert für ausgewählte Modelle `xhigh` -- `resolveDefaultThinkingLevel`: Der Anbieter besitzt die Standardrichtlinie von `/think` für eine - Modellfamilie -- `applyConfigDefaults`: Der Anbieter wendet anbieterspezifische globale Standardwerte - bei der Materialisierung der Konfiguration auf Basis von Auth-Modus, Umgebung oder Modellfamilie an -- `isModernModelRef`: Der Anbieter besitzt die Zuordnung bevorzugter Modelle für Live-/Smoke-Tests -- `prepareRuntimeAuth`: Der Anbieter wandelt ein konfiguriertes Credential in ein kurzlebiges - Laufzeit-Token um -- `resolveUsageAuth`: Der Anbieter löst Credentials für Nutzung/Quota für `/usage` - und verwandte Status-/Berichtsoberflächen auf -- `fetchUsageSnapshot`: Der Anbieter besitzt das Abrufen/Parsen des Nutzungsendpunkts, während - der Core weiterhin die Zusammenfassungs-Shell und Formatierung besitzt -- `onModelSelected`: Der Anbieter führt nach der Auswahl Nebeneffekte wie - Telemetrie oder anbieterbezogene Sitzungsbuchhaltung aus +- `buildMissingAuthMessage`: Der Anbieter ersetzt den generischen Fehler des Auth-Speichers durch einen anbieterspezifischen Wiederherstellungshinweis +- `suppressBuiltInModel`: Der Anbieter blendet veraltete Upstream-Zeilen aus und kann für direkte Auflösungsfehler einen anbieterdefinierten Fehler zurückgeben +- `augmentModelCatalog`: Der Anbieter hängt nach Erkennung und Konfigurationszusammenführung synthetische/abschließende Katalogzeilen an +- `isBinaryThinking`: Der Anbieter besitzt die binäre Ein/Aus-Thinking-UX +- `supportsXHighThinking`: Der Anbieter aktiviert `xhigh` für ausgewählte Modelle +- `resolveDefaultThinkingLevel`: Der Anbieter besitzt die standardmäßige `/think`-Richtlinie für eine Modellfamilie +- `applyConfigDefaults`: Der Anbieter wendet anbieterspezifische globale Standardwerte während der Konfigurationsmaterialisierung anhand von Auth-Modus, Umgebung oder Modellfamilie an +- `isModernModelRef`: Der Anbieter besitzt die Zuordnung bevorzugter Modelle für live/smoke +- `prepareRuntimeAuth`: Der Anbieter wandelt konfigurierte Anmeldedaten in ein kurzlebiges Laufzeittoken um +- `resolveUsageAuth`: Der Anbieter löst Nutzungs-/Kontingent-Anmeldedaten für `/usage` und verwandte Status-/Berichtsoberflächen auf +- `fetchUsageSnapshot`: Der Anbieter übernimmt Abruf/Parsing des Nutzungsendpunkts, während der Core weiterhin die Zusammenfassungs-Hülle und Formatierung übernimmt +- `onModelSelected`: Der Anbieter führt Seiteneffekte nach der Modellauswahl aus, etwa Telemetrie oder anbieterdefinierte Sitzungsbuchhaltung Aktuelle gebündelte Beispiele: -- `anthropic`: Vorwärtskompatibler Claude-4.6-Fallback, Hinweise zur Auth-Reparatur, Abruf von Nutzungsendpunkten, - Cache-TTL-/Anbieterfamilien-Metadaten und Auth-bewusste globale - Konfigurationsstandardwerte -- `amazon-bedrock`: Anbieter-eigene Erkennung von Kontextüberläufen und - Klassifizierung von Failover-Gründen für Bedrock-spezifische Throttle-/Not-ready-Fehler sowie - die gemeinsame Replay-Familie `anthropic-by-model` für Claude-exklusive Replay-Richtlinien- - Schutzmaßnahmen auf Anthropic-Datenverkehr -- `anthropic-vertex`: Claude-exklusive Replay-Richtlinien-Schutzmaßnahmen auf Anthropic-Message- - Datenverkehr -- `openrouter`: Durchgereichte Modell-IDs, Anfrage-Wrapper, Hinweise zu Anbieterfähigkeiten, - Bereinigung von Gemini-Thought-Signatures bei proxy-basiertem Gemini-Datenverkehr, - Proxy-Reasoning-Injektion über die Stream-Familie `openrouter-thinking`, Weiterleitung - von Routing-Metadaten und Cache-TTL-Richtlinie -- `github-copilot`: Onboarding/Geräte-Login, vorwärtskompatibler Modell-Fallback, - Hinweise zu Claude-Thinking-Transcripts, Austausch von Laufzeit-Tokens und Abruf von Nutzungsendpunkten -- `openai`: Vorwärtskompatibler GPT-5.4-Fallback, direkte OpenAI-Transport- - Normalisierung, Codex-bewusste Hinweise bei fehlender Auth, Unterdrückung von Spark, synthetische - OpenAI-/Codex-Katalogzeilen, Thinking-/Live-Modell-Richtlinie, Normalisierung von Aliasen für - Usage-Token (`input` / `output` und `prompt` / `completion`-Familien), die - gemeinsame Stream-Familie `openai-responses-defaults` für native OpenAI-/Codex- - Wrapper, Metadaten zur Anbieterfamilie, gebündelte Registrierung von Bildgenerierungsanbietern - für `gpt-image-1` und gebündelte Registrierung von Videogenerierungsanbietern - für `sora-2` -- `google` und `google-gemini-cli`: Vorwärtskompatibler Gemini-3.1-Fallback, - native Gemini-Replay-Validierung, Bereinigung von Bootstrap-Replays, getaggter - Modus für Reasoning-Ausgaben, Modern-Model-Matching, gebündelte Registrierung von Bildgenerierungs- - anbietern für Gemini-Bildvorschau-Modelle und gebündelte - Registrierung von Videogenerierungsanbietern für Veo-Modelle; Gemini-CLI-OAuth besitzt außerdem - Tokenformatierung für Auth-Profile, Parsing von Usage-Token und Abruf von Quota-Endpunkten - für Nutzungsoberflächen -- `moonshot`: Gemeinsamer Transport, plugin-eigene Normalisierung von Thinking-Payloads -- `kilocode`: Gemeinsamer Transport, plugin-eigene Anfrage-Header, Reasoning-Payload- - Normalisierung, Bereinigung von Thought-Signatures bei Proxy-Gemini und Cache-TTL- - Richtlinie -- `zai`: Vorwärtskompatibler GLM-5-Fallback, Standardwerte für `tool_stream`, Cache-TTL- - Richtlinie, Richtlinie für binäres Denken/Live-Modelle sowie Auth + Quota-Abruf für Nutzung; - unbekannte `glm-5*`-IDs werden aus der gebündelten Vorlage `glm-4.7` synthetisiert -- `xai`: Native Responses-Transport-Normalisierung, Umschreibungen von `/fast`-Aliasen für - schnelle Grok-Varianten, Standardwert für `tool_stream`, xAI-spezifische Bereinigung von Tool-Schemas / - Reasoning-Payloads und gebündelte Registrierung von Videogenerierungsanbietern - für `grok-imagine-video` -- `mistral`: Plugin-eigene Fähigkeitsmetadaten -- `opencode` und `opencode-go`: Plugin-eigene Fähigkeitsmetadaten plus - Bereinigung von Thought-Signatures bei Proxy-Gemini -- `alibaba`: Plugin-eigener Videogenerierungskatalog für direkte Wan-Modell-Refs - wie `alibaba/wan2.6-t2v` -- `byteplus`: Plugin-eigene Kataloge plus gebündelte Registrierung von Videogenerierungsanbietern - für Seedance-Modelle für Text-zu-Video/Bild-zu-Video -- `fal`: gebündelte Registrierung von Videogenerierungsanbietern für gehostete Drittanbieter- - Registrierung von Bildgenerierungsanbietern für FLUX-Bildmodelle plus gebündelte - Registrierung von Videogenerierungsanbietern für gehostete Drittanbieter-Videomodelle +- `anthropic`: Claude-4.6-Vorwärtskompatibilitäts-Fallback, Auth-Reparaturhinweise, Abruf des Nutzungsendpunkts, Cache-TTL-/Anbieterfamilien-Metadaten und auth-bewusste globale Konfigurationsstandards +- `amazon-bedrock`: anbieterdefinierte Erkennung von Kontextüberlauf und Klassifizierung von Failover-Gründen für Bedrock-spezifische Throttle-/Not-ready-Fehler sowie die gemeinsame Replay-Familie `anthropic-by-model` für Claude-spezifische Replay-Richtlinienwächter auf Anthropic-Datenverkehr +- `anthropic-vertex`: Claude-spezifische Replay-Richtlinienwächter für Anthropic-Messages-Datenverkehr +- `openrouter`: Durchreichen von Modell-IDs, Anfrage-Wrapper, Hinweise zu Anbieterfähigkeiten, Bereinigung von Gemini-Thought-Signatures bei Proxy-Gemini-Datenverkehr, Proxy-Reasoning-Injektion über die Stream-Familie `openrouter-thinking`, Weiterleitung von Routing-Metadaten und Cache-TTL-Richtlinie +- `github-copilot`: Onboarding/Gerätelogin, Vorwärtskompatibilitäts-Fallback für Modelle, Claude-Thinking-Transkripthinweise, Laufzeit-Token-Austausch und Abruf des Nutzungsendpunkts +- `openai`: GPT-5.4-Vorwärtskompatibilitäts-Fallback, direkte OpenAI-Transportnormalisierung, Codex-bewusste Missing-Auth-Hinweise, Spark-Unterdrückung, synthetische OpenAI-/Codex-Katalogzeilen, Thinking-/Live-Modell-Richtlinie, Alias-Normalisierung von Usage-Token (`input` / `output` und `prompt` / `completion`-Familien), die gemeinsame Stream-Familie `openai-responses-defaults` für native OpenAI-/Codex-Wrapper, Anbieterfamilien-Metadaten, gebündelte Registrierung des Bildgenerierungsanbieters für `gpt-image-1` und gebündelte Registrierung des Videogenerierungsanbieters für `sora-2` +- `google` und `google-gemini-cli`: Gemini-3.1-Vorwärtskompatibilitäts-Fallback, native Gemini-Replay-Validierung, Bereinigung von Bootstrap-Replays, getaggter Reasoning-Ausgabemodus, Modern-Model-Matching, gebündelte Registrierung des Bildgenerierungsanbieters für Gemini-Image-Preview-Modelle und gebündelte Registrierung des Videogenerierungsanbieters für Veo-Modelle; Gemini CLI OAuth besitzt außerdem die Formatierung von Auth-Profil-Token, Parsing von Usage-Token und Abruf des Kontingentendpunkts für Nutzungsoberflächen +- `moonshot`: gemeinsamer Transport, plugin-eigene Normalisierung von Thinking-Payloads +- `kilocode`: gemeinsamer Transport, plugin-eigene Anfrageheader, Normalisierung von Reasoning-Payloads, Bereinigung von Proxy-Gemini-Thought-Signatures und Cache-TTL-Richtlinie +- `zai`: GLM-5-Vorwärtskompatibilitäts-Fallback, Standardwerte für `tool_stream`, Cache-TTL-Richtlinie, Richtlinie für binäres Thinking/live-Modelle sowie Usage-Auth und Abruf von Kontingenten; unbekannte `glm-5*`-IDs werden aus der gebündelten Vorlage `glm-4.7` synthetisiert +- `xai`: native Normalisierung des Responses-Transports, Umschreibungen des Alias `/fast` für schnelle Grok-Varianten, Standard-`tool_stream`, xAI-spezifische Bereinigung von Toolschemas / Reasoning-Payloads und gebündelte Registrierung des Videogenerierungsanbieters für `grok-imagine-video` +- `mistral`: plugin-eigene Fähigkeitsmetadaten +- `opencode` und `opencode-go`: plugin-eigene Fähigkeitsmetadaten sowie Bereinigung von Proxy-Gemini-Thought-Signatures +- `alibaba`: plugin-eigener Videogenerierungskatalog für direkte Wan-Modellreferenzen wie `alibaba/wan2.6-t2v` +- `byteplus`: plugin-eigene Kataloge sowie gebündelte Registrierung des Videogenerierungsanbieters für Seedance-Text-zu-Video-/Bild-zu-Video-Modelle +- `fal`: gebündelte Registrierung des Videogenerierungsanbieters für gehostete Drittanbieter-Registrierung des Bildgenerierungsanbieters für FLUX-Bildmodelle sowie gebündelte Registrierung des Videogenerierungsanbieters für gehostete Drittanbieter-Videomodelle - `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`, `stepfun`, `synthetic`, `venice`, `vercel-ai-gateway` und `volcengine`: nur plugin-eigene Kataloge -- `qwen`: Plugin-eigene Kataloge für Textmodelle plus gemeinsame - Registrierungen von Media-Understanding- und Videogenerierungsanbietern für seine - multimodalen Oberflächen; Qwen-Videogenerierung verwendet die Standard-DashScope-Video- - Endpunkte mit gebündelten Wan-Modellen wie `wan2.6-t2v` und `wan2.7-r2v` -- `runway`: Plugin-eigene Registrierung von Videogenerierungsanbietern für native, - auf Aufgaben basierende Runway-Modelle wie `gen4.5` -- `minimax`: Plugin-eigene Kataloge, gebündelte Registrierung von Videogenerierungsanbietern - für Hailuo-Videomodelle, gebündelte Registrierung von Bildgenerierungsanbietern - für `image-01`, hybride Auswahl von Anthropic-/OpenAI-Replay-Richtlinien - sowie Auth-/Snapshot-Logik für Nutzung -- `together`: Plugin-eigene Kataloge plus gebündelte Registrierung von Videogenerierungsanbietern - für Wan-Videomodelle -- `xiaomi`: Plugin-eigene Kataloge plus Auth-/Snapshot-Logik für Nutzung +- `qwen`: plugin-eigene Kataloge für Textmodelle sowie gemeinsame Registrierungen von Media-Understanding- und Videogenerierungsanbietern für seine multimodalen Oberflächen; Qwen-Videogenerierung verwendet die Standard-DashScope-Videoendpunkte mit gebündelten Wan-Modellen wie `wan2.6-t2v` und `wan2.7-r2v` +- `runway`: plugin-eigene Registrierung des Videogenerierungsanbieters für native aufgabenbasierte Runway-Modelle wie `gen4.5` +- `minimax`: plugin-eigene Kataloge, gebündelte Registrierung des Videogenerierungsanbieters für Hailuo-Videomodelle, gebündelte Registrierung des Bildgenerierungsanbieters für `image-01`, hybride Auswahl von Anthropic-/OpenAI-Replay-Richtlinien sowie Usage-Auth-/Snapshot-Logik +- `together`: plugin-eigene Kataloge sowie gebündelte Registrierung des Videogenerierungsanbieters für Wan-Videomodelle +- `xiaomi`: plugin-eigene Kataloge sowie Usage-Auth-/Snapshot-Logik Das gebündelte Plugin `openai` besitzt jetzt beide Anbieter-IDs: `openai` und `openai-codex`. -Damit sind Anbieter abgedeckt, die weiterhin in die normalen Transporte von OpenClaw passen. Ein Anbieter, -der einen vollständig benutzerdefinierten Anfrage-Executor benötigt, ist eine separate, tiefergehende -Erweiterungsoberfläche. +Damit sind Anbieter abgedeckt, die noch in die normalen Transporte von OpenClaw passen. Ein Anbieter, der einen vollständig benutzerdefinierten Anfrage-Executor benötigt, ist eine separate, tiefere Erweiterungsoberfläche. ## API-Schlüsselrotation -- Unterstützt generische Rotation für ausgewählte Anbieter. +- Unterstützt generische Anbieterrotation für ausgewählte Anbieter. - Konfigurieren Sie mehrere Schlüssel über: - `OPENCLAW_LIVE__KEY` (einzelne Live-Überschreibung, höchste Priorität) - `_API_KEYS` (durch Komma oder Semikolon getrennte Liste) - `_API_KEY` (primärer Schlüssel) - `_API_KEY_*` (nummerierte Liste, z. B. `_API_KEY_1`) - Für Google-Anbieter wird `GOOGLE_API_KEY` zusätzlich als Fallback einbezogen. -- Die Schlüsselreihenfolge bewahrt die Priorität und entfernt doppelte Werte. -- Anfragen werden nur bei Antworten mit Ratenbegrenzung mit dem nächsten Schlüssel erneut versucht (zum - Beispiel `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many +- Die Reihenfolge der Schlüsselauswahl bewahrt die Priorität und dedupliziert Werte. +- Anfragen werden nur bei Antworten mit Ratenlimit mit dem nächsten Schlüssel wiederholt (zum Beispiel `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, - `workers_ai ... quota limit exceeded` oder periodische Meldungen über Nutzungslimits). -- Fehler ohne Ratenbegrenzung schlagen sofort fehl; es wird keine Schlüsselrotation versucht. -- Wenn alle Kandidatenschlüssel fehlschlagen, wird der letzte Fehler aus dem letzten Versuch zurückgegeben. + `workers_ai ... quota limit exceeded` oder periodische Usage-Limit-Meldungen). +- Fehler ohne Ratenlimit schlagen sofort fehl; es wird keine Schlüsselrotation versucht. +- Wenn alle Kandidatenschlüssel fehlschlagen, wird der letzte Fehler des letzten Versuchs zurückgegeben. ## Integrierte Anbieter (pi-ai-Katalog) -OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **keine** -`models.providers`-Konfiguration; setzen Sie einfach Auth und wählen Sie ein Modell aus. +OpenClaw wird mit dem pi‑ai-Katalog ausgeliefert. Diese Anbieter erfordern **keine** +`models.providers`-Konfiguration; legen Sie einfach Auth fest und wählen Sie ein Modell aus. ### OpenAI - Anbieter: `openai` - Auth: `OPENAI_API_KEY` -- Optionale Rotation: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, plus `OPENCLAW_LIVE_OPENAI_KEY` (einzelne Überschreibung) +- Optionale Rotation: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2` sowie `OPENCLAW_LIVE_OPENAI_KEY` (einzelne Überschreibung) - Beispielmodelle: `openai/gpt-5.4`, `openai/gpt-5.4-pro` - CLI: `openclaw onboard --auth-choice openai-api-key` -- Standardtransport ist `auto` (WebSocket zuerst, SSE-Fallback) +- Der Standardtransport ist `auto` (zuerst WebSocket, dann SSE als Fallback) - Pro Modell überschreiben über `agents.defaults.models["openai/"].params.transport` (`"sse"`, `"websocket"` oder `"auto"`) -- Aufwärmen für OpenAI Responses WebSocket ist standardmäßig über `params.openaiWsWarmup` (`true`/`false`) aktiviert -- Priority Processing von OpenAI kann über `agents.defaults.models["openai/"].params.serviceTier` aktiviert werden -- `/fast` und `params.fastMode` ordnen direkte `openai/*`-Responses-Anfragen auf `service_tier=priority` bei `api.openai.com` zu -- Verwenden Sie `params.serviceTier`, wenn Sie statt des gemeinsamen Schalters `/fast` einen expliziten Tier-Wert möchten -- Versteckte OpenClaw-Attributionsheader (`originator`, `version`, - `User-Agent`) gelten nur für nativen OpenAI-Datenverkehr zu `api.openai.com`, nicht - für generische OpenAI-kompatible Proxys -- Native OpenAI-Routen behalten außerdem Responses-`store`, Prompt-Cache-Hinweise und - OpenAI-Reasoning-kompatible Payload-Anpassung bei; Proxy-Routen nicht +- OpenAI-Responses-WebSocket-Aufwärmen ist standardmäßig über `params.openaiWsWarmup` aktiviert (`true`/`false`) +- OpenAI-Prioritätsverarbeitung kann über `agents.defaults.models["openai/"].params.serviceTier` aktiviert werden +- `/fast` und `params.fastMode` ordnen direkte `openai/*`-Responses-Anfragen auf `api.openai.com` `service_tier=priority` zu +- Verwenden Sie `params.serviceTier`, wenn Sie einen expliziten Tier statt des gemeinsamen `/fast`-Schalters möchten +- Versteckte OpenClaw-Zuordnungsheader (`originator`, `version`, + `User-Agent`) werden nur auf nativem OpenAI-Datenverkehr zu `api.openai.com` angewendet, nicht auf generischen OpenAI-kompatiblen Proxys +- Native OpenAI-Routen behalten auch Responses-`store`, Prompt-Cache-Hinweise und OpenAI-Reasoning-Kompatibilitäts-Payload-Shaping bei; Proxy-Routen nicht - `openai/gpt-5.3-codex-spark` wird in OpenClaw absichtlich unterdrückt, weil die Live-OpenAI-API es ablehnt; Spark wird als nur für Codex behandelt ```json5 @@ -276,12 +200,12 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke - Anbieter: `anthropic` - Auth: `ANTHROPIC_API_KEY` -- Optionale Rotation: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, plus `OPENCLAW_LIVE_ANTHROPIC_KEY` (einzelne Überschreibung) +- Optionale Rotation: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2` sowie `OPENCLAW_LIVE_ANTHROPIC_KEY` (einzelne Überschreibung) - Beispielmodell: `anthropic/claude-opus-4-6` - CLI: `openclaw onboard --auth-choice apiKey` -- Direkte öffentliche Anthropic-Anfragen unterstützen den gemeinsamen Schalter `/fast` und `params.fastMode`, einschließlich per API-Schlüssel und OAuth authentifiziertem Datenverkehr an `api.anthropic.com`; OpenClaw ordnet dies Anthropic-`service_tier` zu (`auto` vs `standard_only`) -- Hinweis zu Anthropic: Mitarbeiter von Anthropic haben uns mitgeteilt, dass die Nutzung im Stil von OpenClaw Claude CLI wieder erlaubt ist, daher behandelt OpenClaw die Wiederverwendung von Claude CLI und die Nutzung von `claude -p` für diese Integration als zulässig, sofern Anthropic keine neue Richtlinie veröffentlicht. -- Das Anthropic-Setup-Token bleibt als unterstützter OpenClaw-Tokenpfad verfügbar, OpenClaw bevorzugt nun jedoch die Wiederverwendung von Claude CLI und `claude -p`, wenn verfügbar. +- Direkte öffentliche Anthropic-Anfragen unterstützen den gemeinsamen `/fast`-Schalter und `params.fastMode`, einschließlich per API-Schlüssel und OAuth authentifiziertem Datenverkehr an `api.anthropic.com`; OpenClaw ordnet dies Anthropic-`service_tier` zu (`auto` vs `standard_only`) +- Anthropic-Hinweis: Anthropic-Mitarbeiter haben uns mitgeteilt, dass OpenClaw-artige Claude-CLI-Nutzung wieder erlaubt ist, daher behandelt OpenClaw die Wiederverwendung von Claude CLI und die Nutzung von `claude -p` für diese Integration als zulässig, sofern Anthropic keine neue Richtlinie veröffentlicht. +- Anthropic-Setup-Token bleibt als unterstützter OpenClaw-Tokenpfad verfügbar, aber OpenClaw bevorzugt jetzt, wenn verfügbar, die Wiederverwendung von Claude CLI und `claude -p`. ```json5 { @@ -295,16 +219,16 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke - Auth: OAuth (ChatGPT) - Beispielmodell: `openai-codex/gpt-5.4` - CLI: `openclaw onboard --auth-choice openai-codex` oder `openclaw models auth login --provider openai-codex` -- Standardtransport ist `auto` (WebSocket zuerst, SSE-Fallback) +- Der Standardtransport ist `auto` (zuerst WebSocket, dann SSE als Fallback) - Pro Modell überschreiben über `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"` oder `"auto"`) -- `params.serviceTier` wird ebenfalls bei nativen Codex-Responses-Anfragen (`chatgpt.com/backend-api`) weitergeleitet -- Versteckte OpenClaw-Attributionsheader (`originator`, `version`, - `User-Agent`) werden nur an nativen Codex-Datenverkehr zu - `chatgpt.com/backend-api` angehängt, nicht an generische OpenAI-kompatible Proxys -- Verwendet denselben Schalter `/fast` und dieselbe Konfiguration `params.fastMode` wie direktes `openai/*`; OpenClaw ordnet dies `service_tier=priority` zu -- `openai-codex/gpt-5.3-codex-spark` bleibt verfügbar, wenn der Codex-OAuth-Katalog es anbietet; abhängig von Berechtigungen -- `openai-codex/gpt-5.4` behält das native `contextWindow = 1050000` und ein standardmäßiges Laufzeit-`contextTokens = 272000`; überschreiben Sie die Laufzeitobergrenze mit `models.providers.openai-codex.models[].contextTokens` -- Richtlinienhinweis: OpenAI-Codex-OAuth wird ausdrücklich für externe Tools/Workflows wie OpenClaw unterstützt. +- `params.serviceTier` wird auch bei nativen Codex-Responses-Anfragen (`chatgpt.com/backend-api`) weitergeleitet +- Versteckte OpenClaw-Zuordnungsheader (`originator`, `version`, + `User-Agent`) werden nur auf nativem Codex-Datenverkehr zu + `chatgpt.com/backend-api` angehängt, nicht auf generischen OpenAI-kompatiblen Proxys +- Verwendet denselben `/fast`-Schalter und dieselbe `params.fastMode`-Konfiguration wie direktes `openai/*`; OpenClaw ordnet dies `service_tier=priority` zu +- `openai-codex/gpt-5.3-codex-spark` bleibt verfügbar, wenn der Codex-OAuth-Katalog es bereitstellt; abhängig von Berechtigungen +- `openai-codex/gpt-5.4` behält natives `contextWindow = 1050000` und ein Standard-Laufzeit-`contextTokens = 272000`; überschreiben Sie die Laufzeitgrenze mit `models.providers.openai-codex.models[].contextTokens` +- Richtlinienhinweis: OpenAI-Codex-OAuth wird explizit für externe Tools/Workflows wie OpenClaw unterstützt. ```json5 { @@ -324,11 +248,11 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke } ``` -### Andere gehostete Optionen im Abonnementstil +### Andere abonnementsbasierte gehostete Optionen -- [Qwen Cloud](/de/providers/qwen): Oberfläche des Qwen-Cloud-Anbieters plus Zuordnung von Endpunkten für Alibaba DashScope und Coding Plan -- [MiniMax](/de/providers/minimax): OAuth- oder API-Schlüsselzugriff für MiniMax Coding Plan -- [GLM Models](/de/providers/glm): Z.AI Coding Plan oder allgemeine API-Endpunkte +- [Qwen Cloud](/de/providers/qwen): Qwen-Cloud-Anbieteroberfläche sowie Alibaba-DashScope- und Coding-Plan-Endpunktzuordnung +- [MiniMax](/de/providers/minimax): MiniMax-Coding-Plan-OAuth- oder API-Schlüsselzugriff +- [GLM Models](/de/providers/glm): Z.AI-Coding-Plan oder allgemeine API-Endpunkte ### OpenCode @@ -348,29 +272,28 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke - Anbieter: `google` - Auth: `GEMINI_API_KEY` -- Optionale Rotation: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, `GOOGLE_API_KEY` als Fallback und `OPENCLAW_LIVE_GEMINI_KEY` (einzelne Überschreibung) +- Optionale Rotation: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, `GOOGLE_API_KEY` als Fallback sowie `OPENCLAW_LIVE_GEMINI_KEY` (einzelne Überschreibung) - Beispielmodelle: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview` - Kompatibilität: Legacy-OpenClaw-Konfiguration mit `google/gemini-3.1-flash-preview` wird zu `google/gemini-3-flash-preview` normalisiert - CLI: `openclaw onboard --auth-choice gemini-api-key` -- Direkte Gemini-Ausführungen akzeptieren außerdem `agents.defaults.models["google/"].params.cachedContent` - (oder das Legacy-`cached_content`), um einen anbieter-nativen - Handle `cachedContents/...` weiterzuleiten; Gemini-Cache-Treffer erscheinen in OpenClaw als `cacheRead` +- Direkte Gemini-Läufe akzeptieren außerdem `agents.defaults.models["google/"].params.cachedContent` + (oder das Legacy-`cached_content`), um einen anbieterinternen + `cachedContents/...`-Handle weiterzuleiten; Gemini-Cache-Treffer erscheinen als OpenClaw-`cacheRead` ### Google Vertex und Gemini CLI - Anbieter: `google-vertex`, `google-gemini-cli` -- Auth: Vertex verwendet gcloud ADC; Gemini CLI verwendet seinen OAuth-Flow -- Achtung: Gemini-CLI-OAuth in OpenClaw ist eine inoffizielle Integration. Einige Nutzer haben nach der Verwendung von Drittanbieter-Clients von Einschränkungen ihres Google-Kontos berichtet. Prüfen Sie die Google-Bedingungen und verwenden Sie ein nicht kritisches Konto, wenn Sie sich dafür entscheiden. -- Gemini-CLI-OAuth wird als Teil des gebündelten Plugins `google` ausgeliefert. +- Auth: Vertex verwendet gcloud ADC; Gemini CLI verwendet seinen OAuth-Ablauf +- Vorsicht: Gemini-CLI-OAuth in OpenClaw ist eine inoffizielle Integration. Einige Nutzer haben von Einschränkungen ihres Google-Kontos nach der Nutzung von Drittanbieter-Clients berichtet. Prüfen Sie die Google-Nutzungsbedingungen und verwenden Sie ein nicht kritisches Konto, wenn Sie sich dafür entscheiden. +- Gemini-CLI-OAuth wird als Teil des gebündelten `google`-Plugins ausgeliefert. - Installieren Sie zuerst Gemini CLI: - `brew install gemini-cli` - oder `npm install -g @google/gemini-cli` - Aktivieren: `openclaw plugins enable google` - - Anmelden: `openclaw models auth login --provider google-gemini-cli --set-default` + - Login: `openclaw models auth login --provider google-gemini-cli --set-default` - Standardmodell: `google-gemini-cli/gemini-3-flash-preview` - - Hinweis: Sie fügen **keine** Client-ID oder kein Secret in `openclaw.json` ein. Der CLI-Login-Flow speichert - Tokens in Auth-Profilen auf dem Gateway-Host. - - Wenn Anfragen nach der Anmeldung fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder `GOOGLE_CLOUD_PROJECT_ID` auf dem Gateway-Host. + - Hinweis: Sie fügen **keine** Client-ID oder kein Secret in `openclaw.json` ein. Der CLI-Login-Ablauf speichert Tokens in Auth-Profilen auf dem Gateway-Host. + - Wenn Anfragen nach dem Login fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder `GOOGLE_CLOUD_PROJECT_ID` auf dem Gateway-Host. - Gemini-CLI-JSON-Antworten werden aus `response` geparst; die Nutzung fällt auf `stats` zurück, wobei `stats.cached` zu OpenClaw-`cacheRead` normalisiert wird. @@ -378,10 +301,10 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke - Anbieter: `zai` - Auth: `ZAI_API_KEY` -- Beispielmodell: `zai/glm-5` +- Beispielmodell: `zai/glm-5.1` - CLI: `openclaw onboard --auth-choice zai-api-key` - - Aliase: `z.ai/*` und `z-ai/*` werden zu `zai/*` normalisiert - - `zai-api-key` erkennt automatisch den passenden Z.AI-Endpunkt; `zai-coding-global`, `zai-coding-cn`, `zai-global` und `zai-cn` erzwingen eine bestimmte Oberfläche + - Aliasse: `z.ai/*` und `z-ai/*` werden zu `zai/*` normalisiert + - `zai-api-key` erkennt den passenden Z.AI-Endpunkt automatisch; `zai-coding-global`, `zai-coding-cn`, `zai-global` und `zai-cn` erzwingen eine bestimmte Oberfläche ### Vercel AI Gateway @@ -397,38 +320,31 @@ OpenClaw wird mit dem pi-ai-Katalog ausgeliefert. Diese Anbieter benötigen **ke - Beispielmodell: `kilocode/kilo/auto` - CLI: `openclaw onboard --auth-choice kilocode-api-key` - Basis-URL: `https://api.kilo.ai/api/gateway/` -- Der statische Fallback-Katalog enthält `kilocode/kilo/auto`; die Live- - Erkennung über `https://api.kilo.ai/api/gateway/models` kann den Laufzeit- - Katalog weiter erweitern. +- Der statische Fallback-Katalog enthält `kilocode/kilo/auto`; die Live-Erkennung unter + `https://api.kilo.ai/api/gateway/models` kann den Laufzeitkatalog weiter + erweitern. - Das genaue Upstream-Routing hinter `kilocode/kilo/auto` gehört zu Kilo Gateway - und ist nicht fest in OpenClaw codiert. + und ist nicht in OpenClaw fest codiert. -Einzelheiten zur Einrichtung finden Sie unter [/providers/kilocode](/de/providers/kilocode). +Siehe [/providers/kilocode](/de/providers/kilocode) für Einrichtungsdetails. ### Andere gebündelte Anbieter-Plugins - OpenRouter: `openrouter` (`OPENROUTER_API_KEY`) - Beispielmodell: `openrouter/auto` -- OpenClaw wendet die von OpenRouter dokumentierten App-Attributionsheader nur an, - wenn die Anfrage tatsächlich an `openrouter.ai` geht -- OpenRouter-spezifische Anthropic-`cache_control`-Marker sind ebenso auf - verifizierte OpenRouter-Routen beschränkt, nicht auf beliebige Proxy-URLs -- OpenRouter bleibt auf dem Proxy-Stil-Pfad für OpenAI-Kompatibilität, daher wird keine - native, nur für OpenAI bestimmte Anfrageanpassung (`serviceTier`, Responses-`store`, - Prompt-Cache-Hinweise, OpenAI-Reasoning-kompatible Payloads) weitergeleitet -- Gemini-basierte OpenRouter-Refs behalten nur die Bereinigung von Thought-Signatures bei Proxy-Gemini - bei; native Gemini-Replay-Validierung und Bootstrap-Umschreibungen bleiben deaktiviert +- OpenClaw wendet die dokumentierten App-Zuordnungsheader von OpenRouter nur an, wenn die Anfrage tatsächlich an `openrouter.ai` geht +- OpenRouter-spezifische Anthropic-`cache_control`-Marker werden entsprechend nur für verifizierte OpenRouter-Routen aktiviert, nicht für beliebige Proxy-URLs +- OpenRouter bleibt auf dem proxyartigen OpenAI-kompatiblen Pfad, daher wird natives nur-OpenAI-Request-Shaping (`serviceTier`, Responses-`store`, + Prompt-Cache-Hinweise, OpenAI-Reasoning-Kompatibilitäts-Payloads) nicht weitergeleitet +- Gemini-gestützte OpenRouter-Referenzen behalten nur die Bereinigung von Proxy-Gemini-Thought-Signatures; native Gemini-Replay-Validierung und Bootstrap-Umschreibungen bleiben deaktiviert - Kilo Gateway: `kilocode` (`KILOCODE_API_KEY`) - Beispielmodell: `kilocode/kilo/auto` -- Gemini-basierte Kilo-Refs behalten denselben Pfad zur Bereinigung von Thought-Signatures bei Proxy-Gemini; - `kilocode/kilo/auto` und andere Hinweise ohne Unterstützung für Proxy-Reasoning - überspringen die Proxy-Reasoning-Injektion +- Gemini-gestützte Kilo-Referenzen behalten denselben Bereinigungspfad für Proxy-Gemini-Thought-Signatures; `kilocode/kilo/auto` und andere Hinweise auf nicht unterstütztes Proxy-Reasoning überspringen die Proxy-Reasoning-Injektion - MiniMax: `minimax` (API-Schlüssel) und `minimax-portal` (OAuth) - Auth: `MINIMAX_API_KEY` für `minimax`; `MINIMAX_OAUTH_TOKEN` oder `MINIMAX_API_KEY` für `minimax-portal` - Beispielmodell: `minimax/MiniMax-M2.7` oder `minimax-portal/MiniMax-M2.7` -- Onboarding/Einrichtung per API-Schlüssel für MiniMax schreibt explizite M2.7-Modelldefinitionen mit - `input: ["text", "image"]`; der gebündelte Anbieterkatalog hält die Chat-Refs - text-only, bis diese Anbieterkonfiguration materialisiert wird +- MiniMax-Onboarding-/API-Schlüssel-Einrichtung schreibt explizite M2.7-Modell-Definitionen mit + `input: ["text", "image"]`; der gebündelte Anbieterkatalog hält die Chat-Referenzen text-only, bis diese Anbieterkonfiguration materialisiert wird - Moonshot: `moonshot` (`MOONSHOT_API_KEY`) - Beispielmodell: `moonshot/kimi-k2.5` - Kimi Coding: `kimi` (`KIMI_API_KEY` oder `KIMICODE_API_KEY`) @@ -456,7 +372,7 @@ Einzelheiten zur Einrichtung finden Sie unter [/providers/kilocode](/de/provider - xAI: `xai` (`XAI_API_KEY`) - Native gebündelte xAI-Anfragen verwenden den xAI-Responses-Pfad - `/fast` oder `params.fastMode: true` schreiben `grok-3`, `grok-3-mini`, - `grok-4` und `grok-4-0709` auf ihre `*-fast`-Varianten um + `grok-4` und `grok-4-0709` in ihre `*-fast`-Varianten um - `tool_stream` ist standardmäßig aktiviert; setzen Sie `agents.defaults.models["xai/"].params.tool_stream` auf `false`, um es zu deaktivieren @@ -470,20 +386,19 @@ Einzelheiten zur Einrichtung finden Sie unter [/providers/kilocode](/de/provider - GitHub Copilot: `github-copilot` (`COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN`) - Beispielmodell für Hugging Face Inference: `huggingface/deepseek-ai/DeepSeek-R1`; CLI: `openclaw onboard --auth-choice huggingface-api-key`. Siehe [Hugging Face (Inference)](/de/providers/huggingface). -## Anbieter über `models.providers` (benutzerdefiniert/Basis-URL) +## Anbieter über `models.providers` (benutzerdefinierte/Basis-URL) Verwenden Sie `models.providers` (oder `models.json`), um **benutzerdefinierte** Anbieter oder OpenAI-/Anthropic-kompatible Proxys hinzuzufügen. -Viele der unten aufgeführten gebündelten Anbieter-Plugins veröffentlichen bereits einen Standardkatalog. +Viele der gebündelten Anbieter-Plugins unten veröffentlichen bereits einen Standardkatalog. Verwenden Sie explizite Einträge `models.providers.` nur dann, wenn Sie die -standardmäßige Basis-URL, Header oder Modellliste überschreiben möchten. +Standard-Basis-URL, Header oder Modellliste überschreiben möchten. ### Moonshot AI (Kimi) -Moonshot wird als gebündeltes Anbieter-Plugin ausgeliefert. Verwenden Sie standardmäßig den integrierten Anbieter -und fügen Sie nur dann einen expliziten Eintrag `models.providers.moonshot` hinzu, wenn Sie die Basis-URL oder Modellmetadaten -überschreiben müssen: +Moonshot wird als gebündeltes Anbieter-Plugin ausgeliefert. Verwenden Sie +standardmäßig den integrierten Anbieter und fügen Sie nur dann einen expliziten Eintrag `models.providers.moonshot` hinzu, wenn Sie die Basis-URL oder Modellmetadaten überschreiben müssen: - Anbieter: `moonshot` - Auth: `MOONSHOT_API_KEY` @@ -537,11 +452,11 @@ Kimi Coding verwendet den Anthropic-kompatiblen Endpunkt von Moonshot AI: } ``` -Das Legacy-`kimi/k2p5` bleibt als Kompatibilitäts-Modell-ID akzeptiert. +Legacy-`kimi/k2p5` bleibt als Kompatibilitätsmodell-ID akzeptiert. ### Volcano Engine (Doubao) -Volcano Engine (火山引擎) bietet Zugriff auf Doubao und andere Modelle in China. +Volcano Engine (火山引擎) bietet in China Zugriff auf Doubao und andere Modelle. - Anbieter: `volcengine` (Coding: `volcengine-plan`) - Auth: `VOLCANO_ENGINE_API_KEY` @@ -556,13 +471,9 @@ Volcano Engine (火山引擎) bietet Zugriff auf Doubao und andere Modelle in Ch } ``` -Im Onboarding wird standardmäßig die Coding-Oberfläche verwendet, aber der allgemeine `volcengine/*`- -Katalog wird gleichzeitig registriert. +Onboarding verwendet standardmäßig die Coding-Oberfläche, aber der allgemeine `volcengine/*`-Katalog wird gleichzeitig registriert. -In Modellwählern für Onboarding/Konfiguration bevorzugt die Volcengine-Auth-Auswahl sowohl -Zeilen `volcengine/*` als auch `volcengine-plan/*`. Wenn diese Modelle noch nicht geladen sind, -fällt OpenClaw auf den ungefilterten Katalog zurück, statt einen leeren -anbieterspezifischen Wähler anzuzeigen. +In Onboarding-/Modellauswahllisten für die Modellkonfiguration bevorzugt die Volcengine-Auth-Auswahl sowohl Zeilen mit `volcengine/*` als auch mit `volcengine-plan/*`. Wenn diese Modelle noch nicht geladen sind, fällt OpenClaw auf den ungefilterten Katalog zurück, statt eine leere anbieterbezogene Auswahl anzuzeigen. Verfügbare Modelle: @@ -597,13 +508,9 @@ BytePlus ARK bietet internationalen Nutzern Zugriff auf dieselben Modelle wie Vo } ``` -Im Onboarding wird standardmäßig die Coding-Oberfläche verwendet, aber der allgemeine `byteplus/*`- -Katalog wird gleichzeitig registriert. +Onboarding verwendet standardmäßig die Coding-Oberfläche, aber der allgemeine `byteplus/*`-Katalog wird gleichzeitig registriert. -In Modellwählern für Onboarding/Konfiguration bevorzugt die BytePlus-Auth-Auswahl sowohl -Zeilen `byteplus/*` als auch `byteplus-plan/*`. Wenn diese Modelle noch nicht geladen sind, -fällt OpenClaw auf den ungefilterten Katalog zurück, statt einen leeren -anbieterspezifischen Wähler anzuzeigen. +In Onboarding-/Modellauswahllisten für die Modellkonfiguration bevorzugt die BytePlus-Auth-Auswahl sowohl Zeilen mit `byteplus/*` als auch mit `byteplus-plan/*`. Wenn diese Modelle noch nicht geladen sind, fällt OpenClaw auf den ungefilterten Katalog zurück, statt eine leere anbieterbezogene Auswahl anzuzeigen. Verfügbare Modelle: @@ -653,23 +560,22 @@ MiniMax wird über `models.providers` konfiguriert, da es benutzerdefinierte End - MiniMax OAuth (global): `--auth-choice minimax-global-oauth` - MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth` -- MiniMax API-Schlüssel (global): `--auth-choice minimax-global-api` -- MiniMax API-Schlüssel (CN): `--auth-choice minimax-cn-api` +- MiniMax-API-Schlüssel (global): `--auth-choice minimax-global-api` +- MiniMax-API-Schlüssel (CN): `--auth-choice minimax-cn-api` - Auth: `MINIMAX_API_KEY` für `minimax`; `MINIMAX_OAUTH_TOKEN` oder `MINIMAX_API_KEY` für `minimax-portal` -Einzelheiten zur Einrichtung, zu Modelloptionen und Konfigurations-Snippets finden Sie unter [/providers/minimax](/de/providers/minimax). +Siehe [/providers/minimax](/de/providers/minimax) für Einrichtungsdetails, Modelloptionen und Konfigurationsausschnitte. -Auf dem Anthropic-kompatiblen Streaming-Pfad von MiniMax deaktiviert OpenClaw Thinking -standardmäßig, sofern Sie es nicht explizit festlegen, und `/fast on` schreibt -`MiniMax-M2.7` auf `MiniMax-M2.7-highspeed` um. +Auf dem Anthropic-kompatiblen Streaming-Pfad von MiniMax deaktiviert OpenClaw Thinking standardmäßig, sofern Sie es nicht explizit festlegen, und `/fast on` schreibt +`MiniMax-M2.7` in `MiniMax-M2.7-highspeed` um. -Plugin-eigene Aufteilung der Fähigkeiten: +Aufteilung der plugin-eigenen Fähigkeiten: - Standardwerte für Text/Chat bleiben auf `minimax/MiniMax-M2.7` - Bildgenerierung ist `minimax/image-01` oder `minimax-portal/image-01` -- Bildverständnis ist das plugin-eigene `MiniMax-VL-01` auf beiden MiniMax-Auth-Pfaden -- Websuche bleibt auf der Anbieter-ID `minimax` +- Bildverständnis ist plugin-eigenes `MiniMax-VL-01` auf beiden MiniMax-Auth-Pfaden +- Websuche bleibt auf Anbieter-ID `minimax` ### Ollama @@ -681,7 +587,7 @@ Ollama wird als gebündeltes Anbieter-Plugin ausgeliefert und verwendet die nati - Installation: [https://ollama.com/download](https://ollama.com/download) ```bash -# Installieren Sie Ollama und laden Sie dann ein Modell: +# Install Ollama, then pull a model: ollama pull llama3.3 ``` @@ -693,9 +599,10 @@ ollama pull llama3.3 } ``` -Ollama wird lokal unter `http://127.0.0.1:11434` erkannt, wenn Sie sich mit -`OLLAMA_API_KEY` dafür anmelden, und das gebündelte Anbieter-Plugin fügt Ollama direkt zu -`openclaw onboard` und dem Modellwähler hinzu. Informationen zu Onboarding, Cloud-/Lokalmodus und benutzerdefinierter Konfiguration finden Sie unter [/providers/ollama](/de/providers/ollama). +Ollama wird lokal unter `http://127.0.0.1:11434` erkannt, wenn Sie mit +`OLLAMA_API_KEY` optieren, und das gebündelte Anbieter-Plugin fügt Ollama direkt zu +`openclaw onboard` und der Modellauswahl hinzu. Siehe [/providers/ollama](/de/providers/ollama) +für Onboarding, Cloud-/lokalen Modus und benutzerdefinierte Konfiguration. ### vLLM @@ -706,7 +613,7 @@ Server ausgeliefert: - Auth: Optional (abhängig von Ihrem Server) - Standard-Basis-URL: `http://127.0.0.1:8000/v1` -So aktivieren Sie die automatische lokale Erkennung (jeder Wert funktioniert, wenn Ihr Server keine Auth erzwingt): +So aktivieren Sie lokale Auto-Erkennung (jeder Wert funktioniert, wenn Ihr Server keine Auth erzwingt): ```bash export VLLM_API_KEY="vllm-local" @@ -722,7 +629,7 @@ Legen Sie dann ein Modell fest (ersetzen Sie es durch eine der IDs, die von `/v1 } ``` -Einzelheiten finden Sie unter [/providers/vllm](/de/providers/vllm). +Siehe [/providers/vllm](/de/providers/vllm) für Details. ### SGLang @@ -733,8 +640,7 @@ OpenAI-kompatible Server ausgeliefert: - Auth: Optional (abhängig von Ihrem Server) - Standard-Basis-URL: `http://127.0.0.1:30000/v1` -So aktivieren Sie die automatische lokale Erkennung (jeder Wert funktioniert, wenn Ihr Server keine -Auth erzwingt): +So aktivieren Sie lokale Auto-Erkennung (jeder Wert funktioniert, wenn Ihr Server keine Auth erzwingt): ```bash export SGLANG_API_KEY="sglang-local" @@ -750,7 +656,7 @@ Legen Sie dann ein Modell fest (ersetzen Sie es durch eine der IDs, die von `/v1 } ``` -Einzelheiten finden Sie unter [/providers/sglang](/de/providers/sglang). +Siehe [/providers/sglang](/de/providers/sglang) für Details. ### Lokale Proxys (LM Studio, vLLM, LiteLLM usw.) @@ -798,12 +704,9 @@ Hinweise: - `maxTokens: 8192` - Empfohlen: Legen Sie explizite Werte fest, die zu den Grenzen Ihres Proxys/Modells passen. - Für `api: "openai-completions"` auf nicht nativen Endpunkten (jede nicht leere `baseUrl`, deren Host nicht `api.openai.com` ist), erzwingt OpenClaw `compat.supportsDeveloperRole: false`, um Provider-400-Fehler für nicht unterstützte `developer`-Rollen zu vermeiden. -- Proxyartige OpenAI-kompatible Routen überspringen außerdem native, nur für OpenAI bestimmte Anfrage- - Anpassung: kein `service_tier`, kein Responses-`store`, keine Prompt-Cache-Hinweise, keine - OpenAI-Reasoning-kompatible Payload-Anpassung und keine versteckten OpenClaw-Attributions- - Header. -- Wenn `baseUrl` leer ist oder weggelassen wird, behält OpenClaw das Standardverhalten von OpenAI bei (das zu `api.openai.com` aufgelöst wird). -- Aus Sicherheitsgründen wird ein explizites `compat.supportsDeveloperRole: true` auf nicht nativen `openai-completions`-Endpunkten dennoch überschrieben. +- Proxyartige OpenAI-kompatible Routen überspringen ebenfalls natives nur-OpenAI-Request-Shaping: kein `service_tier`, kein Responses-`store`, keine Prompt-Cache-Hinweise, kein OpenAI-Reasoning-Kompatibilitäts-Payload-Shaping und keine versteckten OpenClaw-Zuordnungsheader. +- Wenn `baseUrl` leer ist oder fehlt, behält OpenClaw das Standard-OpenAI-Verhalten bei (das zu `api.openai.com` aufgelöst wird). +- Aus Sicherheitsgründen wird ein explizites `compat.supportsDeveloperRole: true` auf nicht nativen `openai-completions`-Endpunkten weiterhin überschrieben. ## CLI-Beispiele @@ -817,7 +720,7 @@ Siehe auch: [/gateway/configuration](/de/gateway/configuration) für vollständi ## Verwandt -- [Models](/de/concepts/models) — Modellkonfiguration und Aliase +- [Models](/de/concepts/models) — Modellkonfiguration und Aliasse - [Model Failover](/de/concepts/model-failover) — Fallback-Ketten und Wiederholungsverhalten -- [Configuration Reference](/de/gateway/configuration-reference#agent-defaults) — Konfigurationsschlüssel für Modelle +- [Configuration Reference](/de/gateway/configuration-reference#agent-defaults) — Modellkonfigurationsschlüssel - [Providers](/de/providers) — Einrichtungsanleitungen pro Anbieter diff --git a/docs/de/concepts/qa-e2e-automation.md b/docs/de/concepts/qa-e2e-automation.md index 94f6c69d8..e81ead5a6 100644 --- a/docs/de/concepts/qa-e2e-automation.md +++ b/docs/de/concepts/qa-e2e-automation.md @@ -2,29 +2,29 @@ read_when: - Erweitern von qa-lab oder qa-channel - Hinzufügen repo-gestützter QA-Szenarien - - Aufbauen realitätsnäherer QA-Automatisierung rund um das Gateway-Dashboard -summary: Private QA-Automatisierungsstruktur für qa-lab, qa-channel, Seed-Szenarien und Protokollberichte -title: QA-E2E-Automatisierung + - Erstellen realitätsnäherer QA-Automatisierung rund um das Gateway-Dashboard +summary: Private QA-Automatisierungsform für qa-lab, qa-channel, Seed-Szenarien und Protokollberichte +title: QA E2E-Automatisierung x-i18n: - generated_at: "2026-04-08T02:13:58Z" + generated_at: "2026-04-08T06:00:59Z" model: gpt-5.4 provider: openai - source_hash: 3b4aa5acc8e77303f4045d4f04372494cae21b89d2fdaba856dbb4855ced9d27 + source_hash: 57da147dc06abf9620290104e01a83b42182db1806514114fd9e8467492cda99 source_path: concepts/qa-e2e-automation.md workflow: 15 --- -# QA-E2E-Automatisierung +# QA E2E-Automatisierung -Der private QA-Stack soll OpenClaw auf eine realistischere, -kanalartige Weise testen, als es ein einzelner Unit-Test leisten kann. +Der private QA-Stack soll OpenClaw auf realistischere, kanalähnliche Weise +testen, als es ein einzelner Unit-Test kann. Aktuelle Bestandteile: -- `extensions/qa-channel`: synthetischer Nachrichtenkanal mit Oberflächen für DM, Kanal, Thread, - Reaktion, Bearbeiten und Löschen. +- `extensions/qa-channel`: synthetischer Nachrichtenkanal mit Oberflächen für DMs, Kanäle, Threads, + Reaktionen, Bearbeitungen und Löschungen. - `extensions/qa-lab`: Debugger-UI und QA-Bus zum Beobachten des Transkripts, - Einspeisen eingehender Nachrichten und Exportieren eines Markdown-Berichts. + Einspielen eingehender Nachrichten und Exportieren eines Markdown-Berichts. - `qa/`: repo-gestützte Seed-Assets für die Startaufgabe und grundlegende QA- Szenarien. @@ -33,19 +33,19 @@ Der aktuelle QA-Operator-Workflow ist eine QA-Site mit zwei Bereichen: - Links: Gateway-Dashboard (Control UI) mit dem Agenten. - Rechts: QA Lab, das das Slack-ähnliche Transkript und den Szenarioplan anzeigt. -Ausführen mit: +Führe es aus mit: ```bash pnpm qa:lab:up ``` -Dadurch wird die QA-Site gebaut, die Docker-gestützte Gateway-Lane gestartet und die +Dadurch wird die QA-Site gebaut, der Docker-gestützte Gateway-Lane gestartet und die QA-Lab-Seite bereitgestellt, auf der ein Operator oder eine Automatisierungsschleife dem Agenten eine QA- -Mission geben, echtes Kanalverhalten beobachten und festhalten kann, was funktioniert hat, fehlgeschlagen ist oder +Mission geben, echtes Kanalverhalten beobachten und aufzeichnen kann, was funktioniert hat, fehlgeschlagen ist oder blockiert geblieben ist. -Für schnellere Iteration an der QA-Lab-UI, ohne das Docker-Image jedes Mal neu zu bauen, -starten Sie den Stack mit einem per Bind-Mount eingebundenen QA-Lab-Bundle: +Für schnellere Iterationen an der QA-Lab-UI, ohne das Docker-Image jedes Mal neu zu bauen, +starte den Stack mit einem per Bind-Mount eingebundenen QA-Lab-Bundle: ```bash pnpm openclaw qa docker-build-image @@ -54,41 +54,41 @@ pnpm qa:lab:up:fast pnpm qa:lab:watch ``` -`qa:lab:up:fast` hält die Docker-Dienste auf einem vorgebauten Image und bind-mountet -`extensions/qa-lab/web/dist` in den `qa-lab`-Container ein. `qa:lab:watch` -baut dieses Bundle bei Änderungen neu, und der Browser lädt automatisch neu, wenn sich der QA-Lab- -Asset-Hash ändert. +`qa:lab:up:fast` hält die Docker-Services auf einem vorab gebauten Image und bind-mountet +`extensions/qa-lab/web/dist` in den Container `qa-lab`. `qa:lab:watch` +baut dieses Bundle bei Änderungen neu, und der Browser lädt automatisch neu, wenn sich der Asset-Hash von QA Lab ändert. ## Repo-gestützte Seeds -Seed-Assets befinden sich in `qa/`: +Seed-Assets liegen in `qa/`: -- `qa/scenarios.md` +- `qa/scenarios/index.md` +- `qa/scenarios/*.md` -Diese sind absichtlich in Git enthalten, damit der QA-Plan sowohl für Menschen als auch für den +Diese liegen absichtlich in git, damit der QA-Plan sowohl für Menschen als auch für den Agenten sichtbar ist. Die grundlegende Liste sollte breit genug bleiben, um Folgendes abzudecken: - DM- und Kanal-Chat - Thread-Verhalten - Lebenszyklus von Nachrichtenaktionen - Cron-Callbacks -- Memory-Abruf +- Memory Recall - Modellwechsel - Übergabe an Subagenten -- Lesen des Repos und der Dokumentation +- Lesen des Repos und Lesen der Dokumentation - eine kleine Build-Aufgabe wie Lobster Invaders ## Berichterstellung `qa-lab` exportiert einen Markdown-Protokollbericht aus der beobachteten Bus-Zeitleiste. -Der Bericht sollte beantworten: +Der Bericht sollte Folgendes beantworten: - Was funktioniert hat - Was fehlgeschlagen ist - Was blockiert geblieben ist -- Welche Folge-Szenarien sich hinzuzufügen lohnen +- Welche Folgeszenarien sich hinzuzufügen lohnen -## Zugehörige Dokumentation +## Verwandte Dokumentation - [Testing](/de/help/testing) - [QA Channel](/de/channels/qa-channel) diff --git a/docs/de/concepts/streaming.md b/docs/de/concepts/streaming.md index 55b7094d3..05755e624 100644 --- a/docs/de/concepts/streaming.md +++ b/docs/de/concepts/streaming.md @@ -1,31 +1,31 @@ --- read_when: - - Erklären, wie Streaming oder Chunking in Channels funktioniert - - Verhalten von Block-Streaming oder Channel-Chunking ändern - - Doppelte/frühe Block-Antworten oder Channel-Vorschau-Streaming debuggen -summary: Verhalten von Streaming + Chunking (Block-Antworten, Channel-Vorschau-Streaming, Moduszuordnung) + - Erklärung, wie Streaming oder Chunking auf Kanälen funktioniert + - Ändern des Block-Streamings oder des Kanal-Chunking-Verhaltens + - Debuggen von doppelten/frühen Blockantworten oder Kanal-Vorschau-Streaming +summary: Verhalten von Streaming + Chunking (Blockantworten, Kanal-Vorschau-Streaming, Moduszuordnung) title: Streaming und Chunking x-i18n: - generated_at: "2026-04-05T12:41:23Z" + generated_at: "2026-04-08T06:01:12Z" model: gpt-5.4 provider: openai - source_hash: 44b0d08c7eafcb32030ef7c8d5719c2ea2d34e4bac5fdad8cc8b3f4e9e9fad97 + source_hash: a8e847bb7da890818cd79dec7777f6ae488e6d6c0468e948e56b6b6c598e0000 source_path: concepts/streaming.md workflow: 15 --- # Streaming + Chunking -OpenClaw hat zwei separate Streaming-Ebenen: +OpenClaw hat zwei getrennte Streaming-Ebenen: -- **Block-Streaming (Channels):** abgeschlossene **Blöcke** ausgeben, während der Assistant schreibt. Das sind normale Channel-Nachrichten (keine Token-Deltas). -- **Vorschau-Streaming (Telegram/Discord/Slack):** eine temporäre **Vorschau-Nachricht** während der Generierung aktualisieren. +- **Block-Streaming (Kanäle):** sendet abgeschlossene **Blöcke**, während der Assistent schreibt. Das sind normale Kanalnachrichten (keine Token-Deltas). +- **Vorschau-Streaming (Telegram/Discord/Slack):** aktualisiert während der Generierung eine temporäre **Vorschau-Nachricht**. -Es gibt heute **kein echtes Token-Delta-Streaming** zu Channel-Nachrichten. Vorschau-Streaming ist nachrichtenbasiert (Senden + Bearbeitungen/Anhängen). +Es gibt heute **kein echtes Token-Delta-Streaming** für Kanalnachrichten. Vorschau-Streaming ist nachrichtenbasiert (Senden + Bearbeitungen/Anhänge). -## Block-Streaming (Channel-Nachrichten) +## Block-Streaming (Kanalnachrichten) -Block-Streaming sendet Assistant-Ausgaben in groben Chunks, sobald sie verfügbar werden. +Block-Streaming sendet Assistent-Ausgaben in groben Chunks, sobald sie verfügbar werden. ``` Model output @@ -39,80 +39,80 @@ Model output Legende: -- `text_delta/events`: Modell-Stream-Ereignisse (können bei nicht streamenden Modellen spärlich sein). -- `chunker`: `EmbeddedBlockChunker`, der Min-/Max-Grenzen + Umbruchpräferenz anwendet. -- `channel send`: tatsächliche ausgehende Nachrichten (Block-Antworten). +- `text_delta/events`: Stream-Ereignisse des Modells (bei nicht-streamenden Modellen möglicherweise spärlich). +- `chunker`: `EmbeddedBlockChunker`, der Mindest-/Höchstgrenzen + Trennpräferenz anwendet. +- `channel send`: tatsächliche ausgehende Nachrichten (Blockantworten). **Steuerungen:** -- `agents.defaults.blockStreamingDefault`: `"on"`/`"off"` (Standard: aus). -- Channel-Überschreibungen: `*.blockStreaming` (und Varianten pro Konto), um pro Channel `"on"`/`"off"` zu erzwingen. +- `agents.defaults.blockStreamingDefault`: `"on"`/`"off"` (standardmäßig aus). +- Kanalüberschreibungen: `*.blockStreaming` (und Varianten pro Konto), um `"on"`/`"off"` pro Kanal zu erzwingen. - `agents.defaults.blockStreamingBreak`: `"text_end"` oder `"message_end"`. - `agents.defaults.blockStreamingChunk`: `{ minChars, maxChars, breakPreference? }`. -- `agents.defaults.blockStreamingCoalesce`: `{ minChars?, maxChars?, idleMs? }` (gestreamte Blöcke vor dem Senden zusammenführen). -- Harte Channel-Grenze: `*.textChunkLimit` (z. B. `channels.whatsapp.textChunkLimit`). -- Channel-Chunk-Modus: `*.chunkMode` (`length` standardmäßig, `newline` trennt an Leerzeilen (Absatzgrenzen) vor dem Chunking nach Länge). -- Discord-Soft-Grenze: `channels.discord.maxLinesPerMessage` (Standard 17) teilt hohe Antworten, um UI-Abschneiden zu vermeiden. +- `agents.defaults.blockStreamingCoalesce`: `{ minChars?, maxChars?, idleMs? }` (zusammengeführte gestreamte Blöcke vor dem Senden). +- Feste Kanalobergrenze: `*.textChunkLimit` (z. B. `channels.whatsapp.textChunkLimit`). +- Kanal-Chunk-Modus: `*.chunkMode` (`length` standardmäßig, `newline` teilt an Leerzeilen (Absatzgrenzen), bevor nach Länge gechunked wird). +- Discord-Softlimit: `channels.discord.maxLinesPerMessage` (standardmäßig 17) teilt hohe Antworten, um UI-Abschneiden zu vermeiden. -**Semantik der Grenzen:** +**Grenzsemantik:** - `text_end`: Blöcke streamen, sobald der Chunker sie ausgibt; bei jedem `text_end` flushen. -- `message_end`: warten, bis die Assistant-Nachricht abgeschlossen ist, dann gepufferte Ausgabe flushen. +- `message_end`: warten, bis die Assistent-Nachricht fertig ist, dann gepufferte Ausgabe flushen. `message_end` verwendet weiterhin den Chunker, wenn der gepufferte Text `maxChars` überschreitet, sodass am Ende mehrere Chunks ausgegeben werden können. ## Chunking-Algorithmus (untere/obere Grenzen) -Block-Chunking wird durch `EmbeddedBlockChunker` implementiert: +Block-Chunking wird von `EmbeddedBlockChunker` implementiert: - **Untere Grenze:** nichts ausgeben, bis der Puffer >= `minChars` ist (außer wenn erzwungen). - **Obere Grenze:** Trennungen vor `maxChars` bevorzugen; wenn erzwungen, bei `maxChars` trennen. -- **Umbruchpräferenz:** `paragraph` → `newline` → `sentence` → `whitespace` → harter Umbruch. +- **Trennpräferenz:** `paragraph` → `newline` → `sentence` → `whitespace` → harter Umbruch. - **Code-Fences:** niemals innerhalb von Fences trennen; wenn bei `maxChars` erzwungen, die Fence schließen + erneut öffnen, damit Markdown gültig bleibt. -`maxChars` wird auf das Channel-`textChunkLimit` begrenzt, sodass per-Channel-Grenzen nicht überschritten werden können. +`maxChars` wird auf das kanalbezogene `textChunkLimit` begrenzt, sodass per-Kanal-Limits nicht überschritten werden können. -## Zusammenführen (gestreamte Blöcke zusammenführen) +## Coalescing (gestreamte Blöcke zusammenführen) Wenn Block-Streaming aktiviert ist, kann OpenClaw **aufeinanderfolgende Block-Chunks zusammenführen**, -bevor sie gesendet werden. Das reduziert „Einzeilen-Spam“, liefert aber weiterhin -schrittweise Ausgabe. +bevor sie gesendet werden. Das reduziert „Einzelzeilen-Spam“ und liefert trotzdem +eine schrittweise Ausgabe. -- Das Zusammenführen wartet vor dem Flush auf **Leerlaufabstände** (`idleMs`). +- Coalescing wartet vor dem Flushen auf **Leerlauf-Lücken** (`idleMs`). - Puffer sind durch `maxChars` begrenzt und werden geflusht, wenn sie diesen Wert überschreiten. -- `minChars` verhindert, dass winzige Fragmente gesendet werden, bevor genug Text zusammengekommen ist - (der finale Flush sendet immer verbleibenden Text). -- Das Verbindungszeichen wird aus `blockStreamingChunk.breakPreference` +- `minChars` verhindert, dass winzige Fragmente gesendet werden, bevor genug Text zusammenkommt + (der abschließende Flush sendet immer den restlichen Text). +- Der Verknüpfer wird aus `blockStreamingChunk.breakPreference` abgeleitet (`paragraph` → `\n\n`, `newline` → `\n`, `sentence` → Leerzeichen). -- Channel-Überschreibungen sind über `*.blockStreamingCoalesce` verfügbar (einschließlich Konfigurationen pro Konto). -- Der Standardwert für `minChars` beim Zusammenführen wird für Signal/Slack/Discord auf 1500 erhöht, sofern nicht überschrieben. +- Kanalüberschreibungen sind über `*.blockStreamingCoalesce` verfügbar (einschließlich Konfigurationen pro Konto). +- Das standardmäßige Coalesce-`minChars` wird für Signal/Slack/Discord auf 1500 erhöht, sofern nicht überschrieben. -## Menschlich wirkendes Tempo zwischen Blöcken +## Menschlich wirkendes Timing zwischen Blöcken Wenn Block-Streaming aktiviert ist, können Sie eine **zufällige Pause** zwischen -Block-Antworten hinzufügen (nach dem ersten Block). Dadurch wirken Antworten mit mehreren -Sprechblasen natürlicher. +Blockantworten hinzufügen (nach dem ersten Block). Dadurch wirken Antworten mit +mehreren Blasen natürlicher. - Konfiguration: `agents.defaults.humanDelay` (Überschreibung pro Agent über `agents.list[].humanDelay`). -- Modi: `off` (Standard), `natural` (800–2500 ms), `custom` (`minMs`/`maxMs`). -- Gilt nur für **Block-Antworten**, nicht für finale Antworten oder Tool-Zusammenfassungen. +- Modi: `off` (Standard), `natural` (800–2500ms), `custom` (`minMs`/`maxMs`). +- Gilt nur für **Blockantworten**, nicht für endgültige Antworten oder Tool-Zusammenfassungen. -## „Chunks streamen oder alles“ +## "Chunks streamen oder alles" -Dies entspricht: +Dies wird wie folgt zugeordnet: -- **Chunks streamen:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (währenddessen ausgeben). Nicht-Telegram-Channels benötigen außerdem `*.blockStreaming: true`. -- **Alles am Ende streamen:** `blockStreamingBreak: "message_end"` (einmal flushen, bei sehr langer Ausgabe eventuell mehrere Chunks). -- **Kein Block-Streaming:** `blockStreamingDefault: "off"` (nur finale Antwort). +- **Chunks streamen:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (während der Ausgabe senden). Nicht-Telegram-Kanäle benötigen zusätzlich `*.blockStreaming: true`. +- **Alles am Ende streamen:** `blockStreamingBreak: "message_end"` (einmal flushen, möglicherweise mehrere Chunks, wenn sehr lang). +- **Kein Block-Streaming:** `blockStreamingDefault: "off"` (nur endgültige Antwort). -**Channel-Hinweis:** Block-Streaming ist **deaktiviert, sofern** -`*.blockStreaming` nicht explizit auf `true` gesetzt ist. Channels können eine Live-Vorschau streamen -(`channels..streaming`) ohne Block-Antworten. +**Hinweis zu Kanälen:** Block-Streaming ist **deaktiviert, solange nicht** +`*.blockStreaming` explizit auf `true` gesetzt ist. Kanäle können eine Live-Vorschau +(`channels..streaming`) streamen, ohne Blockantworten zu senden. -Hinweis zum Konfigurationsort: Die Standardwerte `blockStreaming*` liegen unter +Zur Erinnerung zum Konfigurationsort: Die `blockStreaming*`-Standards befinden sich unter `agents.defaults`, nicht in der Root-Konfiguration. -## Modi für Vorschau-Streaming +## Vorschau-Streaming-Modi Kanonischer Schlüssel: `channels..streaming` @@ -121,48 +121,49 @@ Modi: - `off`: Vorschau-Streaming deaktivieren. - `partial`: einzelne Vorschau, die durch den neuesten Text ersetzt wird. - `block`: Vorschau-Aktualisierungen in gechunkten/angehängten Schritten. -- `progress`: Fortschritts-/Statusvorschau während der Generierung, finale Antwort nach Abschluss. +- `progress`: Fortschritts-/Statusvorschau während der Generierung, endgültige Antwort nach Abschluss. -### Channel-Zuordnung +### Kanalzuordnung -| Channel | `off` | `partial` | `block` | `progress` | +| Kanal | `off` | `partial` | `block` | `progress` | | -------- | ----- | --------- | ------- | ----------------- | -| Telegram | ✅ | ✅ | ✅ | wird zu `partial` zugeordnet | -| Discord | ✅ | ✅ | ✅ | wird zu `partial` zugeordnet | +| Telegram | ✅ | ✅ | ✅ | wird `partial` zugeordnet | +| Discord | ✅ | ✅ | ✅ | wird `partial` zugeordnet | | Slack | ✅ | ✅ | ✅ | ✅ | Nur Slack: -- `channels.slack.nativeStreaming` schaltet native Slack-Streaming-API-Aufrufe um, wenn `streaming=partial` gesetzt ist (Standard: `true`). +- `channels.slack.streaming.nativeTransport` schaltet Slack-native Streaming-API-Aufrufe um, wenn `channels.slack.streaming.mode="partial"` (Standard: `true`). +- Slack-natives Streaming und der Slack-Assistent-Thread-Status erfordern ein Antwort-Thread-Ziel; DMs auf oberster Ebene zeigen diese Thread-Vorschau nicht an. Migration von Legacy-Schlüsseln: -- Telegram: `streamMode` + boolesches `streaming` werden automatisch auf das Enum `streaming` migriert. -- Discord: `streamMode` + boolesches `streaming` werden automatisch auf das Enum `streaming` migriert. -- Slack: `streamMode` wird automatisch auf das Enum `streaming` migriert; boolesches `streaming` wird automatisch auf `nativeStreaming` migriert. +- Telegram: `streamMode` + boolesches `streaming` werden automatisch zur `streaming`-Enum migriert. +- Discord: `streamMode` + boolesches `streaming` werden automatisch zur `streaming`-Enum migriert. +- Slack: `streamMode` wird automatisch zu `streaming.mode` migriert; boolesches `streaming` wird automatisch zu `streaming.mode` plus `streaming.nativeTransport` migriert; Legacy-`nativeStreaming` wird automatisch zu `streaming.nativeTransport` migriert. ### Laufzeitverhalten Telegram: -- Verwendet `sendMessage` + `editMessageText` für Vorschau-Aktualisierungen in DMs und Gruppen/Themen. +- Verwendet `sendMessage` + `editMessageText` für Vorschau-Aktualisierungen in DMs sowie Gruppen/Themen. - Vorschau-Streaming wird übersprungen, wenn Telegram-Block-Streaming explizit aktiviert ist (um doppeltes Streaming zu vermeiden). -- `/reasoning stream` kann Begründungen in die Vorschau schreiben. +- `/reasoning stream` kann Reasoning in die Vorschau schreiben. Discord: -- Verwendet Senden + Bearbeiten von Vorschau-Nachrichten. -- Der Modus `block` verwendet Entwurfs-Chunking (`draftChunk`). +- Verwendet Vorschau-Nachrichten mit Senden + Bearbeiten. +- Der Modus `block` verwendet Draft-Chunking (`draftChunk`). - Vorschau-Streaming wird übersprungen, wenn Discord-Block-Streaming explizit aktiviert ist. Slack: -- `partial` kann natives Slack-Streaming (`chat.startStream`/`append`/`stop`) verwenden, wenn verfügbar. -- `block` verwendet Entwurfsvorschauen im Append-Stil. -- `progress` verwendet Statusvorschautext und danach die finale Antwort. +- `partial` kann Slack-natives Streaming (`chat.startStream`/`append`/`stop`) verwenden, wenn verfügbar. +- `block` verwendet Vorschauen im Anhänge-Stil für Entwürfe. +- `progress` verwendet Statusvorschautext und danach die endgültige Antwort. ## Verwandt -- [Messages](/concepts/messages) — Nachrichten-Lifecycle und Zustellung -- [Retry](/concepts/retry) — Retry-Verhalten bei Zustellfehlern -- [Channels](/channels) — Streaming-Unterstützung pro Channel +- [Nachrichten](/de/concepts/messages) — Nachrichtenlebenszyklus und Zustellung +- [Wiederholung](/de/concepts/retry) — Wiederholungsverhalten bei Zustellungsfehlern +- [Kanäle](/de/channels) — Streaming-Unterstützung pro Kanal diff --git a/docs/de/gateway/configuration-reference.md b/docs/de/gateway/configuration-reference.md index 0e6291303..1b7de8d0f 100644 --- a/docs/de/gateway/configuration-reference.md +++ b/docs/de/gateway/configuration-reference.md @@ -1,56 +1,70 @@ --- read_when: - - Sie benötigen die genaue Semantik oder Standardwerte einzelner Konfigurationsfelder + - Sie benötigen genaue feldspezifische Konfigurationssemantik oder Standardwerte - Sie validieren Kanal-, Modell-, Gateway- oder Tool-Konfigurationsblöcke -summary: Vollständige Referenz für jeden OpenClaw-Konfigurationsschlüssel, Standardwerte und Kanaleinstellungen +summary: Gateway-Konfigurationsreferenz für zentrale OpenClaw-Schlüssel, Standardwerte und Links zu dedizierten Subsystem-Referenzen title: Konfigurationsreferenz x-i18n: - generated_at: "2026-04-08T02:19:39Z" + generated_at: "2026-04-08T06:06:53Z" model: gpt-5.4 provider: openai - source_hash: 2c7991b948cbbb7954a3e26280089ab00088e7f4878ec0b0540c3c9acf222ebb + source_hash: 2f9ab34fb56897a77cb038d95bea21e8530d8f0402b66d1ee97c73822a1e8fd4 source_path: gateway/configuration-reference.md workflow: 15 --- # Konfigurationsreferenz -Jedes verfügbare Feld in `~/.openclaw/openclaw.json`. Eine aufgabenorientierte Übersicht finden Sie unter [Configuration](/de/gateway/configuration). +Referenz der Kernkonfiguration für `~/.openclaw/openclaw.json`. Eine aufgabenorientierte Übersicht finden Sie unter [Konfiguration](/de/gateway/configuration). -Das Konfigurationsformat ist **JSON5** (Kommentare + nachgestellte Kommas erlaubt). Alle Felder sind optional — OpenClaw verwendet sichere Standardwerte, wenn sie weggelassen werden. +Diese Seite behandelt die wichtigsten OpenClaw-Konfigurationsflächen und verweist weiter, wenn ein Subsystem eine eigene ausführlichere Referenz hat. Sie versucht **nicht**, jeden kanal-/plugin-eigenen Befehlskatalog oder jeden tiefen Speicher-/QMD-Schalter auf einer Seite einzubetten. + +Code-Wahrheit: + +- `openclaw config schema` gibt das Live-JSON-Schema aus, das für Validierung und Control UI verwendet wird, mit zusammengeführten gebündelten/plugin-/kanalbezogenen Metadaten, sofern verfügbar +- `config.schema.lookup` gibt einen pfadbezogenen einzelnen Schemaknoten für Drill-down-Tools zurück +- `pnpm config:docs:check` / `pnpm config:docs:gen` validieren den Hash der Konfigurationsdokumentations-Basislinie gegen die aktuelle Schemaoberfläche + +Dedizierte Detailreferenzen: + +- [Speicherkonfigurationsreferenz](/de/reference/memory-config) für `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` und Dreaming-Konfiguration unter `plugins.entries.memory-core.config.dreaming` +- [Slash-Befehle](/de/tools/slash-commands) für den aktuellen integrierten + gebündelten Befehlskatalog +- seiten der zuständigen Kanäle/plugins für kanalspezifische Befehlsflächen + +Das Konfigurationsformat ist **JSON5** (Kommentare + abschließende Kommas erlaubt). Alle Felder sind optional — OpenClaw verwendet sichere Standardwerte, wenn sie weggelassen werden. --- ## Kanäle -Jeder Kanal startet automatisch, wenn 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 ihn genehmigen | -| `allowlist` | Nur Absender in `allowFrom` (oder gepairtem Allow-Store) | -| `open` | Alle eingehenden DMs zulassen (erfordert `allowFrom: ["*"]`) | -| `disabled` | Alle eingehenden DMs ignorieren | +| DM-Richtlinie | Verhalten | +| ------------------ | -------------------------------------------------------------- | +| `pairing` (Standard) | Unbekannte Sender erhalten einen einmaligen Pairing-Code; Eigentümer muss genehmigen | +| `allowlist` | Nur Sender in `allowFrom` (oder gekoppeltem Erlaubnisspeicher) | +| `open` | Alle eingehenden DMs erlauben (erfordert `allowFrom: ["*"]`) | +| `disabled` | Alle eingehenden DMs ignorieren | -| Gruppenrichtlinie | Verhalten | -| --------------------- | ----------------------------------------------------- | -| `allowlist` (Standard) | Nur Gruppen zulassen, die der konfigurierten Allowlist entsprechen | -| `open` | Gruppen-Allowlists umgehen (Erwähnungsanforderung gilt weiterhin) | -| `disabled` | Alle Gruppen-/Raumnachrichten blockieren | +| Gruppenrichtlinie | Verhalten | +| -------------------- | ---------------------------------------------------- | +| `allowlist` (Standard) | Nur Gruppen, die der konfigurierten Erlaubnisliste entsprechen | +| `open` | Gruppen-Erlaubnislisten umgehen (Mention-Gating gilt weiterhin) | +| `disabled` | Alle Gruppen-/Raumnachrichten blockieren | -`channels.defaults.groupPolicy` legt den Standard fest, wenn die `groupPolicy` eines Anbieters nicht gesetzt ist. +`channels.defaults.groupPolicy` setzt den Standard, wenn die `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.` nicht vorhanden), fällt die Gruppenrichtlinie zur Laufzeit auf `allowlist` zurück (fail-closed) und gibt beim Start eine Warnung aus. -### Kanal-Modellüberschreibungen +### 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 wird angewendet, wenn eine Sitzung noch keine Modellüberschreibung hat (zum Beispiel über `/model` gesetzt). +Verwenden Sie `channels.modelByChannel`, um bestimmte Kanal-IDs an ein Modell zu binden. Werte akzeptieren `provider/model` oder konfigurierte Modell-Aliasse. Das Kanal-Mapping wird angewendet, wenn eine Sitzung nicht bereits eine Modell-Überschreibung hat (zum Beispiel gesetzt über `/model`). ```json5 { @@ -71,9 +85,9 @@ Verwenden Sie `channels.modelByChannel`, um bestimmte Kanal-IDs an ein Modell zu } ``` -### Kanalstandards und Heartbeat +### Kanal-Standardeinstellungen und Heartbeat -Verwenden Sie `channels.defaults` für gemeinsames Verhalten bei Gruppenrichtlinien und Heartbeat über Anbieter hinweg: +Verwenden Sie `channels.defaults` für gemeinsames Gruppenrichtlinien- und Heartbeat-Verhalten über Provider hinweg: ```json5 { @@ -91,15 +105,15 @@ Verwenden Sie `channels.defaults` für gemeinsames Verhalten bei Gruppenrichtlin } ``` -- `channels.defaults.groupPolicy`: Fallback-Gruppenrichtlinie, wenn eine anbieterbezogene `groupPolicy` nicht gesetzt ist. -- `channels.defaults.contextVisibility`: Standardmodus für die Sichtbarkeit ergänzenden Kontexts für alle Kanäle. Werte: `all` (Standard, allen zitierten/Thread-/Verlaufs-Kontext einschließen), `allowlist` (nur Kontext von Absendern auf der Allowlist einschließen), `allowlist_quote` (wie allowlist, aber expliziten Zitat-/Antwort-Kontext beibehalten). Kanalbezogene Überschreibung: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: gesunde Kanalstatus in die Heartbeat-Ausgabe einschließen. -- `channels.defaults.heartbeat.showAlerts`: degradierte/Fehlerstatus in die Heartbeat-Ausgabe einschließen. -- `channels.defaults.heartbeat.useIndicator`: kompakte Heartbeat-Ausgabe im Indikatorstil rendern. +- `channels.defaults.groupPolicy`: Fallback-Gruppenrichtlinie, wenn eine providerbezogene `groupPolicy` nicht gesetzt ist. +- `channels.defaults.contextVisibility`: Standardmodus für die Sichtbarkeit ergänzenden Kontexts für alle Kanäle. Werte: `all` (Standard, schließt allen zitierten/Thread-/Verlaufs-Kontext ein), `allowlist` (schließt nur Kontext von Sendern aus der Erlaubnisliste ein), `allowlist_quote` (wie allowlist, behält aber expliziten Zitat-/Antwort-Kontext bei). Kanalbezogene Überschreibung: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: gesunde Kanalstatus in der Heartbeat-Ausgabe einschließen. +- `channels.defaults.heartbeat.showAlerts`: degradierte/Fehler-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 Gateway (Baileys Web). Es 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 vorhanden ist. ```json5 { @@ -110,7 +124,7 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa textChunkLimit: 4000, chunkMode: "length", // length | newline mediaMaxMb: 50, - sendReadReceipts: true, // blaue Häkchen (false im Self-Chat-Modus) + sendReadReceipts: true, // blaue Häkchen (false im Selbstchat-Modus) groups: { "*": { requireMention: true }, }, @@ -132,7 +146,7 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa } ``` - + ```json5 { @@ -151,9 +165,9 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa ``` - 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 es einer konfigurierten Konto-ID entspricht. -- Das ältere Baileys-Authentifizierungsverzeichnis für Einzelkonten wird von `openclaw doctor` nach `whatsapp/default` migriert. -- Kontoabhängige Überschreibungen: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Optional überschreibt `channels.whatsapp.defaultAccount` diese Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Das alte Single-Account-Baileys-Authentifizierungsverzeichnis wird von `openclaw doctor` nach `whatsapp/default` migriert. +- Pro-Konto-Überschreibungen: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -171,24 +185,24 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa "*": { requireMention: true }, "-1001234567890": { allowFrom: ["@admin"], - systemPrompt: "Keep answers brief.", + systemPrompt: "Antworten kurz halten.", topics: { "99": { requireMention: false, skills: ["search"], - systemPrompt: "Stay on topic.", + systemPrompt: "Beim Thema bleiben.", }, }, }, }, customCommands: [ - { command: "backup", description: "Git backup" }, - { command: "generate", description: "Create an image" }, + { command: "backup", description: "Git-Backup" }, + { command: "generate", description: "Ein Bild erstellen" }, ], historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, - streaming: "partial", // off | partial | block | progress (Standard: off; explizit aktivieren, um Ratenlimits für Vorschau-Bearbeitungen zu vermeiden) + streaming: "partial", // off | partial | block | progress (Standard: off; explizit aktivieren, um Ratenlimits bei Vorschau-Bearbeitungen zu vermeiden) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, @@ -212,12 +226,12 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa ``` - 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 Standardkontoauswahl, wenn es 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 initiierte Konfigurationsschreibvorgänge (Supergroup-ID-Migrationen, `/config set|unset`). -- Einträge auf oberster Ebene in `bindings[]` mit `type: "acp"` konfigurieren persistente ACP-Bindings für Forenthemen (verwenden Sie das kanonische `chatId:topic:topicId` in `match.peer.id`). Die Feldsemantik wird gemeinsam in [ACP Agents](/de/tools/acp-agents#channel-specific-settings) verwendet. +- Optional überschreibt `channels.telegram.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- In Multi-Account-Setups (2+ Konto-IDs) sollten Sie einen expliziten Standard setzen (`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 (Supergruppen-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 beschrieben 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). +- Wiederholungsrichtlinie: siehe [Wiederholungsrichtlinie](/de/concepts/retry). ### Discord @@ -264,7 +278,7 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa requireMention: true, users: ["987654321098765432"], skills: ["docs"], - systemPrompt: "Short answers only.", + systemPrompt: "Nur kurze Antworten.", }, }, }, @@ -272,7 +286,7 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa historyLimit: 20, textChunkLimit: 2000, chunkMode: "length", // length | newline - streaming: "off", // off | partial | block | progress (progress entspricht partial auf Discord) + streaming: "off", // off | partial | block | progress (progress wird auf Discord auf partial abgebildet) maxLinesPerMessage: 17, ui: { components: { @@ -320,32 +334,32 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa ``` - 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; Retry-/Richtlinieneinstellungen des Kontos stammen weiterhin aus dem ausgewählten Konto im aktiven Laufzeit-Snapshot. -- Optional überschreibt `channels.discord.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Verwenden Sie `user:` (DM) oder `channel:` (Guild-Kanal) für Zustellziele; reine numerische IDs werden abgelehnt. +- Direkte ausgehende Aufrufe mit explizitem Discord-`token` verwenden dieses Token für den Aufruf; Konto-Wiederholungs-/Richtlinieneinstellungen stammen weiterhin aus dem ausgewählten Konto im aktiven Laufzeit-Snapshot. +- Optional überschreibt `channels.discord.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Verwenden Sie `user:` (DM) oder `channel:` (Guild-Kanal) für Zustellungsziele; bloße numerische IDs werden abgelehnt. - Guild-Slugs sind kleingeschrieben, Leerzeichen werden durch `-` ersetzt; Kanalschlü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, aber nicht den Bot erwähnen (ausgenommen @everyone/@here). +- `channels.discord.guilds..ignoreOtherMentions` (und Kanal-Überschreibungen) 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: +- `channels.discord.threadBindings` steuert threadgebundenes Discord-Routing: - `enabled`: Discord-Überschreibung für threadgebundene Sitzungsfunktionen (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` sowie gebundene Zustellung/Routing) - - `idleHours`: Discord-Überschreibung für automatisches Entfokussieren nach Inaktivität in Stunden (`0` deaktiviert) + - `idleHours`: Discord-Überschreibung für automatische Defokussierung bei Inaktivität in Stunden (`0` deaktiviert) - `maxAgeHours`: Discord-Überschreibung für maximales Alter in Stunden (`0` deaktiviert) - - `spawnSubagentSessions`: Opt-in-Schalter für automatische Thread-Erstellung/-Bindung bei `sessions_spawn({ thread: true })` -- Einträge auf oberster Ebene 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 gemeinsam in [ACP Agents](/de/tools/acp-agents#channel-specific-settings) verwendet. -- `channels.discord.ui.components.accentColor` legt die Akzentfarbe für Discord-Komponenten-v2-Container fest. -- `channels.discord.voice` aktiviert Unterhaltungen in Discord-Sprachkanälen sowie optionale Auto-Join- und TTS-Überschreibungen. -- `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 nach wiederholten Entschlüsselungsfehlern eine Sprachsitzung verlassen und erneut beigetreten wird. -- `channels.discord.streaming` ist der kanonische Schlüssel für den Stream-Modus. Die älteren Werte `streamMode` und boolesches `streaming` 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 die Zuordnung über veränderliche Namen/Tags wieder (Break-Glass-Kompatibilitätsmodus). -- `channels.discord.execApprovals`: Discord-native Zustellung von Exec-Genehmigungen und Autorisierung von 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. Wenn weggelassen, werden Genehmigungen für alle Agenten weitergeleitet. - - `sessionFilter`: optionale Sitzungs-Schlüssel-Muster (Teilstring oder Regex). - - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard) sendet an DMs der Genehmigenden, `"channel"` sendet in den Ursprungskanal, `"both"` sendet an beide. Wenn das Ziel `"channel"` enthält, sind Schaltflächen nur für aufgelöste Genehmigende nutzbar. + - `spawnSubagentSessions`: Opt-in-Schalter für automatische Thread-Erstellung/-Bindung durch `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 beschrieben unter [ACP Agents](/de/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` setzt die Akzentfarbe für Discord-Komponenten-v2-Container. +- `channels.discord.voice` aktiviert Discord-Sprachkanal-Gespräche und optionale automatische Teilnahme + 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, den Sprach-Empfang wiederherzustellen, indem nach wiederholten Entschlüsselungsfehlern eine Sprachsitzung verlassen und erneut betreten wird. +- `channels.discord.streaming` ist der kanonische Schlüssel für den Stream-Modus. Das alte `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 Überschreibungen des Status-Texts. +- `channels.discord.dangerouslyAllowNameMatching` aktiviert veränderbares 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 auf `commands.ownerAllowFrom` zurück, wenn weggelassen. + - `agentFilter`: optionale Erlaubnisliste für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten. + - `sessionFilter`: optionale Sitzungsschlüssel-Muster (Teilzeichenfolge oder Regex). + - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard) sendet an DMs der Genehmiger, `"channel"` sendet an den Ursprungskanal, `"both"` sendet an beide. Wenn `target` `"channel"` enthält, sind Schaltflächen nur für aufgelöste Genehmiger nutzbar. - `cleanupAfterResolve`: wenn `true`, löscht Genehmigungs-DMs nach Genehmigung, Ablehnung oder Timeout. **Modi für Reaktionsbenachrichtigungen:** `off` (keine), `own` (Nachrichten des Bots, Standard), `all` (alle Nachrichten), `allowlist` (aus `guilds..users` für alle Nachrichten). @@ -379,11 +393,11 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa } ``` -- JSON für Servicekonto: inline (`serviceAccount`) oder dateibasiert (`serviceAccountFile`). -- Servicekonto-SecretRef wird ebenfalls unterstützt (`serviceAccountRef`). +- Service-Account-JSON: inline (`serviceAccount`) oder dateibasiert (`serviceAccountFile`). +- Service-Account-SecretRef wird ebenfalls unterstützt (`serviceAccountRef`). - Env-Fallbacks: `GOOGLE_CHAT_SERVICE_ACCOUNT` oder `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Verwenden Sie `spaces/` oder `users/` für Zustellziele. -- `channels.googlechat.dangerouslyAllowNameMatching` aktiviert die Zuordnung über veränderliche E-Mail-Principals wieder (Break-Glass-Kompatibilitätsmodus). +- Verwenden Sie `spaces/` oder `users/` für Zustellungsziele. +- `channels.googlechat.dangerouslyAllowNameMatching` aktiviert veränderbares E-Mail-Prinzipal-Matching erneut (Break-Glass-Kompatibilitätsmodus). ### Slack @@ -405,7 +419,7 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa allowBots: false, users: ["U123"], skills: ["docs"], - systemPrompt: "Short answers only.", + systemPrompt: "Nur kurze Antworten.", }, }, historyLimit: 50, @@ -433,8 +447,10 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa typingReaction: "hourglass_flowing_sand", textChunkLimit: 4000, chunkMode: "length", - streaming: "partial", // off | partial | block | progress (Vorschaumodus) - nativeStreaming: true, // Slack-native Streaming-API verwenden, wenn streaming=partial + streaming: { + mode: "partial", // off | partial | block | progress + nativeTransport: true, // Slack-native Streaming-API verwenden, wenn mode=partial + }, mediaMaxMb: 20, execApprovals: { enabled: "auto", // true | false | "auto" @@ -450,32 +466,33 @@ WhatsApp läuft über den Web-Kanal des Gateway (Baileys Web). Es startet automa - **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 legen kontoabhängige Felder für Herkunft/Status der Anmeldedaten offen, wie +- `botToken`, `appToken`, `signingSecret` und `userToken` akzeptieren Klartext- + Strings oder SecretRef-Objekte. +- Slack-Konto-Snapshots stellen pro-Anmeldedaten Quell-/Statusfelder wie `botTokenSource`, `botTokenStatus`, `appTokenStatus` und im HTTP-Modus - `signingSecretStatus`. `configured_unavailable` bedeutet, dass das Konto + `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 Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- `channels.slack.streaming` ist der kanonische Schlüssel für den Stream-Modus. Die älteren Werte `streamMode` und boolesches `streaming` werden automatisch migriert. -- Verwenden Sie `user:` (DM) oder `channel:` für Zustellziele. + Secret-Wert jedoch nicht auflösen konnte. +- `configWrites: false` blockiert von Slack ausgelöste Konfigurationsschreibvorgänge. +- Optional überschreibt `channels.slack.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- `channels.slack.streaming.mode` ist der kanonische Slack-Stream-Modus-Schlüssel. `channels.slack.streaming.nativeTransport` steuert Slacks nativen Streaming-Transport. Das alte `streamMode`, boolesche `streaming`- und `nativeStreaming`-Werte werden automatisch migriert. +- Verwenden Sie `user:` (DM) oder `channel:` für Zustellungsziele. **Modi für Reaktionsbenachrichtigungen:** `off`, `own` (Standard), `all`, `allowlist` (aus `reactionAllowlist`). -**Isolierung von Thread-Sitzungen:** `thread.historyScope` ist pro Thread (Standard) oder kanalweit gemeinsam. `thread.inheritParent` kopiert das Protokoll des übergeordneten Kanals in neue Threads. +**Thread-Sitzungsisolierung:** `thread.historyScope` ist pro Thread (Standard) oder kanalweit geteilt. `thread.inheritParent` kopiert das Transkript des Elternkanals in neue Threads. -- `typingReaction` fügt der eingehenden Slack-Nachricht während der Ausführung einer 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 Genehmigenden. Gleiches Schema wie bei Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (Slack-Benutzer-IDs), `agentFilter`, `sessionFilter` und `target` (`"dm"`, `"channel"` oder `"both"`). +- Slack-natives Streaming plus der Slack-assistant-artige Thread-Status „is typing...“ erfordern ein Antwort-Thread-Ziel. DMs auf oberster Ebene bleiben standardmäßig ohne Thread, daher verwenden sie `typingReaction` oder normale Zustellung statt der Thread-artigen Vorschau. +- `typingReaction` fügt der eingehenden Slack-Nachricht während einer laufenden Antwort vorübergehend eine Reaktion hinzu und entfernt sie nach Abschluss. Verwenden Sie einen Slack-Emoji-Kurznamen wie `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: Slack-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern. Gleiches Schema wie bei Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (Slack-Benutzer-IDs), `agentFilter`, `sessionFilter` und `target` (`"dm"`, `"channel"` oder `"both"`). -| Aktionsgruppe | Standard | Hinweise | -| ------------ | ------- | ------------------------ | -| reactions | aktiviert | Reagieren + Reaktionen auflisten | -| messages | aktiviert | Lesen/senden/bearbeiten/löschen | -| pins | aktiviert | Anheften/lösen/auflisten | -| memberInfo | aktiviert | Mitgliederinformationen | -| emojiList | aktiviert | Liste benutzerdefinierter Emojis | +| Aktionsgruppe | Standard | Hinweise | +| ------------- | -------- | ----------------------- | +| reactions | aktiviert | Reagieren + Reaktionen auflisten | +| messages | aktiviert | Lesen/Senden/Bearbeiten/Löschen | +| pins | aktiviert | Anheften/Lösen/Auflisten | +| memberInfo | aktiviert | Mitgliedsinformationen | +| emojiList | aktiviert | Benutzerdefinierte Emoji-Liste | ### Mattermost @@ -499,7 +516,7 @@ Mattermost wird als Plugin ausgeliefert: `openclaw plugins install @openclaw/mat native: true, // Opt-in nativeSkills: true, callbackPath: "/api/channels/mattermost/command", - // Optionale explizite URL für Reverse-Proxy-/öffentliche Deployments + // Optional explizite URL für Reverse-Proxy-/öffentliche Deployments callbackUrl: "https://gateway.example.com/api/channels/mattermost/command", }, textChunkLimit: 4000, @@ -509,23 +526,23 @@ Mattermost wird als Plugin ausgeliefert: `openclaw plugins install @openclaw/mat } ``` -Chat-Modi: `oncall` (Antwort bei @-Erwähnung, Standard), `onmessage` (jede Nachricht), `onchar` (Nachrichten, die mit dem Auslöserpräfix beginnen). +Chat-Modi: `oncall` (antwortet bei @-Erwähnung, Standard), `onmessage` (jede Nachricht), `onchar` (Nachrichten, die mit Trigger-Präfix beginnen). 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 auflösen und vom Mattermost-Server aus erreichbar sein. -- Native Slash-Callbacks werden mit den pro Befehl zurückgegebenen Tokens - authentifiziert, die Mattermost bei der Slash-Command-Registrierung liefert. 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 bzw. die Domain enthält. +- `commands.callbackUrl` muss auf den OpenClaw-Gateway-Endpunkt auflösen und vom Mattermost-Server erreichbar sein. +- Native Slash-Callbacks werden mit den pro-Befehl-Tokens authentifiziert, die + Mattermost bei der Registrierung von Slash-Befehlen 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 kann Mattermost verlangen, dass + `ServiceSettings.AllowedUntrustedInternalConnections` den Callback-Host/die Domain enthält. Verwenden Sie Host-/Domain-Werte, keine vollständigen URLs. -- `channels.mattermost.configWrites`: von Mattermost initiierte Konfigurationsschreibvorgänge zulassen oder verweigern. -- `channels.mattermost.requireMention`: vor einer Antwort in Kanälen `@mention` verlangen. -- `channels.mattermost.groups..requireMention`: kanalbezogene Überschreibung für Erwähnungsanforderung (`"*"` für Standard). -- Optional überschreibt `channels.mattermost.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- `channels.mattermost.configWrites`: von Mattermost ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. +- `channels.mattermost.requireMention`: `@mention` vor Antworten in Kanälen verlangen. +- `channels.mattermost.groups..requireMention`: kanalbezogene Überschreibung des Mention-Gatings (`"*"` für Standard). +- Optional überschreibt `channels.mattermost.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. ### Signal @@ -548,9 +565,9 @@ Wenn native Mattermost-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 initiierte Konfigurationsschreibvorgänge zulassen oder verweigern. -- Optional überschreibt `channels.signal.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- `channels.signal.account`: Kanalstart an eine bestimmte Signal-Kontoidentität anheften. +- `channels.signal.configWrites`: von Signal ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. +- Optional überschreibt `channels.signal.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. ### BlueBubbles @@ -562,21 +579,21 @@ BlueBubbles ist der empfohlene iMessage-Pfad (pluginbasiert, konfiguriert unter bluebubbles: { enabled: true, dmPolicy: "pairing", - // serverUrl, password, webhookPath, Gruppensteuerung und erweiterte Aktionen: + // serverUrl, password, webhookPath, Gruppenkontrollen und erweiterte Aktionen: // siehe /channels/bluebubbles }, }, } ``` -- Hier abgedeckte Core-Schlüsselpfade: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Optional überschreibt `channels.bluebubbles.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Einträge auf oberster Ebene 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 Kern-Schlüsselpfade: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Optional überschreibt `channels.bluebubbles.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` können BlueBubbles-Konversationen 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 dokumentiert unter [BlueBubbles](/de/channels/bluebubbles). ### 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 { @@ -600,15 +617,15 @@ OpenClaw startet `imsg rpc` (JSON-RPC über stdio). Kein Daemon und kein Port er } ``` -- Optional überschreibt `channels.imessage.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Optional überschreibt `channels.imessage.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Erfordert Vollzugriff auf die Nachrichten-Datenbank. -- Bevorzugen Sie Ziele im Format `chat_id:`. Verwenden Sie `imsg chats --limit 20`, um Chats aufzulisten. -- `cliPath` kann auf einen SSH-Wrapper zeigen; setzen Sie `remoteHost` (`host` oder `user@host`) für SCP-Abruf von Anhängen. -- `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 Host-Key des Relays bereits in `~/.ssh/known_hosts` vorhanden ist. -- `channels.imessage.configWrites`: von iMessage initiierte Konfigurationsschreibvorgänge zulassen oder verweigern. -- Einträge auf oberster Ebene 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). +- Erfordert Vollzugriff auf die Messages-Datenbank. +- Bevorzugen Sie `chat_id:`-Ziele. Verwenden Sie `imsg chats --limit 20`, um Chats aufzulisten. +- `cliPath` kann auf einen SSH-Wrapper zeigen; setzen Sie `remoteHost` (`host` oder `user@host`) für den SCP-Abruf von Anhängen. +- `attachmentRoots` und `remoteAttachmentRoots` begrenzen eingehende Anhangspfade (Standard: `/Users/*/Library/Messages/Attachments`). +- SCP verwendet strikte Host-Key-Prüfung, stellen Sie daher sicher, dass der Host-Key des Relay-Hosts bereits in `~/.ssh/known_hosts` existiert. +- `channels.imessage.configWrites`: von iMessage ausgelöste Konfigurationsschreibvorgänge erlauben oder verweigern. +- Top-Level-`bindings[]`-Einträge mit `type: "acp"` können iMessage-Konversationen 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). @@ -621,7 +638,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix ist erweiterungsbasiert und wird unter `channels.matrix` konfiguriert. +Matrix ist extension-basiert und wird unter `channels.matrix` konfiguriert. ```json5 { @@ -652,24 +669,24 @@ Matrix ist erweiterungsbasiert und wird unter `channels.matrix` konfiguriert. ``` - 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 ihn mit `channels.matrix.accounts..proxy` überschreiben. +- `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.network.dangerouslyAllowPrivateNetwork` erlaubt private/interne Homeserver. `proxy` und dieses Netzwerk-Opt-in sind unabhängige Steuerungen. - `channels.matrix.defaultAccount` wählt in Multi-Account-Setups das bevorzugte Konto aus. -- `channels.matrix.autoJoin` ist standardmäßig `off`, daher werden eingeladene Räume und neue DM-ähnliche Einladungen ignoriert, bis Sie `autoJoin: "allowlist"` mit `autoJoinAllowlist` oder `autoJoin: "always"` setzen. -- `channels.matrix.execApprovals`: Matrix-native Zustellung von Exec-Genehmigungen und Autorisierung von 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. +- `channels.matrix.autoJoin` ist standardmäßig `off`, daher werden eingeladene Räume und neue DM-artige Einladungen ignoriert, bis Sie `autoJoin: "allowlist"` mit `autoJoinAllowlist` oder `autoJoin: "always"` setzen. +- `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. - `approvers`: Matrix-Benutzer-IDs (z. B. `@owner:example.org`), die Exec-Anfragen genehmigen dürfen. - - `agentFilter`: optionale Allowlist für Agent-IDs. Wenn weggelassen, werden Genehmigungen für alle Agenten weitergeleitet. - - `sessionFilter`: optionale Sitzungs-Schlüssel-Muster (Teilstring oder Regex). + - `agentFilter`: optionale Erlaubnisliste für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten. + - `sessionFilter`: optionale Sitzungsschlüssel-Muster (Teilzeichenfolge oder Regex). - `target`: wohin Genehmigungsaufforderungen gesendet werden. `"dm"` (Standard), `"channel"` (Ursprungsraum) oder `"both"`. - - Kontoabhängige Überschreibungen: `channels.matrix.accounts..execApprovals`. + - Pro-Konto-Überschreibungen: `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-Statusprobes und Live-Verzeichnisabfragen verwenden dieselbe Proxy-Richtlinie wie der Laufzeitverkehr. -- Die vollständige Matrix-Konfiguration, Zielregeln und Einrichtungsbeispiele sind unter [Matrix](/de/channels/matrix) dokumentiert. +- Matrix-Statusprüfungen und Live-Verzeichnisabfragen verwenden dieselbe Proxy-Richtlinie wie der Laufzeitverkehr. +- Vollständige Matrix-Konfiguration, Zielregeln und Setup-Beispiele sind dokumentiert unter [Matrix](/de/channels/matrix). ### Microsoft Teams -Microsoft Teams ist erweiterungsbasiert und wird unter `channels.msteams` konfiguriert. +Microsoft Teams ist extension-basiert und wird unter `channels.msteams` konfiguriert. ```json5 { @@ -684,12 +701,12 @@ Microsoft Teams ist erweiterungsbasiert und wird unter `channels.msteams` konfig } ``` -- Hier abgedeckte Core-Schlüsselpfade: `channels.msteams`, `channels.msteams.configWrites`. -- Die vollständige Teams-Konfiguration (Anmeldedaten, Webhook, DM-/Gruppenrichtlinie, team-/kanalbezogene Überschreibungen) ist unter [Microsoft Teams](/de/channels/msteams) dokumentiert. +- Hier behandelte Kern-Schlüsselpfade: `channels.msteams`, `channels.msteams.configWrites`. +- Die vollständige Teams-Konfiguration (Anmeldedaten, Webhook, DM-/Gruppenrichtlinie, Überschreibungen pro Team/pro Kanal) ist dokumentiert unter [Microsoft Teams](/de/channels/msteams). ### IRC -IRC ist erweiterungsbasiert und wird unter `channels.irc` konfiguriert. +IRC ist extension-basiert und wird unter `channels.irc` konfiguriert. ```json5 { @@ -710,13 +727,13 @@ IRC ist erweiterungsbasiert und wird unter `channels.irc` konfiguriert. } ``` -- Hier abgedeckte Core-Schlüsselpfade: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Optional überschreibt `channels.irc.defaultAccount` die Standardkontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. -- Die vollständige IRC-Kanalkonfiguration (Host/Port/TLS/Kanäle/Allowlists/Erwähnungsanforderung) ist unter [IRC](/de/channels/irc) dokumentiert. +- Hier behandelte Kern-Schlüsselpfade: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Optional überschreibt `channels.irc.defaultAccount` die Standard-Kontoauswahl, wenn es einer konfigurierten Konto-ID entspricht. +- Die vollständige IRC-Kanalkonfiguration (Host/Port/TLS/Kanäle/Erlaubnislisten/Mention-Gating) ist dokumentiert unter [IRC](/de/channels/irc). ### Multi-Account (alle Kanäle) -Mehrere Konten pro Kanal ausführen (jedes mit eigener `accountId`): +Führen Sie mehrere Konten pro Kanal aus (jedes mit eigener `accountId`): ```json5 { @@ -724,11 +741,11 @@ Mehrere Konten pro Kanal ausführen (jedes mit eigener `accountId`): telegram: { accounts: { default: { - name: "Primary bot", + name: "Primärer Bot", botToken: "123456:ABC...", }, alerts: { - name: "Alerts bot", + name: "Alerts-Bot", botToken: "987654:XYZ...", }, }, @@ -738,27 +755,27 @@ Mehrere Konten pro Kanal ausführen (jedes mit eigener `accountId`): ``` - `default` wird verwendet, wenn `accountId` weggelassen wird (CLI + Routing). -- Env-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 das Kanal-Onboarding) ein Nicht-Standardkonto hinzufügen, während Sie noch eine Top-Level-Kanalkonfiguration für ein Einzelkonto verwenden, verschiebt OpenClaw zuerst kontobezogene Top-Level-Werte für Einzelkonten in die Kanal-Kontomap, damit das ursprüngliche Konto weiter funktioniert. Bei den meisten Kanälen werden sie nach `channels..accounts.default` verschoben; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten. -- Bestehende kanalbezogene Bindings (ohne `accountId`) passen weiterhin auf das Standardkonto; kontobezogene Bindings bleiben optional. -- `openclaw doctor --fix` repariert auch gemischte Formen, indem kontobezogene Top-Level-Werte für Einzelkonten in das hochgestufte Konto für diesen Kanal verschoben werden. Die meisten Kanäle verwenden `accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten. +- Wenn Sie ein nicht-standardmäßiges Konto über `openclaw channels add` (oder Kanal-Onboarding) hinzufügen, während Sie noch eine kanalbezogene Single-Account-Konfiguration auf oberster Ebene haben, verschiebt OpenClaw zunächst kontoabhängige Werte der Top-Level-Single-Account-Konfiguration in die Kanal-Kontomap, sodass das ursprüngliche Konto weiter funktioniert. Die meisten Kanäle verschieben sie nach `channels..accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/Standardziel beibehalten. +- Bestehende reine Kanal-Bindings (ohne `accountId`) passen weiterhin zum Standardkonto; kontoabhängige Bindings bleiben optional. +- `openclaw doctor --fix` repariert auch gemischte Formen, indem kontoabhängige Top-Level-Single-Account-Werte in das für diesen Kanal gewählte beförderte Konto verschoben werden. Die meisten Kanäle verwenden `accounts.default`; Matrix kann stattdessen ein vorhandenes passendes benanntes/Standardziel beibehalten. -### Andere Erweiterungskanäle +### Andere Extension-Kanäle -Viele Erweiterungskanäle werden als `channels.` konfiguriert und in ihren eigenen Kanalseiten dokumentiert (zum Beispiel Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat und Twitch). -Siehe den vollständigen Kanalindex: [Channels](/de/channels). +Viele Extension-Kanäle werden als `channels.` konfiguriert und in 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). -### Erwähnungsanforderung in Gruppenchats +### 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 erfordern standardmäßig **eine Erwähnung** (Metadaten-Erwähnung oder sichere Regex-Muster). Gilt für WhatsApp, Telegram, Discord, Google Chat und iMessage-Gruppenchats. **Erwähnungstypen:** -- **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. -- Die Erwähnungsanforderung wird nur erzwungen, wenn Erkennung möglich ist (native Erwähnungen oder mindestens ein Muster). +- **Metadaten-Erwähnungen**: Native Plattform-@-Erwähnungen. Werden im WhatsApp-Selbstchat-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 { @@ -771,7 +788,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 mit `channels..historyLimit` (oder pro Konto) überschreiben. Setzen Sie `0`, um zu deaktivieren. #### DM-Verlaufslimits @@ -788,13 +805,13 @@ Gruppennachrichten erfordern standardmäßig **eine Erwähnung** (Metadaten-Erw } ``` -Auflösung: DM-spezifische Überschreibung → Anbieterstandard → kein Limit (alles wird beibehalten). +Auflösung: Überschreibung pro DM → Provider-Standard → kein Limit (alles wird beibehalten). Unterstützt: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. -#### Self-Chat-Modus +#### Selbstchat-Modus -Fügen Sie Ihre eigene Nummer zu `allowFrom` hinzu, 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 Selbstchat-Modus zu aktivieren (ignoriert native @-Erwähnungen, antwortet nur auf Textmuster): ```json5 { @@ -815,18 +832,24 @@ Fügen Sie Ihre eigene Nummer zu `allowFrom` hinzu, um den Self-Chat-Modus zu ak } ``` -### Befehle (Verarbeitung von Chat-Befehlen) +### Befehle (Behandlung von Chat-Befehlen) ```json5 { commands: { native: "auto", // native Befehle registrieren, wenn unterstützt + nativeSkills: "auto", // native Skill-Befehle registrieren, wenn unterstützt text: true, // /commands in Chat-Nachrichten parsen bash: false, // ! erlauben (Alias: /bash) bashForegroundMs: 2000, config: false, // /config erlauben + mcp: false, // /mcp erlauben + plugins: false, // /plugins erlauben debug: false, // /debug erlauben - restart: false, // /restart + Tool zum Neustart des Gateway erlauben + restart: true, // /restart + Gateway-Neustart-Tool erlauben + ownerAllowFrom: ["discord:123456789012345678"], + ownerDisplay: "raw", // raw | hash + ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}", allowFrom: { "*": ["user1"], discord: ["user:123"], @@ -838,22 +861,38 @@ Fügen Sie Ihre eigene Nummer zu `allowFrom` hinzu, um den Self-Chat-Modus zu ak -- Textbefehle müssen **eigenständige** Nachrichten mit führendem `/` sein. -- `native: "auto"` aktiviert native Befehle für Discord/Telegram, lässt Slack aus. -- Pro Kanal überschreiben: `channels.discord.commands.native` (bool oder `"auto"`). `false` löscht zuvor registrierte Befehle. +- Dieser Block konfiguriert Befehlsflächen. Den aktuellen integrierten + gebündelten Befehlskatalog finden Sie unter [Slash-Befehle](/de/tools/slash-commands). +- Diese Seite ist eine **Konfigurationsschlüssel-Referenz**, nicht der vollständige Befehlskatalog. Kanal-/plugin-eigene Befehle wie QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` und Talk `/voice` sind in ihren Kanal-/plugin-Seiten sowie unter [Slash-Befehle](/de/tools/slash-commands) dokumentiert. +- Textbefehle müssen eigenständige Nachrichten mit führendem `/` sein. +- `native: "auto"` aktiviert native Befehle für Discord/Telegram, lässt Slack deaktiviert. +- `nativeSkills: "auto"` aktiviert native Skill-Befehle für Discord/Telegram, lässt Slack deaktiviert. +- Pro Kanal überschreiben: `channels.discord.commands.native` (Bool oder `"auto"`). `false` löscht zuvor registrierte Befehle. +- Überschreiben Sie die Registrierung nativer Skills pro Kanal mit `channels..commands.nativeSkills`. - `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 dass der Absender in `tools.elevated.allowFrom.` enthalten ist. -- `config: true` aktiviert `/config` (liest/schreibt `openclaw.json`). Für Gateway-`chat.send`-Clients erfordern persistente Schreibvorgänge mit `/config set|unset` zusätzlich `operator.admin`; nur lesendes `/config show` bleibt für normale Clients mit Schreibberechtigung verfügbar. -- `channels..configWrites` steuert Konfigurationsmutationen pro Kanal (Standard: true). -- Für Multi-Account-Kanäle steuert `channels..accounts..configWrites` zusätzlich Schreibvorgänge, die auf dieses Konto zielen (zum Beispiel `/allowlist --config --account ` oder `/config set channels..accounts....`). -- `allowFrom` ist pro Anbieter. Wenn gesetzt, ist es die **einzige** Autorisierungsquelle (Kanal-Allowlists/Pairing und `useAccessGroups` werden ignoriert). -- `useAccessGroups: false` erlaubt es Befehlen, Richtlinien für Zugriffsgruppen zu umgehen, wenn `allowFrom` nicht gesetzt ist. +- `bash: true` aktiviert `! ` für die Host-Shell. Erfordert `tools.elevated.enabled` und den Sender in `tools.elevated.allowFrom.`. +- `config: true` aktiviert `/config` (liest/schreibt `openclaw.json`). Für Gateway-`chat.send`-Clients erfordern persistente `/config set|unset`-Schreibvorgänge außerdem `operator.admin`; schreibgeschütztes `/config show` bleibt für normale Operator-Clients mit Schreibbereich verfügbar. +- `mcp: true` aktiviert `/mcp` für von OpenClaw verwaltete MCP-Serverkonfiguration unter `mcp.servers`. +- `plugins: true` aktiviert `/plugins` für Plugin-Erkennung, Installation und Aktivieren/Deaktivieren. +- `channels..configWrites` steuert Konfigurationsänderungen pro Kanal (Standard: true). +- Bei Multi-Account-Kanälen steuert `channels..accounts..configWrites` auch Schreibvorgänge, die dieses Konto betreffen (zum Beispiel `/allowlist --config --account ` oder `/config set channels..accounts....`). +- `restart: false` deaktiviert `/restart` und Gateway-Neustart-Tool-Aktionen. Standard: `true`. +- `ownerAllowFrom` ist die explizite Eigentümer-Erlaubnisliste für eigentümerexklusive Befehle/Tools. Sie ist getrennt von `allowFrom`. +- `ownerDisplay: "hash"` hasht Eigentümer-IDs im Systemprompt. Setzen Sie `ownerDisplaySecret`, um das Hashing zu steuern. +- `allowFrom` ist pro Provider. Wenn gesetzt, ist es die **einzige** Autorisierungsquelle (Kanal-Erlaubnislisten/Pairing und `useAccessGroups` werden ignoriert). +- `useAccessGroups: false` erlaubt Befehlen, Access-Group-Richtlinien zu umgehen, wenn `allowFrom` nicht gesetzt ist. +- Zuordnung der Befehlsdokumentation: + - integrierter + gebündelter Katalog: [Slash-Befehle](/de/tools/slash-commands) + - kanalspezifische Befehlsflächen: [Kanäle](/de/channels) + - QQ Bot-Befehle: [QQ Bot](/de/channels/qqbot) + - Pairing-Befehle: [Pairing](/de/channels/pairing) + - LINE-Kartenbefehl: [LINE](/de/channels/line) + - Memory-Dreaming: [Dreaming](/de/concepts/dreaming) --- -## Agent-Standards +## Agent-Standardeinstellungen ### `agents.defaults.workspace` @@ -867,7 +906,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 aus nach oben traversiert. +Optionales Repository-Root, das in der Runtime-Zeile des Systemprompts angezeigt wird. Wenn nicht gesetzt, erkennt OpenClaw es automatisch, indem es vom Workspace aus nach oben läuft. ```json5 { @@ -877,7 +916,7 @@ Optionales Repository-Root, das in der Runtime-Zeile des System-Prompts angezeig ### `agents.defaults.skills` -Optionale Standard-Allowlist für Skills für Agenten, die +Optionale Standard-Erlaubnisliste für Skills für Agenten, die `agents.list[].skills` nicht setzen. ```json5 @@ -896,8 +935,7 @@ Optionale Standard-Allowlist für Skills für Agenten, die - 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: []`, um keine Skills zuzulassen. -- Eine nicht leere Liste in `agents.list[].skills` ist der endgültige Satz 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 Standards zusammengeführt. ### `agents.defaults.skipBootstrap` @@ -911,9 +949,9 @@ Deaktiviert die automatische Erstellung von Workspace-Bootstrap-Dateien (`AGENTS ### `agents.defaults.contextInjection` -Steuert, wann Workspace-Bootstrap-Dateien in den System-Prompt injiziert werden. Standard: `"always"`. +Steuert, wann Workspace-Bootstrap-Dateien in den Systemprompt injiziert werden. Standard: `"always"`. -- `"continuation-skip"`: sichere Fortsetzungs-Turns (nach einer abgeschlossenen Assistant-Antwort) überspringen die erneute Injektion des Workspace-Bootstraps, wodurch die Prompt-Größe reduziert wird. Heartbeat-Ausführungen und Wiederholungen nach Compaction bauen den Kontext weiterhin neu auf. +- `"continuation-skip"`: Sichere Fortsetzungs-Turns (nach einer abgeschlossenen Assistentenantwort) überspringen die erneute Injektion des Workspace-Bootstraps und reduzieren so die Prompt-Größe. Heartbeat-Läufe und Wiederholungen nach Kompaktierung bauen den Kontext weiterhin neu auf. ```json5 { @@ -923,7 +961,7 @@ Steuert, wann Workspace-Bootstrap-Dateien in den System-Prompt injiziert werden. ### `agents.defaults.bootstrapMaxChars` -Maximale Zeichenanzahl pro Workspace-Bootstrap-Datei vor Kürzung. Standard: `20000`. +Maximale Zeichen pro Workspace-Bootstrap-Datei vor Abschneidung. Standard: `20000`. ```json5 { @@ -933,7 +971,7 @@ Maximale Zeichenanzahl pro Workspace-Bootstrap-Datei vor Kürzung. Standard: `20 ### `agents.defaults.bootstrapTotalMaxChars` -Maximale Gesamtanzahl an Zeichen, die über alle Workspace-Bootstrap-Dateien injiziert werden. Standard: `150000`. +Maximale Gesamtzahl an injizierten Zeichen über alle Workspace-Bootstrap-Dateien. Standard: `150000`. ```json5 { @@ -946,9 +984,9 @@ Maximale Gesamtanzahl an Zeichen, die über alle Workspace-Bootstrap-Dateien inj Steuert den für Agenten sichtbaren Warntext, wenn Bootstrap-Kontext abgeschnitten wird. Standard: `"once"`. -- `"off"`: Warntext niemals in den System-Prompt injizieren. -- `"once"`: Warnung einmal pro eindeutiger Kürzungssignatur injizieren (empfohlen). -- `"always"`: Warnung bei jedem Lauf injizieren, wenn eine Kürzung existiert. +- `"off"`: niemals Warntext in den Systemprompt injizieren. +- `"once"`: Warnung einmal pro eindeutiger Abschneidesignatur injizieren (empfohlen). +- `"always"`: Warnung bei jedem Lauf injizieren, wenn Abschneidung vorliegt. ```json5 { @@ -958,10 +996,10 @@ Standard: `"once"`. ### `agents.defaults.imageMaxDimensionPx` -Maximale Pixelgröße für die längste Bildseite in Bildblöcken von Transkripten/Tools vor Provider-Aufrufen. +Maximale Pixelgröße der längsten Bildseite in Transkript-/Tool-Bildblöcken vor Provider-Aufrufen. Standard: `1200`. -Niedrigere Werte reduzieren in der Regel die Nutzung von Vision-Tokens und die Größe der Request-Payload bei screenshotlastigen Läufen. +Niedrigere Werte reduzieren meist den Verbrauch von Vision-Tokens und die Größe der Request-Payload bei screenshotlastigen Läufen. Höhere Werte erhalten mehr visuelle Details. ```json5 @@ -972,7 +1010,7 @@ Höhere Werte erhalten mehr visuelle Details. ### `agents.defaults.userTimezone` -Zeitzone für den Kontext des System-Prompts (nicht für Zeitstempel von Nachrichten). Fällt auf die Zeitzone des Hosts zurück. +Zeitzone für den Systemprompt-Kontext (nicht Nachrichtentimestamps). Fällt auf die Host-Zeitzone zurück. ```json5 { @@ -982,7 +1020,7 @@ Zeitzone für den Kontext des System-Prompts (nicht für Zeitstempel von Nachric ### `agents.defaults.timeFormat` -Zeitformat im System-Prompt. Standard: `auto` (OS-Einstellung). +Zeitformat im Systemprompt. Standard: `auto` (OS-Präferenz). ```json5 { @@ -1020,7 +1058,7 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Einstellung). primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, - params: { cacheRetention: "long" }, // global Standard-Provider-Parameter + params: { cacheRetention: "long" }, // globale Standard-Provider-Parameter pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", @@ -1042,34 +1080,34 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Einstellung). - Wird vom `image`-Tool-Pfad als Vision-Modellkonfiguration 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 gemeinsam genutzten Bildgenerierungsfunktion und jeder zukünftigen Tool-/Plugin-Oberfläche verwendet, die Bilder erzeugt. + - Wird von der gemeinsamen Bildgenerierungsfunktion und jeder zukünftigen Tool-/Plugin-Oberfläche verwendet, die Bilder erzeugt. - 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 Provider-Authentifizierung bzw. den API-Schlüssel (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` trotzdem einen auth-gestützten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standardanbieter, dann die übrigen registrierten Bildgenerierungsanbieter in der Reihenfolge ihrer Provider-IDs. + - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung/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` trotzdem 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 gemeinsam genutzten Musikgenerierungsfunktion und dem integrierten Tool `music_generate` verwendet. + - Wird von der gemeinsamen Musikgenerierungsfunktion und dem integrierten `music_generate`-Tool verwendet. - Typische Werte: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` oder `minimax/music-2.5+`. - - Wenn nicht gesetzt, kann `music_generate` trotzdem einen auth-gestützten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standardanbieter, dann die übrigen registrierten Musikgenerierungsanbieter in der Reihenfolge ihrer Provider-IDs. - - Wenn Sie direkt einen Anbieter/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Schlüssel. + - Wenn weggelassen, kann `music_generate` trotzdem 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/API-Key dazu. - `videoGenerationModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - - Wird von der gemeinsam genutzten Videogenerierungsfunktion und dem integrierten Tool `video_generate` verwendet. + - Wird von der gemeinsamen Videogenerierungsfunktion und dem integrierten `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 nicht gesetzt, kann `video_generate` trotzdem einen auth-gestützten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standardanbieter, dann die übrigen registrierten Videogenerierungsanbieter in der Reihenfolge ihrer Provider-IDs. - - Wenn Sie direkt einen Anbieter/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Schlüssel. - - Der gebündelte Qwen-Provider für Videogenerierung unterstützt derzeit bis zu 1 Ausgabevideo, 1 Eingabebild, 4 Eingabevideos, 10 Sekunden Dauer sowie Provider-Optionen für `size`, `aspectRatio`, `resolution`, `audio` und `watermark`. + - Wenn weggelassen, kann `video_generate` trotzdem 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/API-Key dazu. + - Der gebündelte Qwen-Videogenerierungs-Provider unterstützt derzeit bis zu 1 Ausgabevideo, 1 Eingabebild, 4 Eingabevideos, 10 Sekunden Dauer sowie providerbezogene Optionen `size`, `aspectRatio`, `resolution`, `audio` und `watermark`. - `pdfModel`: akzeptiert entweder einen String (`"provider/model"`) oder ein Objekt (`{ primary, fallbacks }`). - Wird vom `pdf`-Tool für 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-Dateien beim `pdf`-Tool, wenn `maxBytesMb` nicht zur Aufrufzeit übergeben wird. -- `pdfMaxPages`: standardmäßige maximale Seitenzahl, die der Extraktions-Fallback-Modus im `pdf`-Tool berücksichtigt. -- `verboseDefault`: Standardstufe für ausführliche Ausgabe bei Agenten. Werte: `"off"`, `"on"`, `"full"`. Standard: `"off"`. + - Wenn weggelassen, fällt das PDF-Tool auf `imageModel`, dann auf das aufgelöste Sitzungs-/Standardmodell zurück. +- `pdfMaxBytesMb`: Standard-PDF-Größenlimit für das `pdf`-Tool, wenn `maxBytesMb` nicht beim Aufruf übergeben wird. +- `pdfMaxPages`: Standardhöchstzahl von Seiten, die im Extraktions-Fallback-Modus des `pdf`-Tools berücksichtigt werden. +- `verboseDefault`: Standard-Verbose-Stufe für Agenten. Werte: `"off"`, `"on"`, `"full"`. Standard: `"off"`. - `elevatedDefault`: Standardstufe für erhöhte Ausgabe bei 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 eine eindeutige konfigurierte-Provider-Übereinstimmung für genau diese Modell-ID und greift erst danach auf den konfigurierten Standardanbieter zurück (veraltetes Kompatibilitätsverhalten, daher besser explizit `provider/model` verwenden). Wenn dieser Provider das konfigurierte Standardmodell nicht mehr anbietet, fällt OpenClaw auf das erste konfigurierte Provider-/Modellpaar zurück, statt einen veralteten entfernten Provider-Standard anzuzeigen. -- `models`: der konfigurierte Modellkatalog und die Allowlist für `/model`. Jeder Eintrag kann `alias` (Kurzform) und `params` (anbieterbezogen, zum Beispiel `temperature`, `maxTokens`, `cacheRetention`, `context1m`) enthalten. +- `model.primary`: Format `provider/model` (z. B. `openai/gpt-5.4`). Wenn Sie den Provider weglassen, versucht OpenClaw zuerst einen Alias, dann einen eindeutigen Match eines konfigurierten Providers für genau diese Modell-ID und fällt erst dann auf den konfigurierten Standard-Provider zurück (veraltetes Kompatibilitätsverhalten, daher bevorzugen Sie explizit `provider/model`). Wenn dieser Provider das konfigurierte Standardmodell nicht mehr anbietet, fällt OpenClaw auf das erste konfigurierte Provider-/Modell zurück, statt einen veralteten entfernten Provider-Standard anzuzeigen. +- `models`: der konfigurierte Modellkatalog und die Erlaubnisliste für `/model`. Jeder Eintrag kann `alias` (Kurzform) und `params` (providerspezifisch, z. B. `temperature`, `maxTokens`, `cacheRetention`, `context1m`) enthalten. - `params`: globale Standard-Provider-Parameter, die auf alle Modelle angewendet werden. Setzen unter `agents.defaults.params` (z. B. `{ cacheRetention: "long" }`). -- Priorität beim Zusammenführen von `params` (Konfiguration): `agents.defaults.params` (globale Basis) wird überschrieben durch `agents.defaults.models["provider/model"].params` (pro Modell), dann überschreibt `agents.list[].params` (passende Agent-ID) nach Schlüssel. Details siehe [Prompt Caching](/de/reference/prompt-caching). -- Konfigurationsschreiber, die diese Felder mutieren (zum Beispiel `/models set`, `/models set-image` und Befehle zum Hinzufügen/Entfernen von Fallbacks), speichern die kanonische Objektform und behalten nach Möglichkeit bestehende Fallback-Listen bei. -- `maxConcurrent`: maximale Zahl paralleler Agent-Läufe über Sitzungen hinweg (jede Sitzung bleibt weiterhin serialisiert). Standard: 4. +- `params`-Merge-Priorität (Konfiguration): `agents.defaults.params` (globale Basis) wird überschrieben durch `agents.defaults.models["provider/model"].params` (pro Modell), dann überschreibt `agents.list[].params` (passende Agent-ID) pro Schlüssel. Siehe [Prompt Caching](/de/reference/prompt-caching) für Details. +- Konfigurationsschreiber, die diese Felder ändern (zum Beispiel `/models set`, `/models set-image` und Befehle zum Hinzufügen/Entfernen von Fallbacks), speichern die kanonische Objektform und erhalten bestehende Fallback-Listen nach Möglichkeit. +- `maxConcurrent`: maximale parallele Agent-Läufe über Sitzungen hinweg (jede Sitzung bleibt weiterhin serialisiert). Standard: 4. **Integrierte Alias-Kurzformen** (gelten nur, wenn das Modell in `agents.defaults.models` steht): @@ -1084,15 +1122,15 @@ Zeitformat im System-Prompt. Standard: `auto` (OS-Einstellung). | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Ihre konfigurierten Aliasse haben immer Vorrang vor den Standardwerten. +Ihre konfigurierten Aliasse haben immer Vorrang vor Standards. 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 standardmäßig `tool_stream` 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 keine explizite Thinking-Stufe gesetzt ist. +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. ### `agents.defaults.cliBackends` -Optionale CLI-Backends für Text-only-Fallback-Läufe (keine Tool-Aufrufe). Nützlich als Backup, wenn API-Provider ausfallen. +Optionale CLI-Backends für Text-only-Fallback-Läufe (keine Tool-Aufrufe). Nützlich als Reserve, wenn API-Provider ausfallen. ```json5 { @@ -1122,11 +1160,11 @@ Optionale CLI-Backends für Text-only-Fallback-Läufe (keine Tool-Aufrufe). Nüt - CLI-Backends sind textorientiert; Tools sind immer deaktiviert. - Sitzungen werden unterstützt, wenn `sessionArg` gesetzt ist. -- Bilddurchleitung wird unterstützt, wenn `imageArg` Dateipfade akzeptiert. +- Bild-Durchleitung wird unterstützt, wenn `imageArg` Dateipfade akzeptiert. ### `agents.defaults.heartbeat` -Periodische Heartbeat-Ausführungen. +Periodische Heartbeat-Läufe. ```json5 { @@ -1136,13 +1174,13 @@ Periodische Heartbeat-Ausführungen. every: "30m", // 0m deaktiviert model: "openai/gpt-5.4-mini", includeReasoning: false, - 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 (ohne Gesprächsverlauf) + lightContext: false, // Standard: false; true behält nur HEARTBEAT.md aus den Workspace-Bootstrap-Dateien + isolatedSession: false, // Standard: false; true führt jeden Heartbeat in einer frischen Sitzung aus (kein Gesprächsverlauf) session: "main", to: "+15555550123", directPolicy: "allow", // allow (Standard) | block target: "none", // Standard: none | Optionen: last | whatsapp | telegram | discord | ... - prompt: "Read HEARTBEAT.md if it exists...", + prompt: "Lese HEARTBEAT.md, falls vorhanden...", ackMaxChars: 300, suppressToolErrorWarnings: false, }, @@ -1152,11 +1190,11 @@ Periodische Heartbeat-Ausführungen. ``` - `every`: Dauer-String (ms/s/m/h). Standard: `30m` (API-Key-Authentifizierung) oder `1h` (OAuth-Authentifizierung). Setzen Sie `0m`, um zu deaktivieren. -- `suppressToolErrorWarnings`: wenn true, werden Payloads mit Tool-Fehlerwarnungen während Heartbeat-Ausführungen unterdrückt. -- `directPolicy`: Richtlinie für direkte/DM-Zustellung. `allow` (Standard) erlaubt direkte Zielzustellung. `block` unterdrückt direkte Zielzustellung und gibt `reason=dm-blocked` aus. -- `lightContext`: wenn true, verwenden Heartbeat-Ausführungen leichten Bootstrap-Kontext und behalten nur `HEARTBEAT.md` aus den Workspace-Bootstrap-Dateien. -- `isolatedSession`: wenn true, wird jeder Heartbeat in einer frischen Sitzung ohne vorherigen Gesprächsverlauf ausgeführt. Gleiches 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. +- `suppressToolErrorWarnings`: wenn true, werden Tool-Fehlerwarn-Payloads während Heartbeat-Läufen unterdrückt. +- `directPolicy`: Richtlinie für direkte/DM-Zustellung. `allow` (Standard) erlaubt direkte Zielzustellung. `block` unterdrückt direkte Zielzustellung und erzeugt `reason=dm-blocked`. +- `lightContext`: wenn true, verwenden Heartbeat-Läufe leichten Bootstrap-Kontext und behalten aus den Workspace-Bootstrap-Dateien nur `HEARTBEAT.md`. +- `isolatedSession`: wenn true, läuft jeder Heartbeat in einer frischen Sitzung ohne vorherigen Gesprächsverlauf. Gleiches Isolationsmuster wie bei Cron `sessionTarget: "isolated"`. Reduziert die Token-Kosten pro Heartbeat von ~100K auf ~2-5K Tokens. +- Pro Agent: setzen Sie `agents.list[].heartbeat`. Wenn ein Agent `heartbeat` definiert, führen **nur diese Agenten** Heartbeats aus. - Heartbeats führen vollständige Agent-Turns aus — kürzere Intervalle verbrauchen mehr Tokens. ### `agents.defaults.compaction` @@ -1171,15 +1209,15 @@ Periodische Heartbeat-Ausführungen. timeoutSeconds: 900, reserveTokensFloor: 24000, identifierPolicy: "strict", // strict | off | custom - identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // verwendet, wenn identifierPolicy=custom - postCompactionSections: ["Session Startup", "Red Lines"], // [] deaktiviert Reinjektion - model: "openrouter/anthropic/claude-sonnet-4-6", // optionale nur für Compaction geltende Modellüberschreibung - notifyUser: true, // kurze Benachrichtigung senden, wenn Compaction startet (Standard: false) + identifierInstructions: "Deployment-IDs, Ticket-IDs und Host:Port-Paare exakt beibehalten.", // verwendet bei identifierPolicy=custom + postCompactionSections: ["Session Startup", "Red Lines"], // [] deaktiviert Re-Injektion + model: "openrouter/anthropic/claude-sonnet-4-6", // optionale modellbezogene Überschreibung nur für Compaction + notifyUser: true, // kurze Benachrichtigung senden, wenn die Compaction startet (Standard: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, - systemPrompt: "Session nearing compaction. Store durable memories now.", - prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.", + systemPrompt: "Sitzung nähert sich der Compaction. Dauerhafte Erinnerungen jetzt speichern.", + prompt: "Schreibe bleibende Notizen nach memory/YYYY-MM-DD.md; antworte mit dem exakten stillen Token NO_REPLY, wenn nichts zu speichern ist.", }, }, }, @@ -1187,19 +1225,19 @@ Periodische Heartbeat-Ausführungen. } ``` -- `mode`: `default` oder `safeguard` (zusammenfassende Chunk-Verarbeitung für lange Verläufe). Siehe [Compaction](/de/concepts/compaction). -- `provider`: ID eines registrierten Compaction-Provider-Plugins. Wenn gesetzt, wird `summarize()` des Providers anstelle der integrierten LLM-Zusammenfassung aufgerufen. Bei Fehlern wird auf die integrierte Variante zurückgefallen. Das Setzen eines Providers erzwingt `mode: "safeguard"`. Siehe [Compaction](/de/concepts/compaction). -- `timeoutSeconds`: maximale Anzahl von Sekunden, die eine einzelne Compaction-Operation dauern darf, bevor OpenClaw sie abbricht. Standard: `900`. -- `identifierPolicy`: `strict` (Standard), `off` oder `custom`. `strict` stellt der Compaction-Zusammenfassung integrierte Hinweise zur Beibehaltung undurchsichtiger Bezeichner voran. -- `identifierInstructions`: optionaler benutzerdefinierter Text zur Beibehaltung von Bezeichnern, verwendet wenn `identifierPolicy=custom`. -- `postCompactionSections`: optionale AGENTS.md-H2/H3-Abschnittsnamen, die nach der Compaction erneut injiziert werden. Standard ist `["Session Startup", "Red Lines"]`; setzen Sie `[]`, um die Reinjektion 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 Compaction-Zusammenfassung. Verwenden Sie dies, wenn die Hauptsitzung ein Modell behalten soll, Compaction-Zusammenfassungen aber mit einem anderen Modell laufen sollen; wenn nicht gesetzt, verwendet die Compaction das primäre Modell der Sitzung. -- `notifyUser`: wenn `true`, sendet beim Start der Compaction eine kurze Nachricht an den Benutzer (zum Beispiel „Compacting context...“). Standardmäßig deaktiviert, damit die Compaction still bleibt. -- `memoryFlush`: stiller agentischer Turn vor der automatischen Compaction, um dauerhafte Erinnerungen zu speichern. Wird übersprungen, wenn der Workspace schreibgeschützt ist. +- `mode`: `default` oder `safeguard` (chunkweise Zusammenfassung für lange Verläufe). Siehe [Compaction](/de/concepts/compaction). +- `provider`: ID eines registrierten Compaction-Provider-Plugins. Wenn gesetzt, wird `summarize()` des Providers statt der integrierten LLM-Zusammenfassung aufgerufen. Bei Fehlern wird auf die integrierte Methode zurückgefallen. Das Setzen eines Providers erzwingt `mode: "safeguard"`. Siehe [Compaction](/de/concepts/compaction). +- `timeoutSeconds`: maximale Anzahl von Sekunden für eine einzelne Compaction-Operation, bevor OpenClaw sie abbricht. Standard: `900`. +- `identifierPolicy`: `strict` (Standard), `off` oder `custom`. `strict` stellt bei der Compaction-Zusammenfassung integrierte Hinweise zur Beibehaltung opaker Kennungen voran. +- `identifierInstructions`: optionaler benutzerdefinierter Text zur Beibehaltung von Kennungen, verwendet bei `identifierPolicy=custom`. +- `postCompactionSections`: optionale H2/H3-Abschnittsnamen aus AGENTS.md, die nach der Compaction 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`: optionale Überschreibung `provider/model-id` nur für die Compaction-Zusammenfassung. Verwenden Sie dies, wenn die Hauptsitzung ein Modell behalten soll, Compaction-Zusammenfassungen aber auf einem anderen laufen sollen; wenn nicht gesetzt, verwendet Compaction das primäre Modell der Sitzung. +- `notifyUser`: wenn `true`, wird dem Benutzer beim Start der Compaction eine kurze Mitteilung gesendet (zum Beispiel „Kontext wird kompaktiert...“). Standardmäßig deaktiviert, um Compaction still zu halten. +- `memoryFlush`: stiller agentischer Turn vor automatischer Compaction, um dauerhafte Erinnerungen zu speichern. Wird übersprungen, wenn der Workspace schreibgeschützt ist. ### `agents.defaults.contextPruning` -Kürzt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor sie an das LLM gesendet werden. Ändert **nicht** den Sitzungsverlauf auf der Festplatte. +Beschneidet **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor sie an das LLM gesendet werden. Ändert **nicht** den Sitzungsverlauf auf der Festplatte. ```json5 { @@ -1213,7 +1251,7 @@ Kürzt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor sie an das LLM hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, - hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }, + hardClear: { enabled: true, placeholder: "[Inhalt altes Tool-Ergebnis gelöscht]" }, tools: { deny: ["browser", "canvas"] }, }, }, @@ -1223,23 +1261,23 @@ Kürzt **alte Tool-Ergebnisse** aus dem In-Memory-Kontext, bevor sie an das LLM -- `mode: "cache-ttl"` aktiviert Kürzungsdurchläufe. -- `ttl` steuert, wie oft die Kürzung erneut ausgeführt werden kann (nach dem letzten Cache-Touch). -- Beim Kürzen werden zunächst übergroße Tool-Ergebnisse weich gekürzt und bei Bedarf danach ältere Tool-Ergebnisse vollständig geleert. +- `mode: "cache-ttl"` aktiviert Beschneidungsläufe. +- `ttl` steuert, wie oft die Beschneidung erneut laufen darf (nach der letzten Cache-Berührung). +- Die Beschneidung beschneidet zuerst übergroße Tool-Ergebnisse sanft und löscht bei Bedarf danach ältere Tool-Ergebnisse vollständig. -**Weiche Kürzung** behält Anfang + Ende und fügt in der Mitte `...` ein. +**Sanftes Beschneiden** behält Anfang + Ende bei und fügt in der Mitte `...` ein. -**Vollständiges Leeren** ersetzt das gesamte Tool-Ergebnis durch den Platzhalter. +**Hartes Löschen** ersetzt das gesamte Tool-Ergebnis durch den Platzhalter. Hinweise: -- Bildblöcke werden niemals gekürzt oder geleert. -- Verhältnisse basieren auf Zeichen (ungefähr), nicht auf exakten Tokenzahlen. -- Wenn weniger als `keepLastAssistants` Assistant-Nachrichten vorhanden sind, wird die Kürzung übersprungen. +- Bildblöcke werden niemals beschnitten/gelöscht. +- Verhältnisse basieren auf Zeichen (ungefähr), nicht auf exakten Token-Zahlen. +- Wenn weniger als `keepLastAssistants` Assistentennachrichten vorhanden sind, wird die Beschneidung übersprungen. -Details zum Verhalten finden Sie unter [Session Pruning](/de/concepts/session-pruning). +Siehe [Sitzungsbeschneidung](/de/concepts/session-pruning) für Verhaltensdetails. ### Block-Streaming @@ -1257,13 +1295,13 @@ Details zum Verhalten finden Sie unter [Session Pruning](/de/concepts/session-pr } ``` -- Nicht-Telegram-Kanäle erfordern explizit `*.blockStreaming: true`, um Blockantworten zu aktivieren. -- Kanalüberschreibungen: `channels..blockStreamingCoalesce` (und kontoabhängige Varianten). Signal/Slack/Discord/Google Chat verwenden standardmäßig `minChars: 1500`. -- `humanDelay`: zufällige Pause zwischen Blockantworten. `natural` = 800–2500ms. Überschreibung pro Agent: `agents.list[].humanDelay`. +- Nicht-Telegram-Kanäle erfordern explizit `*.blockStreaming: true`, um Block-Antworten zu aktivieren. +- Kanal-Überschreibungen: `channels..blockStreamingCoalesce` (und Varianten pro Konto). 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`. -Verhalten + Chunking siehe [Streaming](/de/concepts/streaming). +Siehe [Streaming](/de/concepts/streaming) für Verhaltens- und Chunking-Details. -### Tippindikatoren +### Tipppindikatoren ```json5 { @@ -1276,16 +1314,16 @@ Verhalten + Chunking siehe [Streaming](/de/concepts/streaming). } ``` -- Standard: `instant` für Direktchats/Erwähnungen, `message` für nicht erwähnte Gruppenchats. -- Überschreibungen pro Sitzung: `session.typingMode`, `session.typingIntervalSeconds`. +- Standards: `instant` für Direktchats/Erwähnungen, `message` für Gruppenchats ohne Erwähnung. +- Pro-Sitzungs-Überschreibungen: `session.typingMode`, `session.typingIntervalSeconds`. -Siehe [Typing Indicators](/de/concepts/typing-indicators). +Siehe [Tipppindikatoren](/de/concepts/typing-indicators). ### `agents.defaults.sandbox` -Optionale Sandbox-Ausführung für den eingebetteten Agenten. Die vollständige Anleitung finden Sie unter [Sandboxing](/de/gateway/sandboxing). +Optionales Sandboxing für den eingebetteten Agenten. Siehe [Sandboxing](/de/gateway/sandboxing) für die vollständige Anleitung. ```json5 { @@ -1331,7 +1369,7 @@ Optionale Sandbox-Ausführung für den eingebetteten Agenten. Die vollständige identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", - // SecretRefs / Inline-Inhalte ebenfalls unterstützt: + // SecretRefs / Inline-Inhalte werden ebenfalls unterstützt: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, @@ -1384,48 +1422,48 @@ Optionale Sandbox-Ausführung für den eingebetteten Agenten. Die vollständige **Backend:** -- `docker`: lokales Docker-Runtime-System (Standard) -- `ssh`: generisches SSH-gestütztes Remote-Runtime-System -- `openshell`: OpenShell-Runtime-System +- `docker`: lokale Docker-Laufzeit (Standard) +- `ssh`: generische SSH-basierte Remote-Laufzeit +- `openshell`: OpenShell-Laufzeit -Wenn `backend: "openshell"` ausgewählt wird, werden laufzeitspezifische Einstellungen nach +Wenn `backend: "openshell"` ausgewählt ist, werden laufzeitspezifische Einstellungen nach `plugins.entries.openshell.config` verschoben. -**Konfiguration des SSH-Backends:** +**SSH-Backend-Konfiguration:** -- `target`: SSH-Ziel in der Form `user@host[:port]` +- `target`: SSH-Ziel in Form `user@host[:port]` - `command`: SSH-Client-Befehl (Standard: `ssh`) -- `workspaceRoot`: absolutes Remote-Root für workspaces pro Scope +- `workspaceRoot`: absolutes Remote-Root, das 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-Host-Key-Richtlinien +- `strictHostKeyChecking` / `updateHostKeys`: OpenSSH-Schalter für Host-Key-Richtlinien -**Priorität bei SSH-Authentifizierung:** +**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 Secrets-Laufzeit-Snapshot aufgelöst, bevor die Sandbox-Sitzung startet +- SecretRef-basierte `*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 dann den Remote-SSH-Workspace als kanonisch -- leitet `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 danach den Remote-SSH-Workspace als kanonisch bei +- leitet `exec`, Datei-Tools 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 schreib-/lesbar unter `/workspace` eingehängt +- `none`: Workspace pro Scope unter `~/.openclaw/sandboxes` +- `ro`: Sandbox-Workspace unter `/workspace`, Agent-Workspace schreibgeschützt unter `/agent` eingebunden +- `rw`: Agent-Workspace mit Lese-/Schreibzugriff unter `/workspace` eingebunden **Scope:** - `session`: Container + Workspace pro Sitzung - `agent`: ein Container + Workspace pro Agent (Standard) -- `shared`: gemeinsamer Container und gemeinsamer Workspace (keine sitzungsübergreifende Isolation) +- `shared`: gemeinsamer Container und gemeinsamer Workspace (keine sitzungsübergreifende Isolierung) **OpenShell-Plugin-Konfiguration:** @@ -1455,32 +1493,32 @@ Wenn `backend: "openshell"` ausgewählt wird, werden laufzeitspezifische Einstel **OpenShell-Modus:** -- `mirror`: initialisiert Remote vor `exec` aus lokalem Zustand, synchronisiert nach `exec` zurück; lokaler Workspace bleibt kanonisch -- `remote`: initialisiert Remote einmal bei Erstellung der Sandbox und hält danach den Remote-Workspace kanonisch +- `mirror`: Remote vor `exec` aus lokalem Stand initialisieren, nach `exec` zurücksynchronisieren; lokaler Workspace bleibt kanonisch +- `remote`: Remote einmal beim Erstellen der Sandbox initialisieren, danach bleibt der Remote-Workspace kanonisch -Im `remote`-Modus werden hostlokale Änderungen außerhalb von OpenClaw nach dem Initialisierungsschritt nicht automatisch in die Sandbox synchronisiert. -Der Transport erfolgt per SSH in die OpenShell-Sandbox, aber das Plugin übernimmt den Sandbox-Lebenszyklus und optionale Mirror-Synchronisierung. +Im `remote`-Modus 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 Lebenszyklus der Sandbox und die optionale Mirror-Synchronisierung. -**`setupCommand`** wird einmal nach Erstellung des Containers ausgeführt (über `sh -lc`). Benötigt Netzwerk-Egress, beschreibbares Root-Dateisystem und Root-Benutzer. +**`setupCommand`** läuft einmal nach dem Erstellen des Containers (über `sh -lc`). Benötigt ausgehenden Netzwerkzugriff, beschreibbares Root und Root-Benutzer. -**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). +**Container verwenden standardmäßig `network: "none"`** — setzen Sie `"bridge"` (oder ein benutzerdefiniertes Bridge-Netzwerk), wenn der Agent ausgehenden Zugriff benötigt. +`"host"` ist blockiert. `"container:"` ist standardmäßig blockiert, sofern Sie nicht explizit +`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` setzen (Break-Glass). -**Eingehende Anhänge** werden unter `media/inbound/*` im aktiven Workspace bereitgestellt. +**Eingehende Anhänge** werden in `media/inbound/*` im aktiven Workspace abgelegt. -**`docker.binds`** bindet zusätzliche Host-Verzeichnisse ein; globale und agentbezogene Bindings werden zusammengeführt. +**`docker.binds`** bindet zusätzliche Host-Verzeichnisse ein; globale und pro-Agent-Binds werden zusammengeführt. -**Sandbox-Browser** (`sandbox.browser.enabled`): Chromium + CDP in einem Container. Die noVNC-URL wird in den System-Prompt injiziert. Erfordert kein `browser.enabled` in `openclaw.json`. -Der noVNC-Beobachterzugriff verwendet standardmäßig VNC-Authentifizierung und OpenClaw erzeugt eine kurzlebige Token-URL (statt das Passwort in der gemeinsam genutzten URL offenzulegen). +**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP in einem Container. Die noVNC-URL wird in den Systemprompt injiziert. Erfordert kein `browser.enabled` in `openclaw.json`. +noVNC-Beobachterzugriff verwendet standardmäßig VNC-Authentifizierung, und OpenClaw erzeugt eine kurzlebige Token-URL (anstatt das Passwort in der geteilten URL offenzulegen). -- `allowHostControl: false` (Standard) blockiert, dass Sandbox-Sitzungen den Host-Browser ansprechen. -- `network` ist standardmäßig `openclaw-sandbox-browser` (dediziertes Bridge-Netzwerk). Setzen Sie es nur auf `bridge`, wenn Sie ausdrücklich globale Bridge-Konnektivität möchten. -- `cdpSourceRange` kann optional CDP-Eingang am Containerrand auf einen CIDR-Bereich beschränken (zum Beispiel `172.21.0.1/32`). +- `allowHostControl: false` (Standard) blockiert, dass sandboxierte Sitzungen den Host-Browser ansteuern. +- `network` ist standardmäßig `openclaw-sandbox-browser` (dediziertes Bridge-Netzwerk). Setzen Sie `bridge` nur, wenn Sie ausdrücklich globale Bridge-Konnektivität wünschen. +- `cdpSourceRange` kann den CDP-Zugang am Containerrand optional 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=` + - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` - `--no-first-run` - `--no-default-browser-check` @@ -1505,12 +1543,12 @@ Der noVNC-Beobachterzugriff verwendet standardmäßig VNC-Authentifizierung und `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. - - Standardwerte bilden die Basis des Container-Images; verwenden Sie ein benutzerdefiniertes Browser-Image mit eigenem - Entrypoint, um Container-Standards zu ändern. + - Standards sind die Basis des Container-Images; verwenden Sie ein benutzerdefiniertes Browser-Image mit einem benutzerdefinierten + Entry-Point, um Container-Standards zu ändern. -Browser-Sandboxing und `sandbox.docker.binds` sind derzeit nur mit Docker verfügbar. +Browser-Sandboxing und `sandbox.docker.binds` sind derzeit nur für Docker verfügbar. Images bauen: @@ -1519,7 +1557,7 @@ scripts/sandbox-setup.sh # Haupt-Sandbox-Image scripts/sandbox-browser-setup.sh # optionales Browser-Image ``` -### `agents.list` (Überschreibungen pro Agent) +### `agents.list` (agentbezogene Überschreibungen) ```json5 { @@ -1528,18 +1566,18 @@ scripts/sandbox-browser-setup.sh # optionales Browser-Image { id: "main", default: true, - name: "Main Agent", + name: "Hauptagent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // oder { primary, fallbacks } - thinkingDefault: "high", // Überschreibung der Thinking-Stufe pro Agent - reasoningDefault: "on", // Überschreibung der Sichtbarkeit von Reasoning pro Agent - fastModeDefault: false, // Überschreibung des Fast-Modus pro Agent - params: { cacheRetention: "none" }, // überschreibt passende defaults.models-Parameter nach Schlüssel + thinkingDefault: "high", // agentbezogene Überschreibung der Thinking-Stufe + reasoningDefault: "on", // agentbezogene Überschreibung der Sichtbarkeit von Reasoning + fastModeDefault: false, // agentbezogene Überschreibung des Schnellmodus + params: { cacheRetention: "none" }, // überschreibt passende defaults.models-Parameter pro Schlüssel skills: ["docs-search"], // ersetzt agents.defaults.skills, wenn gesetzt identity: { name: "Samantha", - theme: "helpful sloth", + theme: "hilfreiches Faultier", emoji: "🦥", avatar: "avatars/samantha.png", }, @@ -1568,25 +1606,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 Standard. -- `model`: String-Form überschreibt nur `primary`; die Objektform `{ primary, fallbacks }` überschreibt beide (`[]` deaktiviert globale Fallbacks). Cron-Jobs, die nur `primary` überschreiben, erben weiterhin Standard-Fallbacks, sofern Sie nicht `fallbacks: []` setzen. -- `params`: streambezogene Parameter pro Agent, zusammengeführt über den ausgewählten Modelleintrag in `agents.defaults.models`. 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`: optionale Standard-Thinking-Stufe 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 für Reasoning pro Agent (`on | off | stream`). Gilt, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. -- `fastModeDefault`: optionale Standardeinstellung für den Fast-Modus pro Agent (`true | false`). Gilt, wenn keine Überschreibung 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 der erste (Warnung wird protokolliert). Wenn keiner 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`: agentbezogene Stream-Parameter, zusammengeführt über dem ausgewählten Modelleintrag in `agents.defaults.models`. Verwenden Sie dies für agentenspezifische Überschreibungen wie `cacheRetention`, `temperature` oder `maxTokens`, ohne den gesamten Modellkatalog zu duplizieren. +- `skills`: optionale agentbezogene Skill-Erlaubnisliste. Wenn weggelassen, erbt der Agent `agents.defaults.skills`, falls gesetzt; eine explizite Liste ersetzt Standards statt sie zusammenzuführen, und `[]` bedeutet keine Skills. +- `thinkingDefault`: optionale agentbezogene Standard-Thinking-Stufe (`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 agentbezogene Standardsichtbarkeit für Reasoning (`on | off | stream`). Gilt, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. +- `fastModeDefault`: optionale agentbezogene Standardeinstellung für den Schnellmodus (`true | false`). Gilt, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist. +- `runtime`: optionaler agentbezogener Laufzeitdeskriptor. 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 Standardwerte ab: `ackReaction` aus `emoji`, `mentionPatterns` aus `name`/`emoji`. -- `subagents.allowAgents`: Allowlist von Agent-IDs für `sessions_spawn` (`["*"]` = beliebig; Standard: nur derselbe Agent). -- Guardrail für Sandbox-Vererbung: wenn die anfordernde Sitzung in einer Sandbox läuft, lehnt `sessions_spawn` Ziele ab, die unsandboxed laufen würden. +- `identity` leitet Standards ab: `ackReaction` aus `emoji`, `mentionPatterns` aus `name`/`emoji`. +- `subagents.allowAgents`: Erlaubnisliste von Agent-IDs für `sessions_spawn` (`["*"]` = beliebig; Standard: nur derselbe Agent). +- Schutz vor Sandbox-Vererbung: Wenn die anfragende Sitzung sandboxiert ist, lehnt `sessions_spawn` Ziele ab, die unsandboxiert laufen würden. - `subagents.requireAgentId`: wenn true, blockiert `sessions_spawn` Aufrufe ohne `agentId` (erzwingt explizite Profilauswahl; Standard: false). --- ## Multi-Agent-Routing -Mehrere isolierte Agenten innerhalb eines Gateway ausführen. Siehe [Multi-Agent](/de/concepts/multi-agent). +Führen Sie mehrere isolierte Agenten innerhalb eines Gateways aus. Siehe [Multi-Agent](/de/concepts/multi-agent). ```json5 { @@ -1603,7 +1641,7 @@ Mehrere isolierte Agenten innerhalb eines Gateway ausführen. Siehe [Multi-Agent } ``` -### Felder für Binding-Matches +### Binding-Match-Felder - `type` (optional): `route` für normales Routing (fehlender Typ entspricht route), `acp` für persistente ACP-Konversations-Bindings. - `match.channel` (erforderlich) @@ -1619,11 +1657,11 @@ Mehrere isolierte Agenten innerhalb eines Gateway ausführen. Siehe [Multi-Agent 3. `match.teamId` 4. `match.accountId` (exakt, ohne peer/guild/team) 5. `match.accountId: "*"` (kanalweit) -6. Standard-Agent +6. Standardagent -Innerhalb jeder Stufe gewinnt der erste passende Eintrag in `bindings`. +Innerhalb jeder Stufe gewinnt der erste passende `bindings`-Eintrag. -Bei Einträgen mit `type: "acp"` löst OpenClaw nach exakter Konversationsidentitä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 über die exakte Konversationsidentität auf (`match.channel` + Konto + `match.peer.id`) und verwendet nicht die obige Stufenreihenfolge für Route-Bindings. ### Zugriffsprofile pro Agent @@ -1720,7 +1758,7 @@ Bei Einträgen mit `type: "acp"` löst OpenClaw nach exakter Konversationsidenti -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 Prioritätsdetails. --- @@ -1746,7 +1784,7 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", - parentForkMaxTokens: 100000, // Parent-Thread-Fork oberhalb dieses Token-Zählers überspringen (0 deaktiviert) + parentForkMaxTokens: 100000, // über diesem Token-Count keinen Eltern-Thread-Fork (0 deaktiviert) maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", @@ -1758,7 +1796,7 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ }, threadBindings: { enabled: true, - idleHours: 24, // Standard für automatisches Entfokussieren nach Inaktivität in Stunden (`0` deaktiviert) + idleHours: 24, // Standard für automatische Defokussierung bei Inaktivität in Stunden (`0` deaktiviert) maxAgeHours: 0, // Standard für maximales Alter in Stunden (`0` deaktiviert) }, mainKey: "main", // Legacy (Laufzeit verwendet immer "main") @@ -1773,35 +1811,35 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ -- **`scope`**: grundlegende Strategie zur Gruppierung von Sitzungen für Gruppenchats. - - `per-sender` (Standard): jeder Absender erhält innerhalb eines Kanalkontexts eine isolierte Sitzung. +- **`scope`**: Basisstrategie für die Gruppierung von Sitzungen in Gruppenchats. + - `per-sender` (Standard): jeder Sender erhält innerhalb eines Kanalkontexts eine isolierte Sitzung. - `global`: alle Teilnehmer in einem Kanalkontext teilen sich eine gemeinsame Sitzung (nur verwenden, wenn gemeinsamer Kontext beabsichtigt ist). - **`dmScope`**: wie DMs gruppiert werden. - - `main`: alle DMs teilen sich die Hauptsitzung. - - `per-peer`: Isolierung nach Absender-ID über Kanäle hinweg. - - `per-channel-peer`: Isolierung pro Kanal + Absender (empfohlen für Multi-User-Posteingänge). - - `per-account-channel-peer`: Isolierung pro Konto + Kanal + Absender (empfohlen für Multi-Account). -- **`identityLinks`**: ordnet kanonische IDs provider-präfixierten Peers zu, um kanalübergreifende Sitzungsfreigabe zu ermöglichen. -- **`reset`**: primäre Reset-Richtlinie. `daily` setzt bei `atHour` lokaler Zeit zurück; `idle` nach `idleMinutes`. Wenn beides konfiguriert ist, gewinnt das zuerst ablaufende. -- **`resetByType`**: Überschreibungen pro Typ (`direct`, `group`, `thread`). Das ältere `dm` wird als Alias für `direct` akzeptiert. -- **`parentForkMaxTokens`**: maximal erlaubte `totalTokens` der Parent-Sitzung beim Erstellen einer geforkten Thread-Sitzung (Standard `100000`). - - Wenn `totalTokens` des Parent über diesem Wert liegt, startet OpenClaw eine frische Thread-Sitzung, statt den Gesprächsverlauf des Parent zu übernehmen. - - Setzen Sie `0`, um diese Schutzmaßnahme zu deaktivieren und Parent-Forking immer zuzulassen. -- **`mainKey`**: Legacy-Feld. Die Laufzeit verwendet jetzt immer `"main"` für den Haupt-Bucket direkter Chats. -- **`agentToAgent.maxPingPongTurns`**: maximale Anzahl von Antwort-Turns 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 Legacy-Alias `dm`), `keyPrefix` oder `rawKeyPrefix`. Die erste Verweigerung gewinnt. + - `main`: alle DMs teilen die Hauptsitzung. + - `per-peer`: isoliert nach Sender-ID über Kanäle hinweg. + - `per-channel-peer`: isoliert pro Kanal + Sender (empfohlen für Multi-User-Posteingänge). + - `per-account-channel-peer`: isoliert pro Konto + Kanal + Sender (empfohlen für Multi-Account). +- **`identityLinks`**: Zuordnung kanonischer IDs zu providerpräfixierten Peers für kanalübergreifendes Teilen von Sitzungen. +- **`reset`**: primäre Reset-Richtlinie. `daily` setzt bei `atHour` lokaler Zeit zurück; `idle` setzt nach `idleMinutes` zurück. Wenn beide konfiguriert sind, gilt diejenige, die zuerst abläuft. +- **`resetByType`**: Überschreibungen pro Typ (`direct`, `group`, `thread`). Das alte `dm` wird als Alias für `direct` akzeptiert. +- **`parentForkMaxTokens`**: maximal erlaubte `totalTokens` der Elternsitzung beim Erstellen einer geforkten Thread-Sitzung (Standard `100000`). + - Wenn die `totalTokens` des Elternteils über diesem Wert liegen, startet OpenClaw eine frische Thread-Sitzung, statt den Gesprächsverlauf des Elternteils zu erben. + - Setzen Sie `0`, um diese Schutzfunktion zu deaktivieren und immer Eltern-Forks zu erlauben. +- **`mainKey`**: Legacy-Feld. Die Laufzeit verwendet jetzt immer `"main"` für den Haupt-Bucket im Direktchat. +- **`agentToAgent.maxPingPongTurns`**: maximale Anzahl von Antwort-Rückantwort-Turns zwischen Agenten bei Agent-zu-Agent-Austausch (Ganzzahl, Bereich: `0`–`5`). `0` deaktiviert Ping-Pong-Ketten. +- **`sendPolicy`**: Match nach `channel`, `chatType` (`direct|group|channel`, mit altem Alias `dm`), `keyPrefix` oder `rawKeyPrefix`. Erste Ablehnung gewinnt. - **`maintenance`**: Bereinigung + Aufbewahrungssteuerung für den Sitzungs-Store. - `mode`: `warn` gibt nur Warnungen aus; `enforce` wendet Bereinigung an. - `pruneAfter`: Altersgrenze für veraltete Einträge (Standard `30d`). - `maxEntries`: maximale Anzahl von Einträgen in `sessions.json` (Standard `500`). - - `rotateBytes`: rotiert `sessions.json`, wenn diese Größe überschritten wird (Standard `10mb`). - - `resetArchiveRetention`: Aufbewahrung für `*.reset.`-Archivtranskripte. 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 Bereinigung des Budgets. 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 Entfokussieren nach Inaktivität in Stunden (`0` deaktiviert; Anbieter können überschreiben) - - `maxAgeHours`: Standard für maximales Alter in Stunden (`0` deaktiviert; Anbieter können überschreiben) + - `rotateBytes`: rotiert `sessions.json`, wenn es diese Größe überschreitet (Standard `10mb`). + - `resetArchiveRetention`: Aufbewahrung für `*.reset.`-Transkriptarchive. Standardmäßig gleich `pruneAfter`; setzen Sie `false`, um 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 der Budget-Bereinigung. Standardmäßig `80%` von `maxDiskBytes`. +- **`threadBindings`**: globale Standards für threadgebundene Sitzungsfunktionen. + - `enabled`: globaler Standard-Schalter (Provider können überschreiben; Discord verwendet `channels.discord.threadBindings.enabled`) + - `idleHours`: Standard für automatische Defokussierung bei Inaktivität in Stunden (`0` deaktiviert; Provider können überschreiben) + - `maxAgeHours`: Standard für maximales Alter in Stunden (`0` deaktiviert; Provider können überschreiben) @@ -1837,38 +1875,38 @@ Details zur Priorität finden Sie unter [Multi-Agent Sandbox & Tools](/de/tools/ } ``` -### Antwortpräfix +### Antwort-Präfix Überschreibungen pro Kanal/Konto: `channels..responsePrefix`, `channels..accounts..responsePrefix`. Auflösung (spezifischstes gewinnt): Konto → Kanal → global. `""` deaktiviert und stoppt die Kaskade. `"auto"` leitet `[{identity.name}]` ab. -**Template-Variablen:** +**Vorlagenvariablen:** | Variable | Beschreibung | Beispiel | | ----------------- | --------------------- | --------------------------- | | `{model}` | Kurzer Modellname | `claude-opus-4-6` | -| `{modelFull}` | Vollständiger Modellbezeichner | `anthropic/claude-opus-4-6` | +| `{modelFull}` | Vollständige Modellkennung | `anthropic/claude-opus-4-6` | | `{provider}` | Provider-Name | `anthropic` | | `{thinkingLevel}` | Aktuelle Thinking-Stufe | `high`, `low`, `off` | -| `{identity.name}` | Name der Agent-Identität | (entspricht `"auto"`) | +| `{identity.name}` | Name der Agentenidentität | (gleich wie `"auto"`) | -Variablen werden ohne Beachtung der Groß-/Kleinschreibung behandelt. `{think}` ist ein Alias für `{thinkingLevel}`. +Variablen sind nicht case-sensitiv. `{think}` ist ein Alias für `{thinkingLevel}`. -### Ack-Reaktion +### Bestätigungsreaktion -- Standardmäßig `identity.emoji` des aktiven Agenten, andernfalls `"👀"`. Setzen Sie `""`, um zu deaktivieren. +- Standardmäßig das `identity.emoji` des aktiven Agenten, sonst `"👀"`. Setzen Sie `""`, um zu deaktivieren. - Überschreibungen pro Kanal: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Auflösungsreihenfolge: Konto → Kanal → `messages.ackReaction` → Identity-Fallback. +- Reihenfolge der Auflösung: Konto → Kanal → `messages.ackReaction` → Identity-Fallback. - Scope: `group-mentions` (Standard), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: entfernt die Ack-Reaktion nach der Antwort auf Slack, Discord und Telegram. -- `messages.statusReactions.enabled`: aktiviert Lebenszyklus-Statusreaktionen auf Slack, Discord und Telegram. - Auf Slack und Discord bleiben Statusreaktionen bei nicht gesetztem Wert aktiviert, wenn Ack-Reaktionen aktiv sind. - Auf Telegram müssen Sie es explizit auf `true` setzen, um Lebenszyklus-Statusreaktionen zu aktivieren. +- `removeAckAfterReply`: entfernt die Bestätigung 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. + Bei Telegram müssen Sie es explizit auf `true` setzen, um Lifecycle-Statusreaktionen zu aktivieren. -### Inbound-Debounce +### Entprellung eingehender Nachrichten -Fasst schnelle textbasierte Nachrichten desselben Absenders in einen einzelnen Agent-Turn zusammen. Medien/Anhänge werden sofort geleert. Steuerbefehle umgehen das Debouncing. +Bündelt schnelle reine Textnachrichten desselben Senders zu einem einzigen Agent-Turn. Medien/Anhänge leeren sofort. Steuerbefehle umgehen die Entprellung. ### TTS (Text-to-Speech) @@ -1911,18 +1949,18 @@ Fasst schnelle textbasierte Nachrichten desselben Absenders in einen einzelnen A } ``` -- `auto` steuert Auto-TTS. `/tts off|always|inbound|tagged` überschreibt pro Sitzung. -- `summaryModel` überschreibt `agents.defaults.model.primary` für automatische Zusammenfassung. +- `auto` steuert den Standard-Auto-TTS-Modus: `off`, `always`, `inbound` oder `tagged`. `/tts on|off` kann lokale Präferenzen überschreiben, und `/tts status` zeigt den effektiven Zustand. +- `summaryModel` überschreibt `agents.defaults.model.primary` für die automatische Zusammenfassung. - `modelOverrides` ist standardmäßig aktiviert; `modelOverrides.allowProvider` ist standardmäßig `false` (Opt-in). -- API-Schlüssel 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 ist Konfiguration, dann `OPENAI_TTS_BASE_URL`, dann `https://api.openai.com/v1`. -- Wenn `openai.baseUrl` auf einen Nicht-OpenAI-Endpunkt verweist, behandelt OpenClaw ihn als OpenAI-kompatiblen TTS-Server und lockert die Modell-/Stimmenvalidierung. +- Wenn `openai.baseUrl` auf einen Nicht-OpenAI-Endpunkt zeigt, behandelt OpenClaw ihn als OpenAI-kompatiblen TTS-Server und lockert die Modell-/Stimmenvalidierung. --- ## Talk -Standardwerte für den Talk-Modus (macOS/iOS/Android). +Standardeinstellungen für den Talk-Modus (macOS/iOS/Android). ```json5 { @@ -1946,13 +1984,13 @@ Standardwerte für den Talk-Modus (macOS/iOS/Android). } ``` -- `talk.provider` muss zu einem Schlüssel in `talk.providers` passen, wenn mehrere Talk-Provider konfiguriert sind. -- Ältere 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. +- `talk.provider` muss bei mehreren konfigurierten Talk-Providern einem Schlüssel in `talk.providers` entsprechen. +- Alte 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. - 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-Schlüssel konfiguriert ist. -- `providers.*.voiceAliases` erlaubt Talk-Anweisungen die Verwendung benutzerfreundlicher Namen. -- `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` ermöglicht Talk-Anweisungen die Verwendung freundlicher Namen. +- `silenceTimeoutMs` steuert, wie lange der Talk-Modus nach Benutzerstille wartet, bevor das Transkript gesendet wird. Nicht gesetzt behält das plattformspezifische Standard-Pausenfenster bei (`700 ms auf macOS und Android, 900 ms auf iOS`). --- @@ -1960,37 +1998,37 @@ Standardwerte für den Talk-Modus (macOS/iOS/Android). ### Tool-Profile -`tools.profile` setzt eine Basis-Allowlist vor `tools.allow`/`tools.deny`: +`tools.profile` setzt eine Basis-Erlaubnisliste vor `tools.allow`/`tools.deny`: -Lokales Onboarding setzt neue lokale Konfigurationen standardmäßig auf `tools.profile: "coding"`, wenn es nicht gesetzt ist (bestehende explizite Profile bleiben erhalten). +Lokales Onboarding setzt für neue lokale Konfigurationen standardmäßig `tools.profile: "coding"`, wenn nicht gesetzt (bestehende explizite Profile bleiben erhalten). | 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 (entspricht nicht gesetzt) | +| `full` | Keine Einschränkung (wie nicht gesetzt) | ### Tool-Gruppen -| Gruppe | Tools | -| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| Gruppe | Tools | +| ------------------ | ---------------------------------------------------------------------------------------------------------------------- | | `group:runtime` | `exec`, `process`, `code_execution` (`bash` wird als Alias für `exec` akzeptiert) | -| `group:fs` | `read`, `write`, `edit`, `apply_patch` | +| `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 integrierten Tools (ohne Provider-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 integrierten Tools (ohne Provider-Plugins) | ### `tools.allow` / `tools.deny` -Globale Allow-/Deny-Richtlinie für Tools (Deny gewinnt). Groß-/Kleinschreibung wird ignoriert, `*`-Wildcards werden unterstützt. Wird auch angewendet, wenn die Docker-Sandbox deaktiviert ist. +Globale Tool-Erlauben-/Ablehnen-Richtlinie (Ablehnen gewinnt). Groß-/Kleinschreibung wird ignoriert, `*`-Wildcards werden unterstützt. Gilt auch, wenn die Docker-Sandbox deaktiviert ist. ```json5 { @@ -2032,9 +2070,9 @@ Steuert erhöhten Exec-Zugriff außerhalb der Sandbox: } ``` -- Die Überschreibung pro Agent (`agents.list[].tools.elevated`) kann nur weiter einschränken. -- `/elevated on|off|ask|full` speichert den Zustand pro Sitzung; Inline-Direktiven gelten nur für eine einzelne Nachricht. -- Erhöhtes `exec` umgeht die Sandbox 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 Zustand pro Sitzung; Inline-Anweisungen gelten 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). ### `tools.exec` @@ -2058,8 +2096,8 @@ Steuert erhöhten Exec-Zugriff außerhalb der Sandbox: ### `tools.loopDetection` -Sicherheitsprüfungen für Tool-Schleifen sind standardmäßig **deaktiviert**. Setzen Sie `enabled: true`, um die Erkennung zu aktivieren. -Einstellungen können global unter `tools.loopDetection` definiert und pro Agent unter `agents.list[].tools.loopDetection` überschrieben werden. +Sicherheitsprüfungen für 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 { @@ -2080,12 +2118,12 @@ Einstellungen können global unter `tools.loopDetection` definiert und pro Agent } ``` -- `historySize`: maximaler Tool-Call-Verlauf, der für die Schleifenanalyse gespeichert wird. +- `historySize`: maximale Tool-Call-Historie, die für Schleifenanalyse beibehalten wird. - `warningThreshold`: Schwellenwert für Warnungen bei wiederholten Mustern ohne Fortschritt. - `criticalThreshold`: höherer Wiederholungsschwellenwert zum Blockieren kritischer Schleifen. -- `globalCircuitBreakerThreshold`: harter Stoppschwellenwert für jeden Lauf ohne Fortschritt. +- `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 Polling-Tools ohne Fortschritt (`process.poll`, `command_status` usw.). +- `detectors.knownPollNoProgress`: warnt/blockiert bei bekannten Poll-Tools (`process.poll`, `command_status` usw.). - `detectors.pingPong`: warnt/blockiert bei alternierenden Paarmustern ohne Fortschritt. - Wenn `warningThreshold >= criticalThreshold` oder `criticalThreshold >= globalCircuitBreakerThreshold`, schlägt die Validierung fehl. @@ -2121,7 +2159,7 @@ Einstellungen können global unter `tools.loopDetection` definiert und pro Agent ### `tools.media` -Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): +Konfiguriert das Verständnis eingehender Medien (Bild/Audio/Video): ```json5 { @@ -2129,7 +2167,7 @@ Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): media: { concurrency: 2, asyncCompletion: { - directSend: false, // Opt-in: abgeschlossene asynchrone Musik-/Videos direkt in den Kanal senden + directSend: false, // Opt-in: fertige asynchrone Musik-/Videos direkt in den Kanal senden }, audio: { enabled: true, @@ -2153,22 +2191,22 @@ Konfiguriert das Verstehen eingehender Medien (Bild/Audio/Video): } ``` - + **Provider-Eintrag** (`type: "provider"` oder weggelassen): - `provider`: API-Provider-ID (`openai`, `anthropic`, `google`/`gemini`, `groq` usw.) - `model`: Überschreibung der Modell-ID -- `profile` / `preferredProfile`: Profilauswahl für `auth-profiles.json` +- `profile` / `preferredProfile`: Auswahl des Profils in `auth-profiles.json` **CLI-Eintrag** (`type: "cli"`): -- `command`: ausführbares Programm -- `args`: templatebasierte Argumente (unterstützt `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` usw.) +- `command`: auszuführende ausführbare Datei +- `args`: vorlagenbasierte Argumente (unterstützt `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` usw.) **Gemeinsame Felder:** -- `capabilities`: optionale Liste (`image`, `audio`, `video`). Standardwerte: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. +- `capabilities`: optionale Liste (`image`, `audio`, `video`). Standards: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. - `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: Überschreibungen pro Eintrag. - Bei Fehlern wird auf den nächsten Eintrag zurückgefallen. @@ -2176,9 +2214,9 @@ Die Provider-Authentifizierung folgt der Standardreihenfolge: `auth-profiles.jso **Felder für asynchronen Abschluss:** -- `asyncCompletion.directSend`: wenn `true`, versuchen abgeschlossene asynchrone Aufgaben von `music_generate` - und `video_generate` zuerst direkte Kanalzustellung. Standard: `false` - (alter Pfad mit Aufwecken der anfragenden Sitzung/Modellzustellung). +- `asyncCompletion.directSend`: wenn `true`, versuchen abgeschlossene asynchrone `music_generate`- + und `video_generate`-Aufgaben zuerst direkte Kanalzustellung. Standard: `false` + (altes Pfadmodell mit Anfragender-Sitzung-Wake/Modell-Zustellung). @@ -2197,9 +2235,9 @@ Die Provider-Authentifizierung folgt der Standardreihenfolge: `auth-profiles.jso ### `tools.sessions` -Steuert, welche Sitzungen mit den Session-Tools (`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 gestartete Sitzungen, wie Subagents). +Standard: `tree` (aktuelle Sitzung + von ihr gestartete Sitzungen, etwa Subagenten). ```json5 { @@ -2215,14 +2253,14 @@ Standard: `tree` (aktuelle Sitzung + von ihr gestartete Sitzungen, wie Subagents Hinweise: - `self`: nur der aktuelle Sitzungsschlüssel. -- `tree`: aktuelle Sitzung + von der aktuellen Sitzung gestartete Sitzungen (Subagents). -- `agent`: jede Sitzung, die zur aktuellen Agent-ID gehört (kann andere Benutzer umfassen, wenn Sie Sitzungen pro Absender unter derselben Agent-ID ausführen). -- `all`: jede Sitzung. Kanalübergreifendes Targeting von Agenten erfordert weiterhin `tools.agentToAgent`. -- Sandbox-Beschränkung: 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"` ist. +- `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 Sender-pro-Sitzung unter derselben Agent-ID ausführen). +- `all`: jede Sitzung. Agentübergreifendes Targeting erfordert weiterhin `tools.agentToAgent`. +- Sandbox-Klammerung: Wenn die aktuelle Sitzung sandboxiert ist und `agents.defaults.sandbox.sessionToolsVisibility="spawned"` gilt, wird die Sichtbarkeit auf `tree` erzwungen, selbst wenn `tools.sessions.visibility="all"` ist. ### `tools.sessions_spawn` -Steuert die Unterstützung für Inline-Anhänge bei `sessions_spawn`. +Steuert die Unterstützung von Inline-Anhängen für `sessions_spawn`. ```json5 { @@ -2242,16 +2280,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 weist sie zurück. +- Anhänge werden nur für `runtime: "subagent"` unterstützt. ACP-Laufzeit lehnt sie ab. - Dateien werden im Child-Workspace unter `.openclaw/attachments//` mit einer `.manifest.json` materialisiert. -- Anhangsinhalte werden automatisch aus der Persistenz des Transkripts redigiert. -- Base64-Eingaben werden mit strikter Alphabet-/Padding-Prüfung und einer Größenprüfung vor dem Dekodieren validiert. +- Der Inhalt von Anhängen wird automatisch aus der Transkriptpersistenz redigiert. +- Base64-Eingaben werden mit strikten Alphabet-/Padding-Prüfungen und einer Vorab-Größenprüfung vor dem Dekodieren validiert. - Dateiberechtigungen sind `0700` für Verzeichnisse und `0600` für Dateien. -- Die Bereinigung folgt der Richtlinie `cleanup`: `delete` entfernt Anhänge immer; `keep` behält sie nur, wenn `retainOnSessionKeep: true`. +- Die Bereinigung folgt der `cleanup`-Richtlinie: `delete` entfernt Anhänge immer; `keep` behält sie nur, wenn `retainOnSessionKeep: true`. ### `tools.experimental` -Experimentelle Flags für integrierte Tools. Standardmäßig aus, sofern keine runtimespezifische Auto-Aktivierungsregel greift. +Experimentelle integrierte Tool-Flags. Standardmäßig aus, außer wenn eine laufzeitspezifische Auto-Aktivierungsregel greift. ```json5 { @@ -2265,9 +2303,9 @@ Experimentelle Flags für integrierte Tools. Standardmäßig aus, sofern keine r Hinweise: -- `planTool`: aktiviert das strukturierte Tool `update_plan` zur Nachverfolgung nicht trivialer 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 umfangreichere Arbeit verwendet und höchstens einen Schritt als `in_progress` markiert. +- `planTool`: aktiviert das strukturierte `update_plan`-Tool für das Tracking nicht-trivialer mehrstufiger Arbeit. +- Standard: `false` für Nicht-OpenAI-Provider. OpenAI- und OpenAI-Codex-Läufe aktivieren es automatisch, wenn nicht gesetzt; setzen Sie `false`, um diese automatische Aktivierung zu deaktivieren. +- Wenn aktiviert, fügt der Systemprompt auch Nutzungshinweise hinzu, sodass das Modell es nur für substanzielle Arbeit verwendet und höchstens einen Schritt `in_progress` hält. ### `agents.defaults.subagents` @@ -2287,8 +2325,8 @@ Hinweise: } ``` -- `model`: Standardmodell für gestartete Sub-Agents. Wenn weggelassen, erben Sub-Agents das Modell des Aufrufers. -- `allowAgents`: Standard-Allowlist von Ziel-Agent-IDs für `sessions_spawn`, wenn der anfordernde Agent nicht `subagents.allowAgents` selbst setzt (`["*"]` = beliebig; Standard: nur derselbe Agent). +- `model`: Standardmodell für gestartete Sub-Agenten. Wenn weggelassen, erben Sub-Agenten das Modell des Aufrufers. +- `allowAgents`: Standard-Erlaubnisliste für Ziel-Agent-IDs für `sessions_spawn`, wenn der anfragende Agent keine 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`. @@ -2326,46 +2364,46 @@ OpenClaw verwendet den integrierten Modellkatalog. Fügen Sie benutzerdefinierte ``` - 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 älteren Alias für die Umgebungsvariable). -- Priorität beim Zusammenführen für übereinstimmende Provider-IDs: - - Nicht leere `baseUrl`-Werte in `models.json` des Agenten haben Vorrang. - - Nicht leere `apiKey`-Werte des Agenten haben nur dann Vorrang, wenn dieser Provider im aktuellen Konfigurations-/Auth-Profile-Kontext nicht per SecretRef verwaltet wird. - - `apiKey`-Werte von per SecretRef verwalteten Providern werden aus Herkunftsmarkierungen aktualisiert (`ENV_VAR_NAME` für Env-Refs, `secretref-managed` für File-/Exec-Refs), statt aufgelöste Secrets zu persistieren. - - Header-Werte von per SecretRef verwalteten Providern werden aus Herkunftsmarkierungen aktualisiert (`secretref-env:ENV_VAR_NAME` für Env-Refs, `secretref-managed` für File-/Exec-Refs). - - Leere oder fehlende `apiKey`/`baseUrl` des Agenten fallen auf `models.providers` in der Konfiguration zurück. - - Für übereinstimmende Modelle verwenden `contextWindow`/`maxTokens` den höheren Wert aus expliziter Konfiguration und impliziten Katalogwerten. - - Für übereinstimmende Modelle behält `contextTokens` eine explizite Laufzeitbegrenzung bei, sofern vorhanden; verwenden Sie dies, um den effektiven Kontext zu begrenzen, ohne native Modellmetadaten zu ändern. - - Verwenden Sie `models.mode: "replace"`, wenn Sie möchten, dass die Konfiguration `models.json` vollständig überschreibt. - - Die Persistenz von Markierungen ist quellenautoritativ: Markierungen werden aus dem aktiven Quellkonfigurations-Snapshot (vor Auflösung) geschrieben, nicht aus aufgelösten Laufzeit-Secret-Werten. +- Überschreiben Sie das Root der Agentenkonfiguration mit `OPENCLAW_AGENT_DIR` (oder `PI_CODING_AGENT_DIR`, ein alter Alias für Umgebungsvariablen). +- Merge-Priorität für passende Provider-IDs: + - Nicht-leere `baseUrl`-Werte in agentbezogenem `models.json` gewinnen. + - Nicht-leere agentbezogene `apiKey`-Werte gewinnen nur dann, wenn dieser Provider im aktuellen Konfigurations-/Auth-Profile-Kontext nicht durch SecretRef verwaltet wird. + - SecretRef-verwaltete Provider-`apiKey`-Werte werden aus Quellmarkern aktualisiert (`ENV_VAR_NAME` für Env-Refs, `secretref-managed` für Datei-/Exec-Refs), statt aufgelöste Secrets zu persistieren. + - SecretRef-verwaltete Provider-Header-Werte werden aus Quellmarkern aktualisiert (`secretref-env:ENV_VAR_NAME` für Env-Refs, `secretref-managed` für Datei-/Exec-Refs). + - Leere oder fehlende agentbezogene `apiKey`/`baseUrl` fallen auf `models.providers` in der Konfiguration zurück. + - Passende Modell-`contextWindow`/`maxTokens` verwenden den höheren Wert zwischen expliziter Konfiguration und impliziten Katalogwerten. + - Passende Modell-`contextTokens` behalten eine explizite Laufzeitobergrenze bei, wenn vorhanden; verwenden Sie es, um den effektiven Kontext zu begrenzen, ohne die nativen Modellmetadaten zu ändern. + - Verwenden Sie `models.mode: "replace"`, wenn die Konfiguration `models.json` vollständig neu schreiben soll. + - Marker-Persistenz ist quellautoritativer Natur: Marker werden aus dem aktiven Quellkonfigurations-Snapshot (vor der Auflösung) geschrieben, nicht aus aufgelösten Laufzeit-Secret-Werten. ### Details zu Provider-Feldern - `models.mode`: Verhalten des Provider-Katalogs (`merge` oder `replace`). -- `models.providers`: benutzerdefinierte Provider-Map, nach Provider-ID verschlüsselt. +- `models.providers`: benutzerdefinierte Provider-Map, indiziert nach Provider-ID. - `models.providers.*.api`: Request-Adapter (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` usw.). -- `models.providers.*.apiKey`: Provider-Anmeldedaten (bevorzugt SecretRef/Env-Substitution). +- `models.providers.*.apiKey`: Provider-Anmeldedaten (bevorzugt mit SecretRef/Env-Substitution). - `models.providers.*.auth`: Authentifizierungsstrategie (`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 bei Bedarf die Übertragung von Anmeldedaten im `Authorization`-Header. +- `models.providers.*.injectNumCtxForOpenAICompat`: für Ollama + `openai-completions`, `options.num_ctx` in Requests injizieren (Standard: `true`). +- `models.providers.*.authHeader`: Transport der Anmeldedaten im `Authorization`-Header erzwingen, wenn erforderlich. - `models.providers.*.baseUrl`: Basis-URL der Upstream-API. - `models.providers.*.headers`: zusätzliche statische Header für Proxy-/Tenant-Routing. -- `models.providers.*.request`: Transportüberschreibungen für HTTP-Requests des Modell-Providers. - - `request.headers`: zusätzliche Header (werden mit den Provider-Standards zusammengeführt). Werte akzeptieren SecretRef. - - `request.auth`: Überschreibung der Authentifizierungsstrategie. Modi: `"provider-default"` (integrierte Authentifizierung des Providers verwenden), `"authorization-bearer"` (mit `token`), `"header"` (mit `headerName`, `value`, optional `prefix`). - - `request.proxy`: Überschreibung für HTTP-Proxy. Modi: `"env-proxy"` (verwendet Env-Variablen `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (mit `url`). Beide Modi akzeptieren optional ein Unterobjekt `tls`. - - `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`: Metadaten zum nativen Kontextfenster des Modells. -- `models.providers.*.models.*.contextTokens`: optionale Laufzeitbegrenzung für den 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 nicht leeren, nicht nativen `baseUrl` (Host nicht `api.openai.com`) erzwingt OpenClaw dies zur Laufzeit auf `false`. Eine leere/weggelassene `baseUrl` behält das Standardverhalten von OpenAI bei. -- `models.providers.*.models.*.compat.requiresStringContent`: optionaler Kompatibilitätshinweis für OpenAI-kompatible Chat-Endpunkte, die nur Strings akzeptieren. Wenn `true`, flacht OpenClaw reine Text-Arrays in `messages[].content` vor dem Senden des Requests zu einfachen Strings ab. -- `plugins.entries.amazon-bedrock.config.discovery`: Root für Bedrock-Auto-Discovery-Einstellungen. +- `models.providers.*.request`: Transport-Überschreibungen für HTTP-Requests von Modell-Providern. + - `request.headers`: zusätzliche Header (mit Provider-Standards zusammengeführt). Werte akzeptieren SecretRef. + - `request.auth`: Überschreibung der Authentifizierungsstrategie. Modi: `"provider-default"` (eingebaute Auth des Providers verwenden), `"authorization-bearer"` (mit `token`), `"header"` (mit `headerName`, `value`, optional `prefix`). + - `request.proxy`: Überschreibung des HTTP-Proxys. Modi: `"env-proxy"` (verwendet Env-Variablen `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (mit `url`). Beide Modi akzeptieren optional ein `tls`-Unterobjekt. + - `request.tls`: TLS-Überschreibung für Direktverbindungen. Felder: `ca`, `cert`, `key`, `passphrase` (alle akzeptieren SecretRef), `serverName`, `insecureSkipVerify`. +- `models.providers.*.models`: explizite Provider-Modellkatalogeinträge. +- `models.providers.*.models.*.contextWindow`: native Modell-Metadaten für das Kontextfenster. +- `models.providers.*.models.*.contextTokens`: optionale Laufzeit-Kontextobergrenze. Verwenden Sie dies, wenn Sie ein kleineres effektives Kontextbudget als das native `contextWindow` des Modells wünschen. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: optionaler Kompatibilitätshinweis. Für `api: "openai-completions"` mit einer nicht-leeren nicht-nativen `baseUrl` (Host nicht `api.openai.com`) erzwingt OpenClaw dies zur Laufzeit auf `false`. Leere/weggelassene `baseUrl` behält das Standard-OpenAI-Verhalten. +- `models.providers.*.models.*.compat.requiresStringContent`: optionaler Kompatibilitätshinweis für rein stringbasierte OpenAI-kompatible Chat-Endpunkte. Wenn `true`, glättet OpenClaw reine Text-Arrays in `messages[].content` zu Klartext-Strings, bevor der Request gesendet wird. +- `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 Filter für Provider-IDs für zielgerichtete Discovery. -- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: Polling-Intervall für die Aktualisierung der Discovery. -- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: Fallback-Kontextfenster für erkannte Modelle. -- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: Fallback für maximale Ausgabe-Tokens bei erkannten Modellen. +- `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 für maximale Ausgabetokens bei entdeckten Modellen. ### Provider-Beispiele @@ -2437,7 +2475,7 @@ Setzen Sie `OPENCODE_API_KEY` (oder `OPENCODE_ZEN_API_KEY`). Verwenden Sie `open } ``` -Setzen Sie `ZAI_API_KEY`. `z.ai/*` und `z-ai/*` werden als Aliasse akzeptiert. Kurzform: `openclaw onboard --auth-choice zai-api-key`. +Setzen Sie `ZAI_API_KEY`. `z.ai/*` und `z-ai/*` werden als Alias akzeptiert. Kurzform: `openclaw onboard --auth-choice zai-api-key`. - Allgemeiner Endpunkt: `https://api.z.ai/api/paas/v4` - Coding-Endpunkt (Standard): `https://api.z.ai/api/coding/paas/v4` @@ -2482,9 +2520,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 melden Kompatibilität mit Streaming-Nutzung auf dem gemeinsamen -Transport `openai-completions`, und OpenClaw bindet dies nun an die Fähigkeiten des Endpunkts -statt allein an die integrierte Provider-ID. +Native Moonshot-Endpunkte melden Streaming-Nutzungskompatibilität auf dem gemeinsamen +`openai-completions`-Transport, und OpenClaw koppelt dies nun an Endpunkt- +Fähigkeiten statt nur an die eingebaute Provider-ID. @@ -2541,7 +2579,7 @@ Anthropic-kompatibel, integrierter Provider. Kurzform: `openclaw onboard --auth- } ``` -Die Basis-URL sollte `/v1` nicht enthalten (der Anthropic-Client hängt es an). Kurzform: `openclaw onboard --auth-choice synthetic-api-key`. +Die Basis-URL sollte `/v1` auslassen (der Anthropic-Client fügt es an). Kurzform: `openclaw onboard --auth-choice synthetic-api-key`. @@ -2584,9 +2622,9 @@ Die Basis-URL sollte `/v1` nicht enthalten (der Anthropic-Client hängt es an). 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 M2.7. -Auf dem Anthropic-kompatiblen Streaming-Pfad deaktiviert OpenClaw standardmäßig MiniMax-Thinking, -sofern Sie `thinking` nicht selbst explizit setzen. `/fast on` oder +Der Modellkatalog verwendet jetzt standardmäßig nur noch 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` schreibt `MiniMax-M2.7` zu `MiniMax-M2.7-highspeed` um. @@ -2594,7 +2632,7 @@ sofern Sie `thinking` nicht selbst explizit setzen. `/fast on` oder -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; behalten Sie gehostete Modelle als Fallback zusammengeführt. +Siehe [Lokale Modelle](/de/gateway/local-models). Kurz gesagt: Führen Sie ein großes lokales Modell über die LM Studio Responses API auf leistungsstarker Hardware aus; behalten Sie gehostete Modelle für Fallbacks zusammengeführt. @@ -2625,14 +2663,14 @@ Siehe [Local Models](/de/gateway/local-models). Kurz gesagt: Führen Sie ein gro } ``` -- `allowBundled`: optionale Allowlist nur für gebündelte Skills (verwaltete/Workspace-Skills sind nicht betroffen). +- `allowBundled`: optionale Erlaubnisliste 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, Homebrew-Installer bevorzugen, wenn `brew` - verfügbar ist, bevor auf andere Installertypen zurückgefallen wird. -- `install.nodeManager`: bevorzugter Node-Installer für `metadata.openclaw.install` - specs (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` deaktiviert einen Skill, selbst wenn er gebündelt/installiert ist. -- `entries..apiKey`: Komfortfeld für API-Schlüssel bei Skills, die eine primäre Env-Variable deklarieren (Klartext-String oder SecretRef-Objekt). +- `install.preferBrew`: wenn true, Homebrew-Installer bevorzugen, sofern `brew` + verfügbar ist, bevor auf andere Installer-Typen zurückgefallen wird. +- `install.nodeManager`: bevorzugter Node-Installer für `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). --- @@ -2660,32 +2698,38 @@ Siehe [Local Models](/de/gateway/local-models). Kurz gesagt: Führen Sie ein gro } ``` -- Werden geladen aus `~/.openclaw/extensions`, `/.openclaw/extensions` und `plugins.load.paths`. -- Discovery akzeptiert native OpenClaw-Plugins sowie kompatible Codex-Bundles und Claude-Bundles, einschließlich manifestloser Claude-Bundles mit Standardlayout. -- **Konfigurationsänderungen erfordern einen Neustart des Gateway.** -- `allow`: optionale Allowlist (nur aufgelistete Plugins werden geladen). `deny` gewinnt. -- `plugins.entries..apiKey`: Komfortfeld für API-Schlüssel auf Plugin-Ebene (wenn vom Plugin unterstützt). -- `plugins.entries..env`: pluginbezogene Env-Variablen-Map. -- `plugins.entries..hooks.allowPromptInjection`: wenn `false`, blockiert der Core `before_prompt_build` und ignoriert promptmutierende Felder aus altem `before_agent_start`, während ältere `modelOverride` und `providerOverride` erhalten bleiben. Gilt für native Plugin-Hooks und unterstützte Bundle-Verzeichnisse mit Hooks. -- `plugins.entries..subagent.allowModelOverride`: dieses Plugin explizit vertrauen, pro Lauf Überschreibungen von `provider` und `model` für Hintergrund-Subagent-Läufe anzufordern. -- `plugins.entries..subagent.allowedModels`: optionale Allowlist kanonischer `provider/model`-Ziele für vertrauenswürdige Subagent-Überschreibungen. Verwenden Sie `"*"`, nur wenn Sie absichtlich jedes Modell zulassen möchten. -- `plugins.entries..config`: plugindefiniertes Konfigurationsobjekt (wird durch das Schema des nativen OpenClaw-Plugins validiert, falls vorhanden). -- `plugins.entries.firecrawl.config.webFetch`: Einstellungen des Firecrawl-Web-Fetch-Providers. - - `apiKey`: Firecrawl-API-Schlüssel (akzeptiert SecretRef). Fällt auf `plugins.entries.firecrawl.config.webSearch.apiKey`, älteres `tools.web.fetch.firecrawl.apiKey` oder Env-Variable `FIRECRAWL_API_KEY` zurück. - - `baseUrl`: Firecrawl-API-Basis-URL (Standard: `https://api.firecrawl.dev`). +- Geladen aus `~/.openclaw/extensions`, `/.openclaw/extensions` sowie `plugins.load.paths`. +- Discovery akzeptiert native OpenClaw-Plugins sowie kompatible Codex-Bundles und Claude-Bundles, einschließlich manifestloser Claude-Bundles mit Standard-Layout. +- **Konfigurationsänderungen erfordern einen Gateway-Neustart.** +- `allow`: optionale Erlaubnisliste (nur gelistete Plugins werden geladen). `deny` gewinnt. +- `plugins.entries..apiKey`: Komfortfeld für Plugin-API-Key auf Plugin-Ebene (wenn vom Plugin unterstützt). +- `plugins.entries..env`: pluginbezogene Env-Variablenzuordnung. +- `plugins.entries..hooks.allowPromptInjection`: wenn `false`, blockiert der Kern `before_prompt_build` und ignoriert prompt-mutierende Felder aus altem `before_agent_start`, während altes `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`-Überschreibungen für Hintergrund-Subagent-Läufe anzufordern. +- `plugins.entries..subagent.allowedModels`: optionale Erlaubnisliste kanonischer `provider/model`-Ziele für vertrauenswürdige Subagent-Überschreibungen. Verwenden Sie `"*"` nur, wenn Sie absichtlich jedes Modell zulassen möchten. +- `plugins.entries..config`: plugindefiniertes Konfigurationsobjekt (validiert gegen natives OpenClaw-Plugin-Schema, sofern 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 Env-Variable `FIRECRAWL_API_KEY` zurück. + - `baseUrl`: Basis-URL der Firecrawl-API (Standard: `https://api.firecrawl.dev`). - `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`: aktiviert den X-Search-Provider. - - `model`: zu verwendendes Grok-Modell für die Suche (z. B. `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: Einstellungen für Memory-Dreaming (experimentell). Phasen und Schwellenwerte siehe [Dreaming](/de/concepts/dreaming). - - `enabled`: globaler Schalter für Dreaming (Standard `false`). - - `frequency`: Cron-Taktung für jeden vollständigen Dreaming-Durchlauf (standardmäßig `"0 3 * * *"`). + - `timeoutSeconds`: Timeout für Scrape-Anfragen in Sekunden (Standard: `60`). +- `plugins.entries.xai.config.xSearch`: Einstellungen für xAI X Search (Grok-Websuche). + - `enabled`: X Search-Provider 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](/de/concepts/dreaming) für Phasen und Schwellenwerte. + - `enabled`: globaler Dreaming-Schalter (Standard `false`). + - `frequency`: Cron-Takt 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-Konfigurationspatches. -- `plugins.slots.memory`: aktive Memory-Plugin-ID auswählen oder `"none"`, 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. +- Die vollständige Speicherkonfiguration befindet sich in [Speicherkonfigurationsreferenz](/de/reference/memory-config): + - `agents.defaults.memorySearch.*` + - `memory.backend` + - `memory.citations` + - `memory.qmd.*` + - `plugins.entries.memory-core.config.dreaming` +- Aktivierte Claude-Bundle-Plugins können auch eingebettete Pi-Standards aus `settings.json` beisteuern; OpenClaw wendet diese als bereinigte Agent-Einstellungen an, nicht als rohe OpenClaw-Konfigurations-Patches. +- `plugins.slots.memory`: wählen Sie die aktive Memory-Plugin-ID oder `"none"`, um Memory-Plugins zu deaktivieren. +- `plugins.slots.contextEngine`: wählen Sie die aktive Context-Engine-Plugin-ID; Standard ist `"legacy"`, sofern Sie keine andere Engine installieren und auswählen. - `plugins.installs`: von der CLI verwaltete Installationsmetadaten, die von `openclaw plugins update` verwendet werden. - 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 statt manueller Bearbeitungen. @@ -2703,8 +2747,8 @@ Siehe [Plugins](/de/tools/plugin). evaluateEnabled: true, defaultProfile: "user", ssrfPolicy: { - dangerouslyAllowPrivateNetwork: true, // Standard im trusted-network-Modus - // allowPrivateNetwork: true, // älterer Alias + dangerouslyAllowPrivateNetwork: true, // Standard im Trusted-Network-Modell + // allowPrivateNetwork: true, // alter Alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, @@ -2731,27 +2775,28 @@ Siehe [Plugins](/de/tools/plugin). ``` - `evaluateEnabled: false` deaktiviert `act:evaluate` und `wait --fn`. -- `ssrfPolicy.dangerouslyAllowPrivateNetwork` ist standardmäßig `true`, wenn nicht gesetzt (trusted-network-Modell). -- Setzen Sie `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` für eine strikte öffentliche-only Browser-Navigation. -- Im strikten Modus unterliegen Endpunkte entfernter CDP-Profile (`profiles.*.cdpUrl`) während Erreichbarkeits-/Discovery-Prüfungen denselben Blockierungen für private Netzwerke. -- `ssrfPolicy.allowPrivateNetwork` bleibt als älterer Alias unterstützt. +- `ssrfPolicy.dangerouslyAllowPrivateNetwork` ist standardmäßig `true`, wenn nicht gesetzt (Trusted-Network-Modell). +- Setzen Sie `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` für strikte öffentliche Browser-Navigation. +- Im strikten Modus unterliegen Remote-CDP-Profil-Endpunkte (`profiles.*.cdpUrl`) während Erreichbarkeits-/Discovery-Prüfungen derselben Blockierung privater Netzwerke. +- `ssrfPolicy.allowPrivateNetwork` wird weiterhin 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 geeignet (Start/Stopp/Reset deaktiviert). +- Remote-Profile sind nur zum Anhängen (Start/Stop/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 eine direkte DevTools-WebSocket-URL bereitstellt. -- `existing-session`-Profile sind nur hostlokal und verwenden Chrome MCP statt CDP. + Verwenden Sie HTTP(S), wenn OpenClaw `/json/version` entdecken soll; verwenden Sie WS(S), + wenn Ihr Provider eine direkte DevTools-WebSocket-URL bereitstellt. +- `existing-session`-Profile sind hostgebunden und verwenden Chrome MCP statt CDP. - `existing-session`-Profile können `userDataDir` setzen, um ein bestimmtes Chromium-basiertes Browser-Profil wie Brave oder Edge anzusprechen. -- `existing-session`-Profile behalten die aktuellen Routenbeschränkungen von Chrome MCP: - snapshot-/ref-basierte Aktionen statt CSS-Selektor-Targeting, Hooks für einzelne Dateiuploads, keine Überschreibungen für Dialog-Timeouts, kein `wait --load networkidle`, sowie kein +- `existing-session`-Profile behalten die aktuellen Grenzen der Chrome-MCP-Route bei: + snapshot-/ref-basierte Aktionen statt CSS-Selektor-Zielsteuerung, Hooks für Einzeldatei-Uploads, + keine Dialog-Timeout-Überschreibungen, 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. -- Reihenfolge der Auto-Erkennung: 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). +- Reihenfolge der automatischen Erkennung: Standardbrowser, falls Chromium-basiert → Chrome → Brave → Edge → Chromium → Chrome Canary. +- Steuerdienst: nur loopback (Port abgeleitet aus `gateway.port`, Standard `18791`). +- `extraArgs` fügt dem lokalen Chromium-Start zusätzliche Flags hinzu (zum Beispiel + `--disable-gpu`, Fenstergrößen oder Debug-Flags). --- @@ -2763,85 +2808,4 @@ Siehe [Plugins](/de/tools/plugin). seamColor: "#FF4500", assistant: { name: "OpenClaw", - avatar: "CB", // Emoji, kurzer Text, Bild-URL oder Data-URI - }, - }, -} -``` - -- `seamColor`: Akzentfarbe für natives App-UI-Chrome (Farbton der Talk-Mode-Blase usw.). -- `assistant`: Überschreibung der Identity für die Control UI. Fällt auf die aktive Agent-Identität zurück. - ---- - -## Gateway - -```json5 -{ - gateway: { - mode: "local", // local | remote - port: 18789, - bind: "loopback", - auth: { - mode: "token", // none | token | password | trusted-proxy - token: "your-token", - // password: "your-password", // oder OPENCLAW_GATEWAY_PASSWORD - // trustedProxy: { userHeader: "x-forwarded-user" }, // für mode=trusted-proxy; siehe /gateway/trusted-proxy-auth - allowTailscale: true, - rateLimit: { - maxAttempts: 10, - windowMs: 60000, - lockoutMs: 300000, - exemptLoopback: true, - }, - }, - tailscale: { - mode: "off", // off | serve | funnel - resetOnExit: false, - }, - controlUi: { - enabled: true, - basePath: "/openclaw", - // root: "dist/control-ui", - // allowedOrigins: ["https://control.example.com"], // erforderlich für nicht-loopback Control UI - // dangerouslyAllowHostHeaderOriginFallback: false, // gefährlicher Host-Header-Origin-Fallback-Modus - // allowInsecureAuth: false, - // dangerouslyDisableDeviceAuth: false, - }, - remote: { - url: "ws://gateway.tailnet:18789", - transport: "ssh", // ssh | direct - token: "your-token", - // password: "your-password", - }, - trustedProxies: ["10.0.0.1"], - // Optional. Standard false. - allowRealIpFallback: false, - tools: { - // Zusätzliche HTTP-Denys für /tools/invoke - deny: ["browser"], - // Tools aus der Standard-HTTP-Deny-Liste entfernen - allow: ["gateway"], - }, - push: { - apns: { - relay: { - baseUrl: "https://relay.example.com", - timeoutMs: 10000, - }, - }, - }, - }, -} -``` - - - -- `mode`: `local` (Gateway ausführen) oder `remote` (mit entferntem Gateway verbinden). Das Gateway verweigert den Start, sofern nicht `local`. -- `port`: einzelner multiplexter 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`. -- **Ältere Bind-Aliasse**: Verwenden Sie Bind-Moduswerte 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`. Mit Docker-Bridge-Netzwerk (`-p 18789:18789`) kommt der Datenverkehr auf `eth0` an, 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 Interfaces zu lauschen. -- **Authentifizierung**: 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 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 sowie Installations-/Reparaturabläufe des Service schlagen fehl, wenn beide konfiguriert sind und `mode` nicht gesetzt ist. -- `gateway.auth.mode: "none"`: expliziter Modus ohne Authentifizierung. Nur für vertrauenswürdige lokale loop \ No newline at end of file + avatar: "CB", // Emoji, kurzer \ No newline at end of file diff --git a/docs/de/gateway/configuration.md b/docs/de/gateway/configuration.md index 80a0f084e..377fff4c9 100644 --- a/docs/de/gateway/configuration.md +++ b/docs/de/gateway/configuration.md @@ -1,33 +1,33 @@ --- read_when: - - Sie richten OpenClaw zum ersten Mal ein - - Sie suchen nach häufigen Konfigurationsmustern - - Sie navigieren zu bestimmten Konfigurationsabschnitten -summary: 'Konfigurationsüberblick: häufige Aufgaben, schnelle Einrichtung und Links zur vollständigen Referenz' + - OpenClaw zum ersten Mal einrichten + - Nach häufigen Konfigurationsmustern suchen + - Zu bestimmten Konfigurationsabschnitten navigieren +summary: 'Konfigurationsübersicht: häufige Aufgaben, schnelle Einrichtung und Links zur vollständigen Referenz' title: Konfiguration x-i18n: - generated_at: "2026-04-05T12:43:23Z" + generated_at: "2026-04-08T06:02:06Z" model: gpt-5.4 provider: openai - source_hash: a39a7de09c5f9540785ec67f37d435a7a86201f0f5f640dae663054f35976712 + source_hash: 199a1e515bd4003319e71593a2659bb883299a76ff67e273d92583df03c96604 source_path: gateway/configuration.md workflow: 15 --- # Konfiguration -OpenClaw liest eine optionale **JSON5**-Konfiguration aus `~/.openclaw/openclaw.json`. +OpenClaw liest optional eine **JSON5**-Konfiguration aus `~/.openclaw/openclaw.json`. Wenn die Datei fehlt, verwendet OpenClaw sichere Standardwerte. Häufige Gründe, eine Konfiguration hinzuzufügen: - Kanäle verbinden und steuern, wer dem Bot Nachrichten senden kann -- Modelle, Tools, Sandboxing oder Automatisierung festlegen (Cron, Hooks) -- Sitzungen, Medien, Netzwerk oder UI anpassen +- Modelle, Tools, Sandboxing oder Automatisierung einrichten (Cron, Hooks) +- Sitzungen, Medien, Netzwerk oder UI abstimmen -In der [vollständigen Referenz](/gateway/configuration-reference) finden Sie jedes verfügbare Feld. +Siehe die [vollständige Referenz](/de/gateway/configuration-reference) für jedes verfügbare Feld. -**Neu bei der Konfiguration?** Beginnen Sie mit `openclaw onboard` für die interaktive Einrichtung oder sehen Sie sich die Anleitung [Configuration Examples](/gateway/configuration-examples) für vollständige Copy-and-paste-Konfigurationen an. +**Neu bei der Konfiguration?** Beginnen Sie mit `openclaw onboard` für die interaktive Einrichtung oder sehen Sie sich den Leitfaden [Konfigurationsbeispiele](/de/gateway/configuration-examples) für vollständige Copy-and-Paste-Konfigurationen an. ## Minimale Konfiguration @@ -58,39 +58,29 @@ In der [vollständigen Referenz](/gateway/configuration-reference) finden Sie je Öffnen Sie [http://127.0.0.1:18789](http://127.0.0.1:18789) und verwenden Sie den Tab **Config**. - Die Control UI rendert ein Formular aus dem Live-Konfigurationsschema, einschließlich der Docs-Metadaten - `title` / `description` der Felder sowie Plugin- und Kanalschemata, sofern - verfügbar, mit einem **Raw JSON**-Editor als Ausweichmöglichkeit. Für Drill-down- - UIs und andere Tools stellt das Gateway außerdem `config.schema.lookup` bereit, um - einen einzelnen pfadbezogenen Schemaknoten plus unmittelbare Zusammenfassungen der Unterelemente abzurufen. + Die Control UI rendert ein Formular aus dem Live-Konfigurationsschema, einschließlich der Dokumentationsmetadaten der Felder `title` und `description` sowie Plugin- und Kanalschemata, sofern verfügbar, mit einem Editor für **Raw JSON** als Ausweichmöglichkeit. Für Drill-down-UIs und andere Tools stellt das Gateway außerdem `config.schema.lookup` bereit, um einen pfadbezogenen Schemaknoten plus Zusammenfassungen der direkten Unterelemente abzurufen. - Bearbeiten Sie `~/.openclaw/openclaw.json` direkt. Das Gateway überwacht die Datei und wendet Änderungen automatisch an (siehe [Hot Reload](#config-hot-reload)). + Bearbeiten Sie `~/.openclaw/openclaw.json` direkt. Das Gateway überwacht die Datei und übernimmt Änderungen automatisch (siehe [Hot Reload](#config-hot-reload)). ## Strikte Validierung -OpenClaw akzeptiert nur Konfigurationen, die vollständig dem Schema entsprechen. Unbekannte Schlüssel, fehlerhafte Typen oder ungültige Werte führen dazu, dass das Gateway den Start **verweigert**. Die einzige Ausnahme auf Root-Ebene ist `$schema` (string), damit Editoren JSON-Schema-Metadaten anhängen können. +OpenClaw akzeptiert nur Konfigurationen, die vollständig dem Schema entsprechen. Unbekannte Schlüssel, fehlerhafte Typen oder ungültige Werte führen dazu, dass das Gateway den **Start verweigert**. Die einzige Ausnahme auf Root-Ebene ist `$schema` (string), damit Editoren JSON-Schema-Metadaten anhängen können. Hinweise zu Schema-Tools: -- `openclaw config schema` gibt dieselbe JSON-Schema-Familie aus, die von Control UI - und der Konfigurationsvalidierung verwendet wird. -- Feldwerte für `title` und `description` werden in die Schema-Ausgabe für - Editor- und Formular-Tools übernommen. -- Verschachtelte Objekt-, Wildcard- (`*`) und Array-Item- (`[]`) Einträge übernehmen dieselben - Docs-Metadaten, wenn passende Felddokumentation vorhanden ist. -- Auch Kompositionszweige mit `anyOf` / `oneOf` / `allOf` übernehmen dieselben Docs- - Metadaten, sodass Union-/Intersection-Varianten dieselbe Feldhilfe behalten. -- `config.schema.lookup` gibt einen normalisierten Konfigurationspfad mit einem flachen - Schemaknoten (`title`, `description`, `type`, `enum`, `const`, häufige Grenzen - und ähnliche Validierungsfelder), zugeordneten UI-Hinweis-Metadaten sowie unmittelbaren Zusammenfassungen - der Unterelemente für Drill-down-Tools zurück. -- Runtime-Plugin-/Kanalschemata werden zusammengeführt, wenn das Gateway die - aktuelle Manifest-Registry laden kann. +- `openclaw config schema` gibt dieselbe JSON-Schema-Familie aus, die von der Control UI und der Konfigurationsvalidierung verwendet wird. +- Betrachten Sie diese Schema-Ausgabe als den kanonischen maschinenlesbaren Vertrag für `openclaw.json`; diese Übersicht und die Konfigurationsreferenz fassen ihn zusammen. +- Die Feldwerte `title` und `description` werden in die Schema-Ausgabe für Editor- und Formular-Tools übernommen. +- Verschachtelte Objekt-, Wildcard- (`*`) und Array-Element-Einträge (`[]`) übernehmen dieselben Dokumentationsmetadaten, wenn passende Felddokumentation vorhanden ist. +- `anyOf`- / `oneOf`- / `allOf`-Kompositionszweige übernehmen diese Dokumentationsmetadaten ebenfalls, sodass Union-/Intersection-Varianten dieselbe Feldhilfe beibehalten. +- `config.schema.lookup` gibt einen normalisierten Konfigurationspfad mit einem flachen Schemaknoten (`title`, `description`, `type`, `enum`, `const`, allgemeine Grenzen und ähnliche Validierungsfelder), passenden UI-Hinweismetadaten und Zusammenfassungen der direkten Unterelemente für Drill-down-Tools zurück. +- Laufzeit-Plugin-/Kanalschemata werden zusammengeführt, wenn das Gateway die aktuelle Manifest-Registry laden kann. +- `pnpm config:docs:check` erkennt Abweichungen zwischen dokumentationsbezogenen Konfigurations-Baseline-Artefakten und der aktuellen Schemaoberfläche. Wenn die Validierung fehlschlägt: @@ -103,18 +93,18 @@ Wenn die Validierung fehlschlägt: - Jeder Kanal hat einen eigenen Konfigurationsabschnitt unter `channels.`. Die Einrichtungsschritte finden Sie auf der jeweiligen Kanalseite: + Jeder Kanal hat seinen eigenen Konfigurationsabschnitt unter `channels.`. Schritte zur Einrichtung finden Sie auf der jeweiligen Kanalseite: - - [WhatsApp](/channels/whatsapp) — `channels.whatsapp` - - [Telegram](/channels/telegram) — `channels.telegram` - - [Discord](/channels/discord) — `channels.discord` - - [Feishu](/channels/feishu) — `channels.feishu` - - [Google Chat](/channels/googlechat) — `channels.googlechat` - - [Microsoft Teams](/channels/msteams) — `channels.msteams` - - [Slack](/channels/slack) — `channels.slack` - - [Signal](/channels/signal) — `channels.signal` - - [iMessage](/channels/imessage) — `channels.imessage` - - [Mattermost](/channels/mattermost) — `channels.mattermost` + - [WhatsApp](/de/channels/whatsapp) — `channels.whatsapp` + - [Telegram](/de/channels/telegram) — `channels.telegram` + - [Discord](/de/channels/discord) — `channels.discord` + - [Feishu](/de/channels/feishu) — `channels.feishu` + - [Google Chat](/de/channels/googlechat) — `channels.googlechat` + - [Microsoft Teams](/de/channels/msteams) — `channels.msteams` + - [Slack](/de/channels/slack) — `channels.slack` + - [Signal](/de/channels/signal) — `channels.signal` + - [iMessage](/de/channels/imessage) — `channels.imessage` + - [Mattermost](/de/channels/mattermost) — `channels.mattermost` Alle Kanäle verwenden dasselbe DM-Richtlinienmuster: @@ -154,29 +144,29 @@ Wenn die Validierung fehlschlägt: ``` - `agents.defaults.models` definiert den Modellkatalog und dient als Allowlist für `/model`. - - Modell-Refs verwenden das Format `provider/model` (z. B. `anthropic/claude-opus-4-6`). - - `agents.defaults.imageMaxDimensionPx` steuert das Downscaling von Bildern in Transkripten/Tools (Standard `1200`); niedrigere Werte reduzieren in der Regel den Verbrauch von Vision-Tokens bei screenshotlastigen Ausführungen. - - Siehe [Models CLI](/concepts/models) zum Wechseln von Modellen im Chat und [Model Failover](/concepts/model-failover) für Auth-Rotation und Fallback-Verhalten. - - Für benutzerdefinierte/selbst gehostete Provider siehe [Custom providers](/gateway/configuration-reference#custom-providers-and-base-urls) in der Referenz. + - Modellreferenzen verwenden das Format `provider/model` (z. B. `anthropic/claude-opus-4-6`). + - `agents.defaults.imageMaxDimensionPx` steuert die Größenanpassung von Bildern in Transkripten/Tools (Standard `1200`); niedrigere Werte reduzieren in der Regel die Vision-Token-Nutzung bei screenshotlastigen Abläufen. + - Siehe [Models CLI](/de/concepts/models) zum Wechseln von Modellen im Chat und [Model Failover](/de/concepts/model-failover) für Auth-Rotation und Fallback-Verhalten. + - Für benutzerdefinierte/selbst gehostete Provider siehe [Benutzerdefinierte Provider](/de/gateway/configuration-reference#custom-providers-and-base-urls) in der Referenz. - + Der DM-Zugriff wird pro Kanal über `dmPolicy` gesteuert: - - `"pairing"` (Standard): unbekannte Absender erhalten einen einmaligen Pairing-Code zur Genehmigung + - `"pairing"` (Standard): unbekannte Absender erhalten einen einmaligen Pairing-Code zur Freigabe - `"allowlist"`: nur Absender in `allowFrom` (oder im gepaarten Allow-Store) - - `"open"`: erlaubt alle eingehenden DMs (erfordert `allowFrom: ["*"]`) - - `"disabled"`: ignoriert alle DMs + - `"open"`: alle eingehenden DMs zulassen (erfordert `allowFrom: ["*"]`) + - `"disabled"`: alle DMs ignorieren Für Gruppen verwenden Sie `groupPolicy` + `groupAllowFrom` oder kanalspezifische Allowlists. - In der [vollständigen Referenz](/gateway/configuration-reference#dm-and-group-access) finden Sie kanalspezifische Details. + Siehe die [vollständige Referenz](/de/gateway/configuration-reference#dm-and-group-access) für Details pro Kanal. - - Gruppennachrichten erfordern standardmäßig eine **Erwähnung**. Konfigurieren Sie Muster pro Agent: + + Gruppen-Nachrichten erfordern standardmäßig **eine Erwähnung**. Konfigurieren Sie Muster pro Agent: ```json5 { @@ -198,15 +188,14 @@ Wenn die Validierung fehlschlägt: } ``` - - **Metadaten-Erwähnungen**: native @-Erwähnungen (WhatsApp Tap-to-mention, Telegram @bot usw.) + - **Metadaten-Erwähnungen**: native @-Erwähnungen (WhatsApp Tap-to-Mention, Telegram @bot usw.) - **Textmuster**: sichere Regex-Muster in `mentionPatterns` - - Siehe [vollständige Referenz](/gateway/configuration-reference#group-chat-mention-gating) für kanalspezifische Überschreibungen und den Self-Chat-Modus. + - Siehe [vollständige Referenz](/de/gateway/configuration-reference#group-chat-mention-gating) für Überschreibungen pro Kanal und den Selbstchat-Modus. - Verwenden Sie `agents.defaults.skills` für eine gemeinsame Baseline und überschreiben Sie dann bestimmte - Agenten mit `agents.list[].skills`: + Verwenden Sie `agents.defaults.skills` für eine gemeinsame Basis und überschreiben Sie dann bestimmte Agents mit `agents.list[].skills`: ```json5 { @@ -223,15 +212,14 @@ Wenn die Validierung fehlschlägt: } ``` - - Lassen Sie `agents.defaults.skills` weg, damit Skills standardmäßig nicht eingeschränkt sind. + - Lassen Sie `agents.defaults.skills` weg, wenn Skills standardmäßig nicht eingeschränkt sein sollen. - Lassen Sie `agents.list[].skills` weg, um die Standardwerte zu übernehmen. - - Setzen Sie `agents.list[].skills: []`, um keine Skills zu erlauben. - - Siehe [Skills](/tools/skills), [Skills config](/tools/skills-config) und - die [Configuration Reference](/gateway/configuration-reference#agentsdefaultsskills). + - Setzen Sie `agents.list[].skills: []` für keine Skills. + - Siehe [Skills](/de/tools/skills), [Skills-Konfiguration](/de/tools/skills-config) und die [Konfigurationsreferenz](/de/gateway/configuration-reference#agentsdefaultsskills). - + Steuern Sie, wie aggressiv das Gateway Kanäle neu startet, die veraltet wirken: ```json5 @@ -254,14 +242,14 @@ Wenn die Validierung fehlschlägt: } ``` - - Setzen Sie `gateway.channelHealthCheckMinutes: 0`, um Neustarts durch den Health Monitor global zu deaktivieren. + - Setzen Sie `gateway.channelHealthCheckMinutes: 0`, um Neustarts durch die Gesundheitsüberwachung global zu deaktivieren. - `channelStaleEventThresholdMinutes` sollte größer oder gleich dem Prüfintervall sein. - - Verwenden Sie `channels..healthMonitor.enabled` oder `channels..accounts..healthMonitor.enabled`, um automatische Neustarts für einen einzelnen Kanal oder ein einzelnes Konto zu deaktivieren, ohne den globalen Monitor auszuschalten. - - Siehe [Health Checks](/gateway/health) für operative Fehlerbehebung und die [vollständige Referenz](/gateway/configuration-reference#gateway) für alle Felder. + - Verwenden Sie `channels..healthMonitor.enabled` oder `channels..accounts..healthMonitor.enabled`, um automatische Neustarts für einen Kanal oder ein Konto zu deaktivieren, ohne die globale Überwachung auszuschalten. + - Siehe [Health Checks](/de/gateway/health) für die operative Fehlersuche und die [vollständige Referenz](/de/gateway/configuration-reference#gateway) für alle Felder. - + Sitzungen steuern Gesprächskontinuität und Isolation: ```json5 @@ -282,15 +270,15 @@ Wenn die Validierung fehlschlägt: } ``` - - `dmScope`: `main` (geteilt) | `per-peer` | `per-channel-peer` | `per-account-channel-peer` + - `dmScope`: `main` (gemeinsam) | `per-peer` | `per-channel-peer` | `per-account-channel-peer` - `threadBindings`: globale Standardwerte für threadgebundenes Sitzungsrouting (Discord unterstützt `/focus`, `/unfocus`, `/agents`, `/session idle` und `/session max-age`). - - Siehe [Session Management](/concepts/session) für Scoping, Identitätsverknüpfungen und Sende-Richtlinien. - - Siehe [vollständige Referenz](/gateway/configuration-reference#session) für alle Felder. + - Siehe [Session Management](/de/concepts/session) für Scoping, Identitätsverknüpfungen und Send-Richtlinien. + - Siehe [vollständige Referenz](/de/gateway/configuration-reference#session) für alle Felder. - Führen Sie Agentensitzungen in isolierten Docker-Containern aus: + Führen Sie Agent-Sitzungen in isolierten Docker-Containern aus: ```json5 { @@ -305,9 +293,9 @@ Wenn die Validierung fehlschlägt: } ``` - Erstellen Sie zuerst das Image: `scripts/sandbox-setup.sh` + Erstellen Sie das Image zuerst: `scripts/sandbox-setup.sh` - Siehe [Sandboxing](/gateway/sandboxing) für die vollständige Anleitung und die [vollständige Referenz](/gateway/configuration-reference#agentsdefaultssandbox) für alle Optionen. + Siehe [Sandboxing](/de/gateway/sandboxing) für die vollständige Anleitung und die [vollständige Referenz](/de/gateway/configuration-reference#agentsdefaultssandbox) für alle Optionen. @@ -338,37 +326,37 @@ Wenn die Validierung fehlschlägt: openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.com ``` - Was dies bewirkt: + Das bewirkt Folgendes: - Ermöglicht dem Gateway, `push.test`, Wake-Nudges und Reconnect-Wakes über das externe Relay zu senden. - Verwendet eine registrierungsbezogene Sendeberechtigung, die von der gepaarten iOS-App weitergeleitet wird. Das Gateway benötigt kein Relay-Token für die gesamte Bereitstellung. - - Bindet jede relaygestützte Registrierung an die Gateway-Identität, mit der die iOS-App gepaart wurde, sodass ein anderes Gateway die gespeicherte Registrierung nicht wiederverwenden kann. - - Lässt lokale/manuelle iOS-Builds bei direktem APNs. Relay-gestützte Sendungen gelten nur für offiziell verteilte Builds, die sich über das Relay registriert haben. - - Muss mit der Relay-Basis-URL übereinstimmen, die in den offiziellen/TestFlight-iOS-Build eingebettet ist, damit Registrierungs- und Sendetraffic dieselbe Relay-Bereitstellung erreichen. + - Bindet jede Relay-gestützte Registrierung an die Gateway-Identität, mit der die iOS-App gekoppelt wurde, sodass ein anderes Gateway die gespeicherte Registrierung nicht wiederverwenden kann. + - Behält lokale/manuelle iOS-Builds bei direktem APNs. Relay-gestützte Sendungen gelten nur für offiziell verteilte Builds, die sich über das Relay registriert haben. + - Muss mit der Relay-Basis-URL übereinstimmen, die in den offiziellen/TestFlight-iOS-Build eingebettet ist, damit Registrierungs- und Sendedatenverkehr dieselbe Relay-Bereitstellung erreicht. - Ende-zu-Ende-Ablauf: + End-to-End-Ablauf: 1. Installieren Sie einen offiziellen/TestFlight-iOS-Build, der mit derselben Relay-Basis-URL kompiliert wurde. 2. Konfigurieren Sie `gateway.push.apns.relay.baseUrl` auf dem Gateway. - 3. Pairen Sie die iOS-App mit dem Gateway und lassen Sie sowohl Node- als auch Operator-Sitzungen verbinden. - 4. Die iOS-App ruft die Gateway-Identität ab, registriert sich beim Relay mit App Attest plus dem App-Receipt und veröffentlicht dann die relaygestützte `push.apns.register`-Payload an das gepaarte Gateway. + 3. Koppeln Sie die iOS-App mit dem Gateway und lassen Sie sowohl Node- als auch Operatorsitzungen verbinden. + 4. Die iOS-App ruft die Gateway-Identität ab, registriert sich mit dem Relay unter Verwendung von App Attest plus dem App-Beleg und veröffentlicht anschließend die Relay-gestützte `push.apns.register`-Payload an das gekoppelte Gateway. 5. Das Gateway speichert den Relay-Handle und die Sendeberechtigung und verwendet sie dann für `push.test`, Wake-Nudges und Reconnect-Wakes. Betriebshinweise: - - Wenn Sie die iOS-App auf ein anderes Gateway umstellen, verbinden Sie die App erneut, damit sie eine neue, an dieses Gateway gebundene Relay-Registrierung veröffentlichen kann. + - Wenn Sie die iOS-App auf ein anderes Gateway umstellen, verbinden Sie die App erneut, damit sie eine neue Relay-Registrierung veröffentlichen kann, die an dieses Gateway gebunden ist. - Wenn Sie einen neuen iOS-Build ausliefern, der auf eine andere Relay-Bereitstellung verweist, aktualisiert die App ihre zwischengespeicherte Relay-Registrierung, anstatt den alten Relay-Ursprung wiederzuverwenden. Kompatibilitätshinweis: - - `OPENCLAW_APNS_RELAY_BASE_URL` und `OPENCLAW_APNS_RELAY_TIMEOUT_MS` funktionieren weiterhin als temporäre Env-Überschreibungen. - - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` bleibt eine nur für loopback gedachte Entwicklungs-Ausweichmöglichkeit; speichern Sie keine HTTP-Relay-URLs dauerhaft in der Konfiguration. + - `OPENCLAW_APNS_RELAY_BASE_URL` und `OPENCLAW_APNS_RELAY_TIMEOUT_MS` funktionieren weiterhin als temporäre Env-Overrides. + - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` bleibt eine nur für loopback gedachte Entwicklungsausnahme; persistieren Sie keine HTTP-Relay-URLs in der Konfiguration. - Siehe [iOS App](/platforms/ios#relay-backed-push-for-official-builds) für den Ende-zu-Ende-Ablauf und [Authentication and trust flow](/platforms/ios#authentication-and-trust-flow) für das Relay-Sicherheitsmodell. + Siehe [iOS App](/de/platforms/ios#relay-backed-push-for-official-builds) für den End-to-End-Ablauf und [Authentifizierungs- und Vertrauensablauf](/de/platforms/ios#authentication-and-trust-flow) für das Relay-Sicherheitsmodell. - + ```json5 { agents: { @@ -382,10 +370,10 @@ Wenn die Validierung fehlschlägt: } ``` - - `every`: Duration-String (`30m`, `2h`). Setzen Sie `0m`, um zu deaktivieren. + - `every`: Dauer-String (`30m`, `2h`). Setzen Sie `0m`, um zu deaktivieren. - `target`: `last` | `none` | `` (zum Beispiel `discord`, `matrix`, `telegram` oder `whatsapp`) - `directPolicy`: `allow` (Standard) oder `block` für DM-artige Heartbeat-Ziele - - Siehe [Heartbeat](/gateway/heartbeat) für die vollständige Anleitung. + - Siehe [Heartbeat](/de/gateway/heartbeat) für die vollständige Anleitung. @@ -404,14 +392,14 @@ Wenn die Validierung fehlschlägt: } ``` - - `sessionRetention`: bereinigt abgeschlossene isolierte Ausführungssitzungen aus `sessions.json` (Standard `24h`; setzen Sie `false`, um zu deaktivieren). - - `runLog`: bereinigt `cron/runs/.jsonl` nach Größe und beibehaltenen Zeilen. - - Siehe [Cron jobs](/automation/cron-jobs) für Funktionsüberblick und CLI-Beispiele. + - `sessionRetention`: abgeschlossene isolierte Ausführungssitzungen aus `sessions.json` entfernen (Standard `24h`; setzen Sie `false`, um zu deaktivieren). + - `runLog`: `cron/runs/.jsonl` nach Größe und beibehaltenen Zeilen kürzen. + - Siehe [Cron jobs](/de/automation/cron-jobs) für die Funktionsübersicht und CLI-Beispiele. - - Aktivieren Sie HTTP-Webhook-Endpunkte im Gateway: + + Aktivieren Sie HTTP-Webhook-Endpunkte auf dem Gateway: ```json5 { @@ -435,20 +423,20 @@ Wenn die Validierung fehlschlägt: ``` Sicherheitshinweis: - - Behandeln Sie alle Hook-/Webhook-Payload-Inhalte als nicht vertrauenswürdige Eingabe. - - Verwenden Sie ein dediziertes `hooks.token`; verwenden Sie nicht das gemeinsame Gateway-Token erneut. - - Hook-Authentifizierung ist nur Header-basiert (`Authorization: Bearer ...` oder `x-openclaw-token`); Tokens in Query-Strings werden abgelehnt. - - `hooks.path` darf nicht `/` sein; halten Sie den Webhook-Eingang auf einem dedizierten Unterpfad wie `/hooks`. - - Lassen Sie Bypass-Flags für unsichere Inhalte deaktiviert (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), außer für eng begrenztes Debugging. + - Behandeln Sie alle Hook-/Webhook-Payload-Inhalte als nicht vertrauenswürdige Eingaben. + - Verwenden Sie ein dediziertes `hooks.token`; verwenden Sie nicht das gemeinsame Gateway-Token wieder. + - Hook-Authentifizierung erfolgt nur per Header (`Authorization: Bearer ...` oder `x-openclaw-token`); Tokens in Query-Strings werden abgelehnt. + - `hooks.path` darf nicht `/` sein; belassen Sie den Webhook-Eingang auf einem dedizierten Unterpfad wie `/hooks`. + - Lassen Sie Unsicherer-Inhalt-Bypass-Flags deaktiviert (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), außer bei eng begrenztem Debugging. - Wenn Sie `hooks.allowRequestSessionKey` aktivieren, setzen Sie auch `hooks.allowedSessionKeyPrefixes`, um vom Aufrufer gewählte Sitzungsschlüssel zu begrenzen. - - Für Hook-gesteuerte Agenten bevorzugen Sie starke moderne Modellstufen und eine strikte Tool-Richtlinie (zum Beispiel nur Messaging plus nach Möglichkeit Sandboxing). + - Für hookgesteuerte Agents sollten Sie starke moderne Modell-Tiers und eine strikte Tool-Richtlinie bevorzugen (zum Beispiel nur Messaging plus Sandboxing, wenn möglich). - Siehe [vollständige Referenz](/gateway/configuration-reference#hooks) für alle Mapping-Optionen und die Gmail-Integration. + Siehe die [vollständige Referenz](/de/gateway/configuration-reference#hooks) für alle Mapping-Optionen und die Gmail-Integration. - Führen Sie mehrere isolierte Agenten mit separaten Workspaces und Sitzungen aus: + Führen Sie mehrere isolierte Agents mit getrennten Workspaces und Sitzungen aus: ```json5 { @@ -465,11 +453,11 @@ Wenn die Validierung fehlschlägt: } ``` - Siehe [Multi-Agent](/concepts/multi-agent) und die [vollständige Referenz](/gateway/configuration-reference#multi-agent-routing) für Binding-Regeln und agentenspezifische Zugriffsprofile. + Siehe [Multi-Agent](/de/concepts/multi-agent) und die [vollständige Referenz](/de/gateway/configuration-reference#multi-agent-routing) für Binding-Regeln und Zugriffsprofile pro Agent. - + Verwenden Sie `$include`, um große Konfigurationen zu organisieren: ```json5 @@ -484,27 +472,27 @@ Wenn die Validierung fehlschlägt: ``` - **Einzelne Datei**: ersetzt das enthaltende Objekt - - **Array von Dateien**: wird der Reihe nach tief zusammengeführt (spätere gewinnt) - - **Nebenschlüssel**: werden nach Includes zusammengeführt (überschreiben inkludierte Werte) + - **Array von Dateien**: wird in Reihenfolge tief zusammengeführt (spätere gewinnt) + - **Nebenschlüssel**: werden nach den Includes zusammengeführt (überschreiben eingeschlossene Werte) - **Verschachtelte Includes**: werden bis zu 10 Ebenen tief unterstützt - - **Relative Pfade**: werden relativ zur inkludierenden Datei aufgelöst + - **Relative Pfade**: werden relativ zur einbindenden Datei aufgelöst - **Fehlerbehandlung**: klare Fehler bei fehlenden Dateien, Parse-Fehlern und zirkulären Includes -## Hot Reload der Konfiguration +## Konfigurations-Hot-Reload -Das Gateway überwacht `~/.openclaw/openclaw.json` und wendet Änderungen automatisch an — für die meisten Einstellungen ist kein manueller Neustart erforderlich. +Das Gateway überwacht `~/.openclaw/openclaw.json` und übernimmt Änderungen automatisch — für die meisten Einstellungen ist kein manueller Neustart erforderlich. ### Reload-Modi -| Modus | Verhalten | -| ---------------------- | ---------------------------------------------------------------------------------------- | -| **`hybrid`** (Standard) | Wendet sichere Änderungen sofort hot an. Startet bei kritischen Änderungen automatisch neu. | -| **`hot`** | Wendet nur sichere Änderungen hot an. Protokolliert eine Warnung, wenn ein Neustart erforderlich ist — Sie kümmern sich darum. | -| **`restart`** | Startet das Gateway bei jeder Konfigurationsänderung neu, sicher oder nicht. | -| **`off`** | Deaktiviert die Dateibeobachtung. Änderungen werden beim nächsten manuellen Neustart wirksam. | +| Modus | Verhalten | +| ---------------------- | -------------------------------------------------------------------------------------- | +| **`hybrid`** (Standard) | Wendet sichere Änderungen sofort per Hot-Apply an. Startet bei kritischen Änderungen automatisch neu. | +| **`hot`** | Wendet nur sichere Änderungen per Hot-Apply an. Protokolliert eine Warnung, wenn ein Neustart erforderlich ist — Sie kümmern sich darum. | +| **`restart`** | Startet das Gateway bei jeder Konfigurationsänderung neu, sicher oder nicht. | +| **`off`** | Deaktiviert die Dateiüberwachung. Änderungen werden beim nächsten manuellen Neustart wirksam. | ```json5 { @@ -514,49 +502,47 @@ Das Gateway überwacht `~/.openclaw/openclaw.json` und wendet Änderungen automa } ``` -### Was hot angewendet wird und was einen Neustart erfordert +### Was per Hot-Apply übernommen wird und was einen Neustart erfordert -Die meisten Felder werden ohne Ausfallzeit hot angewendet. Im Modus `hybrid` werden Änderungen, die einen Neustart erfordern, automatisch verarbeitet. +Die meisten Felder werden ohne Ausfallzeit per Hot-Apply übernommen. Im `hybrid`-Modus werden Änderungen, die einen Neustart erfordern, automatisch verarbeitet. -| Kategorie | Felder | Neustart erforderlich? | -| ------------------- | -------------------------------------------------------------------- | ---------------------- | -| Kanäle | `channels.*`, `web` (WhatsApp) — alle integrierten und Erweiterungskanäle | Nein | -| Agent & Modelle | `agent`, `agents`, `models`, `routing` | Nein | -| Automatisierung | `hooks`, `cron`, `agent.heartbeat` | Nein | -| Sitzungen & Nachrichten | `session`, `messages` | Nein | -| Tools & Medien | `tools`, `browser`, `skills`, `audio`, `talk` | Nein | -| UI & Sonstiges | `ui`, `logging`, `identity`, `bindings` | Nein | -| Gateway-Server | `gateway.*` (Port, Bind, Auth, Tailscale, TLS, HTTP) | **Ja** | -| Infrastruktur | `discovery`, `canvasHost`, `plugins` | **Ja** | +| Kategorie | Felder | Neustart erforderlich? | +| -------------------- | -------------------------------------------------------------------- | ---------------------- | +| Kanäle | `channels.*`, `web` (WhatsApp) — alle integrierten und Erweiterungskanäle | Nein | +| Agent & Modelle | `agent`, `agents`, `models`, `routing` | Nein | +| Automatisierung | `hooks`, `cron`, `agent.heartbeat` | Nein | +| Sitzungen & Nachrichten | `session`, `messages` | Nein | +| Tools & Medien | `tools`, `browser`, `skills`, `audio`, `talk` | Nein | +| UI & Sonstiges | `ui`, `logging`, `identity`, `bindings` | Nein | +| Gateway-Server | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Ja** | +| Infrastruktur | `discovery`, `canvasHost`, `plugins` | **Ja** | -`gateway.reload` und `gateway.remote` sind Ausnahmen — Änderungen daran lösen **keinen** Neustart aus. +`gateway.reload` und `gateway.remote` sind Ausnahmen — ihre Änderung löst **keinen** Neustart aus. -## Config-RPC (programmatische Updates) +## Config RPC (programmatische Aktualisierungen) -Control-Plane-Schreib-RPCs (`config.apply`, `config.patch`, `update.run`) sind auf **3 Anfragen pro 60 Sekunden** pro `deviceId+clientIp` begrenzt. Bei Begrenzung gibt der RPC `UNAVAILABLE` mit `retryAfterMs` zurück. +Control-Plane-Schreib-RPCs (`config.apply`, `config.patch`, `update.run`) sind auf **3 Anfragen pro 60 Sekunden** pro `deviceId+clientIp` begrenzt. Bei Begrenzung gibt die RPC `UNAVAILABLE` mit `retryAfterMs` zurück. Sicherer/standardmäßiger Ablauf: -- `config.schema.lookup`: untersucht einen pfadbezogenen Konfigurationsunterbaum mit einem flachen - Schemaknoten, zugeordneten Hinweis-Metadaten und unmittelbaren Zusammenfassungen der Unterelemente -- `config.get`: ruft den aktuellen Snapshot + Hash ab -- `config.patch`: bevorzugter Pfad für Teilaktualisierungen -- `config.apply`: nur für vollständigen Konfigurationsersatz -- `update.run`: explizites Selbst-Update + Neustart +- `config.schema.lookup`: einen pfadbezogenen Konfigurations-Teilbaum mit einem flachen Schemaknoten, passenden Hinweismetadaten und Zusammenfassungen der direkten Unterelemente untersuchen +- `config.get`: den aktuellen Snapshot + Hash abrufen +- `config.patch`: bevorzugter Pfad für partielle Aktualisierungen +- `config.apply`: nur vollständiger Ersatz der gesamten Konfiguration +- `update.run`: explizites Self-Update + Neustart -Wenn Sie nicht die gesamte Konfiguration ersetzen, bevorzugen Sie `config.schema.lookup` -und dann `config.patch`. +Wenn Sie nicht die gesamte Konfiguration ersetzen, sollten Sie `config.schema.lookup` und dann `config.patch` bevorzugen. Validiert + schreibt die vollständige Konfiguration und startet das Gateway in einem Schritt neu. - `config.apply` ersetzt die **gesamte Konfiguration**. Verwenden Sie `config.patch` für Teilaktualisierungen oder `openclaw config set` für einzelne Schlüssel. + `config.apply` ersetzt die **gesamte Konfiguration**. Verwenden Sie `config.patch` für partielle Aktualisierungen oder `openclaw config set` für einzelne Schlüssel. Parameter: @@ -564,10 +550,10 @@ und dann `config.patch`. - `raw` (string) — JSON5-Payload für die gesamte Konfiguration - `baseHash` (optional) — Konfigurations-Hash aus `config.get` (erforderlich, wenn Konfiguration vorhanden ist) - `sessionKey` (optional) — Sitzungsschlüssel für den Wake-up-Ping nach dem Neustart - - `note` (optional) — Hinweis für das Neustart-Sentinel + - `note` (optional) — Hinweis für den Neustart-Sentinel - `restartDelayMs` (optional) — Verzögerung vor dem Neustart (Standard 2000) - Neustartanfragen werden zusammengefasst, während bereits eine aussteht/läuft, und zwischen Neustartzyklen gilt eine Abkühlzeit von 30 Sekunden. + Neustartanfragen werden zusammengefasst, solange bereits eine Anfrage aussteht/in Bearbeitung ist, und zwischen Neustartzyklen gilt eine Abklingzeit von 30 Sekunden. ```bash openclaw gateway call config.get --params '{}' # payload.hash erfassen @@ -580,8 +566,8 @@ und dann `config.patch`. - - Führt eine Teilaktualisierung in die bestehende Konfiguration zusammen (JSON-Merge-Patch-Semantik): + + Führt eine partielle Aktualisierung mit der vorhandenen Konfiguration zusammen (Semantik von JSON Merge Patch): - Objekte werden rekursiv zusammengeführt - `null` löscht einen Schlüssel @@ -593,7 +579,7 @@ und dann `config.patch`. - `baseHash` (erforderlich) — Konfigurations-Hash aus `config.get` - `sessionKey`, `note`, `restartDelayMs` — wie bei `config.apply` - Das Neustartverhalten entspricht `config.apply`: zusammengefasste ausstehende Neustarts plus eine Abkühlzeit von 30 Sekunden zwischen Neustartzyklen. + Das Neustartverhalten entspricht `config.apply`: Zusammenfassung ausstehender Neustarts plus eine Abklingzeit von 30 Sekunden zwischen Neustartzyklen. ```bash openclaw gateway call config.patch --params '{ @@ -607,7 +593,7 @@ und dann `config.patch`. ## Umgebungsvariablen -OpenClaw liest Umgebungsvariablen aus dem Elternprozess sowie aus: +OpenClaw liest Umgebungsvariablen aus dem übergeordneten Prozess sowie aus: - `.env` aus dem aktuellen Arbeitsverzeichnis (falls vorhanden) - `~/.openclaw/.env` (globaler Fallback) @@ -624,7 +610,7 @@ Keine der beiden Dateien überschreibt bestehende Umgebungsvariablen. Sie könne ``` - Wenn aktiviert und erwartete Schlüssel nicht gesetzt sind, führt OpenClaw Ihre Login-Shell aus und importiert nur die fehlenden Schlüssel: + Falls aktiviert und erwartete Schlüssel nicht gesetzt sind, führt OpenClaw Ihre Login-Shell aus und importiert nur die fehlenden Schlüssel: ```json5 { @@ -634,11 +620,11 @@ Keine der beiden Dateien überschreibt bestehende Umgebungsvariablen. Sie könne } ``` -Entsprechende Env-Variable: `OPENCLAW_LOAD_SHELL_ENV=1` +Env-Var-Äquivalent: `OPENCLAW_LOAD_SHELL_ENV=1` - - Verweisen Sie in jedem Stringwert der Konfiguration mit `${VAR_NAME}` auf Umgebungsvariablen: + + Verweisen Sie in beliebigen Stringwerten der Konfiguration mit `${VAR_NAME}` auf Umgebungsvariablen: ```json5 { @@ -649,15 +635,15 @@ Entsprechende Env-Variable: `OPENCLAW_LOAD_SHELL_ENV=1` Regeln: -- Es werden nur Großbuchstabennamen abgeglichen: `[A-Z_][A-Z0-9_]*` -- Fehlende/leere Variablen lösen beim Laden einen Fehler aus -- Escapen Sie mit `$${VAR}` für eine wörtliche Ausgabe +- Es werden nur großgeschriebene Namen abgeglichen: `[A-Z_][A-Z0-9_]*` +- Fehlende/leere Variablen werfen beim Laden einen Fehler +- Mit `$${VAR}` für wörtliche Ausgabe maskieren - Funktioniert auch in `$include`-Dateien -- Inline-Ersetzung: `"${BASE}/v1"` → `"https://api.example.com/v1"` +- Inline-Substitution: `"${BASE}/v1"` → `"https://api.example.com/v1"` - + Für Felder, die SecretRef-Objekte unterstützen, können Sie Folgendes verwenden: ```json5 @@ -690,16 +676,16 @@ Regeln: } ``` -Details zu SecretRef (einschließlich `secrets.providers` für `env`/`file`/`exec`) finden Sie unter [Secrets Management](/gateway/secrets). -Unterstützte Anmeldedatenpfade sind unter [SecretRef Credential Surface](/reference/secretref-credential-surface) aufgeführt. +Details zu SecretRef (einschließlich `secrets.providers` für `env`/`file`/`exec`) finden Sie unter [Secrets Management](/de/gateway/secrets). +Unterstützte Credential-Pfade sind unter [SecretRef Credential Surface](/de/reference/secretref-credential-surface) aufgeführt. -Siehe [Environment](/help/environment) für vollständige Vorrangregeln und Quellen. +Siehe [Environment](/de/help/environment) für vollständige Priorität und Quellen. ## Vollständige Referenz -Die vollständige Referenz für alle Felder finden Sie unter **[Configuration Reference](/gateway/configuration-reference)**. +Für die vollständige Feld-für-Feld-Referenz siehe **[Configuration Reference](/de/gateway/configuration-reference)**. --- -_Verwandt: [Configuration Examples](/gateway/configuration-examples) · [Configuration Reference](/gateway/configuration-reference) · [Doctor](/gateway/doctor)_ +_Verwandt: [Konfigurationsbeispiele](/de/gateway/configuration-examples) · [Configuration Reference](/de/gateway/configuration-reference) · [Doctor](/de/gateway/doctor)_ diff --git a/docs/de/plugins/memory-wiki.md b/docs/de/plugins/memory-wiki.md new file mode 100644 index 000000000..394a0ad68 --- /dev/null +++ b/docs/de/plugins/memory-wiki.md @@ -0,0 +1,343 @@ +--- +read_when: + - Sie möchten dauerhaftes Wissen über einfache MEMORY.md-Notizen hinaus + - Sie konfigurieren das gebündelte memory-wiki-Plugin + - Sie möchten wiki_search, wiki_get oder den Bridge-Modus verstehen +summary: 'memory-wiki: kompilierter Wissensspeicher mit Herkunftsnachweisen, Claims, Dashboards und Bridge-Modus' +title: Memory Wiki +x-i18n: + generated_at: "2026-04-08T06:01:25Z" + model: gpt-5.4 + provider: openai + source_hash: b78dd6a4ef4451dae6b53197bf0c7c2a2ba846b08e4a3a93c1026366b1598d82 + source_path: plugins/memory-wiki.md + workflow: 15 +--- + +# Memory Wiki + +`memory-wiki` ist ein gebündeltes Plugin, das dauerhaften Speicher in einen kompilierten Wissensspeicher verwandelt. + +Es ersetzt **nicht** das aktive Speicher-Plugin. Das aktive Speicher-Plugin ist weiterhin für Recall, Promotion, Indizierung und Dreaming zuständig. `memory-wiki` steht daneben und kompiliert dauerhaftes Wissen in ein navigierbares Wiki mit deterministischen Seiten, strukturierten Claims, Herkunftsnachweisen, Dashboards und maschinenlesbaren Digests. + +Verwenden Sie es, wenn sich Speicher eher wie eine gepflegte Wissensebene und weniger wie ein Haufen Markdown-Dateien verhalten soll. + +## Was es hinzufügt + +- Einen dedizierten Wiki-Speicher mit deterministischem Seitenlayout +- Strukturierte Claim- und Evidenzmetadaten statt nur Fließtext +- Herkunftsnachweise, Konfidenz, Widersprüche und offene Fragen auf Seitenebene +- Kompilierte Digests für Agenten- und Laufzeit-Consumer +- Wiki-native Search-/Get-/Apply-/Lint-Tools +- Optionalen Bridge-Modus, der öffentliche Artefakte aus dem aktiven Speicher-Plugin importiert +- Optionalen Obsidian-freundlichen Rendermodus und CLI-Integration + +## Wie es mit Speicher zusammenpasst + +Stellen Sie sich die Aufteilung so vor: + +| Ebene | Zuständig für | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| Aktives Speicher-Plugin (`memory-core`, QMD, Honcho usw.) | Recall, semantische Suche, Promotion, Dreaming, Speicher-Laufzeit | +| `memory-wiki` | Kompilierte Wiki-Seiten, Synthesen mit Herkunftsnachweisen, Dashboards, wiki-spezifische Search/Get/Apply | + +Wenn das aktive Speicher-Plugin gemeinsame Recall-Artefakte bereitstellt, kann OpenClaw mit `memory_search corpus=all` beide Ebenen in einem Durchlauf durchsuchen. + +Wenn Sie wiki-spezifisches Ranking, Herkunftsnachweise oder direkten Seitenzugriff benötigen, verwenden Sie stattdessen die wiki-nativen Tools. + +## Speicher-Modi + +`memory-wiki` unterstützt drei Speicher-Modi: + +### `isolated` + +Eigener Speicher, eigene Quellen, keine Abhängigkeit von `memory-core`. + +Verwenden Sie diesen Modus, wenn das Wiki ein eigener kuratierter Wissensspeicher sein soll. + +### `bridge` + +Liest öffentliche Speicher-Artefakte und Speicher-Ereignisse aus dem aktiven Speicher-Plugin über öffentliche Plugin-SDK-Schnittstellen. + +Verwenden Sie diesen Modus, wenn das Wiki die exportierten Artefakte des Speicher-Plugins kompilieren und organisieren soll, ohne auf private Plugin-Interna zuzugreifen. + +Der Bridge-Modus kann Folgendes indizieren: + +- exportierte Speicher-Artefakte +- Dreaming-Berichte +- tägliche Notizen +- Dateien im Speicher-Stammverzeichnis +- Speicher-Ereignisprotokolle + +### `unsafe-local` + +Expliziter Escape Hatch auf demselben Rechner für lokale private Pfade. + +Dieser Modus ist absichtlich experimentell und nicht portabel. Verwenden Sie ihn nur, wenn Sie die Vertrauensgrenze verstehen und ausdrücklich lokalen Dateisystemzugriff benötigen, den der Bridge-Modus nicht bereitstellen kann. + +## Speicher-Layout + +Das Plugin initialisiert einen Speicher wie diesen: + +```text +/ + AGENTS.md + WIKI.md + index.md + inbox.md + entities/ + concepts/ + syntheses/ + sources/ + reports/ + _attachments/ + _views/ + .openclaw-wiki/ +``` + +Verwaltete Inhalte bleiben innerhalb generierter Blöcke. Von Menschen erstellte Notizblöcke bleiben erhalten. + +Die wichtigsten Seitengruppen sind: + +- `sources/` für importiertes Rohmaterial und Bridge-gestützte Seiten +- `entities/` für dauerhafte Dinge, Personen, Systeme, Projekte und Objekte +- `concepts/` für Ideen, Abstraktionen, Muster und Richtlinien +- `syntheses/` für kompilierte Zusammenfassungen und gepflegte Übersichten +- `reports/` für generierte Dashboards + +## Strukturierte Claims und Evidenz + +Seiten können strukturiertes `claims`-Frontmatter tragen, nicht nur Freitext. + +Jeder Claim kann Folgendes enthalten: + +- `id` +- `text` +- `status` +- `confidence` +- `evidence[]` +- `updatedAt` + +Evidenz-Einträge können Folgendes enthalten: + +- `sourceId` +- `path` +- `lines` +- `weight` +- `note` +- `updatedAt` + +Dadurch verhält sich das Wiki eher wie eine Überzeugungsebene als wie eine passive Notizablage. Claims können verfolgt, bewertet, angefochten und auf Quellen zurückgeführt werden. + +## Kompilierungs-Pipeline + +Der Kompilierungsschritt liest Wiki-Seiten, normalisiert Zusammenfassungen und erzeugt stabile, maschinenorientierte Artefakte unter: + +- `.openclaw-wiki/cache/agent-digest.json` +- `.openclaw-wiki/cache/claims.jsonl` + +Diese Digests existieren, damit Agenten und Laufzeitcode nicht Markdown-Seiten scrapen müssen. + +Die kompilierte Ausgabe unterstützt außerdem: + +- Wiki-Indizierung im ersten Durchlauf für Search/Get-Abläufe +- Claim-ID-Lookup zurück zu den besitzenden Seiten +- kompakte Prompt-Ergänzungen +- Generierung von Berichten/Dashboards + +## Dashboards und Zustandsberichte + +Wenn `render.createDashboards` aktiviert ist, pflegt die Kompilierung Dashboards unter `reports/`. + +Integrierte Berichte umfassen: + +- `reports/open-questions.md` +- `reports/contradictions.md` +- `reports/low-confidence.md` +- `reports/claim-health.md` +- `reports/stale-pages.md` + +Diese Berichte verfolgen Dinge wie: + +- Cluster von Widerspruchsnotizen +- konkurrierende Claim-Cluster +- Claims ohne strukturierte Evidenz +- Seiten und Claims mit niedriger Konfidenz +- veraltete oder unbekannte Aktualität +- Seiten mit ungelösten Fragen + +## Suche und Abruf + +`memory-wiki` unterstützt zwei Such-Backends: + +- `shared`: verwendet den gemeinsamen Speicher-Suchablauf, wenn verfügbar +- `local`: durchsucht das Wiki lokal + +Es unterstützt außerdem drei Korpora: + +- `wiki` +- `memory` +- `all` + +Wichtiges Verhalten: + +- `wiki_search` und `wiki_get` verwenden nach Möglichkeit kompilierte Digests als ersten Durchlauf +- Claim-IDs können zur besitzenden Seite aufgelöst werden +- umstrittene/veraltete/aktuelle Claims beeinflussen das Ranking +- Herkunftslabels können in die Ergebnisse übernommen werden + +Praktische Regel: + +- verwenden Sie `memory_search corpus=all` für einen breiten Recall-Durchlauf +- verwenden Sie `wiki_search` + `wiki_get`, wenn wiki-spezifisches Ranking, Herkunftsnachweise oder Seitenstrukturen für Überzeugungen wichtig sind + +## Agenten-Tools + +Das Plugin registriert diese Tools: + +- `wiki_status` +- `wiki_search` +- `wiki_get` +- `wiki_apply` +- `wiki_lint` + +Was sie tun: + +- `wiki_status`: aktueller Speicher-Modus, Zustand, Verfügbarkeit der Obsidian-CLI +- `wiki_search`: durchsucht Wiki-Seiten und, wenn konfiguriert, gemeinsame Speicher-Korpora +- `wiki_get`: liest eine Wiki-Seite nach ID/Pfad oder greift als Fallback auf das gemeinsame Speicher-Korpus zurück +- `wiki_apply`: enge Synthese-/Metadaten-Mutationen ohne freie Seitenbearbeitung +- `wiki_lint`: strukturelle Prüfungen, Lücken bei Herkunftsnachweisen, Widersprüche, offene Fragen + +Das Plugin registriert außerdem eine nicht-exklusive Speicher-Korpus-Ergänzung, sodass gemeinsames `memory_search` und `memory_get` das Wiki erreichen können, wenn das aktive Speicher-Plugin Korpusauswahl unterstützt. + +## Verhalten bei Prompt und Kontext + +Wenn `context.includeCompiledDigestPrompt` aktiviert ist, hängen Speicher-Prompt-Abschnitte einen kompakten kompilierten Schnappschuss aus `agent-digest.json` an. + +Dieser Schnappschuss ist absichtlich klein und signalstark: + +- nur Top-Seiten +- nur Top-Claims +- Anzahl der Widersprüche +- Anzahl der Fragen +- Konfidenz-/Aktualitätsqualifikatoren + +Dies ist optional, weil es die Prompt-Form verändert und hauptsächlich für Kontext-Engines oder ältere Prompt-Zusammenstellung nützlich ist, die Speicher-Ergänzungen ausdrücklich verwenden. + +## Konfiguration + +Legen Sie die Konfiguration unter `plugins.entries.memory-wiki.config` ab: + +```json5 +{ + plugins: { + entries: { + "memory-wiki": { + enabled: true, + config: { + vaultMode: "isolated", + vault: { + path: "~/.openclaw/wiki/main", + renderMode: "obsidian", + }, + obsidian: { + enabled: true, + useOfficialCli: true, + vaultName: "OpenClaw Wiki", + openAfterWrites: false, + }, + bridge: { + enabled: false, + readMemoryArtifacts: true, + indexDreamReports: true, + indexDailyNotes: true, + indexMemoryRoot: true, + followMemoryEvents: true, + }, + ingest: { + autoCompile: true, + maxConcurrentJobs: 1, + allowUrlIngest: true, + }, + search: { + backend: "shared", + corpus: "wiki", + }, + context: { + includeCompiledDigestPrompt: false, + }, + render: { + preserveHumanBlocks: true, + createBacklinks: true, + createDashboards: true, + }, + }, + }, + }, + }, +} +``` + +Wichtige Schalter: + +- `vaultMode`: `isolated`, `bridge`, `unsafe-local` +- `vault.renderMode`: `native` oder `obsidian` +- `bridge.readMemoryArtifacts`: öffentliche Artefakte des aktiven Speicher-Plugins importieren +- `bridge.followMemoryEvents`: Ereignisprotokolle im Bridge-Modus einschließen +- `search.backend`: `shared` oder `local` +- `search.corpus`: `wiki`, `memory` oder `all` +- `context.includeCompiledDigestPrompt`: kompakten Digest-Schnappschuss an Speicher-Prompt-Abschnitte anhängen +- `render.createBacklinks`: deterministische Verwandt-Blöcke generieren +- `render.createDashboards`: Dashboard-Seiten generieren + +## CLI + +`memory-wiki` stellt außerdem eine Oberfläche der obersten Ebene in der CLI bereit: + +```bash +openclaw wiki status +openclaw wiki doctor +openclaw wiki init +openclaw wiki ingest ./notes/alpha.md +openclaw wiki compile +openclaw wiki lint +openclaw wiki search "alpha" +openclaw wiki get entity.alpha +openclaw wiki apply synthesis "Alpha Summary" --body "..." --source-id source.alpha +openclaw wiki bridge import +openclaw wiki obsidian status +``` + +Die vollständige Befehlsreferenz finden Sie unter [CLI: wiki](/cli/wiki). + +## Obsidian-Unterstützung + +Wenn `vault.renderMode` auf `obsidian` gesetzt ist, schreibt das Plugin Obsidian-freundliches Markdown und kann optional die offizielle `obsidian`-CLI verwenden. + +Unterstützte Abläufe umfassen: + +- Statusprüfung +- Speicher-Suche +- Öffnen einer Seite +- Aufrufen eines Obsidian-Befehls +- Sprung zur täglichen Notiz + +Dies ist optional. Das Wiki funktioniert im nativen Modus auch ohne Obsidian. + +## Empfohlener Workflow + +1. Behalten Sie Ihr aktives Speicher-Plugin für Recall/Promotion/Dreaming. +2. Aktivieren Sie `memory-wiki`. +3. Beginnen Sie mit dem Modus `isolated`, sofern Sie nicht ausdrücklich den Bridge-Modus möchten. +4. Verwenden Sie `wiki_search` / `wiki_get`, wenn Herkunftsnachweise wichtig sind. +5. Verwenden Sie `wiki_apply` für enge Synthesen oder Metadatenaktualisierungen. +6. Führen Sie nach sinnvollen Änderungen `wiki_lint` aus. +7. Aktivieren Sie Dashboards, wenn Sie Sichtbarkeit für veraltete Inhalte/Widersprüche möchten. + +## Verwandte Dokumentation + +- [Memory Overview](/de/concepts/memory) +- [CLI: memory](/cli/memory) +- [CLI: wiki](/cli/wiki) +- [Plugin SDK overview](/de/plugins/sdk-overview) diff --git a/docs/de/providers/glm.md b/docs/de/providers/glm.md index 4ee44bfc6..04e32627c 100644 --- a/docs/de/providers/glm.md +++ b/docs/de/providers/glm.md @@ -1,33 +1,33 @@ --- read_when: - Sie möchten GLM-Modelle in OpenClaw verwenden - - Sie benötigen die Benennungskonvention und Einrichtung für Modelle + - Sie benötigen die Modellbenennungskonvention und die Einrichtung summary: Überblick über die GLM-Modellfamilie und wie sie in OpenClaw verwendet wird title: GLM-Modelle x-i18n: - generated_at: "2026-04-05T12:52:59Z" + generated_at: "2026-04-08T06:01:07Z" model: gpt-5.4 provider: openai - source_hash: 59622edab5094d991987f9788fbf08b33325e737e7ff88632b0c3ac89412d4c7 + source_hash: 79a55acfa139847b4b85dbc09f1068cbd2febb1e49f984a23ea9e3b43bc910eb source_path: providers/glm.md workflow: 15 --- # GLM-Modelle -GLM ist eine **Modellfamilie** (kein Unternehmen), die über die Plattform Z.AI verfügbar ist. In OpenClaw -wird auf GLM-Modelle über den Provider `zai` und Modell-IDs wie `zai/glm-5` zugegriffen. +GLM ist eine **Modellfamilie** (kein Unternehmen), die über die Z.AI-Plattform verfügbar ist. In OpenClaw werden GLM- +Modelle über den Provider `zai` und Modell-IDs wie `zai/glm-5` aufgerufen. ## CLI-Einrichtung ```bash -# Generische API-Key-Einrichtung mit automatischer Endpunkterkennung +# Allgemeine API-Key-Einrichtung mit automatischer Endpunkterkennung openclaw onboard --auth-choice zai-api-key -# Coding Plan Global, empfohlen für Nutzer von Coding Plan +# Coding Plan Global, empfohlen für Coding-Plan-Benutzer openclaw onboard --auth-choice zai-coding-global -# Coding Plan CN (China-Region), empfohlen für Nutzer von Coding Plan +# Coding Plan CN (China-Region), empfohlen für Coding-Plan-Benutzer openclaw onboard --auth-choice zai-coding-cn # Allgemeine API @@ -42,17 +42,17 @@ openclaw onboard --auth-choice zai-cn ```json5 { env: { ZAI_API_KEY: "sk-..." }, - agents: { defaults: { model: { primary: "zai/glm-5" } } }, + agents: { defaults: { model: { primary: "zai/glm-5.1" } } }, } ``` Mit `zai-api-key` kann OpenClaw den passenden Z.AI-Endpunkt anhand des Schlüssels erkennen und automatisch die richtige Basis-URL anwenden. Verwenden Sie die expliziten regionalen Optionen, wenn -Sie gezielt eine bestimmte Oberfläche für Coding Plan oder die allgemeine API erzwingen möchten. +Sie eine bestimmte Coding-Plan- oder allgemeine API-Oberfläche erzwingen möchten. ## Aktuelle gebündelte GLM-Modelle -OpenClaw initialisiert den gebündelten Provider `zai` derzeit mit diesen GLM-Referenzen: +OpenClaw versieht den gebündelten Provider `zai` derzeit mit diesen GLM-Referenzen: - `glm-5.1` - `glm-5` @@ -70,6 +70,6 @@ OpenClaw initialisiert den gebündelten Provider `zai` derzeit mit diesen GLM-Re ## Hinweise -- GLM-Versionen und Verfügbarkeit können sich ändern; prüfen Sie die Z.AI-Dokumentation auf den neuesten Stand. -- Die standardmäßige gebündelte Modellreferenz ist `zai/glm-5`. -- Details zum Provider finden Sie unter [/providers/zai](/providers/zai). +- GLM-Versionen und -Verfügbarkeit können sich ändern; prüfen Sie die Z.AI-Dokumentation auf die neuesten Informationen. +- Die standardmäßig gebündelte Modellreferenz ist `zai/glm-5.1`. +- Einzelheiten zum Provider finden Sie unter [/providers/zai](/de/providers/zai). diff --git a/docs/de/providers/zai.md b/docs/de/providers/zai.md index ee425133d..e544e2a66 100644 --- a/docs/de/providers/zai.md +++ b/docs/de/providers/zai.md @@ -1,14 +1,14 @@ --- read_when: - - Sie möchten Z.AI-/GLM-Modelle in OpenClaw verwenden - - Sie benötigen eine einfache Einrichtung mit `ZAI_API_KEY` -summary: Verwenden Sie Z.AI (GLM-Modelle) mit OpenClaw + - Sie möchten Z.AI / GLM-Modelle in OpenClaw verwenden + - Sie benötigen eine einfache Einrichtung mit ZAI_API_KEY +summary: Z.AI (GLM-Modelle) mit OpenClaw verwenden title: Z.AI x-i18n: - generated_at: "2026-04-05T12:54:16Z" + generated_at: "2026-04-08T06:01:16Z" model: gpt-5.4 provider: openai - source_hash: 48006cdd580484f0c62e2877b27a6a68d7bc44795b3e97a28213d95182d9acf9 + source_hash: 66cbd9813ee28d202dcae34debab1b0cf9927793acb00743c1c62b48d9e381f9 source_path: providers/zai.md workflow: 15 --- @@ -22,28 +22,28 @@ mit einem Z.AI-API-Schlüssel. ## CLI-Einrichtung ```bash -# Generische Einrichtung mit API-Schlüssel und automatischer Endpunkterkennung +# Allgemeine API-Key-Einrichtung mit automatischer Endpunkterkennung openclaw onboard --auth-choice zai-api-key # Coding Plan Global, empfohlen für Coding-Plan-Benutzer openclaw onboard --auth-choice zai-coding-global -# Coding Plan CN (Region China), empfohlen für Coding-Plan-Benutzer +# Coding Plan CN (China-Region), empfohlen für Coding-Plan-Benutzer openclaw onboard --auth-choice zai-coding-cn # Allgemeine API openclaw onboard --auth-choice zai-global -# Allgemeine API CN (Region China) +# Allgemeine API CN (China-Region) openclaw onboard --auth-choice zai-cn ``` -## Konfigurationsausschnitt +## Konfigurationsbeispiel ```json5 { env: { ZAI_API_KEY: "sk-..." }, - agents: { defaults: { model: { primary: "zai/glm-5" } } }, + agents: { defaults: { model: { primary: "zai/glm-5.1" } } }, } ``` @@ -53,7 +53,7 @@ Sie eine bestimmte Coding-Plan- oder allgemeine API-Oberfläche erzwingen möcht ## Gebündelter GLM-Katalog -OpenClaw initialisiert den gebündelten Provider `zai` derzeit mit: +OpenClaw versieht den gebündelten Provider `zai` derzeit mit: - `glm-5.1` - `glm-5` @@ -72,11 +72,11 @@ OpenClaw initialisiert den gebündelten Provider `zai` derzeit mit: ## Hinweise - GLM-Modelle sind als `zai/` verfügbar (Beispiel: `zai/glm-5`). -- Standardreferenz des gebündelten Modells: `zai/glm-5` -- Unbekannte `glm-5*`-IDs werden auf dem Pfad des gebündelten Providers weiterhin vorwärts aufgelöst, indem - provider-eigene Metadaten aus der Vorlage `glm-4.7` synthetisiert werden, wenn die ID +- Standardmäßig gebündelte Modellreferenz: `zai/glm-5.1` +- Unbekannte `glm-5*`-IDs werden auf dem gebündelten Provider-Pfad weiterhin vorwärts aufgelöst, indem + Provider-eigene Metadaten aus der Vorlage `glm-4.7` synthetisiert werden, wenn die ID der aktuellen Form der GLM-5-Familie entspricht. -- `tool_stream` ist standardmäßig für Z.AI-Streaming von Tool-Aufrufen aktiviert. Setzen Sie +- `tool_stream` ist standardmäßig für das Streaming von Z.AI-Tool-Aufrufen aktiviert. Setzen Sie `agents.defaults.models["zai/"].params.tool_stream` auf `false`, um es zu deaktivieren. -- Siehe [/providers/glm](/providers/glm) für den Überblick über die Modelfamilie. +- Siehe [/providers/glm](/de/providers/glm) für den Überblick über die Modellfamilie. - Z.AI verwendet Bearer-Authentifizierung mit Ihrem API-Schlüssel. diff --git a/docs/de/refactor/qa.md b/docs/de/refactor/qa.md index d1173de17..29c760685 100644 --- a/docs/de/refactor/qa.md +++ b/docs/de/refactor/qa.md @@ -1,20 +1,21 @@ --- x-i18n: - generated_at: "2026-04-08T02:18:30Z" + generated_at: "2026-04-08T06:01:53Z" model: gpt-5.4 provider: openai - source_hash: 0e156cc8e2fe946a0423862f937754a7caa1fe7e6863b50a80bff49a1c86e1e8 + source_hash: 4a9066b2a939c5a9ba69141d75405f0e8097997b523164340e2f0e9a0d5060dd source_path: refactor/qa.md workflow: 15 --- -# QA-Refactor +# QA-Refaktorierung Status: grundlegende Migration abgeschlossen. ## Ziel -OpenClaw-QA von einem Modell mit geteilten Definitionen auf eine Single Source of Truth umstellen: +QA in OpenClaw von einem Modell mit geteilten Definitionen zu einer einzigen +Quelle der Wahrheit verschieben: - Szenario-Metadaten - an das Modell gesendete Prompts @@ -23,30 +24,36 @@ OpenClaw-QA von einem Modell mit geteilten Definitionen auf eine Single Source o - Assertions und Erfolgskriterien - Artefakte und Hinweise für Berichte -Der gewünschte Endzustand ist ein generisches QA-Harness, das leistungsfähige Szenario-Definitionsdateien lädt, statt den Großteil des Verhaltens in TypeScript fest zu codieren. +Der gewünschte Endzustand ist ein generisches QA-Harness, das leistungsfähige +Szenario-Definitionsdateien lädt, anstatt den Großteil des Verhaltens in +TypeScript fest zu codieren. ## Aktueller Stand -Die primäre Single Source of Truth liegt jetzt in `qa/scenarios.md`. +Die primäre Quelle der Wahrheit liegt jetzt in `qa/scenarios/index.md` plus +einer Datei pro Szenario unter `qa/scenarios/*.md`. Implementiert: -- `qa/scenarios.md` - - kanonisches QA-Paket +- `qa/scenarios/index.md` + - kanonische Metadaten des QA-Pakets - Operator-Identität - Startmission +- `qa/scenarios/*.md` + - eine Markdown-Datei pro Szenario - Szenario-Metadaten - Handler-Bindings + - szenariospezifische Ausführungskonfiguration - `extensions/qa-lab/src/scenario-catalog.ts` - Markdown-Paketparser + zod-Validierung - `extensions/qa-lab/src/qa-agent-bootstrap.ts` - Plan-Rendering aus dem Markdown-Paket - `extensions/qa-lab/src/qa-agent-workspace.ts` - - stellt generierte Kompatibilitätsdateien plus `QA_SCENARIOS.md` bereit + - erzeugt Kompatibilitätsdateien plus `QA_SCENARIOS.md` - `extensions/qa-lab/src/suite.ts` - wählt ausführbare Szenarien über in Markdown definierte Handler-Bindings aus - QA-Bus-Protokoll + UI - - generische Inline-Anhänge für Bild-/Video-/Audio-/Datei-Rendering + - generische Inline-Anhänge für das Rendern von Bild/Video/Audio/Datei Verbleibende geteilte Oberflächen: @@ -55,80 +62,84 @@ Verbleibende geteilte Oberflächen: - `extensions/qa-lab/src/report.ts` - leitet die Berichtsstruktur weiterhin aus Laufzeitausgaben ab -Die Aufteilung der Single Source of Truth ist damit behoben, aber die Ausführung ist weiterhin größtenteils handlergestützt statt vollständig deklarativ. +Damit ist die Aufteilung der Quelle der Wahrheit behoben, aber die Ausführung ist +weiterhin größtenteils handlergestützt statt vollständig deklarativ. -## Wie die tatsächliche Szenario-Oberfläche aussieht +## Wie die echte Szenario-Oberfläche aussieht -Beim Lesen der aktuellen Suite zeigen sich einige unterschiedliche Szenarioklassen. +Beim Lesen der aktuellen Suite zeigen sich einige unterschiedliche +Szenarioklassen. ### Einfache Interaktion -- Kanal-Baseline -- DM-Baseline -- Threaded-Follow-up +- Kanal-Basislinie +- DM-Basislinie +- Thread-Follow-up - Modellwechsel -- Weiterverfolgung von Genehmigungen +- Genehmigungs-Follow-through - Reaktion/Bearbeiten/Löschen -### Konfigurations- und Laufzeitmutation +### Konfigurations- und Laufzeitmutationen -- config patch beim Deaktivieren von Skills -- config apply bei Neustart-Aufwecken -- config restart bei Fähigkeitsumschaltung -- Laufzeit-Inventar-Drift-Prüfung +- Skill-Deaktivierung per Config-Patch +- Weckvorgang bei Neustart nach Config-Anwendung +- Fähigkeitsumschaltung bei Config-Neustart +- Laufzeit-Inventardrift-Prüfung -### Dateisystem- und Repo-Assertions +### Dateisystem- und Repository-Assertions -- Quell-/Dokumentations-Erkennungsbericht +- Quell-/Dokumentations-Discovery-Bericht - Lobster Invaders bauen - Suche nach generierten Bildartefakten -### Speicher-Orchestrierung +### Memory-Orchestrierung -- Speicherabruf -- Speicher-Tools im Kanalkontext -- Fallback bei Speicherfehlern -- Ranking von Sitzungsspeicher -- Isolierung von Thread-Speicher -- Sweep für Memory Dreaming +- Memory-Abruf +- Memory-Tools im Kanalkontext +- Fallback bei Memory-Fehler +- Ranking von Sitzungs-Memory +- Isolation von Thread-Memory +- Memory-Dreaming-Durchlauf ### Tool- und Plugin-Integration -- MCP plugin-tools-Aufruf +- MCP-Plugin-Tools-Aufruf - Skill-Sichtbarkeit - Skill-Hot-Install - native Bildgenerierung - Bild-Roundtrip - Bildverständnis aus Anhang -### Mehrere Runden und mehrere Akteure +### Multi-Turn und Multi-Akteur -- Unter-Agent-Übergabe -- Unter-Agent-Fanout-Synthese -- Flows zur Wiederherstellung nach Neustart +- Subagent-Übergabe +- Subagent-Fanout-Synthese +- Stilflüsse für Wiederherstellung nach Neustart -Diese Kategorien sind wichtig, weil sie die DSL-Anforderungen bestimmen. Eine flache Liste aus Prompt + erwartetem Text reicht nicht aus. +Diese Kategorien sind wichtig, weil sie die DSL-Anforderungen bestimmen. Eine +flache Liste mit Prompt + erwartetem Text reicht nicht aus. ## Richtung -### Single Source of Truth +### Eine einzige Quelle der Wahrheit -Verwenden Sie `qa/scenarios.md` als verfasste Single Source of Truth. +`qa/scenarios/index.md` plus `qa/scenarios/*.md` als verfasste Quelle der +Wahrheit verwenden. Das Paket sollte bleiben: - für Reviews menschenlesbar - maschinenlesbar -- reichhaltig genug, um Folgendes zu steuern: +- reich genug, um Folgendes zu steuern: - Suite-Ausführung - Bootstrap des QA-Workspace - - Metadaten der QA-Lab-UI - - Doku-/Discovery-Prompts - - Berichtsgenerierung + - QA-Lab-UI-Metadaten + - Dokumentations-/Discovery-Prompts + - Berichtserstellung ### Bevorzugtes Authoring-Format -Markdown als Top-Level-Format mit strukturierter YAML darin verwenden. +Markdown als Top-Level-Format mit strukturiertem YAML darin verwenden. Empfohlene Form: @@ -139,13 +150,13 @@ Empfohlene Form: - tags - docs refs - code refs - - model/provider overrides - - prerequisites + - Modell-/Provider-Überschreibungen + - Voraussetzungen - Prosa-Abschnitte - - objective - - notes - - debugging hints -- YAML-Blöcke in Fences + - Ziel + - Hinweise + - Debugging-Hinweise +- abgegrenzte YAML-Blöcke - setup - steps - assertions @@ -154,12 +165,12 @@ Empfohlene Form: Das bietet: - bessere PR-Lesbarkeit als riesiges JSON -- reichhaltigeren Kontext als reines YAML +- mehr Kontext als reines YAML - striktes Parsing und zod-Validierung -Rohes JSON ist nur als generierte Zwischenform akzeptabel. +Rohes JSON ist nur als zwischengenerierte Form akzeptabel. -## Vorgeschlagene Form einer Szenariodatei +## Vorgeschlagene Form der Szenariodatei Beispiel: @@ -182,9 +193,9 @@ codeRefs: - src/gateway/chat-attachments.ts --- -# Ziel +# Objective -Prüfen, dass generierte Medien in der Follow-up-Runde wieder angehängt werden. +Verify generated media is reattached on the follow-up turn. # Setup @@ -199,33 +210,33 @@ Prüfen, dass generierte Medien in der Follow-up-Runde wieder angehängt werden. key: agent:qa:image-roundtrip ``` -# Schritte +# Steps ```yaml scenario.steps - action: agent.send session: agent:qa:image-roundtrip message: | - Bildgenerierungsprüfung: Generiere ein QA-Leuchtturmbild und fasse es in einem kurzen Satz zusammen. + Image generation check: generate a QA lighthouse image and summarize it in one short sentence. - action: artifact.capture kind: generated-image - promptSnippet: Bildgenerierungsprüfung + promptSnippet: Image generation check saveAs: lighthouseImage - action: agent.send session: agent:qa:image-roundtrip message: | - Prüfung der Bildinspektion im Roundtrip: Beschreibe den generierten Leuchtturm-Anhang in einem kurzen Satz. + Roundtrip image inspection check: describe the generated lighthouse attachment in one short sentence. attachments: - fromArtifact: lighthouseImage ``` -# Erwartung +# Expect ```yaml scenario.expect - assert: outbound.textIncludes value: lighthouse - assert: requestLog.matches where: - promptIncludes: Prüfung der Bildinspektion im Roundtrip + promptIncludes: Roundtrip image inspection check imageInputCountGte: 1 - assert: artifact.exists ref: lighthouseImage @@ -234,7 +245,8 @@ Prüfen, dass generierte Medien in der Follow-up-Runde wieder angehängt werden. ## Runner-Fähigkeiten, die die DSL abdecken muss -Ausgehend von der aktuellen Suite braucht der generische Runner mehr als nur Prompt-Ausführung. +Basierend auf der aktuellen Suite benötigt der generische Runner mehr als nur +Prompt-Ausführung. ### Umgebungs- und Setup-Aktionen @@ -245,7 +257,7 @@ Ausgehend von der aktuellen Suite braucht der generische Runner mehr als nur Pro - `thread.create` - `workspace.writeSkill` -### Agent-Runden-Aktionen +### Agent-Turn-Aktionen - `agent.send` - `agent.wait` @@ -270,7 +282,7 @@ Ausgehend von der aktuellen Suite braucht der generische Runner mehr als nur Pro - `artifact.captureGeneratedImage` - `artifact.capturePath` -### Speicher- und cron-Aktionen +### Memory- und Cron-Aktionen - `memory.indexForce` - `memory.searchCli` @@ -308,46 +320,48 @@ Beispiele aus der aktuellen Suite: - einen Thread erstellen und dann `threadId` wiederverwenden - eine Sitzung erstellen und dann `sessionKey` wiederverwenden -- ein Bild generieren und dann die Datei in der nächsten Runde anhängen -- einen Wake-Marker-String generieren und dann prüfen, dass er später erscheint +- ein Bild generieren und die Datei dann im nächsten Turn anhängen +- eine Wake-Marker-Zeichenfolge erzeugen und dann prüfen, dass sie später erscheint Benötigte Fähigkeiten: - `saveAs` - `${vars.name}` - `${artifacts.name}` -- typisierte Referenzen für Pfade, Sitzungsschlüssel, Thread-IDs, Marker, Tool-Ausgaben +- typisierte Referenzen für Pfade, Sitzungsschlüssel, Thread-IDs, Marker, + Tool-Ausgaben -Ohne Variablenunterstützung wird die Harness weiterhin Szenariologik zurück in TypeScript auslaufen lassen. +Ohne Variablenunterstützung wird die Harness-Szenariologik weiter zurück in +TypeScript auslaufen. ## Was als Escape Hatches bleiben sollte Ein vollständig rein deklarativer Runner ist in Phase 1 nicht realistisch. -Einige Szenarien sind von Natur aus stark orchestrierungsintensiv: +Einige Szenarien sind naturgemäß stark orchestrierungsorientiert: -- Sweep für Memory Dreaming -- config apply bei Neustart-Aufwecken -- config restart bei Fähigkeitsumschaltung +- Memory-Dreaming-Durchlauf +- Weckvorgang bei Neustart nach Config-Anwendung +- Fähigkeitsumschaltung bei Config-Neustart - Auflösung generierter Bildartefakte nach Zeitstempel/Pfad -- Auswertung von Discovery-Reports +- Auswertung von Discovery-Berichten Diese sollten vorerst explizite benutzerdefinierte Handler verwenden. Empfohlene Regel: -- 85-90 % deklarativ +- 85–90 % deklarativ - explizite `customHandler`-Schritte für den schwierigen Rest - nur benannte und dokumentierte benutzerdefinierte Handler - kein anonymer Inline-Code in der Szenariodatei -So bleibt die generische Engine sauber und Fortschritt ist trotzdem möglich. +Das hält die generische Engine sauber und ermöglicht trotzdem Fortschritt. ## Architekturänderung ### Aktuell -Szenario-Markdown ist bereits die Single Source of Truth für: +Markdown für Szenarien ist bereits die Quelle der Wahrheit für: - Suite-Ausführung - Bootstrap-Dateien des Workspace @@ -355,81 +369,83 @@ Szenario-Markdown ist bereits die Single Source of Truth für: - Berichtsmetadaten - Discovery-Prompts -Generierte Kompatibilität: +Erzeugte Kompatibilität: -- der bereitgestellte Workspace enthält weiterhin `QA_KICKOFF_TASK.md` -- der bereitgestellte Workspace enthält weiterhin `QA_SCENARIO_PLAN.md` -- der bereitgestellte Workspace enthält jetzt außerdem `QA_SCENARIOS.md` +- der initialisierte Workspace enthält weiterhin `QA_KICKOFF_TASK.md` +- der initialisierte Workspace enthält weiterhin `QA_SCENARIO_PLAN.md` +- der initialisierte Workspace enthält jetzt zusätzlich `QA_SCENARIOS.md` -## Refactor-Plan +## Refaktorierungsplan ### Phase 1: Loader und Schema Erledigt. -- `qa/scenarios.md` hinzugefügt +- `qa/scenarios/index.md` hinzugefügt +- Szenarien in `qa/scenarios/*.md` aufgeteilt - Parser für benannten Markdown-YAML-Paketinhalt hinzugefügt - mit zod validiert - Consumer auf das geparste Paket umgestellt -- `qa/seed-scenarios.json` und `qa/QA_KICKOFF_TASK.md` auf Repo-Ebene entfernt +- `qa/seed-scenarios.json` und `qa/QA_KICKOFF_TASK.md` auf Repository-Ebene entfernt ### Phase 2: generische Engine - `extensions/qa-lab/src/suite.ts` aufteilen in: - Loader - Engine - - Action-Registry + - Aktions-Registry - Assertion-Registry - benutzerdefinierte Handler -- bestehende Hilfsfunktionen als Engine-Operationen beibehalten +- vorhandene Hilfsfunktionen als Engine-Operationen beibehalten Ergebnis: - Engine führt einfache deklarative Szenarien aus -Mit Szenarien beginnen, die größtenteils aus Prompt + Warten + Assertion bestehen: +Mit Szenarien beginnen, die größtenteils Prompt + Warten + Assertion sind: -- Threaded-Follow-up +- Thread-Follow-up - Bildverständnis aus Anhang - Skill-Sichtbarkeit und -Aufruf -- Kanal-Baseline +- Kanal-Basislinie Ergebnis: -- erste echte in Markdown definierte Szenarien, die über die generische Engine ausgeliefert werden +- erste echte markdowndefinierte Szenarien, die über die generische Engine ausgeliefert werden ### Phase 4: mittlere Szenarien migrieren - Bildgenerierungs-Roundtrip -- Speicher-Tools im Kanalkontext -- Ranking von Sitzungsspeicher -- Unter-Agent-Übergabe -- Unter-Agent-Fanout-Synthese +- Memory-Tools im Kanalkontext +- Ranking von Sitzungs-Memory +- Subagent-Übergabe +- Subagent-Fanout-Synthese Ergebnis: -- Variablen, Artefakte, Tool-Assertions und Request-Log-Assertions praxiserprobt +- Variablen, Artefakte, Tool-Assertions und Request-Log-Assertions praktisch belegt ### Phase 5: schwierige Szenarien auf benutzerdefinierten Handlern belassen -- Sweep für Memory Dreaming -- config apply bei Neustart-Aufwecken -- config restart bei Fähigkeitsumschaltung -- Laufzeit-Inventar-Drift +- Memory-Dreaming-Durchlauf +- Weckvorgang bei Neustart nach Config-Anwendung +- Fähigkeitsumschaltung bei Config-Neustart +- Laufzeit-Inventardrift Ergebnis: -- gleiches Authoring-Format, aber mit expliziten Custom-Step-Blöcken, wo nötig +- gleiches Authoring-Format, aber bei Bedarf mit expliziten + benutzerdefinierten Step-Blöcken -### Phase 6: hart codierte Szenario-Map löschen +### Phase 6: hartcodierte Szenario-Map löschen Sobald die Paketabdeckung gut genug ist: - den Großteil des szenariospezifischen TypeScript-Branchings aus `extensions/qa-lab/src/suite.ts` entfernen -## Fake Slack / Unterstützung für Rich Media +## Fake-Slack- / Rich-Media-Unterstützung -Der aktuelle QA-Bus ist textzentriert. +Der aktuelle QA-Bus ist textorientiert. Relevante Dateien: @@ -449,7 +465,7 @@ Inline-Medienanhänge werden noch nicht modelliert. ### Benötigter Transportvertrag -Ein generisches Modell für QA-Bus-Anhänge hinzufügen: +Ein generisches QA-Bus-Anhangsmodell hinzufügen: ```ts type QaBusAttachment = { @@ -476,7 +492,7 @@ Dann `attachments?: QaBusAttachment[]` hinzufügen zu: ### Warum zuerst generisch -Kein nur auf Slack zugeschnittenes Medienmodell bauen. +Kein nur für Slack bestimmtes Medienmodell bauen. Stattdessen: @@ -484,24 +500,27 @@ Stattdessen: - mehrere Renderer darauf aufbauend - aktueller QA-Lab-Chat - zukünftiges Fake-Slack-Web - - beliebige andere Fake-Transport-Ansichten + - beliebige andere Fake-Transportansichten -Das verhindert doppelte Logik und sorgt dafür, dass Medienszenarien transportagnostisch bleiben. +Das verhindert doppelte Logik und sorgt dafür, dass Medienszenarien +transportagnostisch bleiben. ### Erforderliche UI-Arbeit -Die QA-UI aktualisieren, um Folgendes zu rendern: +Die QA-UI so aktualisieren, dass sie Folgendes rendert: - Inline-Bildvorschau - Inline-Audioplayer - Inline-Videoplayer -- Chip für Dateianhänge +- Dateianhang-Chip -Die aktuelle UI kann bereits Threads und Reaktionen rendern, daher sollte das Rendern von Anhängen auf demselben Nachrichtenkartenmodell aufbauen können. +Die aktuelle UI kann bereits Threads und Reaktionen rendern, daher sollte das +Rendern von Anhängen auf dasselbe Nachrichtenkartenmodell aufsetzen. -### Szenarioarbeit, die durch Medientransport ermöglicht wird +### Durch Medientransport ermöglichte Szenarioarbeit -Sobald Anhänge durch den QA-Bus fließen, können wir reichhaltigere Fake-Chat-Szenarien hinzufügen: +Sobald Anhänge durch den QA-Bus fließen, können wir reichhaltigere +Fake-Chat-Szenarien hinzufügen: - Inline-Bildantwort in Fake Slack - Verständnis von Audioanhängen @@ -514,21 +533,26 @@ Sobald Anhänge durch den QA-Bus fließen, können wir reichhaltigere Fake-Chat- Der nächste Implementierungsblock sollte sein: 1. Markdown-Szenario-Loader + zod-Schema hinzufügen -2. den aktuellen Katalog aus Markdown generieren +2. den aktuellen Katalog aus Markdown erzeugen 3. zuerst einige einfache Szenarien migrieren -4. generische Unterstützung für QA-Bus-Anhänge hinzufügen -5. Inline-Bilder in der QA-UI rendern +4. generische QA-Bus-Anhangsunterstützung hinzufügen +5. Inline-Bild in der QA-UI rendern 6. dann auf Audio und Video erweitern Das ist der kleinste Weg, der beide Ziele belegt: -- generische in Markdown definierte QA +- generische markdowndefinierte QA - reichhaltigere Fake-Messaging-Oberflächen ## Offene Fragen -- ob Szenariodateien eingebettete Markdown-Prompt-Templates mit Variableninterpolation erlauben sollten -- ob Setup/Cleanup benannte Abschnitte oder einfach geordnete Aktionslisten sein sollten -- ob Artefakt-Referenzen im Schema stark typisiert oder stringbasiert sein sollten -- ob benutzerdefinierte Handler in einer Registry oder in Registries pro Oberfläche leben sollten -- ob die generierte JSON-Kompatibilitätsdatei während der Migration eingecheckt bleiben sollte +- ob Szenariodateien eingebettete Markdown-Prompt-Templates mit + Variableninterpolation erlauben sollten +- ob Setup/Cleanup benannte Abschnitte oder einfach geordnete Aktionslisten + sein sollten +- ob Artefakt-Referenzen im Schema stark typisiert oder zeichenfolgenbasiert + sein sollten +- ob benutzerdefinierte Handler in einer Registry oder in Registries pro + Oberfläche liegen sollten +- ob die generierte JSON-Kompatibilitätsdatei während der Migration weiterhin + eingecheckt bleiben sollte diff --git a/docs/de/tools/slash-commands.md b/docs/de/tools/slash-commands.md index 3999b2713..db045a0b3 100644 --- a/docs/de/tools/slash-commands.md +++ b/docs/de/tools/slash-commands.md @@ -1,14 +1,14 @@ --- read_when: - - Chat-Befehle verwenden oder konfigurieren - - Routing oder Berechtigungen von Befehlen debuggen + - Verwenden oder Konfigurieren von Chat-Befehlen + - Debuggen von Befehlsrouting oder Berechtigungen summary: 'Slash-Befehle: Text vs. nativ, Konfiguration und unterstützte Befehle' title: Slash-Befehle x-i18n: - generated_at: "2026-04-06T03:13:51Z" + generated_at: "2026-04-08T06:02:27Z" model: gpt-5.4 provider: openai - source_hash: 417e35b9ddd87f25f6c019111b55b741046ea11039dde89210948185ced5696d + source_hash: 4a7ee7f1a8012058279b9e632889b291d4e659e4ec81209ca8978afbb9ad4b96 source_path: tools/slash-commands.md workflow: 15 --- @@ -16,20 +16,20 @@ x-i18n: # Slash-Befehle Befehle werden vom Gateway verarbeitet. Die meisten Befehle müssen als **eigenständige** Nachricht gesendet werden, die mit `/` beginnt. -Der nur für den Host verfügbare Bash-Chat-Befehl verwendet `! ` (mit `/bash ` als Alias). +Der nur auf dem Host verfügbare Bash-Chat-Befehl verwendet `! ` (mit `/bash ` als Alias). Es gibt zwei verwandte Systeme: - **Befehle**: eigenständige `/...`-Nachrichten. - **Direktiven**: `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - Direktiven werden aus der Nachricht entfernt, bevor das Modell sie sieht. - - In normalen Chat-Nachrichten (nicht nur aus Direktiven bestehend) werden sie als „Inline-Hinweise“ behandelt und speichern keine Sitzungseinstellungen dauerhaft. - - In Nachrichten, die nur aus Direktiven bestehen (die Nachricht enthält nur Direktiven), bleiben sie für die Sitzung erhalten und antworten mit einer Bestätigung. - - Direktiven werden nur für **autorisierte Sender** angewendet. Wenn `commands.allowFrom` gesetzt ist, ist dies die einzige - verwendete Allowlist; andernfalls kommt die Autorisierung aus Kanal-Allowlists/Kopplung sowie `commands.useAccessGroups`. - Nicht autorisierte Sender sehen Direktiven als normalen Text behandelt. + - In normalen Chat-Nachrichten (nicht nur Direktiven) werden sie als „Inline-Hinweise“ behandelt und speichern **keine** Sitzungseinstellungen dauerhaft. + - In Nachrichten, die nur aus Direktiven bestehen (die Nachricht enthält nur Direktiven), werden sie für die Sitzung gespeichert und mit einer Bestätigung beantwortet. + - Direktiven werden nur für **autorisierte Absender** angewendet. Wenn `commands.allowFrom` gesetzt ist, ist dies die einzige + verwendete Allowlist; andernfalls kommt die Autorisierung aus Channel-Allowlists/Pairing plus `commands.useAccessGroups`. + Nicht autorisierte Absender sehen Direktiven als normalen Text behandelt. -Es gibt außerdem einige **Inline-Kurzbefehle** (nur für allowlistete/autorisierte Sender): `/help`, `/commands`, `/status`, `/whoami` (`/id`). +Es gibt auch einige **Inline-Kurzbefehle** (nur für auf der Allowlist/autorisierte Absender): `/help`, `/commands`, `/status`, `/whoami` (`/id`). Sie werden sofort ausgeführt, entfernt, bevor das Modell die Nachricht sieht, und der verbleibende Text läuft im normalen Ablauf weiter. ## Konfiguration @@ -46,7 +46,10 @@ Sie werden sofort ausgeführt, entfernt, bevor das Modell die Nachricht sieht, u mcp: false, plugins: false, debug: false, - restart: false, + restart: true, + ownerAllowFrom: ["discord:123456789012345678"], + ownerDisplay: "raw", + ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}", allowFrom: { "*": ["user1"], discord: ["user:123"], @@ -56,143 +59,178 @@ Sie werden sofort ausgeführt, entfernt, bevor das Modell die Nachricht sieht, u } ``` -- `commands.text` (Standard `true`) aktiviert das Parsen von `/...` in Chat-Nachrichten. +- `commands.text` (Standard: `true`) aktiviert das Parsen von `/...` in Chat-Nachrichten. - Auf Oberflächen ohne native Befehle (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) funktionieren Textbefehle weiterhin, selbst wenn Sie dies auf `false` setzen. -- `commands.native` (Standard `"auto"`) registriert native Befehle. +- `commands.native` (Standard: `"auto"`) registriert native Befehle. - Auto: an für Discord/Telegram; aus für Slack (bis Sie Slash-Befehle hinzufügen); ignoriert für Provider ohne native Unterstützung. - - Setzen Sie `channels.discord.commands.native`, `channels.telegram.commands.native` oder `channels.slack.commands.native`, um pro Provider zu überschreiben (bool oder `"auto"`). - - `false` löscht beim Start zuvor registrierte Befehle auf Discord/Telegram. Slack-Befehle werden in der Slack-App verwaltet und nicht automatisch entfernt. -- `commands.nativeSkills` (Standard `"auto"`) registriert **Skills** nativ, wenn unterstützt. - - Auto: an für Discord/Telegram; aus für Slack (Slack erfordert einen Slash-Befehl pro Skill). - - Setzen Sie `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` oder `channels.slack.commands.nativeSkills`, um pro Provider zu überschreiben (bool oder `"auto"`). -- `commands.bash` (Standard `false`) aktiviert `! `, um Shell-Befehle auf dem Host auszuführen (`/bash ` ist ein Alias; erfordert `tools.elevated`-Allowlists). -- `commands.bashForegroundMs` (Standard `2000`) steuert, wie lange Bash wartet, bevor in den Hintergrundmodus gewechselt wird (`0` schickt sofort in den Hintergrund). -- `commands.config` (Standard `false`) aktiviert `/config` (liest/schreibt `openclaw.json`). -- `commands.mcp` (Standard `false`) aktiviert `/mcp` (liest/schreibt von OpenClaw verwaltete MCP-Konfiguration unter `mcp.servers`). -- `commands.plugins` (Standard `false`) aktiviert `/plugins` (Plugin-Erkennung/-Status sowie Steuerelemente für Installation + Aktivierung/Deaktivierung). -- `commands.debug` (Standard `false`) aktiviert `/debug` (nur Runtime-Overrides). -- `commands.allowFrom` (optional) setzt eine providerbezogene Allowlist für die Autorisierung von Befehlen. Wenn konfiguriert, ist dies die - einzige Autorisierungsquelle für Befehle und Direktiven (Kanal-Allowlists/Kopplung und `commands.useAccessGroups` + - Setzen Sie `channels.discord.commands.native`, `channels.telegram.commands.native` oder `channels.slack.commands.native`, um pro Provider zu überschreiben (Bool oder `"auto"`). + - `false` entfernt beim Start zuvor registrierte Befehle auf Discord/Telegram. Slack-Befehle werden in der Slack-App verwaltet und nicht automatisch entfernt. +- `commands.nativeSkills` (Standard: `"auto"`) registriert **Skills**-Befehle nativ, wenn dies unterstützt wird. + - Auto: an für Discord/Telegram; aus für Slack (Slack erfordert das Erstellen eines Slash-Befehls pro Skill). + - Setzen Sie `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` oder `channels.slack.commands.nativeSkills`, um pro Provider zu überschreiben (Bool oder `"auto"`). +- `commands.bash` (Standard: `false`) aktiviert `! ` zum Ausführen von Host-Shell-Befehlen (`/bash ` ist ein Alias; erfordert `tools.elevated`-Allowlists). +- `commands.bashForegroundMs` (Standard: `2000`) steuert, wie lange Bash wartet, bevor in den Hintergrundmodus gewechselt wird (`0` verschiebt sofort in den Hintergrund). +- `commands.config` (Standard: `false`) aktiviert `/config` (liest/schreibt `openclaw.json`). +- `commands.mcp` (Standard: `false`) aktiviert `/mcp` (liest/schreibt von OpenClaw verwaltete MCP-Konfiguration unter `mcp.servers`). +- `commands.plugins` (Standard: `false`) aktiviert `/plugins` (Plugin-Erkennung/-Status plus Installations- und Aktivierungs-/Deaktivierungssteuerung). +- `commands.debug` (Standard: `false`) aktiviert `/debug` (nur Laufzeit-Overrides). +- `commands.restart` (Standard: `true`) aktiviert `/restart` plus Tool-Aktionen zum Neustart des Gateways. +- `commands.ownerAllowFrom` (optional) setzt die explizite Owner-Allowlist für nur für Owner verfügbare Befehls-/Tool-Oberflächen. Dies ist getrennt von `commands.allowFrom`. +- `commands.ownerDisplay` steuert, wie Owner-IDs im System Prompt angezeigt werden: `raw` oder `hash`. +- `commands.ownerDisplaySecret` setzt optional das HMAC-Secret, das verwendet wird, wenn `commands.ownerDisplay="hash"` ist. +- `commands.allowFrom` (optional) setzt eine providerbezogene Allowlist für die Befehlsautorisierung. Wenn konfiguriert, ist dies die + einzige Autorisierungsquelle für Befehle und Direktiven (Channel-Allowlists/Pairing und `commands.useAccessGroups` werden ignoriert). Verwenden Sie `"*"` als globalen Standard; providerspezifische Schlüssel überschreiben ihn. -- `commands.useAccessGroups` (Standard `true`) erzwingt Allowlists/Richtlinien für Befehle, wenn `commands.allowFrom` nicht gesetzt ist. +- `commands.useAccessGroups` (Standard: `true`) erzwingt Allowlists/Richtlinien für Befehle, wenn `commands.allowFrom` nicht gesetzt ist. ## Befehlsliste -Text + nativ (wenn aktiviert): +Aktuelle Source of Truth: -- `/help` -- `/commands` -- `/tools [compact|verbose]` (anzeigen, was der aktuelle Agent genau jetzt verwenden kann; `verbose` fügt Beschreibungen hinzu) -- `/skill [input]` (einen Skill nach Name ausführen) -- `/status` (aktuellen Status anzeigen; enthält Nutzungs-/Quota-Informationen des Providers für den aktuellen Modell-Provider, wenn verfügbar) -- `/tasks` (Hintergrundaufgaben für die aktuelle Sitzung auflisten; zeigt aktive und aktuelle Aufgabendetails mit agent-lokalen Fallback-Zählwerten) -- `/allowlist` (Allowlist-Einträge auflisten/hinzufügen/entfernen) -- `/approve ` (Exec-Genehmigungsaufforderungen auflösen; verwenden Sie die ausstehende Genehmigungsnachricht für die verfügbaren Entscheidungen) -- `/context [list|detail|json]` („Kontext“ erklären; `detail` zeigt pro Datei + pro Tool + pro Skill + Größe des System-Prompts) -- `/btw ` (eine ephemere Nebenfrage zur aktuellen Sitzung stellen, ohne den zukünftigen Sitzungskontext zu ändern; siehe [/tools/btw](/de/tools/btw)) -- `/export-session [path]` (Alias: `/export`) (aktuelle Sitzung als HTML mit vollständigem System-Prompt exportieren) -- `/whoami` (Ihre Sender-ID anzeigen; Alias: `/id`) -- `/session idle ` (automatisches Entfokussieren bei Inaktivität für fokussierte Thread-Bindings verwalten) -- `/session max-age ` (hartes Maximalalter für automatisches Entfokussieren für fokussierte Thread-Bindings verwalten) -- `/subagents list|kill|log|info|send|steer|spawn` (Sub-Agent-Läufe für die aktuelle Sitzung prüfen, steuern oder starten) -- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (ACP-Runtime-Sitzungen prüfen und steuern) -- `/agents` (an Threads gebundene Agenten für diese Sitzung auflisten) -- `/focus ` (Discord: diesen Thread oder einen neuen Thread an ein Sitzungs-/Subagent-Ziel binden) -- `/unfocus` (Discord: aktuelles Thread-Binding entfernen) -- `/kill ` (einen oder alle laufenden Sub-Agents für diese Sitzung sofort abbrechen; keine Bestätigungsnachricht) -- `/steer ` (einen laufenden Sub-Agent sofort steuern: wenn möglich während des Laufs, andernfalls aktuelle Arbeit abbrechen und mit der Steuerungsnachricht neu starten) -- `/tell ` (Alias für `/steer`) -- `/config show|get|set|unset` (Konfiguration auf Datenträger persistieren, nur owner; erfordert `commands.config: true`) -- `/mcp show|get|set|unset` (OpenClaw-MCP-Serverkonfiguration verwalten, nur owner; erfordert `commands.mcp: true`) -- `/plugins list|show|get|install|enable|disable` (erkannte Plugins prüfen, neue Plugins installieren und Aktivierung umschalten; Schreibvorgänge nur owner; erfordert `commands.plugins: true`) - - `/plugin` ist ein Alias für `/plugins`. - - `/plugin install ` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:`. - - Schreibvorgänge für Aktivieren/Deaktivieren antworten weiterhin mit einem Neustart-Hinweis. Bei einem überwachten Gateway im Vordergrund kann OpenClaw diesen Neustart direkt nach dem Schreibvorgang automatisch ausführen. -- `/debug show|set|unset|reset` (Runtime-Overrides, nur owner; erfordert `commands.debug: true`) -- `/usage off|tokens|full|cost` (Nutzungs-Footer pro Antwort oder lokale Kostenzusammenfassung) -- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (TTS steuern; siehe [/tts](/de/tools/tts)) - - Discord: nativer Befehl ist `/voice` (Discord reserviert `/tts`); Text-`/tts` funktioniert weiterhin. -- `/stop` -- `/restart` -- `/dock-telegram` (Alias: `/dock_telegram`) (Antworten auf Telegram umschalten) -- `/dock-discord` (Alias: `/dock_discord`) (Antworten auf Discord umschalten) -- `/dock-slack` (Alias: `/dock_slack`) (Antworten auf Slack umschalten) -- `/activation mention|always` (nur Gruppen) -- `/send on|off|inherit` (nur owner) -- `/reset` oder `/new [model]` (optionaler Modellhinweis; Rest wird durchgereicht) -- `/think ` (dynamische Auswahl je nach Modell/Provider; Aliasse: `/thinking`, `/t`) -- `/fast status|on|off` (wenn das Argument weggelassen wird, wird der aktuell wirksame Fast-Mode-Status angezeigt) -- `/verbose on|full|off` (Alias: `/v`) -- `/reasoning on|off|stream` (Alias: `/reason`; wenn an, wird eine separate Nachricht mit Präfix `Reasoning:` gesendet; `stream` = nur Telegram-Entwurf) -- `/elevated on|off|ask|full` (Alias: `/elev`; `full` überspringt Exec-Genehmigungen) -- `/exec host= security= ask= node=` (senden Sie `/exec`, um den aktuellen Wert anzuzeigen) -- `/model ` (Alias: `/models`; oder `/` aus `agents.defaults.models.*.alias`) -- `/queue ` (plus Optionen wie `debounce:2s cap:25 drop:summarize`; senden Sie `/queue`, um die aktuellen Einstellungen zu sehen) -- `/bash ` (nur Host; Alias für `! `; erfordert `commands.bash: true` + `tools.elevated`-Allowlists) -- `/dreaming [on|off|status|help]` (globales Dreaming umschalten oder Status anzeigen; siehe [Dreaming](/concepts/dreaming)) +- Core-Built-ins kommen aus `src/auto-reply/commands-registry.shared.ts` +- generierte Dock-Befehle kommen aus `src/auto-reply/commands-registry.data.ts` +- Plugin-Befehle kommen aus Plugin-`registerCommand()`-Aufrufen +- die tatsächliche Verfügbarkeit auf Ihrem Gateway hängt weiterhin von Konfigurations-Flags, der Channel-Oberfläche und installierten/aktivierten Plugins ab -Nur Text: +### Core-Built-in-Befehle -- `/compact [instructions]` (siehe [/concepts/compaction](/de/concepts/compaction)) -- `! ` (nur Host; jeweils nur eins; verwenden Sie `!poll` + `!stop` für lang laufende Jobs) -- `!poll` (Ausgabe / Status prüfen; akzeptiert optional `sessionId`; `/bash poll` funktioniert ebenfalls) -- `!stop` (den laufenden Bash-Job stoppen; akzeptiert optional `sessionId`; `/bash stop` funktioniert ebenfalls) +Heute verfügbare integrierte Befehle: + +- `/new [model]` startet eine neue Sitzung; `/reset` ist der Alias zum Zurücksetzen. +- `/compact [instructions]` verdichtet den Sitzungskontext. Siehe [/concepts/compaction](/de/concepts/compaction). +- `/stop` bricht den aktuellen Lauf ab. +- `/session idle ` und `/session max-age ` verwalten den Ablauf der Thread-Bindung. +- `/think ` setzt die Denkstufe. Aliasse: `/thinking`, `/t`. +- `/verbose on|off|full` schaltet ausführliche Ausgabe um. Alias: `/v`. +- `/fast [status|on|off]` zeigt den Fast-Modus an oder setzt ihn. +- `/reasoning [on|off|stream]` schaltet die Sichtbarkeit von Reasoning um. Alias: `/reason`. +- `/elevated [on|off|ask|full]` schaltet den Elevated-Modus um. Alias: `/elev`. +- `/exec host= security= ask= node=` zeigt Standardwerte für exec an oder setzt sie. +- `/model [name|#|status]` zeigt das Modell an oder setzt es. +- `/models [provider] [page] [limit=|size=|all]` listet Provider oder Modelle für einen Provider auf. +- `/queue ` verwaltet das Queue-Verhalten (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) plus Optionen wie `debounce:2s cap:25 drop:summarize`. +- `/help` zeigt die kurze Hilfsübersicht. +- `/commands` zeigt den generierten Befehlskatalog. +- `/tools [compact|verbose]` zeigt, was der aktuelle Agent genau jetzt verwenden kann. +- `/status` zeigt den Laufzeitstatus an, einschließlich Provider-Nutzung/Kontingent, wenn verfügbar. +- `/tasks` listet aktive/aktuelle Hintergrundaufgaben für die aktuelle Sitzung auf. +- `/context [list|detail|json]` erklärt, wie der Kontext zusammengesetzt wird. +- `/export-session [path]` exportiert die aktuelle Sitzung als HTML. Alias: `/export`. +- `/whoami` zeigt Ihre Absender-ID. Alias: `/id`. +- `/skill [input]` führt einen Skill nach Namen aus. +- `/allowlist [list|add|remove] ...` verwaltet Allowlist-Einträge. Nur Text. +- `/approve ` löst exec-Genehmigungsabfragen auf. +- `/btw ` stellt eine Nebenfrage, ohne den zukünftigen Sitzungskontext zu ändern. Siehe [/tools/btw](/de/tools/btw). +- `/subagents list|kill|log|info|send|steer|spawn` verwaltet Subagent-Läufe für die aktuelle Sitzung. +- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` verwaltet ACP-Sitzungen und Laufzeitoptionen. +- `/focus ` bindet den aktuellen Discord-Thread oder das aktuelle Telegram-Thema/Gespräch an ein Sitzungsziel. +- `/unfocus` entfernt die aktuelle Bindung. +- `/agents` listet threadgebundene Agenten für die aktuelle Sitzung auf. +- `/kill ` bricht einen oder alle laufenden Subagenten ab. +- `/steer ` sendet Steuerung an einen laufenden Subagenten. Alias: `/tell`. +- `/config show|get|set|unset` liest oder schreibt `openclaw.json`. Nur für Owner. Erfordert `commands.config: true`. +- `/mcp show|get|set|unset` liest oder schreibt von OpenClaw verwaltete MCP-Server-Konfiguration unter `mcp.servers`. Nur für Owner. Erfordert `commands.mcp: true`. +- `/plugins list|inspect|show|get|install|enable|disable` prüft oder verändert den Plugin-Status. `/plugin` ist ein Alias. Schreibzugriffe nur für Owner. Erfordert `commands.plugins: true`. +- `/debug show|set|unset|reset` verwaltet nur zur Laufzeit gültige Konfigurations-Overrides. Nur für Owner. Erfordert `commands.debug: true`. +- `/usage off|tokens|full|cost` steuert die Nutzungsfußzeile pro Antwort oder gibt eine lokale Kostenzusammenfassung aus. +- `/tts on|off|status|provider|limit|summary|audio|help` steuert TTS. Siehe [/tools/tts](/de/tools/tts). +- `/restart` startet OpenClaw neu, wenn aktiviert. Standard: aktiviert; setzen Sie `commands.restart: false`, um es zu deaktivieren. +- `/activation mention|always` setzt den Gruppenaktivierungsmodus. +- `/send on|off|inherit` setzt die Send Policy. Nur für Owner. +- `/bash ` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! `. Erfordert `commands.bash: true` plus `tools.elevated`-Allowlists. +- `!poll [sessionId]` prüft einen Bash-Hintergrundjob. +- `!stop [sessionId]` stoppt einen Bash-Hintergrundjob. + +### Generierte Dock-Befehle + +Dock-Befehle werden aus Channel-Plugins mit Unterstützung für native Befehle generiert. Aktueller gebündelter Satz: + +- `/dock-discord` (Alias: `/dock_discord`) +- `/dock-mattermost` (Alias: `/dock_mattermost`) +- `/dock-slack` (Alias: `/dock_slack`) +- `/dock-telegram` (Alias: `/dock_telegram`) + +### Befehle gebündelter Plugins + +Gebündelte Plugins können weitere Slash-Befehle hinzufügen. Aktuelle gebündelte Befehle in diesem Repo: + +- `/dreaming [on|off|status|help]` schaltet Memory Dreaming um. Siehe [Dreaming](/de/concepts/dreaming). +- `/pair [qr|status|pending|approve|cleanup|notify]` verwaltet den Pairing-/Setup-Ablauf für Geräte. Siehe [Pairing](/de/channels/pairing). +- `/phone status|arm [duration]|disarm` schaltet vorübergehend risikoreiche Befehle für Phone-Nodes scharf. +- `/voice status|list [limit]|set ` verwaltet die Talk-Sprachkonfiguration. Auf Discord lautet der native Befehlsname `/talkvoice`. +- `/card ...` sendet LINE-Rich-Card-Voreinstellungen. Siehe [LINE](/de/channels/line). +- Nur für QQBot verfügbare Befehle: + - `/bot-ping` + - `/bot-version` + - `/bot-help` + - `/bot-upgrade` + - `/bot-logs` + +### Dynamische Skill-Befehle + +Vom Benutzer aufrufbare Skills werden ebenfalls als Slash-Befehle bereitgestellt: + +- `/skill [input]` funktioniert immer als generischer Einstiegspunkt. +- Skills können auch als direkte Befehle wie `/prose` erscheinen, wenn der Skill/das Plugin sie registriert. +- Die native Registrierung von Skill-Befehlen wird durch `commands.nativeSkills` und `channels..commands.nativeSkills` gesteuert. Hinweise: -- Befehle akzeptieren optional ein `:` zwischen Befehl und Argumenten (z. B. `/think: high`, `/send: on`, `/help:`). -- `/new ` akzeptiert einen Modell-Alias, `provider/model` oder einen Providernamen (unscharfer Abgleich); wenn es keine Übereinstimmung gibt, wird der Text als Nachrichtentext behandelt. -- Für eine vollständige Aufschlüsselung der Provider-Nutzung verwenden Sie `openclaw status --usage`. -- `/allowlist add|remove` erfordert `commands.config=true` und beachtet kanalbezogene `configWrites`. -- In Kanälen mit mehreren Konten beachten auf Konfiguration zielende `/allowlist --account ` und `/config set channels..accounts....` ebenfalls `configWrites` des Zielkontos. -- `/usage` steuert den Nutzungs-Footer pro Antwort; `/usage cost` gibt eine lokale Kostenzusammenfassung aus OpenClaw-Sitzungslogs aus. +- Befehle akzeptieren optional ein `:` zwischen dem Befehl und den Argumenten (z. B. `/think: high`, `/send: on`, `/help:`). +- `/new ` akzeptiert einen Modellalias, `provider/model` oder einen Providernamen (unscharfer Abgleich); wenn es keine Übereinstimmung gibt, wird der Text als Nachrichtentext behandelt. +- Für die vollständige Aufschlüsselung der Provider-Nutzung verwenden Sie `openclaw status --usage`. +- `/allowlist add|remove` erfordert `commands.config=true` und berücksichtigt Channel-`configWrites`. +- In Channels mit mehreren Accounts berücksichtigen zielkontobezogene `/allowlist --account ` und `/config set channels..accounts....` ebenfalls `configWrites` des Zielkontos. +- `/usage` steuert die Nutzungsfußzeile pro Antwort; `/usage cost` gibt eine lokale Kostenzusammenfassung aus OpenClaw-Sitzungsprotokollen aus. - `/restart` ist standardmäßig aktiviert; setzen Sie `commands.restart: false`, um es zu deaktivieren. -- Nur Discord nativer Befehl: `/vc join|leave|status` steuert Sprachkanäle (erfordert `channels.discord.voice` und native Befehle; nicht als Text verfügbar). -- Discord-Befehle für Thread-Binding (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) erfordern, dass effektive Thread-Bindings aktiviert sind (`session.threadBindings.enabled` und/oder `channels.discord.threadBindings.enabled`). -- ACP-Befehlsreferenz und Runtime-Verhalten: [ACP Agents](/de/tools/acp-agents). +- `/plugins install ` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:`. +- `/plugins enable|disable` aktualisiert die Plugin-Konfiguration und fordert möglicherweise zu einem Neustart auf. +- Nur nativer Discord-Befehl: `/vc join|leave|status` steuert Sprachkanäle (erfordert `channels.discord.voice` und native Befehle; nicht als Text verfügbar). +- Discord-Befehle für Thread-Bindung (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) erfordern, dass effektive Thread-Bindungen aktiviert sind (`session.threadBindings.enabled` und/oder `channels.discord.threadBindings.enabled`). +- ACP-Befehlsreferenz und Laufzeitverhalten: [ACP Agents](/de/tools/acp-agents). - `/verbose` ist für Debugging und zusätzliche Sichtbarkeit gedacht; lassen Sie es im normalen Gebrauch **aus**. -- `/fast on|off` speichert ein Sitzungs-Override. Verwenden Sie die Option `inherit` in der Sessions-UI, um es zu löschen und auf die Standardwerte der Konfiguration zurückzufallen. -- `/fast` ist providerspezifisch: OpenAI/OpenAI Codex ordnen es auf nativen Responses-Endpunkten `service_tier=priority` zu, während direkte öffentliche Anthropic-Anfragen, einschließlich OAuth-authentifiziertem Traffic an `api.anthropic.com`, auf `service_tier=auto` oder `standard_only` abgebildet werden. Siehe [OpenAI](/de/providers/openai) und [Anthropic](/de/providers/anthropic). +- `/fast on|off` speichert ein Sitzungs-Override. Verwenden Sie in der Sessions-UI die Option `inherit`, um es zu löschen und auf die Standardwerte aus der Konfiguration zurückzufallen. +- `/fast` ist providerspezifisch: OpenAI/OpenAI Codex ordnen es auf nativen Responses-Endpunkten `service_tier=priority` zu, während direkte öffentliche Anthropic-Anfragen, einschließlich OAuth-authentifiziertem Traffic an `api.anthropic.com`, es `service_tier=auto` oder `standard_only` zuordnen. Siehe [OpenAI](/de/providers/openai) und [Anthropic](/de/providers/anthropic). - Zusammenfassungen von Tool-Fehlern werden weiterhin angezeigt, wenn relevant, aber detaillierter Fehlertext wird nur aufgenommen, wenn `/verbose` auf `on` oder `full` steht. -- `/reasoning` (und `/verbose`) sind in Gruppeneinstellungen riskant: Sie können internes Reasoning oder Tool-Ausgabe offenlegen, die Sie nicht beabsichtigt hatten preiszugeben. Lassen Sie sie vorzugsweise ausgeschaltet, besonders in Gruppenchats. +- `/reasoning` (und `/verbose`) sind in Gruppenumgebungen riskant: Sie können internes Reasoning oder Tool-Ausgaben offenlegen, die Sie nicht beabsichtigt hatten preiszugeben. Lassen Sie sie vorzugsweise deaktiviert, insbesondere in Gruppenchats. - `/model` speichert das neue Sitzungsmodell sofort. - Wenn der Agent untätig ist, verwendet der nächste Lauf es sofort. -- Wenn bereits ein Lauf aktiv ist, markiert OpenClaw einen Live-Wechsel als ausstehend und startet erst an einem sauberen Retry-Punkt in das neue Modell neu. -- Wenn Tool-Aktivität oder Antwortausgabe bereits begonnen hat, kann der ausstehende Wechsel bis zu einer späteren Retry-Gelegenheit oder bis zum nächsten Benutzer-Turn in der Warteschlange bleiben. -- **Fast path:** Nur-Befehl-Nachrichten von allowlisteten Sendern werden sofort verarbeitet (Warteschlange + Modell werden umgangen). -- **Group mention gating:** Nur-Befehl-Nachrichten von allowlisteten Sendern umgehen Erwähnungsanforderungen. -- **Inline-Kurzbefehle (nur allowlistete Sender):** Bestimmte Befehle funktionieren auch, wenn sie in eine normale Nachricht eingebettet sind, und werden entfernt, bevor das Modell den verbleibenden Text sieht. +- Wenn bereits ein Lauf aktiv ist, markiert OpenClaw einen Live-Wechsel als ausstehend und startet nur an einem sauberen Wiederholungspunkt in das neue Modell neu. +- Wenn Tool-Aktivität oder Antwortausgabe bereits begonnen hat, kann der ausstehende Wechsel bis zu einer späteren Wiederholungsmöglichkeit oder bis zum nächsten Benutzerzug in der Warteschlange bleiben. +- **Fast Path:** Nachrichten nur mit Befehlen von Absendern auf der Allowlist werden sofort verarbeitet (umgehen Queue + Modell). +- **Gruppen-Erwähnungs-Gating:** Nachrichten nur mit Befehlen von Absendern auf der Allowlist umgehen Erwähnungsanforderungen. +- **Inline-Kurzbefehle (nur für Absender auf der Allowlist):** bestimmte Befehle funktionieren auch, wenn sie in eine normale Nachricht eingebettet sind, und werden entfernt, bevor das Modell den verbleibenden Text sieht. - Beispiel: `hey /status` löst eine Statusantwort aus, und der verbleibende Text läuft im normalen Ablauf weiter. -- Derzeit: `/help`, `/commands`, `/status`, `/whoami` (`/id`). -- Nicht autorisierte Nur-Befehl-Nachrichten werden stillschweigend ignoriert, und Inline-`/...`-Tokens werden als normaler Text behandelt. -- **Skill-Befehle:** `user-invocable` Skills werden als Slash-Befehle verfügbar gemacht. Namen werden auf `a-z0-9_` bereinigt (max. 32 Zeichen); Kollisionen erhalten numerische Suffixe (z. B. `_2`). - - `/skill [input]` führt einen Skill nach Name aus (nützlich, wenn native Befehlslimits Befehle pro Skill verhindern). +- Aktuell: `/help`, `/commands`, `/status`, `/whoami` (`/id`). +- Nicht autorisierte Nachrichten nur mit Befehlen werden stillschweigend ignoriert, und Inline-`/...`-Tokens werden als normaler Text behandelt. +- **Skill-Befehle:** `user-invocable` Skills werden als Slash-Befehle bereitgestellt. Namen werden auf `a-z0-9_` bereinigt (max. 32 Zeichen); bei Kollisionen werden numerische Suffixe angehängt (z. B. `_2`). + - `/skill [input]` führt einen Skill nach Namen aus (nützlich, wenn Grenzen nativer Befehle Befehle pro Skill verhindern). - Standardmäßig werden Skill-Befehle als normale Anfrage an das Modell weitergeleitet. - - Skills können optional `command-dispatch: tool` deklarieren, um den Befehl direkt an ein Tool zu routen (deterministisch, ohne Modell). + - Skills können optional `command-dispatch: tool` deklarieren, um den Befehl direkt an ein Tool zu leiten (deterministisch, kein Modell). - Beispiel: `/prose` (OpenProse-Plugin) — siehe [OpenProse](/de/prose). -- **Argumente nativer Befehle:** Discord verwendet Autocomplete für dynamische Optionen (und Button-Menüs, wenn Sie erforderliche Argumente weglassen). Telegram und Slack zeigen ein Button-Menü, wenn ein Befehl Auswahlmöglichkeiten unterstützt und Sie das Argument weglassen. +- **Native Befehlsargumente:** Discord verwendet Autovervollständigung für dynamische Optionen (und Button-Menüs, wenn Sie erforderliche Argumente weglassen). Telegram und Slack zeigen ein Button-Menü an, wenn ein Befehl Auswahlmöglichkeiten unterstützt und Sie das Argument weglassen. ## `/tools` -`/tools` beantwortet eine Runtime-Frage, keine Konfigurationsfrage: **was dieser Agent genau jetzt in -dieser Konversation verwenden kann**. +`/tools` beantwortet eine Laufzeitfrage, keine Konfigurationsfrage: **was dieser Agent genau jetzt in +diesem Gespräch verwenden kann**. -- Standard-`/tools` ist kompakt und für schnelles Scannen optimiert. +- Standardmäßig ist `/tools` kompakt und für schnelles Scannen optimiert. - `/tools verbose` fügt kurze Beschreibungen hinzu. - Oberflächen mit nativen Befehlen, die Argumente unterstützen, bieten denselben Moduswechsel als `compact|verbose`. -- Ergebnisse sind sitzungsbezogen, daher können Änderungen von Agent, Kanal, Thread, Senderautorisierung oder Modell +- Ergebnisse sind sitzungsbezogen; ein Wechsel von Agent, Channel, Thread, Absenderautorisierung oder Modell kann die Ausgabe ändern. -- `/tools` enthält Tools, die zur Runtime tatsächlich erreichbar sind, einschließlich Core-Tools, verbundener - Plugin-Tools und kanaleigener Tools. +- `/tools` enthält Tools, die zur Laufzeit tatsächlich erreichbar sind, einschließlich Core-Tools, verbundener + Plugin-Tools und channel-eigener Tools. -Für das Bearbeiten von Profilen und Overrides verwenden Sie das Tools-Panel der Control UI oder Konfigurations-/Katalogoberflächen, -anstatt `/tools` als statischen Katalog zu behandeln. +Für die Bearbeitung von Profilen und Overrides verwenden Sie das Tools-Panel der Control UI oder Konfigurations-/Katalogoberflächen, anstatt +`/tools` als statischen Katalog zu behandeln. ## Nutzungsoberflächen (was wo angezeigt wird) -- **Provider usage/quota** (Beispiel: „Claude 80% left“) wird in `/status` für den aktuellen Modell-Provider angezeigt, wenn Nutzungsverfolgung aktiviert ist. OpenClaw normalisiert Provider-Fenster auf `% left`; bei MiniMax werden Prozentfelder mit nur Restwert vor der Anzeige invertiert, und `model_remains`-Antworten bevorzugen den Chat-Modell-Eintrag plus ein modellmarkiertes Plan-Label. -- **Token-/Cache-Zeilen** in `/status` können auf den neuesten Usage-Eintrag des Transkripts zurückgreifen, wenn der Live-Sitzungs-Snapshot spärlich ist. Vorhandene Live-Werte ungleich null haben weiterhin Vorrang, und der Transcript-Fallback kann auch das aktive Runtime-Modell-Label plus einen größeren promptorientierten Gesamtwert wiederherstellen, wenn gespeicherte Gesamtwerte fehlen oder kleiner sind. -- **Tokens/Kosten pro Antwort** werden mit `/usage off|tokens|full` gesteuert (an normale Antworten angehängt). +- **Provider-Nutzung/Kontingent** (Beispiel: „Claude 80 % übrig“) erscheint in `/status` für den aktuellen Modellprovider, wenn Nutzungsverfolgung aktiviert ist. OpenClaw normalisiert Provider-Fenster zu „% übrig“; bei MiniMax werden Prozentfelder, die nur den verbleibenden Anteil angeben, vor der Anzeige invertiert, und Antworten mit `model_remains` bevorzugen den Chat-Modell-Eintrag plus ein planbeschriftetes Modell-Label. +- **Token-/Cache-Zeilen** in `/status` können auf den neuesten Nutzungseintrag im Transkript zurückfallen, wenn der Live-Sitzungs-Snapshot spärlich ist. Vorhandene von null verschiedene Live-Werte haben weiterhin Vorrang, und der Transkript-Fallback kann auch das aktive Laufzeitmodell-Label sowie eine größere promptorientierte Gesamtsumme wiederherstellen, wenn gespeicherte Summen fehlen oder kleiner sind. +- **Tokens/Kosten pro Antwort** werden durch `/usage off|tokens|full` gesteuert (an normale Antworten angehängt). - `/model status` betrifft **Modelle/Auth/Endpunkte**, nicht die Nutzung. ## Modellauswahl (`/model`) @@ -212,14 +250,14 @@ Beispiele: Hinweise: -- `/model` und `/model list` zeigen einen kompakten, nummerierten Auswahlbereich (Modellfamilie + verfügbare Provider). -- Auf Discord öffnen `/model` und `/models` einen interaktiven Auswahlbereich mit Dropdowns für Provider und Modell plus einem Submit-Schritt. -- `/model <#>` wählt aus diesem Auswahlbereich aus (und bevorzugt nach Möglichkeit den aktuellen Provider). -- `/model status` zeigt die Detailansicht, einschließlich des konfigurierten Provider-Endpunkts (`baseUrl`) und des API-Modus (`api`), wenn verfügbar. +- `/model` und `/model list` zeigen einen kompakten, nummerierten Picker an (Modellfamilie + verfügbare Provider). +- Auf Discord öffnen `/model` und `/models` einen interaktiven Picker mit Dropdowns für Provider und Modell plus einem Submit-Schritt. +- `/model <#>` wählt aus diesem Picker aus (und bevorzugt nach Möglichkeit den aktuellen Provider). +- `/model status` zeigt die detaillierte Ansicht, einschließlich des konfigurierten Provider-Endpunkts (`baseUrl`) und des API-Modus (`api`), wenn verfügbar. ## Debug-Overrides -`/debug` ermöglicht das Setzen von **nur zur Runtime gültigen** Konfigurations-Overrides (im Speicher, nicht auf Datenträger). Nur owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.debug: true`. +`/debug` ermöglicht das Setzen von **nur zur Laufzeit gültigen** Konfigurations-Overrides (im Speicher, nicht auf Datenträger). Nur für Owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.debug: true`. Beispiele: @@ -233,12 +271,12 @@ Beispiele: Hinweise: -- Overrides gelten sofort für neue Konfigurationslesevorgänge, schreiben aber **nicht** in `openclaw.json`. -- Verwenden Sie `/debug reset`, um alle Overrides zu löschen und zur Konfiguration auf dem Datenträger zurückzukehren. +- Overrides gelten sofort für neue Konfigurationslesevorgänge, schreiben jedoch **nicht** in `openclaw.json`. +- Verwenden Sie `/debug reset`, um alle Overrides zu löschen und zur auf dem Datenträger gespeicherten Konfiguration zurückzukehren. ## Konfigurationsaktualisierungen -`/config` schreibt in Ihre Konfiguration auf dem Datenträger (`openclaw.json`). Nur owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.config: true`. +`/config` schreibt in Ihre auf dem Datenträger gespeicherte Konfiguration (`openclaw.json`). Nur für Owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.config: true`. Beispiele: @@ -257,7 +295,7 @@ Hinweise: ## MCP-Aktualisierungen -`/mcp` schreibt von OpenClaw verwaltete MCP-Serverdefinitionen unter `mcp.servers`. Nur owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.mcp: true`. +`/mcp` schreibt von OpenClaw verwaltete MCP-Serverdefinitionen unter `mcp.servers`. Nur für Owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.mcp: true`. Beispiele: @@ -270,12 +308,12 @@ Beispiele: Hinweise: -- `/mcp` speichert Konfiguration in der OpenClaw-Konfiguration, nicht in Pi-eigenen Projekteinstellungen. -- Runtime-Adapter entscheiden, welche Transports tatsächlich ausführbar sind. +- `/mcp` speichert die Konfiguration in der OpenClaw-Konfiguration, nicht in Pi-eigenen Projekteinstellungen. +- Laufzeitadapter entscheiden, welche Transporte tatsächlich ausführbar sind. ## Plugin-Aktualisierungen -`/plugins` ermöglicht es Operatoren, erkannte Plugins zu prüfen und die Aktivierung in der Konfiguration umzuschalten. Read-only-Abläufe können `/plugin` als Alias verwenden. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.plugins: true`. +`/plugins` ermöglicht es Operatoren, erkannte Plugins zu prüfen und die Aktivierung in der Konfiguration umzuschalten. Schreibgeschützte Abläufe können `/plugin` als Alias verwenden. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.plugins: true`. Beispiele: @@ -289,20 +327,20 @@ Beispiele: Hinweise: -- `/plugins list` und `/plugins show` verwenden echte Plugin-Erkennung gegen den aktuellen Workspace plus die Konfiguration auf dem Datenträger. -- `/plugins enable|disable` aktualisiert nur die Plugin-Konfiguration; Plugins werden dadurch nicht installiert oder deinstalliert. -- Starten Sie das Gateway nach Änderungen an Aktivierung/Deaktivierung neu, um sie anzuwenden. +- `/plugins list` und `/plugins show` verwenden echte Plugin-Erkennung gegen den aktuellen Workspace plus die auf dem Datenträger gespeicherte Konfiguration. +- `/plugins enable|disable` aktualisiert nur die Plugin-Konfiguration; Plugins werden nicht installiert oder deinstalliert. +- Starten Sie nach Änderungen an Aktivierung/Deaktivierung das Gateway neu, um sie anzuwenden. ## Hinweise zu Oberflächen -- **Textbefehle** laufen in der normalen Chatsitzung (DMs teilen sich `main`, Gruppen haben ihre eigene Sitzung). +- **Textbefehle** laufen in der normalen Chat-Sitzung (DMs teilen sich `main`, Gruppen haben ihre eigene Sitzung). - **Native Befehle** verwenden isolierte Sitzungen: - Discord: `agent::discord:slash:` - Slack: `agent::slack:slash:` (Präfix konfigurierbar über `channels.slack.slashCommand.sessionPrefix`) - - Telegram: `telegram:slash:` (zielt über `CommandTargetSessionKey` auf die Chatsitzung) -- **`/stop`** zielt auf die aktive Chatsitzung, damit der aktuelle Lauf abgebrochen werden kann. -- **Slack:** `channels.slack.slashCommand` wird weiterhin für einen einzelnen Befehl im Stil `/openclaw` unterstützt. Wenn Sie `commands.native` aktivieren, müssen Sie einen Slack-Slash-Befehl pro integriertem Befehl erstellen (dieselben Namen wie `/help`). Menüs für Befehlsargumente in Slack werden als ephemere Block-Kit-Buttons ausgeliefert. - - Native Ausnahme in Slack: Registrieren Sie `/agentstatus` (nicht `/status`), weil Slack `/status` reserviert. Text-`/status` funktioniert in Slack-Nachrichten weiterhin. + - Telegram: `telegram:slash:` (zielt über `CommandTargetSessionKey` auf die Chat-Sitzung) +- **`/stop`** zielt auf die aktive Chat-Sitzung, damit der aktuelle Lauf abgebrochen werden kann. +- **Slack:** `channels.slack.slashCommand` wird weiterhin für einen einzelnen Befehl im Stil von `/openclaw` unterstützt. Wenn Sie `commands.native` aktivieren, müssen Sie einen Slack-Slash-Befehl pro integriertem Befehl erstellen (mit denselben Namen wie `/help`). Menüs für Befehlsargumente in Slack werden als ephemere Block-Kit-Buttons ausgeliefert. + - Native Slack-Ausnahme: Registrieren Sie `/agentstatus` (nicht `/status`), da Slack `/status` reserviert. Text-`/status` funktioniert in Slack-Nachrichten weiterhin. ## BTW-Nebenfragen @@ -310,19 +348,20 @@ Hinweise: Im Gegensatz zu normalem Chat: -- verwendet sie die aktuelle Sitzung als Hintergrundkontext, -- läuft sie als separater **tool-loser** One-shot-Aufruf, -- ändert sie den zukünftigen Sitzungskontext nicht, -- wird sie nicht in den Transkriptverlauf geschrieben, -- wird sie als Live-Nebenergebnis statt als normale Assistant-Nachricht ausgeliefert. +- verwendet es die aktuelle Sitzung als Hintergrundkontext, +- läuft es als separater **tool-loser** One-Shot-Aufruf, +- ändert es den zukünftigen Sitzungskontext nicht, +- wird es nicht in den Transkriptverlauf geschrieben, +- wird es als Live-Nebenergebnis statt als normale Assistentennachricht ausgeliefert. -Das macht `/btw` nützlich, wenn Sie eine vorübergehende Klärung möchten, während die Hauptaufgabe weiterläuft. +Das macht `/btw` nützlich, wenn Sie eine vorübergehende Klarstellung möchten, während die Haupt- +aufgabe weiterläuft. Beispiel: ```text -/btw was machen wir gerade? +/btw what are we doing right now? ``` -Siehe [BTW Side Questions](/de/tools/btw) für das vollständige Verhalten und -Details zur Client-UX. +Siehe [BTW Side Questions](/de/tools/btw) für das vollständige Verhalten und die UX- +Details des Clients. diff --git a/docs/de/tools/tts.md b/docs/de/tools/tts.md index 6b0a689ad..5b6d0bd7b 100644 --- a/docs/de/tools/tts.md +++ b/docs/de/tools/tts.md @@ -1,15 +1,15 @@ --- read_when: - - Text-to-Speech für Antworten aktivieren - - TTS-Provider oder -Grenzen konfigurieren - - '`/tts`-Befehle verwenden' + - Aktivieren von Text-to-Speech für Antworten + - Konfigurieren von TTS-Anbietern oder Limits + - Verwenden von /tts-Befehlen summary: Text-to-Speech (TTS) für ausgehende Antworten title: Text-to-Speech x-i18n: - generated_at: "2026-04-05T12:59:27Z" + generated_at: "2026-04-08T06:02:10Z" model: gpt-5.4 provider: openai - source_hash: 8487c8acef7585bd4eb5e3b39e2a063ebc6b5f0103524abdcbadd3a7781ffc46 + source_hash: 6e0fbcaf61282733c134f682e05a71f94d2169c03a85131ce9ad233c71a1e533 source_path: tools/tts.md workflow: 15 --- @@ -21,23 +21,24 @@ Es funktioniert überall dort, wo OpenClaw Audio senden kann. ## Unterstützte Dienste -- **ElevenLabs** (primärer oder Fallback-Provider) -- **Microsoft** (primärer oder Fallback-Provider; die aktuelle gebündelte Implementierung verwendet `node-edge-tts`) -- **MiniMax** (primärer oder Fallback-Provider; verwendet die T2A-v2-API) -- **OpenAI** (primärer oder Fallback-Provider; wird auch für Zusammenfassungen verwendet) +- **ElevenLabs** (primärer oder Fallback-Anbieter) +- **Microsoft** (primärer oder Fallback-Anbieter; die aktuelle gebündelte Implementierung verwendet `node-edge-tts`) +- **MiniMax** (primärer oder Fallback-Anbieter; verwendet die T2A-v2-API) +- **OpenAI** (primärer oder Fallback-Anbieter; wird auch für Zusammenfassungen verwendet) ### Hinweise zu Microsoft Speech -Der gebündelte Microsoft-Speech-Provider verwendet derzeit den Online- -Neural-TTS-Dienst von Microsoft Edge über die Bibliothek `node-edge-tts`. Es ist ein gehosteter Dienst (nicht -lokal), verwendet Microsoft-Endpunkte und erfordert keinen API-Schlüssel. -`node-edge-tts` stellt Konfigurationsoptionen für Sprache und Ausgabeformate bereit, aber -nicht alle Optionen werden vom Dienst unterstützt. Veraltete Konfiguration und Directive-Eingaben -mit `edge` funktionieren weiterhin und werden zu `microsoft` normalisiert. +Der gebündelte Microsoft-Speech-Anbieter verwendet derzeit den gehosteten +neuronalen TTS-Dienst von Microsoft Edge über die Bibliothek `node-edge-tts`. Es +handelt sich um einen gehosteten Dienst (nicht lokal), der Microsoft-Endpunkte +verwendet und keinen API-Schlüssel erfordert. +`node-edge-tts` stellt Sprachkonfigurationsoptionen und Ausgabeformate bereit, +aber nicht alle Optionen werden vom Dienst unterstützt. Alte Konfigurationen +und Direktiveneingaben mit `edge` funktionieren weiterhin und werden zu `microsoft` normalisiert. -Da dieser Pfad ein öffentlicher Webdienst ohne veröffentlichte SLA oder Quoten ist, -sollte er als Best Effort behandelt werden. Wenn Sie garantierte Limits und Support benötigen, verwenden Sie OpenAI -oder ElevenLabs. +Da dieser Pfad ein öffentlicher Webdienst ohne veröffentlichte SLA oder Quota +ist, sollte er als Best-Effort behandelt werden. Wenn Sie garantierte Limits +und Support benötigen, verwenden Sie OpenAI oder ElevenLabs. ## Optionale Schlüssel @@ -49,34 +50,34 @@ Wenn Sie OpenAI, ElevenLabs oder MiniMax verwenden möchten: Microsoft Speech erfordert **keinen** API-Schlüssel. -Wenn mehrere Provider konfiguriert sind, wird zuerst der ausgewählte Provider verwendet, die anderen dienen als Fallback-Optionen. -Die automatische Zusammenfassung verwendet das konfigurierte `summaryModel` (oder `agents.defaults.model.primary`), -daher muss dieser Provider ebenfalls authentifiziert sein, wenn Sie Zusammenfassungen aktivieren. +Wenn mehrere Anbieter konfiguriert sind, wird der ausgewählte Anbieter zuerst verwendet und die anderen dienen als Fallback-Optionen. +Auto-Zusammenfassungen verwenden das konfigurierte `summaryModel` (oder `agents.defaults.model.primary`), +daher muss dieser Anbieter ebenfalls authentifiziert sein, wenn Sie Zusammenfassungen aktivieren. ## Dienst-Links -- [OpenAI Text-to-Speech-Leitfaden](https://platform.openai.com/docs/guides/text-to-speech) -- [OpenAI Audio API-Referenz](https://platform.openai.com/docs/api-reference/audio) +- [OpenAI Text-to-Speech guide](https://platform.openai.com/docs/guides/text-to-speech) +- [OpenAI Audio API reference](https://platform.openai.com/docs/api-reference/audio) - [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech) - [ElevenLabs Authentication](https://elevenlabs.io/docs/api-reference/authentication) - [MiniMax T2A v2 API](https://platform.minimaxi.com/document/T2A%20V2) - [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts) -- [Microsoft-Speech-Ausgabeformate](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) +- [Microsoft Speech output formats](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) ## Ist es standardmäßig aktiviert? Nein. Auto‑TTS ist standardmäßig **deaktiviert**. Aktivieren Sie es in der Konfiguration mit -`messages.tts.auto` oder pro Sitzung mit `/tts always` (Alias: `/tts on`). +`messages.tts.auto` oder lokal mit `/tts on`. Wenn `messages.tts.provider` nicht gesetzt ist, wählt OpenClaw den ersten konfigurierten -Speech-Provider in der Auto-Select-Reihenfolge der Registry. +Speech-Anbieter in der Auto-Select-Reihenfolge der Registry aus. ## Konfiguration Die TTS-Konfiguration befindet sich unter `messages.tts` in `openclaw.json`. Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/configuration). -### Minimale Konfiguration (aktivieren + Provider) +### Minimale Konfiguration (Aktivieren + Anbieter) ```json5 { @@ -130,7 +131,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### Microsoft primär (kein API-Schlüssel) +### Microsoft primär (ohne API-Schlüssel) ```json5 { @@ -220,7 +221,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### Automatische Zusammenfassung für lange Antworten deaktivieren +### Auto-Zusammenfassung für lange Antworten deaktivieren ```json5 { @@ -232,7 +233,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -Dann ausführen: +Führen Sie dann Folgendes aus: ``` /tts summary off @@ -243,25 +244,25 @@ Dann ausführen: - `auto`: Auto‑TTS-Modus (`off`, `always`, `inbound`, `tagged`). - `inbound` sendet Audio nur nach einer eingehenden Sprachnachricht. - `tagged` sendet Audio nur, wenn die Antwort `[[tts]]`-Tags enthält. -- `enabled`: veralteter Schalter (doctor migriert dies zu `auto`). +- `enabled`: alter Schalter (doctor migriert dies zu `auto`). - `mode`: `"final"` (Standard) oder `"all"` (einschließlich Tool-/Block-Antworten). -- `provider`: Speech-Provider-ID wie `"elevenlabs"`, `"microsoft"`, `"minimax"` oder `"openai"` (Fallback erfolgt automatisch). -- Wenn `provider` **nicht gesetzt** ist, verwendet OpenClaw den ersten konfigurierten Speech-Provider in der Auto-Select-Reihenfolge der Registry. -- Das veraltete `provider: "edge"` funktioniert weiterhin und wird zu `microsoft` normalisiert. -- `summaryModel`: optionales günstiges Modell für automatische Zusammenfassungen; Standard ist `agents.defaults.model.primary`. +- `provider`: Speech-Anbieter-ID wie `"elevenlabs"`, `"microsoft"`, `"minimax"` oder `"openai"` (Fallback erfolgt automatisch). +- Wenn `provider` **nicht gesetzt** ist, verwendet OpenClaw den ersten konfigurierten Speech-Anbieter in der Auto-Select-Reihenfolge der Registry. +- Das alte `provider: "edge"` funktioniert weiterhin und wird zu `microsoft` normalisiert. +- `summaryModel`: optionales günstiges Modell für Auto-Zusammenfassungen; Standard ist `agents.defaults.model.primary`. - Akzeptiert `provider/model` oder einen konfigurierten Modellalias. -- `modelOverrides`: erlaubt dem Modell, TTS-Directives auszugeben (standardmäßig aktiviert). - - `allowProvider` ist standardmäßig `false` (Provider-Wechsel ist Opt-in). -- `providers.`: provider-eigene Einstellungen, verschlüsselt nach Speech-Provider-ID. -- Veraltete direkte Provider-Blöcke (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) werden beim Laden automatisch zu `messages.tts.providers.` migriert. +- `modelOverrides`: erlaubt dem Modell, TTS-Direktiven auszugeben (standardmäßig aktiviert). + - `allowProvider` ist standardmäßig `false` (Anbieterwechsel ist Opt-in). +- `providers.`: anbieterbezogene Einstellungen, nach Speech-Anbieter-ID gruppiert. +- Alte direkte Anbieterblöcke (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) werden beim Laden automatisch zu `messages.tts.providers.` migriert. - `maxTextLength`: hartes Limit für TTS-Eingaben (Zeichen). `/tts audio` schlägt fehl, wenn es überschritten wird. - `timeoutMs`: Request-Timeout (ms). -- `prefsPath`: überschreibt den lokalen prefs-JSON-Pfad (Provider/Limit/Zusammenfassung). +- `prefsPath`: überschreibt den lokalen JSON-Pfad für Einstellungen (Anbieter/Limit/Zusammenfassung). - `apiKey`-Werte greifen auf Umgebungsvariablen zurück (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`). - `providers.elevenlabs.baseUrl`: überschreibt die ElevenLabs-API-Basis-URL. - `providers.openai.baseUrl`: überschreibt den OpenAI-TTS-Endpunkt. - Auflösungsreihenfolge: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1` - - Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, daher werden benutzerdefinierte Modell- und Stimmmnamen akzeptiert. + - Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, daher werden benutzerdefinierte Modell- und Voice-Namen akzeptiert. - `providers.elevenlabs.voiceSettings`: - `stability`, `similarityBoost`, `style`: `0..1` - `useSpeakerBoost`: `true|false` @@ -269,48 +270,48 @@ Dann ausführen: - `providers.elevenlabs.applyTextNormalization`: `auto|on|off` - `providers.elevenlabs.languageCode`: 2-stelliger ISO-639-1-Code (z. B. `en`, `de`) - `providers.elevenlabs.seed`: Ganzzahl `0..4294967295` (Best-Effort-Determinismus) -- `providers.minimax.baseUrl`: überschreibt die MiniMax-API-Basis-URL (Standard `https://api.minimax.io`, Umgebungsvariable: `MINIMAX_API_HOST`). -- `providers.minimax.model`: TTS-Modell (Standard `speech-2.8-hd`, Umgebungsvariable: `MINIMAX_TTS_MODEL`). -- `providers.minimax.voiceId`: Sprachkennung (Standard `English_expressive_narrator`, Umgebungsvariable: `MINIMAX_TTS_VOICE_ID`). +- `providers.minimax.baseUrl`: überschreibt die MiniMax-API-Basis-URL (Standard `https://api.minimax.io`, env: `MINIMAX_API_HOST`). +- `providers.minimax.model`: TTS-Modell (Standard `speech-2.8-hd`, env: `MINIMAX_TTS_MODEL`). +- `providers.minimax.voiceId`: Voice-Kennung (Standard `English_expressive_narrator`, env: `MINIMAX_TTS_VOICE_ID`). - `providers.minimax.speed`: Wiedergabegeschwindigkeit `0.5..2.0` (Standard 1.0). - `providers.minimax.vol`: Lautstärke `(0, 10]` (Standard 1.0; muss größer als 0 sein). - `providers.minimax.pitch`: Tonhöhenverschiebung `-12..12` (Standard 0). - `providers.microsoft.enabled`: erlaubt die Nutzung von Microsoft Speech (Standard `true`; kein API-Schlüssel). -- `providers.microsoft.voice`: Name der Microsoft-Neural-Stimme (z. B. `en-US-MichelleNeural`). +- `providers.microsoft.voice`: Name der Microsoft-Neural-Voice (z. B. `en-US-MichelleNeural`). - `providers.microsoft.lang`: Sprachcode (z. B. `en-US`). - `providers.microsoft.outputFormat`: Microsoft-Ausgabeformat (z. B. `audio-24khz-48kbitrate-mono-mp3`). - - Gültige Werte finden Sie unter Microsoft-Speech-Ausgabeformate; nicht alle Formate werden vom gebündelten Edge-basierten Transport unterstützt. -- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: Prozent-Strings (z. B. `+10%`, `-5%`). + - Gültige Werte finden Sie unter Microsoft Speech output formats; nicht alle Formate werden vom gebündelten Edge-basierten Transport unterstützt. +- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: Prozentzeichenfolgen (z. B. `+10%`, `-5%`). - `providers.microsoft.saveSubtitles`: schreibt JSON-Untertitel neben die Audiodatei. - `providers.microsoft.proxy`: Proxy-URL für Microsoft-Speech-Requests. - `providers.microsoft.timeoutMs`: Überschreibung des Request-Timeouts (ms). -- `edge.*`: veralteter Alias für dieselben Microsoft-Einstellungen. +- `edge.*`: alter Alias für dieselben Microsoft-Einstellungen. ## Modellgesteuerte Überschreibungen (standardmäßig aktiviert) -Standardmäßig **kann** das Modell TTS-Directives für eine einzelne Antwort ausgeben. -Wenn `messages.tts.auto` auf `tagged` gesetzt ist, sind diese Directives erforderlich, um Audio auszulösen. +Standardmäßig **kann** das Modell TTS-Direktiven für eine einzelne Antwort ausgeben. +Wenn `messages.tts.auto` auf `tagged` gesetzt ist, sind diese Direktiven erforderlich, um Audio auszulösen. -Wenn aktiviert, kann das Modell `[[tts:...]]`-Directives ausgeben, um die Stimme +Wenn aktiviert, kann das Modell `[[tts:...]]`-Direktiven ausgeben, um die Voice für eine einzelne Antwort zu überschreiben, sowie optional einen `[[tts:text]]...[[/tts:text]]`-Block, um ausdrucksstarke Tags (Lachen, Gesangshinweise usw.) bereitzustellen, die nur im Audio erscheinen sollen. -`provider=...`-Directives werden ignoriert, sofern nicht `modelOverrides.allowProvider: true`. +`provider=...`-Direktiven werden ignoriert, es sei denn, `modelOverrides.allowProvider: true`. Beispiel für eine Antwort-Payload: ``` -Hier ist sie. +Here you go. [[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]] -[[tts:text]](lacht) Lies das Lied noch einmal.[[/tts:text]] +[[tts:text]](laughs) Read the song once more.[[/tts:text]] ``` -Verfügbare Directive-Schlüssel (wenn aktiviert): +Verfügbare Direktivenschlüssel (wenn aktiviert): -- `provider` (registrierte Speech-Provider-ID, z. B. `openai`, `elevenlabs`, `minimax` oder `microsoft`; erfordert `allowProvider: true`) -- `voice` (OpenAI-Stimme) oder `voiceId` (ElevenLabs / MiniMax) +- `provider` (registrierte Speech-Anbieter-ID, zum Beispiel `openai`, `elevenlabs`, `minimax` oder `microsoft`; erfordert `allowProvider: true`) +- `voice` (OpenAI-Voice) oder `voiceId` (ElevenLabs / MiniMax) - `model` (OpenAI-TTS-Modell, ElevenLabs-Modell-ID oder MiniMax-Modell) - `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost` - `vol` / `volume` (MiniMax-Lautstärke, 0-10) @@ -333,7 +334,7 @@ Alle Modellüberschreibungen deaktivieren: } ``` -Optionale Allowlist (Provider-Wechsel aktivieren, während andere Stellschrauben konfigurierbar bleiben): +Optionale Allowlist (Anbieterwechsel aktivieren, während andere Parameter konfigurierbar bleiben): ```json5 { @@ -359,35 +360,34 @@ Gespeicherte Felder: - `enabled` - `provider` -- `maxLength` (Schwellenwert für Zusammenfassungen; Standard 1500 Zeichen) +- `maxLength` (Zusammenfassungsschwelle; Standard 1500 Zeichen) - `summarize` (Standard `true`) Diese überschreiben `messages.tts.*` für diesen Host. ## Ausgabeformate (fest) -- **Feishu / Matrix / Telegram / WhatsApp**: Opus-Sprachnachricht (`opus_48000_64` von ElevenLabs, `opus` von OpenAI). - - 48 kHz / 64 kbps ist ein guter Kompromiss für Sprachnachrichten. +- **Feishu / Matrix / Telegram / WhatsApp**: Opus-Voice-Message (`opus_48000_64` von ElevenLabs, `opus` von OpenAI). + - 48 kHz / 64 kbps ist ein guter Kompromiss für Voice-Messages. - **Andere Kanäle**: MP3 (`mp3_44100_128` von ElevenLabs, `mp3` von OpenAI). - - 44,1 kHz / 128 kbps ist der Standardkompromiss für klare Sprachwiedergabe. -- **MiniMax**: MP3 (`speech-2.8-hd`-Modell, 32-kHz-Abtastrate). Das Format für Sprachnotizen wird nativ nicht unterstützt; verwenden Sie OpenAI oder ElevenLabs für garantiertes Opus bei Sprachnachrichten. + - 44,1 kHz / 128 kbps ist die Standardbalance für klare Sprachwiedergabe. +- **MiniMax**: MP3 (Modell `speech-2.8-hd`, 32-kHz-Samplerate). Voice-Note-Format wird nativ nicht unterstützt; verwenden Sie OpenAI oder ElevenLabs für garantierte Opus-Voice-Messages. - **Microsoft**: verwendet `microsoft.outputFormat` (Standard `audio-24khz-48kbitrate-mono-mp3`). - - Der gebündelte Transport akzeptiert ein `outputFormat`, aber nicht alle Formate sind im Dienst verfügbar. - - Die Werte für Ausgabeformate folgen den Microsoft-Speech-Ausgabeformaten (einschließlich Ogg/WebM Opus). - - Telegram `sendVoice` akzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie - garantiertes Opus für Sprachnachrichten benötigen. + - Der gebündelte Transport akzeptiert ein `outputFormat`, aber nicht alle Formate sind über den Dienst verfügbar. + - Werte für das Ausgabeformat entsprechen Microsoft Speech output formats (einschließlich Ogg/WebM Opus). + - Telegram `sendVoice` akzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie garantierte Opus-Voice-Messages benötigen. - Wenn das konfigurierte Microsoft-Ausgabeformat fehlschlägt, versucht OpenClaw es erneut mit MP3. -Die Ausgabeformate von OpenAI/ElevenLabs sind pro Kanal festgelegt (siehe oben). +OpenAI-/ElevenLabs-Ausgabeformate sind pro Kanal festgelegt (siehe oben). ## Verhalten von Auto-TTS Wenn aktiviert, führt OpenClaw Folgendes aus: -- TTS wird übersprungen, wenn die Antwort bereits Medien oder eine `MEDIA:`-Directive enthält. -- Sehr kurze Antworten (< 10 Zeichen) werden übersprungen. -- Lange Antworten werden bei aktivierter Funktion mit `agents.defaults.model.primary` (oder `summaryModel`) zusammengefasst. -- Das erzeugte Audio wird an die Antwort angehängt. +- TTS wird übersprungen, wenn die Antwort bereits Medien oder eine `MEDIA:`-Direktive enthält. +- sehr kurze Antworten (< 10 Zeichen) werden übersprungen. +- lange Antworten werden, wenn aktiviert, mit `agents.defaults.model.primary` (oder `summaryModel`) zusammengefasst. +- das generierte Audio wird an die Antwort angehängt. Wenn die Antwort `maxLength` überschreitet und die Zusammenfassung deaktiviert ist (oder kein API-Schlüssel für das Zusammenfassungsmodell vorhanden ist), wird Audio @@ -396,31 +396,29 @@ Zusammenfassungsmodell vorhanden ist), wird Audio ## Ablaufdiagramm ``` -Antwort -> TTS aktiviert? - nein -> Text senden - ja -> Medien / MEDIA: / kurz vorhanden? - ja -> Text senden - nein -> Länge > Limit? - nein -> TTS -> Audio anhängen - ja -> Zusammenfassung aktiviert? - nein -> Text senden - ja -> zusammenfassen (summaryModel oder agents.defaults.model.primary) - -> TTS -> Audio anhängen +Reply -> TTS enabled? + no -> send text + yes -> has media / MEDIA: / short? + yes -> send text + no -> length > limit? + no -> TTS -> attach audio + yes -> summary enabled? + no -> send text + yes -> summarize (summaryModel or agents.defaults.model.primary) + -> TTS -> attach audio ``` -## Verwendung per Slash-Befehl +## Verwendung von Slash-Befehlen Es gibt einen einzelnen Befehl: `/tts`. -Details zur Aktivierung finden Sie unter [Slash-Befehle](/tools/slash-commands). +Details zur Aktivierung finden Sie unter [Slash-Befehle](/de/tools/slash-commands). -Hinweis für Discord: `/tts` ist ein integrierter Discord-Befehl, daher registriert OpenClaw dort +Hinweis zu Discord: `/tts` ist ein integrierter Discord-Befehl, daher registriert OpenClaw dort `/voice` als nativen Befehl. Textbasiertes `/tts ...` funktioniert weiterhin. ``` /tts off -/tts always -/tts inbound -/tts tagged +/tts on /tts status /tts provider openai /tts limit 2000 @@ -432,22 +430,24 @@ Hinweise: - Befehle erfordern einen autorisierten Absender (Allowlist-/Owner-Regeln gelten weiterhin). - `commands.text` oder die Registrierung nativer Befehle muss aktiviert sein. -- `off|always|inbound|tagged` sind Umschalter pro Sitzung (`/tts on` ist ein Alias für `/tts always`). +- Die Konfiguration `messages.tts.auto` akzeptiert `off|always|inbound|tagged`. +- `/tts on` schreibt die lokale TTS-Einstellung auf `always`; `/tts off` schreibt sie auf `off`. +- Verwenden Sie die Konfiguration, wenn Sie `inbound`- oder `tagged`-Standards möchten. - `limit` und `summary` werden in lokalen Einstellungen gespeichert, nicht in der Hauptkonfiguration. -- `/tts audio` erzeugt eine einmalige Audio-Antwort (aktiviert TTS nicht dauerhaft). -- `/tts status` enthält Fallback-Sichtbarkeit für den letzten Versuch: +- `/tts audio` erzeugt eine einmalige Audioantwort (aktiviert TTS nicht dauerhaft). +- `/tts status` enthält Sichtbarkeit von Fallbacks für den neuesten Versuch: - erfolgreicher Fallback: `Fallback: -> ` plus `Attempts: ...` - Fehler: `Error: ...` plus `Attempts: ...` - - detaillierte Diagnostik: `Attempt details: provider:outcome(reasonCode) latency` -- Fehler von OpenAI- und ElevenLabs-APIs enthalten jetzt geparste Provider-Fehlerdetails und Request-IDs (wenn vom Provider zurückgegeben), was in TTS-Fehlern/Logs sichtbar gemacht wird. + - detaillierte Diagnose: `Attempt details: provider:outcome(reasonCode) latency` +- OpenAI- und ElevenLabs-API-Fehler enthalten jetzt geparste Fehlerdetails des Anbieters und die Request-ID (wenn vom Anbieter zurückgegeben), die in TTS-Fehlern/Logs sichtbar gemacht werden. ## Agent-Tool -Das Tool `tts` wandelt Text in Sprache um und gibt einen Audio-Anhang für -die Antwortzustellung zurück. Wenn der Kanal Feishu, Matrix, Telegram oder WhatsApp ist, -wird das Audio als Sprachnachricht statt als Dateianhang zugestellt. +Das `tts`-Tool wandelt Text in Sprache um und gibt einen Audio-Anhang zur +Auslieferung der Antwort zurück. Wenn der Kanal Feishu, Matrix, Telegram oder WhatsApp ist, +wird das Audio als Voice-Message statt als Dateianhang gesendet. -## Gateway RPC +## Gateway-RPC Gateway-Methoden: