chore(i18n): refresh de translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-08 06:06:53 +00:00
parent 4f17a36946
commit 314c37e5de
13 changed files with 1994 additions and 1709 deletions

View File

@ -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.
<CardGroup cols={3}>
<Card title="Kopplung" icon="link" href="/de/channels/pairing">
@ -23,7 +23,7 @@ Status: produktionsreif für DMs + Kanäle über Slack-App-Integrationen. Der St
<Card title="Slash-Befehle" icon="terminal" href="/de/tools/slash-commands">
Natives Befehlsverhalten und Befehlskatalog.
</Card>
<Card title="Fehlerbehebung für Kanäle" icon="wrench" href="/de/channels/troubleshooting">
<Card title="Fehlerbehebung für Channels" icon="wrench" href="/de/channels/troubleshooting">
Kanalübergreifende Diagnose- und Reparaturleitfäden.
</Card>
</CardGroup>
@ -33,12 +33,12 @@ Status: produktionsreif für DMs + Kanäle über Slack-App-Integrationen. Der St
<Tabs>
<Tab title="Socket Mode (Standard)">
<Steps>
<Step title="Neue Slack-App erstellen">
Klicken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**:
<Step title="Eine neue Slack-App erstellen">
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-...`)
</Step>
@ -79,12 +79,12 @@ openclaw gateway
<Tab title="HTTP-Request-URLs">
<Steps>
<Step title="Neue Slack-App erstellen">
Klicken Sie in den Slack-App-Einstellungen auf die Schaltfläche **[Create New App](https://api.slack.com/apps/new)**:
<Step title="Eine neue Slack-App erstellen">
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-...`)
</Step>
@ -290,13 +290,13 @@ openclaw gateway
</Tabs>
<AccordionGroup>
<Accordion title="Optionale Urheberschafts-Scopes (Schreibvorgänge)">
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.
<Accordion title="Optionale Scope-Berechtigungen für Autorschaft (Schreibvorgänge)">
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:`.
</Accordion>
<Accordion title="Optionale User-Token-Scopes (Lesevorgänge)">
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)
</Accordion>
</AccordionGroup>
@ -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`.
<Tip>
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.
</Tip>
## 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
</Tab>
<Tab title="Kanalrichtlinie">
`channels.slack.groupPolicy` steuert die Kanalbehandlung:
<Tab title="Channel-Richtlinie">
`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`
</Tab>
<Tab title="Erwähnungen und Kanalnutzer">
Kanalnachrichten sind standardmäßig durch Erwähnungen eingeschränkt.
<Tab title="Erwähnungen und Channel-Benutzer">
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.<id>`; Namen nur über Auflösung beim Start oder `dangerouslyAllowNameMatching`):
Steuerelemente pro Channel (`channels.slack.channels.<id>`; 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
</Tab>
</Tabs>
## 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:<agentId>:slack:channel:<channelId>`.
- Thread-Antworten können bei Bedarf Thread-Sitzungssuffixe (`:thread:<threadTs>`) 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:<agentId>:slack:channel:<channelId>`.
- Thread-Antworten können bei Bedarf Thread-Session-Suffixe (`:thread:<threadTs>`) 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:<id>]]`
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.<accountId>.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
<AccordionGroup>
<Accordion title="Eingehende Anhänge">
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.
</Accordion>
<Accordion title="Ausgehender Text und Dateien">
- 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
</Accordion>
<Accordion title="Zustellungsziele">
<Accordion title="Zustellziele">
Bevorzugte explizite Ziele:
- `user:<id>` für DMs
- `channel:<id>` für Kanäle
- `channel:<id>` 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.
</Accordion>
</AccordionGroup>
## 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 (`/<command>`-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:<agentId>:slack:slash:<userId>`
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
<AccordionGroup>
<Accordion title="Keine Antworten in Kanälen">
<Accordion title="Keine Antworten in Channels">
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
</Accordion>
<Accordion title="Socket Mode verbindet sich nicht">
Prüfen Sie Bot- und App-Token sowie die Aktivierung von Socket Mode in den Slack-App-Einstellungen.
<Accordion title="Socket-Modus verbindet sich nicht">
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.
</Accordion>
<Accordion title="HTTP-Modus empfängt keine Ereignisse">
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.
</Accordion>
<Accordion title="Native/Slash-Befehle werden nicht ausgelöst">
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.
</Accordion>
</AccordionGroup>
@ -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)

View File

@ -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`).
<Tip>
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.
</Tip>
## 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.
<Info>
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.
</Info>
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.
</Card>
<Card title="QMD" icon="search" href="/de/concepts/memory-qmd">
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.
</Card>
<Card title="Honcho" icon="brain" href="/de/concepts/memory-honcho">
AI-native sitzungsübergreifender Speicher mit Benutzermodellierung,
KI-nativer sitzungsübergreifender Speicher mit Benutzermodellierung,
semantischer Suche und Multi-Agent-Bewusstsein. Plugin-Installation.
</Card>
</CardGroup>
## Automatischer Speicher-Flush
## Wissens-Wiki-Ebene
<CardGroup cols={1}>
<Card title="Memory Wiki" icon="book" href="/de/plugins/memory-wiki">
Kompiliert dauerhaften Speicher in einen Wiki-Tresor mit Herkunftsnachweisen,
Dashboards, Bridge-Modus und Obsidian-freundlichen Workflows.
</Card>
</CardGroup>
## 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.
<Tip>
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.
</Tip>
## 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

View File

@ -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 <provider/model>`.
- 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.<id>` 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.<id>`, 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_<PROVIDER>_KEY` (einzelne Live-Überschreibung, höchste Priorität)
- `<PROVIDER>_API_KEYS` (durch Komma oder Semikolon getrennte Liste)
- `<PROVIDER>_API_KEY` (primärer Schlüssel)
- `<PROVIDER>_API_KEY_*` (nummerierte Liste, z. B. `<PROVIDER>_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 piai-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/<model>"].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/<model>"].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/<model>"].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/<model>"].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/<model>"].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/<model>"].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/<model>"].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.<id>` 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

View File

@ -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)

View File

@ -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` (8002500 ms), `custom` (`minMs`/`maxMs`).
- Gilt nur für **Block-Antworten**, nicht für finale Antworten oder Tool-Zusammenfassungen.
- Modi: `off` (Standard), `natural` (8002500ms), `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.<channel>.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.<channel>.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.<channel>.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

File diff suppressed because it is too large Load Diff

View File

@ -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 <Tooltip tip="JSON5 unterstützt Kommentare und nachgestellte Kommas">**JSON5**</Tooltip>-Konfiguration aus `~/.openclaw/openclaw.json`.
OpenClaw liest optional eine <Tooltip tip="JSON5 unterstützt Kommentare und nachgestellte Kommas">**JSON5**</Tooltip>-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.
<Tip>
**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.
</Tip>
## Minimale Konfiguration
@ -58,39 +58,29 @@ In der [vollständigen Referenz](/gateway/configuration-reference) finden Sie je
</Tab>
<Tab title="Control UI">
Ö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.
</Tab>
<Tab title="Direkt bearbeiten">
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)).
</Tab>
</Tabs>
## Strikte Validierung
<Warning>
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.
</Warning>
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:
<AccordionGroup>
<Accordion title="Einen Kanal einrichten (WhatsApp, Telegram, Discord usw.)">
Jeder Kanal hat einen eigenen Konfigurationsabschnitt unter `channels.<provider>`. Die Einrichtungsschritte finden Sie auf der jeweiligen Kanalseite:
Jeder Kanal hat seinen eigenen Konfigurationsabschnitt unter `channels.<provider>`. 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.
</Accordion>
<Accordion title="Steuern, wer dem Bot Nachrichten senden darf">
<Accordion title="Steuern, wer dem Bot Nachrichten senden kann">
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.
</Accordion>
<Accordion title="Mention-Gating für Gruppenchats einrichten">
Gruppennachrichten erfordern standardmäßig eine **Erwähnung**. Konfigurieren Sie Muster pro Agent:
<Accordion title="Erwähnungs-Gating für Gruppenchats einrichten">
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.
</Accordion>
<Accordion title="Skills pro Agent einschränken">
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).
</Accordion>
<Accordion title="Gateway-Kanalzustandsüberwachung anpassen">
<Accordion title="Gateway-Kanal-Gesundheitsüberwachung abstimmen">
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.<provider>.healthMonitor.enabled` oder `channels.<provider>.accounts.<id>.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.<provider>.healthMonitor.enabled` oder `channels.<provider>.accounts.<id>.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.
</Accordion>
<Accordion title="Sitzungen und Resets konfigurieren">
<Accordion title="Sitzungen und Zurücksetzungen konfigurieren">
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.
</Accordion>
<Accordion title="Sandboxing aktivieren">
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.
</Accordion>
@ -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.
</Accordion>
<Accordion title="Heartbeat einrichten (periodische Check-ins)">
<Accordion title="Heartbeat einrichten (regelmäßige Check-ins)">
```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` | `<channel-id>` (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.
</Accordion>
@ -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/<jobId>.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/<jobId>.jsonl` nach Größe und beibehaltenen Zeilen kürzen.
- Siehe [Cron jobs](/de/automation/cron-jobs) für die Funktionsübersicht und CLI-Beispiele.
</Accordion>
<Accordion title="Webhooks einrichten (Hooks)">
Aktivieren Sie HTTP-Webhook-Endpunkte im Gateway:
<Accordion title="Webhooks (Hooks) einrichten">
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.
</Accordion>
<Accordion title="Multi-Agent-Routing konfigurieren">
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.
</Accordion>
<Accordion title="Konfiguration auf mehrere Dateien aufteilen ($include)">
<Accordion title="Konfiguration in mehrere Dateien aufteilen ($include)">
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
</Accordion>
</AccordionGroup>
## 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** |
<Note>
`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.
</Note>
## Config-RPC (programmatische Updates)
## Config RPC (programmatische Aktualisierungen)
<Note>
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.
</Note>
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.
<AccordionGroup>
<Accordion title="config.apply (vollständiger Ersatz)">
Validiert + schreibt die vollständige Konfiguration und startet das Gateway in einem Schritt neu.
<Warning>
`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.
</Warning>
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`.
</Accordion>
<Accordion title="config.patch (Teilaktualisierung)">
Führt eine Teilaktualisierung in die bestehende Konfiguration zusammen (JSON-Merge-Patch-Semantik):
<Accordion title="config.patch (partielle Aktualisierung)">
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
```
<Accordion title="Shell-Env-Import (optional)">
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`
</Accordion>
<Accordion title="Env-Variablenersetzung in Konfigurationswerten">
Verweisen Sie in jedem Stringwert der Konfiguration mit `${VAR_NAME}` auf Umgebungsvariablen:
<Accordion title="Env-Var-Substitution in Konfigurationswerten">
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"`
</Accordion>
<Accordion title="SecretRefs (env, file, exec)">
<Accordion title="Secret-Refs (env, file, exec)">
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.
</Accordion>
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)_

View File

@ -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
<vault>/
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)

View File

@ -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).

View File

@ -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/<model>` 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/<model>"].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.

View File

@ -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
- 8590 % 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

View File

@ -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 `! <cmd>` (mit `/bash <cmd>` als Alias).
Der nur auf dem Host verfügbare Bash-Chat-Befehl verwendet `! <cmd>` (mit `/bash <cmd>` 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 `! <cmd>`, um Shell-Befehle auf dem Host auszuführen (`/bash <cmd>` 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 `! <cmd>` zum Ausführen von Host-Shell-Befehlen (`/bash <cmd>` 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 <name> [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 <id> <decision>` (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 <question>` (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 <duration|off>` (automatisches Entfokussieren bei Inaktivität für fokussierte Thread-Bindings verwalten)
- `/session max-age <duration|off>` (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 <target>` (Discord: diesen Thread oder einen neuen Thread an ein Sitzungs-/Subagent-Ziel binden)
- `/unfocus` (Discord: aktuelles Thread-Binding entfernen)
- `/kill <id|#|all>` (einen oder alle laufenden Sub-Agents für diese Sitzung sofort abbrechen; keine Bestätigungsnachricht)
- `/steer <id|#> <message>` (einen laufenden Sub-Agent sofort steuern: wenn möglich während des Laufs, andernfalls aktuelle Arbeit abbrechen und mit der Steuerungsnachricht neu starten)
- `/tell <id|#> <message>` (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 <spec>` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:<pkg>`.
- 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 <off|minimal|low|medium|high|xhigh>` (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=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` (senden Sie `/exec`, um den aktuellen Wert anzuzeigen)
- `/model <name>` (Alias: `/models`; oder `/<alias>` aus `agents.defaults.models.*.alias`)
- `/queue <mode>` (plus Optionen wie `debounce:2s cap:25 drop:summarize`; senden Sie `/queue`, um die aktuellen Einstellungen zu sehen)
- `/bash <command>` (nur Host; Alias für `! <command>`; 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))
- `! <command>` (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 <duration|off>` und `/session max-age <duration|off>` verwalten den Ablauf der Thread-Bindung.
- `/think <off|minimal|low|medium|high|xhigh>` 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=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` zeigt Standardwerte für exec an oder setzt sie.
- `/model [name|#|status]` zeigt das Modell an oder setzt es.
- `/models [provider] [page] [limit=<n>|size=<n>|all]` listet Provider oder Modelle für einen Provider auf.
- `/queue <mode>` 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 <name> [input]` führt einen Skill nach Namen aus.
- `/allowlist [list|add|remove] ...` verwaltet Allowlist-Einträge. Nur Text.
- `/approve <id> <decision>` löst exec-Genehmigungsabfragen auf.
- `/btw <question>` 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 <target>` 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 <id|#|all>` bricht einen oder alle laufenden Subagenten ab.
- `/steer <id|#> <message>` 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 <command>` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! <command>`. 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 <camera|screen|writes|all> [duration]|disarm` schaltet vorübergehend risikoreiche Befehle für Phone-Nodes scharf.
- `/voice status|list [limit]|set <voiceId|name>` 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 <name> [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.<provider>.commands.nativeSkills` gesteuert.
Hinweise:
- Befehle akzeptieren optional ein `:` zwischen Befehl und Argumenten (z. B. `/think: high`, `/send: on`, `/help:`).
- `/new <model>` 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 <id>` und `/config set channels.<provider>.accounts.<id>...` 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 <model>` 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 <id>` und `/config set channels.<provider>.accounts.<id>...` 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 <spec>` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:<pkg>`.
- `/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 <name> [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 <name> [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:<agentId>:discord:slash:<userId>`
- Slack: `agent:<agentId>:slack:slash:<userId>` (Präfix konfigurierbar über `channels.slack.slashCommand.sessionPrefix`)
- Telegram: `telegram:slash:<userId>` (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:<userId>` (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.

View File

@ -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. AutoTTS 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`: AutoTTS-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.<id>`: 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.<id>` migriert.
- `modelOverrides`: erlaubt dem Modell, TTS-Direktiven auszugeben (standardmäßig aktiviert).
- `allowProvider` ist standardmäßig `false` (Anbieterwechsel ist Opt-in).
- `providers.<id>`: 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.<id>` 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: <primary> -> <used>` 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 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: