diff --git a/docs/de/channels/discord.md b/docs/de/channels/discord.md index c0fb2d0aa..6d4e963a3 100644 --- a/docs/de/channels/discord.md +++ b/docs/de/channels/discord.md @@ -1,20 +1,20 @@ --- read_when: - - Arbeiten an Funktionen des Discord-Kanals -summary: Supportstatus, Funktionen und Konfiguration für Discord-Bots + - Arbeiten an Discord-Kanalfunktionen +summary: Status, Fähigkeiten und Konfiguration der Discord-Bot-Unterstützung title: Discord x-i18n: - generated_at: "2026-04-09T01:29:47Z" + generated_at: "2026-04-21T17:45:32Z" model: gpt-5.4 provider: openai - source_hash: 3cd2886fad941ae2129e681911309539e9a65a2352b777b538d7f4686a68f73f + source_hash: 1681315a6c246c4b68347f5e22319e132f30ea4e29a19e7d1da9e83dce7b68d0 source_path: channels/discord.md workflow: 15 --- # Discord (Bot API) -Status: bereit für DMs und Serverkanäle über das offizielle Discord-Gateway. +Status: bereit für DMs und Guild-Kanäle über das offizielle Discord-Gateway. @@ -28,15 +28,15 @@ Status: bereit für DMs und Serverkanäle über das offizielle Discord-Gateway. -## Schnelleinrichtung +## Schnelle Einrichtung -Sie müssen eine neue Anwendung mit einem Bot erstellen, den Bot zu Ihrem Server hinzufügen und ihn mit OpenClaw koppeln. Wir empfehlen, Ihren Bot zu Ihrem eigenen privaten Server hinzuzufügen. Wenn Sie noch keinen haben, [erstellen Sie zuerst einen](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (wählen Sie **Create My Own > For me and my friends**). +Sie müssen eine neue Anwendung mit einem Bot erstellen, den Bot zu Ihrem Server hinzufügen und ihn mit OpenClaw koppeln. Wir empfehlen, Ihren Bot zu Ihrem eigenen privaten Server hinzuzufügen. Falls Sie noch keinen haben, [erstellen Sie zuerst einen](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (wählen Sie **Create My Own > For me and my friends**). Gehen Sie zum [Discord Developer Portal](https://discord.com/developers/applications) und klicken Sie auf **New Application**. Geben Sie ihr einen Namen wie „OpenClaw“. - Klicken Sie in der Seitenleiste auf **Bot**. Setzen Sie den **Username** auf den Namen, den Ihr OpenClaw-Agent tragen soll. + Klicken Sie in der Seitenleiste auf **Bot**. Setzen Sie den **Username** auf den Namen, den Sie für Ihren OpenClaw-Agenten verwenden. @@ -45,7 +45,7 @@ Sie müssen eine neue Anwendung mit einem Bot erstellen, den Bot zu Ihrem Server - **Message Content Intent** (erforderlich) - **Server Members Intent** (empfohlen; erforderlich für Rollen-Allowlists und Name-zu-ID-Abgleich) - - **Presence Intent** (optional; nur für Präsenzaktualisierungen erforderlich) + - **Presence Intent** (optional; nur für Presence-Updates erforderlich) @@ -56,19 +56,19 @@ Sie müssen eine neue Anwendung mit einem Bot erstellen, den Bot zu Ihrem Server Trotz des Namens wird dadurch Ihr erster Token erzeugt — es wird nichts „zurückgesetzt“. - Kopieren Sie den Token und speichern Sie ihn irgendwo. Dies ist Ihr **Bot Token**, und Sie werden ihn gleich benötigen. + Kopieren Sie den Token und speichern Sie ihn an einem sicheren Ort. Das ist Ihr **Bot Token**, und Sie werden ihn gleich brauchen. - Klicken Sie in der Seitenleiste auf **OAuth2**. Sie erzeugen eine Einladungs-URL mit den richtigen Berechtigungen, um den Bot zu Ihrem Server hinzuzufügen. + Klicken Sie in der Seitenleiste auf **OAuth2**. Sie werden eine Einladungs-URL mit den richtigen Berechtigungen erzeugen, um den Bot zu Ihrem Server hinzuzufügen. Scrollen Sie nach unten zu **OAuth2 URL Generator** und aktivieren Sie: - `bot` - `applications.commands` - Darunter wird ein Abschnitt **Bot Permissions** angezeigt. Aktivieren Sie: + Darunter erscheint ein Abschnitt **Bot Permissions**. Aktivieren Sie: - View Channels - Send Messages @@ -77,30 +77,30 @@ Sie müssen eine neue Anwendung mit einem Bot erstellen, den Bot zu Ihrem Server - Attach Files - Add Reactions (optional) - Kopieren Sie die unten erzeugte URL, fügen Sie sie in Ihren Browser ein, wählen Sie Ihren Server aus und klicken Sie auf **Continue**, um die Verbindung herzustellen. Sie sollten Ihren Bot jetzt auf dem Discord-Server sehen. + Kopieren Sie die erzeugte URL unten, fügen Sie sie in Ihren Browser ein, wählen Sie Ihren Server aus und klicken Sie auf **Continue**, um die Verbindung herzustellen. Sie sollten Ihren Bot jetzt im Discord-Server sehen. - - Zurück in der Discord-App müssen Sie den Developer Mode aktivieren, damit Sie interne IDs kopieren können. + + Zurück in der Discord-App müssen Sie den Entwicklermodus aktivieren, damit Sie interne IDs kopieren können. 1. Klicken Sie auf **User Settings** (Zahnradsymbol neben Ihrem Avatar) → **Advanced** → aktivieren Sie **Developer Mode** - 2. Rechtsklick auf Ihr **Serversymbol** in der Seitenleiste → **Copy Server ID** - 3. Rechtsklick auf Ihren **eigenen Avatar** → **Copy User ID** + 2. Klicken Sie mit der rechten Maustaste auf Ihr **Server-Symbol** in der Seitenleiste → **Copy Server ID** + 3. Klicken Sie mit der rechten Maustaste auf Ihren **eigenen Avatar** → **Copy User ID** Speichern Sie Ihre **Server ID** und **User ID** zusammen mit Ihrem Bot Token — Sie senden alle drei im nächsten Schritt an OpenClaw. - Damit die Kopplung funktioniert, muss Discord zulassen, dass Ihr Bot Ihnen eine DM senden darf. Rechtsklick auf Ihr **Serversymbol** → **Privacy Settings** → aktivieren Sie **Direct Messages**. + Damit die Kopplung funktioniert, muss Discord Ihrem Bot erlauben, Ihnen DMs zu senden. Klicken Sie mit der rechten Maustaste auf Ihr **Server-Symbol** → **Privacy Settings** → aktivieren Sie **Direct Messages**. - Dadurch können Servermitglieder (einschließlich Bots) Ihnen DMs senden. Lassen Sie dies aktiviert, wenn Sie Discord-DMs mit OpenClaw verwenden möchten. Wenn Sie nur Serverkanäle verwenden möchten, können Sie DMs nach der Kopplung deaktivieren. + Dadurch können Servermitglieder (einschließlich Bots) Ihnen DMs senden. Lassen Sie diese Option aktiviert, wenn Sie Discord-DMs mit OpenClaw verwenden möchten. Wenn Sie nur Guild-Kanäle verwenden möchten, können Sie DMs nach der Kopplung deaktivieren. - Ihr Discord-Bot-Token ist ein Geheimnis (wie ein Passwort). Setzen Sie ihn auf dem Rechner, auf dem OpenClaw ausgeführt wird, bevor Sie Ihrem Agenten schreiben. + Ihr Discord-Bot-Token ist ein Geheimnis (wie ein Passwort). Setzen Sie ihn auf dem Rechner, auf dem OpenClaw läuft, bevor Sie Ihrem Agenten eine Nachricht senden. ```bash export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN" @@ -110,20 +110,20 @@ openclaw config set channels.discord.enabled true --strict-json openclaw gateway ``` - Wenn OpenClaw bereits als Hintergrunddienst läuft, starten Sie ihn über die OpenClaw-Mac-App neu oder indem Sie den Prozess `openclaw gateway run` stoppen und erneut starten. + Wenn OpenClaw bereits als Hintergrunddienst läuft, starten Sie es über die OpenClaw-Mac-App neu oder indem Sie den Prozess `openclaw gateway run` stoppen und erneut starten. - - Chatten Sie mit Ihrem OpenClaw-Agenten auf einem bestehenden Kanal (z. B. Telegram) und teilen Sie es ihm mit. Wenn Discord Ihr erster Kanal ist, verwenden Sie stattdessen die Registerkarte CLI / config. + + Chatten Sie mit Ihrem OpenClaw-Agenten auf einem bestehenden Kanal (z. B. Telegram) und teilen Sie es ihm mit. Wenn Discord Ihr erster Kanal ist, verwenden Sie stattdessen den CLI-/Konfigurations-Tab. > „Ich habe meinen Discord-Bot-Token bereits in der Konfiguration gesetzt. Bitte schließe die Discord-Einrichtung mit der User ID `` und der Server ID `` ab.“ - - Wenn Sie dateibasierte Konfiguration bevorzugen, setzen Sie Folgendes: + + Wenn Sie dateibasierte Konfiguration bevorzugen, setzen Sie: ```json5 { @@ -146,7 +146,7 @@ openclaw gateway DISCORD_BOT_TOKEN=... ``` - Klartextwerte für `token` werden unterstützt. SecretRef-Werte werden ebenfalls für `channels.discord.token` über env/file/exec-Provider unterstützt. Siehe [Secrets Management](/de/gateway/secrets). + Klartextwerte für `token` werden unterstützt. SecretRef-Werte werden ebenfalls für `channels.discord.token` über Env-/Datei-/Exec-Provider unterstützt. Siehe [Secrets Management](/de/gateway/secrets). @@ -154,11 +154,11 @@ DISCORD_BOT_TOKEN=... - Warten Sie, bis das Gateway läuft, und senden Sie Ihrem Bot dann eine DM in Discord. Er antwortet mit einem Kopplungscode. + Warten Sie, bis das Gateway läuft, und senden Sie dann Ihrem Bot in Discord eine DM. Er antwortet mit einem Kopplungscode. - - Senden Sie den Kopplungscode auf Ihrem bestehenden Kanal an Ihren Agenten: + + Senden Sie den Kopplungscode an Ihren Agenten auf Ihrem bestehenden Kanal: > „Genehmige diesen Discord-Kopplungscode: ``“ @@ -174,27 +174,27 @@ openclaw pairing approve discord Kopplungscodes laufen nach 1 Stunde ab. - Sie sollten jetzt per DM in Discord mit Ihrem Agenten chatten können. + Sie sollten jetzt per DM mit Ihrem Agenten in Discord chatten können. Die Token-Auflösung ist kontobewusst. Token-Werte aus der Konfiguration haben Vorrang vor dem Env-Fallback. `DISCORD_BOT_TOKEN` wird nur für das Standardkonto verwendet. -Für erweiterte ausgehende Aufrufe (message-Tool/Kanalaktionen) wird ein expliziter aufrufbezogener `token` für diesen Aufruf verwendet. Dies gilt für Sende- sowie Lese-/Probe-Aktionen (zum Beispiel read/search/fetch/thread/pins/permissions). Kontorichtlinien und Wiederholungseinstellungen stammen weiterhin aus dem ausgewählten Konto im aktiven Runtime-Snapshot. +Für erweiterte ausgehende Aufrufe (Nachrichten-Tool/Kanalaktionen) wird ein expliziter `token` pro Aufruf für genau diesen Aufruf verwendet. Das gilt für Sende- sowie Lese-/Probe-Aktionen (zum Beispiel read/search/fetch/thread/pins/permissions). Kontorichtlinie- und Retry-Einstellungen kommen weiterhin aus dem ausgewählten Konto im aktiven Runtime-Snapshot. -## Empfohlen: Einen Server-Workspace einrichten +## Empfohlen: Einen Guild-Arbeitsbereich einrichten -Sobald DMs funktionieren, können Sie Ihren Discord-Server als vollständigen Workspace einrichten, in dem jeder Kanal eine eigene Agentensitzung mit eigenem Kontext erhält. Das wird für private Server empfohlen, auf denen nur Sie und Ihr Bot sind. +Sobald DMs funktionieren, können Sie Ihren Discord-Server als vollständigen Arbeitsbereich einrichten, in dem jeder Kanal seine eigene Agent-Sitzung mit eigenem Kontext erhält. Dies wird für private Server empfohlen, auf denen nur Sie und Ihr Bot aktiv sind. - - Dadurch kann Ihr Agent in jedem Kanal Ihres Servers antworten, nicht nur in DMs. + + Dadurch kann Ihr Agent in jedem Kanal auf Ihrem Server antworten, nicht nur in DMs. - - > „Füge meine Discord Server ID `` zur Server-Allowlist hinzu“ + + > „Füge meine Discord-Server-ID `` zur Guild-Allowlist hinzu“ @@ -219,15 +219,15 @@ Sobald DMs funktionieren, können Sie Ihren Discord-Server als vollständigen Wo - - Standardmäßig antwortet Ihr Agent in Serverkanälen nur, wenn er mit @ erwähnt wird. Für einen privaten Server möchten Sie wahrscheinlich, dass er auf jede Nachricht antwortet. + + Standardmäßig antwortet Ihr Agent in Guild-Kanälen nur, wenn er mit @ erwähnt wird. Für einen privaten Server möchten Sie wahrscheinlich, dass er auf jede Nachricht antwortet. - - > „Erlaube meinem Agenten, auf diesem Server zu antworten, ohne dass er mit @ erwähnt werden muss“ + + > „Erlaube meinem Agenten, auf diesem Server zu antworten, ohne mit @ erwähnt werden zu müssen“ - Setzen Sie `requireMention: false` in Ihrer Serverkonfiguration: + Setzen Sie `requireMention: false` in Ihrer Guild-Konfiguration: ```json5 { @@ -248,38 +248,38 @@ Sobald DMs funktionieren, können Sie Ihren Discord-Server als vollständigen Wo - - Standardmäßig wird Langzeitspeicher (`MEMORY.md`) nur in DM-Sitzungen geladen. In Serverkanälen wird `MEMORY.md` nicht automatisch geladen. + + Standardmäßig wird der Langzeitspeicher (`MEMORY.md`) nur in DM-Sitzungen geladen. Guild-Kanäle laden `MEMORY.md` nicht automatisch. - - > „Wenn ich in Discord-Kanälen Fragen stelle, verwende memory_search oder memory_get, wenn du Langzeitkontext aus MEMORY.md benötigst.“ + + > „Wenn ich in Discord-Kanälen Fragen stelle, verwende `memory_search` oder `memory_get`, wenn du Langzeitkontext aus `MEMORY.md` benötigst.“ - Wenn Sie in jedem Kanal gemeinsamen Kontext benötigen, legen Sie die stabilen Anweisungen in `AGENTS.md` oder `USER.md` ab (sie werden in jede Sitzung injiziert). Behalten Sie Langzeitnotizen in `MEMORY.md` und greifen Sie bei Bedarf mit Speicher-Tools darauf zu. + Wenn Sie gemeinsamen Kontext in jedem Kanal benötigen, legen Sie die stabilen Anweisungen in `AGENTS.md` oder `USER.md` ab (sie werden in jede Sitzung injiziert). Halten Sie Langzeitnotizen in `MEMORY.md` und greifen Sie bei Bedarf mit Speicher-Tools darauf zu. -Erstellen Sie nun einige Kanäle auf Ihrem Discord-Server und beginnen Sie zu chatten. Ihr Agent kann den Kanalnamen sehen, und jeder Kanal erhält seine eigene isolierte Sitzung — so können Sie `#coding`, `#home`, `#research` oder was auch immer zu Ihrem Workflow passt einrichten. +Erstellen Sie jetzt einige Kanäle auf Ihrem Discord-Server und beginnen Sie zu chatten. Ihr Agent kann den Kanalnamen sehen, und jeder Kanal erhält seine eigene isolierte Sitzung — sodass Sie `#coding`, `#home`, `#research` oder andere für Ihren Workflow passende Kanäle einrichten können. -## Laufzeitmodell +## Runtime-Modell -- Das Gateway besitzt die Discord-Verbindung. -- Die Antwortweiterleitung ist deterministisch: Eingehende Discord-Antworten gehen zurück an Discord. -- Standardmäßig (`session.dmScope=main`) teilen sich Direktchats die Hauptsitzung des Agenten (`agent:main:main`). -- Serverkanäle sind isolierte Sitzungsschlüssel (`agent::discord:channel:`). +- Das Gateway verwaltet die Discord-Verbindung. +- Das Reply-Routing ist deterministisch: Eingehende Discord-Antworten gehen wieder an Discord zurück. +- Standardmäßig (`session.dmScope=main`) teilen direkte Chats die Hauptsitzung des Agenten (`agent:main:main`). +- Guild-Kanäle sind isolierte Sitzungsschlüssel (`agent::discord:channel:`). - Gruppen-DMs werden standardmäßig ignoriert (`channels.discord.dm.groupEnabled=false`). -- Native Slash-Befehle laufen in isolierten Befehlssitzungen (`agent::discord:slash:`), führen aber weiterhin `CommandTargetSessionKey` zur weitergeleiteten Konversationssitzung mit. +- Native Slash-Befehle laufen in isolierten Befehlssitzungen (`agent::discord:slash:`), während sie weiterhin `CommandTargetSessionKey` zur weitergeleiteten Unterhaltungssitzung mitführen. -## Forumskanäle +## Forum-Kanäle -Discord-Forum- und Medienkanäle akzeptieren nur Thread-Beiträge. OpenClaw unterstützt zwei Möglichkeiten, sie zu erstellen: +Discord-Forum- und Medienkanäle akzeptieren nur Thread-Beiträge. OpenClaw unterstützt zwei Wege, sie zu erstellen: -- Senden Sie eine Nachricht an das Forum-Parent (`channel:`), um automatisch einen Thread zu erstellen. Der Thread-Titel verwendet die erste nicht leere Zeile Ihrer Nachricht. -- Verwenden Sie `openclaw message thread create`, um direkt einen Thread zu erstellen. Übergeben Sie für Forumskanäle nicht `--message-id`. +- Senden Sie eine Nachricht an das Forum-Parent (`channel:`), um automatisch einen Thread zu erstellen. Der Thread-Titel verwendet die erste nichtleere Zeile Ihrer Nachricht. +- Verwenden Sie `openclaw message thread create`, um direkt einen Thread zu erstellen. Übergeben Sie für Forum-Kanäle nicht `--message-id`. Beispiel: An das Forum-Parent senden, um einen Thread zu erstellen @@ -299,31 +299,31 @@ Forum-Parents akzeptieren keine Discord-Komponenten. Wenn Sie Komponenten benöt ## Interaktive Komponenten -OpenClaw unterstützt Discord-Komponenten-v2-Container für Agentennachrichten. Verwenden Sie das message-Tool mit einer `components`-Payload. Interaktionsergebnisse werden als normale eingehende Nachrichten zurück an den Agenten geleitet und folgen den vorhandenen Discord-Einstellungen für `replyToMode`. +OpenClaw unterstützt Discord-Komponenten-v2-Container für Agentennachrichten. Verwenden Sie das Nachrichten-Tool mit einer `components`-Payload. Interaktionsergebnisse werden als normale eingehende Nachrichten zurück an den Agenten geleitet und folgen den bestehenden Discord-Einstellungen für `replyToMode`. Unterstützte Blöcke: - `text`, `section`, `separator`, `actions`, `media-gallery`, `file` -- Aktionszeilen erlauben bis zu 5 Buttons oder ein einzelnes Auswahlmenü +- Aktionszeilen erlauben bis zu 5 Schaltflächen oder ein einzelnes Auswahlmenü - Auswahltypen: `string`, `user`, `role`, `mentionable`, `channel` -Standardmäßig sind Komponenten nur einmal verwendbar. Setzen Sie `components.reusable=true`, um Buttons, Auswahlen und Formulare mehrfach verwendbar zu machen, bis sie ablaufen. +Standardmäßig sind Komponenten nur einmal verwendbar. Setzen Sie `components.reusable=true`, um Schaltflächen, Auswahlen und Formulare mehrfach verwendbar zu machen, bis sie ablaufen. -Um einzuschränken, wer auf einen Button klicken kann, setzen Sie `allowedUsers` auf diesem Button (Discord-Benutzer-IDs, Tags oder `*`). Wenn dies konfiguriert ist, erhalten nicht passende Benutzer eine ephemere Ablehnung. +Um einzuschränken, wer auf eine Schaltfläche klicken kann, setzen Sie `allowedUsers` auf dieser Schaltfläche (Discord-Benutzer-IDs, Tags oder `*`). Wenn dies konfiguriert ist, erhalten nicht übereinstimmende Benutzer eine ephemere Ablehnung. -Die Slash-Befehle `/model` und `/models` öffnen einen interaktiven Modellauswähler mit Dropdowns für Provider und Modell sowie einem Schritt zum Absenden. Die Antwort des Auswählers ist ephemer, und nur der aufrufende Benutzer kann sie verwenden. +Die Slash-Befehle `/model` und `/models` öffnen einen interaktiven Modellwähler mit Dropdowns für Provider und Modell sowie einem Schritt zum Absenden. Die Antwort des Auswahlmenüs ist ephemer, und nur der aufrufende Benutzer kann sie verwenden. Dateianhänge: -- `file`-Blöcke müssen auf eine Anhangsreferenz zeigen (`attachment://`) -- Stellen Sie den Anhang über `media`/`path`/`filePath` bereit (einzelne Datei); verwenden Sie `media-gallery` für mehrere Dateien -- Verwenden Sie `filename`, um den Upload-Namen zu überschreiben, wenn er mit der Anhangsreferenz übereinstimmen soll +- `file`-Blöcke müssen auf eine Attachment-Referenz zeigen (`attachment://`) +- Stellen Sie den Anhang über `media`/`path`/`filePath` bereit (eine einzelne Datei); verwenden Sie `media-gallery` für mehrere Dateien +- Verwenden Sie `filename`, um den Upload-Namen zu überschreiben, wenn er der Attachment-Referenz entsprechen soll Modale Formulare: - Fügen Sie `components.modal` mit bis zu 5 Feldern hinzu - Feldtypen: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select` -- OpenClaw fügt automatisch einen Auslöse-Button hinzu +- OpenClaw fügt automatisch eine Auslöser-Schaltfläche hinzu Beispiel: @@ -332,27 +332,27 @@ Beispiel: channel: "discord", action: "send", to: "channel:123456789012345678", - message: "Optional fallback text", + message: "Optionaler Fallback-Text", components: { reusable: true, - text: "Choose a path", + text: "Wähle einen Pfad", blocks: [ { type: "actions", buttons: [ { - label: "Approve", + label: "Genehmigen", style: "success", allowedUsers: ["123456789012345678"], }, - { label: "Decline", style: "danger" }, + { label: "Ablehnen", style: "danger" }, ], }, { type: "actions", select: { type: "string", - placeholder: "Pick an option", + placeholder: "Wähle eine Option", options: [ { label: "Option A", value: "a" }, { label: "Option B", value: "b" }, @@ -362,15 +362,15 @@ Beispiel: ], modal: { title: "Details", - triggerLabel: "Open form", + triggerLabel: "Formular öffnen", fields: [ - { type: "text", label: "Requester" }, + { type: "text", label: "Anfordernde Person" }, { type: "select", - label: "Priority", + label: "Priorität", options: [ - { label: "Low", value: "low" }, - { label: "High", value: "high" }, + { label: "Niedrig", value: "low" }, + { label: "Hoch", value: "high" }, ], }, ], @@ -383,32 +383,32 @@ Beispiel: - `channels.discord.dmPolicy` steuert den DM-Zugriff (veraltet: `channels.discord.dm.policy`): + `channels.discord.dmPolicy` steuert den DM-Zugriff (Legacy: `channels.discord.dm.policy`): - `pairing` (Standard) - `allowlist` - - `open` (erfordert, dass `channels.discord.allowFrom` `"*"` enthält; veraltet: `channels.discord.dm.allowFrom`) + - `open` (erfordert, dass `channels.discord.allowFrom` `"*"` enthält; Legacy: `channels.discord.dm.allowFrom`) - `disabled` Wenn die DM-Richtlinie nicht offen ist, werden unbekannte Benutzer blockiert (oder im Modus `pairing` zur Kopplung aufgefordert). - Vorrang bei mehreren Konten: + Priorität bei mehreren Konten: - - `channels.discord.accounts.default.allowFrom` gilt nur für das `default`-Konto. - - Benannte Konten erben `channels.discord.allowFrom`, wenn ihr eigenes `allowFrom` nicht gesetzt ist. - - Benannte Konten erben nicht `channels.discord.accounts.default.allowFrom`. + - `channels.discord.accounts.default.allowFrom` gilt nur für das Konto `default`. + - Benannte Konten übernehmen `channels.discord.allowFrom`, wenn ihr eigenes `allowFrom` nicht gesetzt ist. + - Benannte Konten übernehmen nicht `channels.discord.accounts.default.allowFrom`. - DM-Zielformat für Zustellung: + DM-Zielformat für die Zustellung: - `user:` - - `<@id>`-Erwähnung + - `<@id>`-Mention - Reine numerische IDs sind mehrdeutig und werden abgelehnt, sofern nicht explizit eine Art von Benutzer-/Kanalziel angegeben wird. + Reine numerische IDs sind mehrdeutig und werden abgelehnt, sofern kein expliziter Benutzer-/Kanal-Zieltyp angegeben ist. - - Die Serverbehandlung wird durch `channels.discord.groupPolicy` gesteuert: + + Die Behandlung von Guilds wird durch `channels.discord.groupPolicy` gesteuert: - `open` - `allowlist` @@ -418,12 +418,12 @@ Beispiel: Verhalten von `allowlist`: - - Der Server muss mit `channels.discord.guilds` übereinstimmen (`id` bevorzugt, Slug akzeptiert) - - optionale Absender-Allowlists: `users` (stabile IDs empfohlen) und `roles` (nur Rollen-IDs); wenn eines davon konfiguriert ist, sind Absender erlaubt, wenn sie mit `users` ODER `roles` übereinstimmen - - direkter Abgleich nach Name/Tag ist standardmäßig deaktiviert; aktivieren Sie `channels.discord.dangerouslyAllowNameMatching: true` nur als Notfall-Kompatibilitätsmodus - - Namen/Tags werden für `users` unterstützt, aber IDs sind sicherer; `openclaw security audit` warnt, wenn Namens-/Tag-Einträge verwendet werden - - wenn für einen Server `channels` konfiguriert ist, werden nicht aufgeführte Kanäle abgelehnt - - wenn ein Server keinen `channels`-Block hat, sind alle Kanäle in diesem erlaubten Server zugelassen + - Die Guild muss mit `channels.discord.guilds` übereinstimmen (`id` bevorzugt, Slug akzeptiert) + - optionale Sender-Allowlists: `users` (stabile IDs empfohlen) und `roles` (nur Rollen-IDs); wenn eines davon konfiguriert ist, sind Sender erlaubt, wenn sie mit `users` ODER `roles` übereinstimmen + - direkter Name-/Tag-Abgleich ist standardmäßig deaktiviert; aktivieren Sie `channels.discord.dangerouslyAllowNameMatching: true` nur als Break-Glass-Kompatibilitätsmodus + - Namen/Tags werden für `users` unterstützt, aber IDs sind sicherer; `openclaw security audit` warnt, wenn Name-/Tag-Einträge verwendet werden + - wenn für eine Guild `channels` konfiguriert ist, werden nicht aufgeführte Kanäle abgelehnt + - wenn eine Guild keinen Block `channels` hat, sind alle Kanäle in dieser allowlisteten Guild erlaubt Beispiel: @@ -449,21 +449,21 @@ Beispiel: } ``` - Wenn Sie nur `DISCORD_BOT_TOKEN` setzen und keinen `channels.discord`-Block erstellen, ist das Laufzeit-Fallback `groupPolicy="allowlist"` (mit einer Warnung in den Logs), selbst wenn `channels.defaults.groupPolicy` auf `open` gesetzt ist. + Wenn Sie nur `DISCORD_BOT_TOKEN` setzen und keinen Block `channels.discord` erstellen, ist das Runtime-Fallback `groupPolicy="allowlist"` (mit einer Warnung in den Logs), selbst wenn `channels.defaults.groupPolicy` `open` ist. - - Nachrichten in Servern sind standardmäßig durch Erwähnungen geschützt. + + Guild-Nachrichten sind standardmäßig mention-gesteuert. - Die Erwähnungserkennung umfasst: + Die Mention-Erkennung umfasst: - - explizite Bot-Erwähnung - - konfigurierte Erwähnungsmuster (`agents.list[].groupChat.mentionPatterns`, Fallback `messages.groupChat.mentionPatterns`) - - implizites Antwort-an-Bot-Verhalten in unterstützten Fällen + - explizite Bot-Mention + - konfigurierte Mention-Muster (`agents.list[].groupChat.mentionPatterns`, Fallback `messages.groupChat.mentionPatterns`) + - implizites Reply-to-Bot-Verhalten in unterstützten Fällen - `requireMention` wird pro Server/Kanal konfiguriert (`channels.discord.guilds...`). - `ignoreOtherMentions` verwirft optional Nachrichten, die einen anderen Benutzer/eine andere Rolle, aber nicht den Bot erwähnen (ausgenommen @everyone/@here). + `requireMention` wird pro Guild/Kanal konfiguriert (`channels.discord.guilds...`). + `ignoreOtherMentions` verwirft optional Nachrichten, die einen anderen Benutzer/eine andere Rolle erwähnen, aber nicht den Bot (ausgenommen @everyone/@here). Gruppen-DMs: @@ -473,9 +473,9 @@ Beispiel: -### Rollenbasiertes Agenten-Routing +### Rollenbasiertes Agent-Routing -Verwenden Sie `bindings[].match.roles`, um Discord-Servermitglieder anhand ihrer Rollen-ID an unterschiedliche Agenten weiterzuleiten. Rollenbasierte Bindings akzeptieren nur Rollen-IDs und werden nach Peer- oder Parent-Peer-Bindings und vor rein serverbasierten Bindings ausgewertet. Wenn ein Binding auch andere Match-Felder setzt (zum Beispiel `peer` + `guildId` + `roles`), müssen alle konfigurierten Felder übereinstimmen. +Verwenden Sie `bindings[].match.roles`, um Discord-Guild-Mitglieder anhand der Rollen-ID an verschiedene Agenten weiterzuleiten. Rollenbasierte Bindings akzeptieren nur Rollen-IDs und werden nach Peer- oder Parent-Peer-Bindings und vor rein Guild-basierten Bindings ausgewertet. Wenn ein Binding auch andere Match-Felder setzt (zum Beispiel `peer` + `guildId` + `roles`), müssen alle konfigurierten Felder übereinstimmen. ```json5 { @@ -511,21 +511,21 @@ Verwenden Sie `bindings[].match.roles`, um Discord-Servermitglieder anhand ihrer - Aktivieren Sie in **Bot -> Privileged Gateway Intents**: + Aktivieren Sie unter **Bot -> Privileged Gateway Intents**: - Message Content Intent - Server Members Intent (empfohlen) - Presence Intent ist optional und nur erforderlich, wenn Sie Präsenzaktualisierungen empfangen möchten. Das Setzen der Bot-Präsenz (`setPresence`) erfordert nicht, dass Präsenzaktualisierungen für Mitglieder aktiviert sind. + Presence Intent ist optional und nur erforderlich, wenn Sie Presence-Updates empfangen möchten. Das Setzen der Bot-Presence (`setPresence`) erfordert nicht, dass Presence-Updates für Mitglieder aktiviert sind. - + OAuth-URL-Generator: - Scopes: `bot`, `applications.commands` - Typische grundlegende Berechtigungen: + Typische Basisberechtigungen: - View Channels - Send Messages @@ -534,12 +534,12 @@ Verwenden Sie `bindings[].match.roles`, um Discord-Servermitglieder anhand ihrer - Attach Files - Add Reactions (optional) - Vermeiden Sie `Administrator`, sofern es nicht ausdrücklich benötigt wird. + Vermeiden Sie `Administrator`, sofern dies nicht ausdrücklich erforderlich ist. - Aktivieren Sie den Discord Developer Mode und kopieren Sie dann: + Aktivieren Sie den Discord-Entwicklermodus und kopieren Sie dann: - Server-ID - Kanal-ID @@ -552,23 +552,23 @@ Verwenden Sie `bindings[].match.roles`, um Discord-Servermitglieder anhand ihrer ## Native Befehle und Befehlsauthentifizierung -- `commands.native` ist standardmäßig `"auto"` und für Discord aktiviert. +- `commands.native` hat standardmäßig den Wert `"auto"` und ist für Discord aktiviert. - Kanalbezogene Überschreibung: `channels.discord.commands.native`. -- `commands.native=false` löscht explizit zuvor registrierte native Discord-Befehle. -- Die Authentifizierung nativer Befehle verwendet dieselben Discord-Allowlists/-Richtlinien wie die normale Nachrichtenverarbeitung. +- `commands.native=false` entfernt explizit zuvor registrierte native Discord-Befehle. +- Die native Befehlsauthentifizierung verwendet dieselben Discord-Allowlists/-Richtlinien wie die normale Nachrichtenverarbeitung. - Befehle können in der Discord-Benutzeroberfläche weiterhin für Benutzer sichtbar sein, die nicht autorisiert sind; die Ausführung erzwingt dennoch die OpenClaw-Authentifizierung und gibt „nicht autorisiert“ zurück. -Siehe [Slash commands](/de/tools/slash-commands) für Befehlskatalog und Verhalten. +Siehe [Slash-Befehle](/de/tools/slash-commands) für Befehlskatalog und Verhalten. -Standard-Slash-Befehlseinstellungen: +Standardmäßige Einstellungen für Slash-Befehle: - `ephemeral: true` ## Funktionsdetails - - Discord unterstützt Antwort-Tags in der Agentenausgabe: + + Discord unterstützt Reply-Tags in der Agent-Ausgabe: - `[[reply_to_current]]` - `[[reply_to:]]` @@ -581,25 +581,26 @@ Standard-Slash-Befehlseinstellungen: - `batched` Hinweis: `off` deaktiviert implizites Reply-Threading. Explizite `[[reply_to_*]]`-Tags werden weiterhin berücksichtigt. - `first` hängt die implizite native Antwortreferenz immer an die erste ausgehende Discord-Nachricht des Turns an. - `batched` hängt Disords implizite native Antwortreferenz nur dann an, wenn der - eingehende Turn ein entprelltes Batch aus mehreren Nachrichten war. Das ist nützlich, - wenn Sie native Antworten hauptsächlich für mehrdeutige, stoßweise Chats möchten, nicht für - jeden einzelnen Turn mit nur einer Nachricht. + `first` hängt die implizite native Reply-Referenz immer an die erste ausgehende Discord-Nachricht des Turns an. + `batched` hängt die implizite native Reply-Referenz von Discord nur an, wenn der + eingehende Turn ein entprellter Stapel aus mehreren Nachrichten war. Dies ist nützlich, + wenn Sie native Antworten hauptsächlich für mehrdeutige, burstartige Chats möchten, nicht für jeden + einzelnen Einzelnachrichten-Turn. - Nachrichten-IDs werden im Kontext/Verlauf offengelegt, sodass Agenten gezielt bestimmte Nachrichten adressieren können. + Nachrichten-IDs werden in Kontext/Verlauf sichtbar gemacht, sodass Agenten gezielt bestimmte Nachrichten ansprechen können. - - OpenClaw kann Antwortentwürfe streamen, indem eine temporäre Nachricht gesendet und beim Eintreffen von Text bearbeitet wird. + + OpenClaw kann Entwurfsantworten streamen, indem eine temporäre Nachricht gesendet und beim Eintreffen von Text bearbeitet wird. - - `channels.discord.streaming` steuert Vorschau-Streaming (`off` | `partial` | `block` | `progress`, Standard: `off`). - - Der Standard bleibt `off`, weil Discord-Vorschau-Bearbeitungen schnell an Ratenlimits stoßen können, insbesondere wenn mehrere Bots oder Gateways dasselbe Konto oder denselben Serververkehr teilen. - - `progress` wird zur kanalübergreifenden Konsistenz akzeptiert und in Discord auf `partial` abgebildet. - - `channels.discord.streamMode` ist ein veralteter Alias und wird automatisch migriert. - - `partial` bearbeitet eine einzelne Vorschau-Nachricht, wenn Tokens eintreffen. - - `block` sendet Entwurfsblöcke in Chunk-Größe (verwenden Sie `draftChunk`, um Größe und Trennpunkte abzustimmen). + - `channels.discord.streaming` steuert das Vorschau-Streaming (`off` | `partial` | `block` | `progress`, Standard: `off`). + - Standardmäßig bleibt `off` gesetzt, weil Discord-Vorschau-Bearbeitungen schnell an Rate Limits stoßen können, insbesondere wenn mehrere Bots oder Gateways dasselbe Konto oder denselben Guild-Traffic verwenden. + - `progress` wird für kanalübergreifende Konsistenz akzeptiert und in Discord auf `partial` abgebildet. + - `channels.discord.streamMode` ist ein Legacy-Alias und wird automatisch migriert. + - `partial` bearbeitet eine einzelne Vorschau-Nachricht, während Tokens eintreffen. + - `block` gibt Entwurfsblöcke in Chunks aus (verwenden Sie `draftChunk`, um Größe und Umbruchpunkte anzupassen). + - `streaming.preview.toolProgress` steuert, ob Tool-/Fortschrittsaktualisierungen dieselbe Entwurfs-Vorschau-Nachricht wiederverwenden (Standard: `true`). Setzen Sie `false`, um getrennte Tool-/Fortschrittsnachrichten beizubehalten. Beispiel: @@ -613,7 +614,7 @@ Standard-Slash-Befehlseinstellungen: } ``` - Standardwerte für Chunking im Modus `block` (begrenzt durch `channels.discord.textChunkLimit`): + `block`-Modus-Chunking-Standards (begrenzt durch `channels.discord.textChunkLimit`): ```json5 { @@ -638,13 +639,13 @@ Standard-Slash-Befehlseinstellungen: - Verlaufskontext in Servern: + Guild-Verlaufskontext: - `channels.discord.historyLimit` Standard `20` - Fallback: `messages.groupChat.historyLimit` - `0` deaktiviert - Steuerelemente für DM-Verlauf: + DM-Verlaufskontrollen: - `channels.discord.dmHistoryLimit` - `channels.discord.dms[""].historyLimit` @@ -652,25 +653,25 @@ Standard-Slash-Befehlseinstellungen: Thread-Verhalten: - Discord-Threads werden als Kanalsitzungen weitergeleitet - - Parent-Thread-Metadaten können für eine Verknüpfung zur übergeordneten Sitzung verwendet werden - - Thread-Konfiguration erbt die Konfiguration des Parent-Kanals, sofern kein threadspezifischer Eintrag vorhanden ist + - Metadaten des Parent-Threads können für Parent-Sitzungs-Verknüpfungen verwendet werden + - Die Thread-Konfiguration übernimmt die Konfiguration des Parent-Kanals, sofern kein threadspezifischer Eintrag existiert Kanalthemen werden als **nicht vertrauenswürdiger** Kontext injiziert (nicht als System-Prompt). - Antwort- und Kontext aus zitierten Nachrichten bleibt derzeit wie empfangen erhalten. - Discord-Allowlists steuern in erster Linie, wer den Agenten auslösen kann, und sind keine vollständige Redaktionsgrenze für ergänzenden Kontext. + Reply- und zitierter Nachrichtenkontext bleibt derzeit wie empfangen erhalten. + Discord-Allowlists steuern in erster Linie, wer den Agenten auslösen kann, nicht als vollständige Redaktionsgrenze für zusätzlichen Kontext. - - Discord kann einen Thread an ein Sitzungsziel binden, sodass nachfolgende Nachrichten in diesem Thread weiterhin an dieselbe Sitzung weitergeleitet werden (einschließlich Subagent-Sitzungen). + + Discord kann einen Thread an ein Sitzungsziel binden, sodass Folgemeldungen in diesem Thread weiterhin an dieselbe Sitzung weitergeleitet werden (einschließlich Unteragent-Sitzungen). Befehle: - - `/focus ` bindet den aktuellen/neuen Thread an ein Subagent-/Sitzungsziel + - `/focus ` bindet den aktuellen/neuen Thread an ein Unteragent-/Sitzungsziel - `/unfocus` entfernt die aktuelle Thread-Bindung - - `/agents` zeigt aktive Läufe und den Bindungsstatus - - `/session idle ` prüft/aktualisiert das automatische Lösen des Fokus bei Inaktivität für fokussierte Bindungen - - `/session max-age ` prüft/aktualisiert das harte Maximalalter für fokussierte Bindungen + - `/agents` zeigt aktive Ausführungen und den Bindungsstatus + - `/session idle ` zeigt die Auto-Unfocus-Inaktivität für fokussierte Bindungen an bzw. aktualisiert sie + - `/session max-age ` zeigt das harte Höchstalter für fokussierte Bindungen an bzw. aktualisiert es Konfiguration: @@ -700,16 +701,16 @@ Standard-Slash-Befehlseinstellungen: - `session.threadBindings.*` setzt globale Standardwerte. - `channels.discord.threadBindings.*` überschreibt das Discord-Verhalten. - - `spawnSubagentSessions` muss `true` sein, damit Threads für `sessions_spawn({ thread: true })` automatisch erstellt/gebunden werden. - - `spawnAcpSessions` muss `true` sein, damit Threads für ACP automatisch erstellt/gebunden werden (`/acp spawn ... --thread ...` oder `sessions_spawn({ runtime: "acp", thread: true })`). - - Wenn Thread-Bindungen für ein Konto deaktiviert sind, sind `/focus` und verwandte Operationen für Thread-Bindungen nicht verfügbar. + - `spawnSubagentSessions` muss auf true gesetzt sein, um Threads für `sessions_spawn({ thread: true })` automatisch zu erstellen/zu binden. + - `spawnAcpSessions` muss auf true gesetzt sein, um Threads für ACP (`/acp spawn ... --thread ...` oder `sessions_spawn({ runtime: "acp", thread: true })`) automatisch zu erstellen/zu binden. + - Wenn Thread-Bindings für ein Konto deaktiviert sind, sind `/focus` und verwandte Thread-Binding-Operationen nicht verfügbar. - Siehe [Sub-agents](/de/tools/subagents), [ACP Agents](/de/tools/acp-agents) und [Configuration Reference](/de/gateway/configuration-reference). + Siehe [Unteragenten](/de/tools/subagents), [ACP-Agenten](/de/tools/acp-agents) und [Configuration Reference](/de/gateway/configuration-reference). - - Für stabile „always-on“-ACP-Workspaces konfigurieren Sie ACP-Bindungen mit Typ auf oberster Ebene, die auf Discord-Konversationen zielen. + + Für stabile, „always-on“ ACP-Arbeitsbereiche konfigurieren Sie typisierte ACP-Bindings auf oberster Ebene, die auf Discord-Unterhaltungen zielen. Konfigurationspfad: @@ -765,20 +766,20 @@ Standard-Slash-Befehlseinstellungen: Hinweise: - - `/acp spawn codex --bind here` bindet den aktuellen Discord-Kanal oder Thread direkt vor Ort und hält zukünftige Nachrichten an dieselbe ACP-Sitzung gebunden. - - Das kann weiterhin bedeuten: „Eine frische Codex-ACP-Sitzung starten“, aber es wird dadurch nicht von selbst ein neuer Discord-Thread erstellt. Der bestehende Kanal bleibt die Chat-Oberfläche. - - Codex kann weiterhin in seinem eigenen `cwd` oder Backend-Workspace auf dem Datenträger laufen. Dieser Workspace ist Laufzeitzustand, kein Discord-Thread. - - Thread-Nachrichten können die ACP-Bindung des Parent-Kanals erben. - - In einem gebundenen Kanal oder Thread setzen `/new` und `/reset` dieselbe ACP-Sitzung direkt vor Ort zurück. - - Temporäre Thread-Bindungen funktionieren weiterhin und können die Zielauflösung überschreiben, solange sie aktiv sind. - - `spawnAcpSessions` ist nur erforderlich, wenn OpenClaw einen untergeordneten Thread über `--thread auto|here` erstellen/binden muss. Es ist nicht erforderlich für `/acp spawn ... --bind here` im aktuellen Kanal. + - `/acp spawn codex --bind here` bindet den aktuellen Discord-Kanal oder Thread direkt und sorgt dafür, dass zukünftige Nachrichten weiterhin an dieselbe ACP-Sitzung weitergeleitet werden. + - Das kann weiterhin bedeuten: „eine frische Codex-ACP-Sitzung starten“, aber es erstellt nicht von selbst einen neuen Discord-Thread. Der bestehende Kanal bleibt die Chat-Oberfläche. + - Codex kann weiterhin in seinem eigenen `cwd` oder Backend-Arbeitsbereich auf der Festplatte laufen. Dieser Arbeitsbereich ist Runtime-Zustand, nicht ein Discord-Thread. + - Thread-Nachrichten können die ACP-Bindung des Parent-Kanals übernehmen. + - In einem gebundenen Kanal oder Thread setzen `/new` und `/reset` dieselbe ACP-Sitzung direkt zurück. + - Temporäre Thread-Bindings funktionieren weiterhin und können die Zielauflösung überschreiben, solange sie aktiv sind. + - `spawnAcpSessions` ist nur erforderlich, wenn OpenClaw einen Child-Thread über `--thread auto|here` erstellen/binden muss. Es ist nicht erforderlich für `/acp spawn ... --bind here` im aktuellen Kanal. - Siehe [ACP Agents](/de/tools/acp-agents) für Details zum Bindungsverhalten. + Siehe [ACP Agents](/de/tools/acp-agents) für Details zum Binding-Verhalten. - - Modus für Reaktionsbenachrichtigungen pro Server: + + Reaktionsbenachrichtigungsmodus pro Guild: - `off` - `own` (Standard) @@ -797,7 +798,7 @@ Standard-Slash-Befehlseinstellungen: - `channels.discord.accounts..ackReaction` - `channels.discord.ackReaction` - `messages.ackReaction` - - Emoji-Fallback der Agentenidentität (`agents.list[].identity.emoji`, sonst "👀") + - Fallback auf das Emoji der Agent-Identität (`agents.list[].identity.emoji`, sonst "👀") Hinweise: @@ -807,9 +808,9 @@ Standard-Slash-Befehlseinstellungen: - Durch Kanäle initiierte Konfigurationsschreibvorgänge sind standardmäßig aktiviert. + Kanalinitiierte Konfigurationsschreibvorgänge sind standardmäßig aktiviert. - Dies betrifft Abläufe für `/config set|unset` (wenn Befehlsfunktionen aktiviert sind). + Dies betrifft Abläufe mit `/config set|unset` (wenn Befehlsfunktionen aktiviert sind). Deaktivieren: @@ -826,7 +827,7 @@ Standard-Slash-Befehlseinstellungen: - Leiten Sie WebSocket-Datenverkehr des Discord-Gateways und REST-Abfragen beim Start (Anwendungs-ID + Allowlist-Auflösung) mit `channels.discord.proxy` über einen HTTP(S)-Proxy. + Leiten Sie Discord-Gateway-WebSocket-Traffic und REST-Lookups beim Start (Anwendungs-ID + Allowlist-Auflösung) über einen HTTP(S)-Proxy mit `channels.discord.proxy`. ```json5 { @@ -857,7 +858,7 @@ Standard-Slash-Befehlseinstellungen: - Aktivieren Sie die PluralKit-Auflösung, um weitergeleitete Nachrichten auf die Identität eines Systemmitglieds abzubilden: + Aktivieren Sie die PluralKit-Auflösung, um weitergeleitete Nachrichten einer Systemmitglied-Identität zuzuordnen: ```json5 { @@ -876,13 +877,13 @@ Standard-Slash-Befehlseinstellungen: - Allowlists können `pk:` verwenden - Anzeigenamen von Mitgliedern werden nur dann nach Name/Slug abgeglichen, wenn `channels.discord.dangerouslyAllowNameMatching: true` gesetzt ist - - Abfragen verwenden die ursprüngliche Nachrichten-ID und sind auf ein Zeitfenster begrenzt - - wenn die Abfrage fehlschlägt, werden weitergeleitete Nachrichten als Bot-Nachrichten behandelt und verworfen, sofern nicht `allowBots=true` + - Lookups verwenden die ursprüngliche Nachrichten-ID und sind durch ein Zeitfenster begrenzt + - wenn der Lookup fehlschlägt, werden weitergeleitete Nachrichten als Bot-Nachrichten behandelt und verworfen, außer `allowBots=true` - - Präsenzaktualisierungen werden angewendet, wenn Sie ein Status- oder Aktivitätsfeld setzen oder automatische Präsenz aktivieren. + + Presence-Updates werden angewendet, wenn Sie ein Status- oder Aktivitätsfeld setzen oder Auto-Presence aktivieren. Beispiel nur für Status: @@ -896,13 +897,13 @@ Standard-Slash-Befehlseinstellungen: } ``` - Aktivitätsbeispiel (benutzerdefinierter Status ist der Standard-Aktivitätstyp): + Aktivitätsbeispiel (Custom Status ist der Standard-Aktivitätstyp): ```json5 { channels: { discord: { - activity: "Focus time", + activity: "Fokuszeit", activityType: 4, }, }, @@ -915,7 +916,7 @@ Standard-Slash-Befehlseinstellungen: { channels: { discord: { - activity: "Live coding", + activity: "Live-Coding", activityType: 1, activityUrl: "https://twitch.tv/openclaw", }, @@ -929,10 +930,10 @@ Standard-Slash-Befehlseinstellungen: - 1: Streaming (erfordert `activityUrl`) - 2: Listening - 3: Watching - - 4: Custom (verwendet den Aktivitätstext als Statusstatus; Emoji ist optional) + - 4: Custom (verwendet den Aktivitätstext als Statuszustand; Emoji ist optional) - 5: Competing - Beispiel für automatische Präsenz (Signal für Laufzeitzustand): + Beispiel für Auto-Presence (Runtime-Health-Signal): ```json5 { @@ -942,23 +943,23 @@ Standard-Slash-Befehlseinstellungen: enabled: true, intervalMs: 30000, minUpdateIntervalMs: 15000, - exhaustedText: "token exhausted", + exhaustedText: "Token erschöpft", }, }, }, } ``` - Die automatische Präsenz ordnet die Laufzeitverfügbarkeit dem Discord-Status zu: healthy => online, degraded oder unknown => idle, exhausted oder unavailable => dnd. Optionale Textüberschreibungen: + Auto-Presence ordnet die Runtime-Verfügbarkeit dem Discord-Status zu: healthy => online, degraded oder unknown => idle, exhausted oder unavailable => dnd. Optionale Textüberschreibungen: - `autoPresence.healthyText` - `autoPresence.degradedText` - - `autoPresence.exhaustedText` (unterstützt Platzhalter `{reason}`) + - `autoPresence.exhaustedText` (unterstützt den Platzhalter `{reason}`) - Discord unterstützt Genehmigungsabläufe auf Button-Basis in DMs und kann optional Genehmigungsaufforderungen im auslösenden Kanal veröffentlichen. + Discord unterstützt die Genehmigungsverarbeitung per Schaltfläche in DMs und kann Genehmigungsaufforderungen optional im Ursprungskanal posten. Konfigurationspfad: @@ -967,69 +968,69 @@ Standard-Slash-Befehlseinstellungen: - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, Standard: `dm`) - `agentFilter`, `sessionFilter`, `cleanupAfterResolve` - Discord aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein Genehmiger aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus `commands.ownerAllowFrom`. Discord leitet Exec-Genehmiger nicht aus kanalbezogenem `allowFrom`, veraltetem `dm.allowFrom` oder direktem `defaultTo` für Direktnachrichten ab. Setzen Sie `enabled: false`, um Discord explizit als nativen Genehmigungs-Client zu deaktivieren. + Discord aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt ist oder `"auto"` ist und mindestens eine genehmigende Person aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus `commands.ownerAllowFrom`. Discord leitet Exec-Genehmigende nicht aus Kanal-`allowFrom`, Legacy-`dm.allowFrom` oder Direct-Message-`defaultTo` ab. Setzen Sie `enabled: false`, um Discord explizit als nativen Genehmigungs-Client zu deaktivieren. - Wenn `target` den Wert `channel` oder `both` hat, ist die Genehmigungsaufforderung im Kanal sichtbar. Nur aufgelöste Genehmiger können die Buttons verwenden; andere Benutzer erhalten eine ephemere Ablehnung. Genehmigungsaufforderungen enthalten den Befehlstext, daher sollten Sie die Zustellung im Kanal nur in vertrauenswürdigen Kanälen aktivieren. Wenn die Kanal-ID nicht aus dem Sitzungsschlüssel abgeleitet werden kann, verwendet OpenClaw stattdessen die Zustellung per DM. + Wenn `target` den Wert `channel` oder `both` hat, ist die Genehmigungsaufforderung im Kanal sichtbar. Nur aufgelöste genehmigende Personen können die Schaltflächen verwenden; andere Benutzer erhalten eine ephemere Ablehnung. Genehmigungsaufforderungen enthalten den Befehlstext, daher sollten Sie die Zustellung an Kanäle nur in vertrauenswürdigen Kanälen aktivieren. Wenn die Kanal-ID nicht aus dem Sitzungsschlüssel abgeleitet werden kann, fällt OpenClaw auf die Zustellung per DM zurück. - Discord rendert auch die gemeinsamen Genehmigungsbuttons, die von anderen Chat-Kanälen verwendet werden. Der native Discord-Adapter fügt hauptsächlich das DM-Routing für Genehmiger und die Verteilung an Kanäle hinzu. - 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 nur eine manuelle Genehmigung möglich ist. + Discord rendert außerdem die gemeinsamen Genehmigungsschaltflächen, die von anderen Chat-Kanälen verwendet werden. Der native Discord-Adapter ergänzt hauptsächlich das DM-Routing für genehmigende Personen und den Kanal-Fanout. + Wenn diese Schaltflächen vorhanden sind, sind sie die primäre UX für Genehmigungen; OpenClaw + sollte einen manuellen `/approve`-Befehl nur dann einfügen, wenn das Tool-Ergebnis besagt, + dass Chat-Genehmigungen nicht verfügbar sind oder die manuelle Genehmigung der einzige Weg ist. - Die Gateway-Authentifizierung für diesen Handler verwendet denselben gemeinsamen Vertrag zur Anmeldedatenauflösung wie andere Gateway-Clients: + Die Gateway-Authentifizierung für diesen Handler verwendet denselben gemeinsamen Vertrag zur Credential-Auflösung wie andere Gateway-Clients: - - env-first-lokale Authentifizierung (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` dann `gateway.auth.*`) + - env-first lokale Authentifizierung (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`, dann `gateway.auth.*`) - im lokalen Modus kann `gateway.remote.*` nur dann als Fallback verwendet werden, wenn `gateway.auth.*` nicht gesetzt ist; konfigurierte, aber nicht aufgelöste lokale SecretRefs schlagen geschlossen fehl - - Unterstützung für den Remote-Modus über `gateway.remote.*`, wenn zutreffend - - URL-Überschreibungen sind Override-sicher: CLI-Überschreibungen verwenden keine impliziten Anmeldedaten wieder, und Env-Überschreibungen verwenden nur Env-Anmeldedaten + - Unterstützung für den Remote-Modus über `gateway.remote.*`, falls anwendbar + - URL-Überschreibungen sind override-sicher: CLI-Überschreibungen verwenden keine impliziten Credentials wieder, und Env-Überschreibungen verwenden nur Env-Credentials Verhalten bei der Genehmigungsauflösung: - - Mit `plugin:` präfixierte IDs werden über `plugin.approval.resolve` aufgelöst. + - IDs mit dem Präfix `plugin:` werden über `plugin.approval.resolve` aufgelöst. - Andere IDs werden über `exec.approval.resolve` aufgelöst. - - Discord führt hier keinen zusätzlichen Exec-zu-Plugin-Fallback durch; das + - Discord führt hier keinen zusätzlichen Exec-zu-Plugin-Fallback-Hop aus; das ID-Präfix entscheidet, welche Gateway-Methode aufgerufen wird. Exec-Genehmigungen laufen standardmäßig nach 30 Minuten ab. Wenn Genehmigungen mit - unbekannten Genehmigungs-IDs fehlschlagen, prüfen Sie die Auflösung der Genehmiger, die Aktivierung der Funktion und - ob die zugestellte Art der Genehmigungs-ID zur ausstehenden Anfrage passt. + unbekannten Genehmigungs-IDs fehlschlagen, prüfen Sie die Auflösung der genehmigenden Personen, die Feature-Aktivierung und, + dass die Art der zugestellten Genehmigungs-ID zur ausstehenden Anfrage passt. Zugehörige Dokumentation: [Exec approvals](/de/tools/exec-approvals) -## Tools und Action Gates +## Tools und Action-Gates -Discord-Nachrichtenaktionen umfassen Messaging, Kanaladministration, Moderation, Präsenz und Metadatenaktionen. +Discord-Nachrichtenaktionen umfassen Messaging-, Kanaladministrations-, Moderations-, Presence- und Metadatenaktionen. Zentrale Beispiele: - Messaging: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply` - Reaktionen: `react`, `reactions`, `emojiList` - Moderation: `timeout`, `kick`, `ban` -- Präsenz: `setPresence` +- Presence: `setPresence` -Die Aktion `event-create` akzeptiert einen optionalen Parameter `image` (URL oder lokaler Dateipfad), um das Titelbild des geplanten Ereignisses festzulegen. +Die Aktion `event-create` akzeptiert einen optionalen Parameter `image` (URL oder lokaler Dateipfad), um das Titelbild des geplanten Ereignisses zu setzen. -Action Gates befinden sich unter `channels.discord.actions.*`. +Action-Gates befinden sich unter `channels.discord.actions.*`. Standardverhalten der Gates: -| Action group | Standard | +| Aktionsgruppe | Standard | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | | reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | aktiviert | | roles | deaktiviert | | moderation | deaktiviert | | presence | deaktiviert | -## Components v2 UI +## Components-v2-UI -OpenClaw verwendet Discord components v2 für Exec-Genehmigungen und kanalübergreifende Markierungen. Discord-Nachrichtenaktionen können auch `components` für benutzerdefinierte UI akzeptieren (fortgeschritten; erfordert das Erstellen einer Komponenten-Payload über das Discord-Tool), während veraltete `embeds` weiterhin verfügbar sind, aber nicht empfohlen werden. +OpenClaw verwendet Discord Components v2 für Exec-Genehmigungen und kontextübergreifende Marker. Discord-Nachrichtenaktionen können außerdem `components` für benutzerdefinierte UI akzeptieren (fortgeschritten; erfordert die Konstruktion einer Component-Payload über das Discord-Tool), während Legacy-`embeds` weiterhin verfügbar, aber nicht empfohlen sind. -- `channels.discord.ui.components.accentColor` setzt die Akzentfarbe, die von Discord-Komponentencontainern verwendet wird (hex). -- Pro Konto mit `channels.discord.accounts..ui.components.accentColor` setzen. -- `embeds` werden ignoriert, wenn components v2 vorhanden sind. +- `channels.discord.ui.components.accentColor` setzt die Akzentfarbe, die von Discord-Component-Containern verwendet wird (hex). +- Pro Konto setzen mit `channels.discord.accounts..ui.components.accentColor`. +- `embeds` werden ignoriert, wenn Components v2 vorhanden sind. Beispiel: @@ -1049,7 +1050,7 @@ Beispiel: ## Sprachkanäle -OpenClaw kann Discord-Sprachkanälen für Echtzeitgespräche mit kontinuierlicher Interaktion beitreten. Dies ist von Anhängen mit Sprachnachrichten getrennt. +OpenClaw kann Discord-Sprachkanälen für Echtzeit- und fortlaufende Unterhaltungen beitreten. Dies ist von Sprach-Nachrichtenanhängen getrennt. Anforderungen: @@ -1057,9 +1058,9 @@ Anforderungen: - Konfigurieren Sie `channels.discord.voice`. - Der Bot benötigt die Berechtigungen Connect + Speak im Ziel-Sprachkanal. -Verwenden Sie den nur für Discord verfügbaren nativen Befehl `/vc join|leave|status`, um Sitzungen zu steuern. Der Befehl verwendet den Standard-Agenten des Kontos und folgt denselben Allowlist- und Gruppenrichtlinienregeln wie andere Discord-Befehle. +Verwenden Sie den nur für Discord verfügbaren nativen Befehl `/vc join|leave|status`, um Sitzungen zu steuern. Der Befehl verwendet den Standard-Agenten des Kontos und folgt denselben Allowlist- und Group-Policy-Regeln wie andere Discord-Befehle. -Beispiel für automatischen Beitritt: +Beispiel für Auto-Join: ```json5 { @@ -1087,23 +1088,23 @@ Beispiel für automatischen Beitritt: Hinweise: -- `voice.tts` überschreibt `messages.tts` nur für die Sprachausgabe. -- Sprach-Transkript-Turns leiten den Eigentümerstatus aus Discord `allowFrom` (oder `dm.allowFrom`) ab; Sprecher ohne Eigentümerstatus können nicht auf Tools zugreifen, die nur Eigentümern vorbehalten sind (zum Beispiel `gateway` und `cron`). -- Voice ist standardmäßig aktiviert; setzen Sie `channels.discord.voice.enabled=false`, um sie zu deaktivieren. +- `voice.tts` überschreibt `messages.tts` nur für die Sprachwiedergabe. +- Turns von Sprachtranskripten leiten den Owner-Status von Discord `allowFrom` (oder `dm.allowFrom`) ab; Sprecher ohne Owner-Status können nicht auf reine Owner-Tools zugreifen (zum Beispiel `gateway` und `cron`). +- Voice ist standardmäßig aktiviert; setzen Sie `channels.discord.voice.enabled=false`, um es zu deaktivieren. - `voice.daveEncryption` und `voice.decryptionFailureTolerance` werden an die Join-Optionen von `@discordjs/voice` durchgereicht. - Die Standardwerte von `@discordjs/voice` sind `daveEncryption=true` und `decryptionFailureTolerance=24`, wenn sie nicht gesetzt sind. -- OpenClaw überwacht außerdem Entschlüsselungsfehler beim Empfang und stellt sich nach wiederholten Fehlern in einem kurzen Zeitfenster automatisch wieder her, indem der Sprachkanal verlassen und erneut betreten wird. -- Wenn Empfangslogs wiederholt `DecryptionFailed(UnencryptedWhenPassthroughDisabled)` anzeigen, könnte dies der Upstream-Receive-Bug von `@discordjs/voice` sein, der in [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) verfolgt wird. +- OpenClaw überwacht außerdem Entschlüsselungsfehler beim Empfangen und stellt die Verbindung automatisch wieder her, indem es den Sprachkanal nach wiederholten Fehlern in einem kurzen Zeitfenster verlässt und erneut beitritt. +- Wenn in den Empfangslogs wiederholt `DecryptionFailed(UnencryptedWhenPassthroughDisabled)` erscheint, könnte dies der Upstream-Receive-Bug von `@discordjs/voice` sein, der in [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) verfolgt wird. ## Sprachnachrichten -Discord-Sprachnachrichten zeigen eine Wellenformvorschau an und erfordern OGG/Opus-Audio plus Metadaten. OpenClaw erzeugt die Wellenform automatisch, benötigt aber `ffmpeg` und `ffprobe`, die auf dem Gateway-Host verfügbar sein müssen, um Audiodateien zu prüfen und zu konvertieren. +Discord-Sprachnachrichten zeigen eine Waveform-Vorschau an und erfordern OGG-/Opus-Audio plus Metadaten. OpenClaw erzeugt die Waveform automatisch, benötigt dafür aber `ffmpeg` und `ffprobe`, die auf dem Gateway-Host verfügbar sein müssen, um Audiodateien zu prüfen und zu konvertieren. Anforderungen und Einschränkungen: - Geben Sie einen **lokalen Dateipfad** an (URLs werden abgelehnt). -- Lassen Sie Textinhalte weg (Discord erlaubt nicht Text + Sprachnachricht in derselben Payload). -- Jedes Audioformat wird akzeptiert; OpenClaw konvertiert bei Bedarf in OGG/Opus. +- Lassen Sie Textinhalt weg (Discord erlaubt nicht Text + Sprachnachricht in derselben Payload). +- Jedes Audioformat wird akzeptiert; OpenClaw konvertiert bei Bedarf nach OGG/Opus. Beispiel: @@ -1114,20 +1115,20 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a ## Fehlerbehebung - + - Message Content Intent aktivieren - Server Members Intent aktivieren, wenn Sie von Benutzer-/Mitgliederauflösung abhängen - - Gateway nach Änderung der Intents neu starten + - Gateway nach dem Ändern von Intents neu starten - + - `groupPolicy` prüfen - - Server-Allowlist unter `channels.discord.guilds` prüfen - - wenn eine `channels`-Zuordnung für den Server existiert, sind nur aufgelistete Kanäle erlaubt - - Verhalten von `requireMention` und Erwähnungsmustern prüfen + - Guild-Allowlist unter `channels.discord.guilds` prüfen + - wenn die Guild-Map `channels` existiert, sind nur aufgeführte Kanäle erlaubt + - Verhalten von `requireMention` und Mention-Muster prüfen Nützliche Prüfungen: @@ -1139,12 +1140,12 @@ openclaw logs --follow - + Häufige Ursachen: - - `groupPolicy="allowlist"` ohne passende Server-/Kanal-Allowlist + - `groupPolicy="allowlist"` ohne passende Guild-/Kanal-Allowlist - `requireMention` an der falschen Stelle konfiguriert (muss unter `channels.discord.guilds` oder im Kanaleintrag stehen) - - Absender durch Server-/Kanal-`users`-Allowlist blockiert + - Sender durch Guild-/Kanal-`users`-Allowlist blockiert @@ -1156,15 +1157,15 @@ openclaw logs --follow - `Slow listener detected ...` - `discord inbound worker timed out after ...` - Regler für Listener-Budget: + Schalter für das Listener-Budget: - Einzelkonto: `channels.discord.eventQueue.listenerTimeout` - - mehrere Konten: `channels.discord.accounts..eventQueue.listenerTimeout` + - Mehrere Konten: `channels.discord.accounts..eventQueue.listenerTimeout` - Regler für Worker-Laufzeit-Timeout: + Schalter für das Worker-Run-Timeout: - Einzelkonto: `channels.discord.inboundWorker.runTimeoutMs` - - mehrere Konten: `channels.discord.accounts..inboundWorker.runTimeoutMs` + - Mehrere Konten: `channels.discord.accounts..inboundWorker.runTimeoutMs` - Standard: `1800000` (30 Minuten); setzen Sie `0`, um zu deaktivieren Empfohlene Baseline: @@ -1188,43 +1189,43 @@ openclaw logs --follow } ``` - Verwenden Sie `eventQueue.listenerTimeout` für langsame Listener-Einrichtung und `inboundWorker.runTimeoutMs` - nur dann, wenn Sie ein separates Sicherheitsventil für in die Warteschlange gestellte Agenten-Turns möchten. + Verwenden Sie `eventQueue.listenerTimeout` für langsames Listener-Setup und `inboundWorker.runTimeoutMs` + nur dann, wenn Sie ein separates Sicherheitsventil für in die Warteschlange gestellte Agent-Turns möchten. - - Berechtigungsprüfungen von `channels status --probe` funktionieren nur für numerische Kanal-IDs. + + Berechtigungsprüfungen mit `channels status --probe` funktionieren nur für numerische Kanal-IDs. - Wenn Sie Slug-Schlüssel verwenden, kann das Runtime-Matching weiterhin funktionieren, aber die Probe kann die Berechtigungen nicht vollständig überprüfen. + Wenn Sie Slug-Schlüssel verwenden, kann das Runtime-Matching weiterhin funktionieren, aber die Probe kann Berechtigungen nicht vollständig verifizieren. - + - DM deaktiviert: `channels.discord.dm.enabled=false` - - DM-Richtlinie deaktiviert: `channels.discord.dmPolicy="disabled"` (veraltet: `channels.discord.dm.policy`) - - im Modus `pairing` wird auf Genehmigung der Kopplung gewartet + - DM-Richtlinie deaktiviert: `channels.discord.dmPolicy="disabled"` (Legacy: `channels.discord.dm.policy`) + - Warten auf Genehmigung der Kopplung im Modus `pairing` Standardmäßig werden von Bots verfasste Nachrichten ignoriert. - Wenn Sie `channels.discord.allowBots=true` setzen, verwenden Sie strenge Erwähnungs- und Allowlist-Regeln, um Schleifenverhalten zu vermeiden. + Wenn Sie `channels.discord.allowBots=true` setzen, verwenden Sie strenge Mention- und Allowlist-Regeln, um Schleifenverhalten zu vermeiden. Bevorzugen Sie `channels.discord.allowBots="mentions"`, um nur Bot-Nachrichten zu akzeptieren, die den Bot erwähnen. - - halten Sie OpenClaw aktuell (`openclaw update`), damit die Wiederherstellungslogik für den Empfang von Discord-Voice vorhanden ist + - Halten Sie OpenClaw aktuell (`openclaw update`), damit die Wiederherstellungslogik für den Empfang von Discord-Voice vorhanden ist - bestätigen Sie `channels.discord.voice.daveEncryption=true` (Standard) - - beginnen Sie mit `channels.discord.voice.decryptionFailureTolerance=24` (Upstream-Standard) und passen Sie nur bei Bedarf an + - starten Sie mit `channels.discord.voice.decryptionFailureTolerance=24` (Upstream-Standard) und passen Sie nur bei Bedarf an - beobachten Sie die Logs auf: - `discord voice: DAVE decrypt failures detected` - `discord voice: repeated decrypt failures; attempting rejoin` - - wenn die Fehler nach automatischem erneuten Beitritt weiterhin auftreten, sammeln Sie Logs und vergleichen Sie sie mit [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) + - wenn die Fehler nach dem automatischen erneuten Beitritt weiterhin auftreten, sammeln Sie Logs und vergleichen Sie sie mit [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) @@ -1235,28 +1236,28 @@ Primäre Referenz: - [Configuration reference - Discord](/de/gateway/configuration-reference#discord) -Signalstarke Discord-Felder: +Wichtige Discord-Felder: - Start/Auth: `enabled`, `token`, `accounts.*`, `allowBots` - Richtlinie: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*` - Befehl: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*` -- Ereigniswarteschlange: `eventQueue.listenerTimeout` (Listener-Budget), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` -- Eingangs-Worker: `inboundWorker.runTimeoutMs` +- Event-Warteschlange: `eventQueue.listenerTimeout` (Listener-Budget), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` +- Inbound-Worker: `inboundWorker.runTimeoutMs` - Antwort/Verlauf: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - Zustellung: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage` -- Streaming: `streaming` (veralteter Alias: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` -- Medien/Wiederholung: `mediaMaxMb`, `retry` +- Streaming: `streaming` (Legacy-Alias: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` +- Medien/Retry: `mediaMaxMb`, `retry` - `mediaMaxMb` begrenzt ausgehende Discord-Uploads (Standard: `100MB`) - Aktionen: `actions.*` -- Präsenz: `activity`, `status`, `activityType`, `activityUrl` +- Presence: `activity`, `status`, `activityType`, `activityUrl` - UI: `ui.components.accentColor` - Funktionen: `threadBindings`, oberstes `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix` ## Sicherheit und Betrieb - Behandeln Sie Bot-Tokens als Geheimnisse (`DISCORD_BOT_TOKEN` wird in überwachten Umgebungen bevorzugt). -- Gewähren Sie Discord-Berechtigungen mit minimalen Rechten. -- Wenn der Befehlsbereitstellungs-/Statuszustand veraltet ist, starten Sie das Gateway neu und prüfen Sie mit `openclaw channels status --probe` erneut. +- Gewähren Sie Discord-Berechtigungen nach dem Prinzip der geringsten Rechte. +- Wenn der Bereitstellungs-/Statuszustand von Befehlen veraltet ist, starten Sie das Gateway neu und prüfen Sie erneut mit `openclaw channels status --probe`. ## Verwandt diff --git a/docs/de/channels/slack.md b/docs/de/channels/slack.md index c17c71001..ac07e8dd3 100644 --- a/docs/de/channels/slack.md +++ b/docs/de/channels/slack.md @@ -1,20 +1,20 @@ --- read_when: - - Slack einrichten oder den Slack-Socket-/HTTP-Modus debuggen -summary: Slack-Einrichtung und Laufzeitverhalten (Socket Mode + HTTP-Request-URLs) + - Einrichten von Slack oder Debuggen des Slack-Socket-/HTTP-Modus +summary: Slack-Einrichtung und Laufzeitverhalten (Socket Mode + HTTP-Anfrage-URLs) title: Slack x-i18n: - generated_at: "2026-04-21T13:35:27Z" + generated_at: "2026-04-21T17:45:32Z" model: gpt-5.4 provider: openai - source_hash: 2fe3c3c344e1c20c09b29773f4f68d2790751e76d8bbaa3c6157e3ff75978acf + source_hash: f30b372a3ae10b7b649532181306e42792aca76b41422516e9633eb79f73f009 source_path: channels/slack.md workflow: 15 --- # Slack -Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der Standardmodus ist Socket Mode; HTTP-Request-URLs werden ebenfalls unterstützt. +Status: produktionsbereit für DMs + Kanäle über Slack-App-Integrationen. Der Standardmodus ist Socket Mode; HTTP-Anfrage-URLs werden ebenfalls unterstützt. @@ -23,7 +23,7 @@ Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der S Natives Befehlsverhalten und Befehlskatalog. - + Kanalübergreifende Diagnose- und Reparaturleitfäden. @@ -36,10 +36,10 @@ Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der S Klicken 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 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-...`) + - 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 dem Erstellen fort + - erzeugen Sie ein **App-Level-Token** (`xapp-...`) mit `connections:write` + - installieren Sie die App und kopieren Sie das angezeigte **Bot-Token** (`xoxb-...`) @@ -57,7 +57,7 @@ Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der S } ``` - Env-Fallback (nur Standardkonto): + Umgebungsvariablen-Fallback (nur Standardkonto): ```bash SLACK_APP_TOKEN=xapp-... @@ -77,15 +77,15 @@ openclaw gateway - + Klicken 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 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 der Erstellung - - Speichern Sie das **Signing Secret** für die Request-Verifizierung - - Installieren Sie die App und kopieren Sie das angezeigte **Bot Token** (`xoxb-...`) + - 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** für die Anfrageverifizierung + - installieren Sie die App und kopieren Sie das angezeigte **Bot-Token** (`xoxb-...`) @@ -134,7 +134,7 @@ openclaw gateway { "display_information": { "name": "OpenClaw", - "description": "Slack-Konnektor für OpenClaw" + "description": "Slack-Connector für OpenClaw" }, "features": { "bot_user": { @@ -205,13 +205,13 @@ openclaw gateway - + ```json { "display_information": { "name": "OpenClaw", - "description": "Slack-Konnektor für OpenClaw" + "description": "Slack-Connector für OpenClaw" }, "features": { "bot_user": { @@ -291,12 +291,12 @@ openclaw gateway ### Zusätzliche Manifest-Einstellungen -Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standardwerte erweitern. +Stellen Sie verschiedene Funktionen bereit, die die obigen Standardwerte erweitern. - Mehrere [native Slash-Befehle](#commands-and-slash-behavior) können statt eines einzelnen konfigurierten Befehls mit gewissen Besonderheiten verwendet werden: + Mehrere [native Slash-Befehle](#commands-and-slash-behavior) können anstelle eines einzelnen konfigurierten Befehls mit gewissen Nuancen verwendet werden: - Verwenden Sie `/agentstatus` anstelle von `/status`, da der Befehl `/status` reserviert ist. - Es können nicht mehr als 25 Slash-Befehle gleichzeitig verfügbar gemacht werden. @@ -329,11 +329,11 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard { "command": "/session", "description": "Ablauf der Thread-Bindung verwalten", - "usage_hint": "idle oder max-age " + "usage_hint": "idle or max-age " }, { "command": "/think", - "description": "Das Denk-Level festlegen", + "description": "Die Denkstufe festlegen", "usage_hint": "" }, { @@ -343,12 +343,12 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/fast", - "description": "Fast-Modus anzeigen oder festlegen", + "description": "Schnellmodus anzeigen oder festlegen", "usage_hint": "[status|on|off]" }, { "command": "/reasoning", - "description": "Sichtbarkeit der Begründung umschalten", + "description": "Sichtbarkeit der Schlussfolgerungen umschalten", "usage_hint": "[on|off|stream]" }, { @@ -358,7 +358,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/exec", - "description": "Exec-Standards anzeigen oder festlegen", + "description": "Exec-Standardwerte anzeigen oder festlegen", "usage_hint": "host= security= ask= node=" }, { @@ -373,7 +373,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/help", - "description": "Die kurze Hilfezusammenfassung anzeigen" + "description": "Die kurze Hilfeübersicht anzeigen" }, { "command": "/commands", @@ -381,12 +381,12 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/tools", - "description": "Anzeigen, was der aktuelle Agent gerade verwenden kann", + "description": "Anzeigen, was der aktuelle Agent jetzt gerade verwenden kann", "usage_hint": "[compact|verbose]" }, { "command": "/agentstatus", - "description": "Laufzeitstatus anzeigen, einschließlich Provider-Nutzung/Kontingent, falls verfügbar" + "description": "Laufzeitstatus anzeigen, einschließlich Provider-Nutzung/-Kontingent, wenn verfügbar" }, { "command": "/tasks", @@ -399,11 +399,11 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/whoami", - "description": "Ihre Sender-Identität anzeigen" + "description": "Ihre Senderidentität anzeigen" }, { "command": "/skill", - "description": "Eine Skills nach Namen ausführen", + "description": "Eine Skill anhand ihres Namens ausführen", "usage_hint": " [input]" }, { @@ -413,14 +413,14 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/usage", - "description": "Die Nutzungsfußzeile steuern oder die Kostenzusammenfassung anzeigen", + "description": "Die Nutzungsfußzeile steuern oder Kostenübersicht anzeigen", "usage_hint": "off|tokens|full|cost" } ] ``` - + ```json "slash_commands": [ @@ -449,12 +449,12 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard { "command": "/session", "description": "Ablauf der Thread-Bindung verwalten", - "usage_hint": "idle oder max-age ", + "usage_hint": "idle or max-age ", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/think", - "description": "Das Denk-Level festlegen", + "description": "Die Denkstufe festlegen", "usage_hint": "", "url": "https://gateway-host.example.com/slack/events" }, @@ -466,13 +466,13 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/fast", - "description": "Fast-Modus anzeigen oder festlegen", + "description": "Schnellmodus anzeigen oder festlegen", "usage_hint": "[status|on|off]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/reasoning", - "description": "Sichtbarkeit der Begründung umschalten", + "description": "Sichtbarkeit der Schlussfolgerungen umschalten", "usage_hint": "[on|off|stream]", "url": "https://gateway-host.example.com/slack/events" }, @@ -484,7 +484,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/exec", - "description": "Exec-Standards anzeigen oder festlegen", + "description": "Exec-Standardwerte anzeigen oder festlegen", "usage_hint": "host= security= ask= node=", "url": "https://gateway-host.example.com/slack/events" }, @@ -502,7 +502,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/help", - "description": "Die kurze Hilfezusammenfassung anzeigen", + "description": "Die kurze Hilfeübersicht anzeigen", "url": "https://gateway-host.example.com/slack/events" }, { @@ -512,13 +512,13 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/tools", - "description": "Anzeigen, was der aktuelle Agent gerade verwenden kann", + "description": "Anzeigen, was der aktuelle Agent jetzt gerade verwenden kann", "usage_hint": "[compact|verbose]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/agentstatus", - "description": "Laufzeitstatus anzeigen, einschließlich Provider-Nutzung/Kontingent, falls verfügbar", + "description": "Laufzeitstatus anzeigen, einschließlich Provider-Nutzung/-Kontingent, wenn verfügbar", "url": "https://gateway-host.example.com/slack/events" }, { @@ -534,12 +534,12 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/whoami", - "description": "Ihre Sender-Identität anzeigen", + "description": "Ihre Senderidentität anzeigen", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/skill", - "description": "Eine Skills nach Namen ausführen", + "description": "Eine Skill anhand ihres Namens ausführen", "usage_hint": " [input]", "url": "https://gateway-host.example.com/slack/events" }, @@ -551,7 +551,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard }, { "command": "/usage", - "description": "Die Nutzungsfußzeile steuern oder die Kostenzusammenfassung anzeigen", + "description": "Die Nutzungsfußzeile steuern oder Kostenübersicht anzeigen", "usage_hint": "off|tokens|full|cost", "url": "https://gateway-host.example.com/slack/events" } @@ -562,14 +562,13 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard - - Fügen Sie den Bot-Scope `chat:write.customize` hinzu, wenn ausgehende Nachrichten die Identität des aktiven Agenten (benutzerdefinierter Benutzername und Icon) statt der Standardidentität der Slack-App verwenden sollen. - - Wenn Sie ein Emoji-Icon verwenden, erwartet Slack die Syntax `:emoji_name:`. + + Fügen Sie den Bot-Scope `chat:write.customize` hinzu, wenn ausgehende Nachrichten die aktive Agent-Identität (benutzerdefinierter Benutzername und Symbol) statt der standardmäßigen Slack-App-Identität verwenden sollen. + Wenn Sie ein Emoji-Symbol verwenden, erwartet Slack die Syntax `:emoji_name:`. - Wenn Sie `channels.slack.userToken` konfigurieren, sind typische Lese-Scopes: + Wenn Sie `channels.slack.userToken` konfigurieren, sind typische Lesescopes: - `channels:history`, `groups:history`, `im:history`, `mpim:history` - `channels:read`, `groups:read`, `im:read`, `mpim:read` @@ -577,7 +576,7 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard - `reactions:read` - `pins:read` - `emoji:read` - - `search:read` (wenn Sie auf Slack-Suchlesevorgänge angewiesen sind) + - `search:read` (wenn Sie von Slack-Suchlesevorgängen abhängen) @@ -587,26 +586,30 @@ Machen Sie unterschiedliche Funktionen sichtbar, die die oben genannten Standard - `botToken` + `appToken` sind für Socket Mode erforderlich. - Der HTTP-Modus erfordert `botToken` + `signingSecret`. - `botToken`, `appToken`, `signingSecret` und `userToken` akzeptieren Klartextzeichenfolgen oder SecretRef-Objekte. -- Konfigurations-Token überschreiben den Env-Fallback. -- Der Env-Fallback `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` gilt nur für das Standardkonto. -- `userToken` (`xoxp-...`) ist nur per Konfiguration verfügbar (kein Env-Fallback) und verwendet standardmäßig schreibgeschütztes Verhalten (`userTokenReadOnly: true`). +- Konfigurations-Token überschreiben den Umgebungsvariablen-Fallback. +- Der Umgebungsvariablen-Fallback `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` gilt nur für das Standardkonto. +- `userToken` (`xoxp-...`) ist nur per Konfiguration verfügbar (kein Umgebungsvariablen-Fallback) und verwendet standardmäßig schreibgeschütztes Verhalten (`userTokenReadOnly: true`). -Verhalten der Statusübersicht: +Verhalten des Status-Snapshots: -- Die Slack-Kontoinspektion verfolgt pro Anmeldedatenfeld `*Source`- und `*Status`-Felder (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Die Slack-Kontoinspektion verfolgt pro Anmeldedaten die Felder `*Source` und `*Status` + (`botToken`, `appToken`, `signingSecret`, `userToken`). - Der Status ist `available`, `configured_unavailable` oder `missing`. -- `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 aber nicht auflösen konnte. -- Im HTTP-Modus wird `signingSecretStatus` einbezogen; im Socket Mode ist das erforderliche Paar `botTokenStatus` + `appTokenStatus`. +- `configured_unavailable` bedeutet, dass das Konto über SecretRef + oder eine andere nicht-inline Geheimnisquelle konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad + den tatsächlichen Wert jedoch nicht auflösen konnte. +- Im HTTP-Modus wird `signingSecretStatus` eingeschlossen; im Socket Mode ist das + erforderliche Paar `botTokenStatus` + `appTokenStatus`. -Für Aktionen/Verzeichnislesevorgänge kann das User-Token bevorzugt werden, wenn es konfiguriert ist. Für Schreibvorgänge bleibt das Bot-Token bevorzugt; User-Token-Schreibvorgänge 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 kein Bot-Token verfügbar ist. ## Aktionen und Gates -Slack-Aktionen werden über `channels.slack.actions.*` gesteuert. +Slack-Aktionen werden durch `channels.slack.actions.*` gesteuert. -Verfügbare Aktionsgruppen im aktuellen Slack-Tooling: +Verfügbare Aktionsgruppen in den aktuellen Slack-Tools: | Gruppe | Standard | | ---------- | -------- | @@ -616,24 +619,24 @@ Verfügbare Aktionsgruppen im aktuellen Slack-Tooling: | memberInfo | aktiviert | | emojiList | aktiviert | -Zu den aktuellen Slack-Nachrichtenaktionen gehören `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 - `channels.slack.dmPolicy` steuert den DM-Zugriff (alt: `channels.slack.dm.policy`): + `channels.slack.dmPolicy` steuert den DM-Zugriff (Legacy: `channels.slack.dm.policy`): - `pairing` (Standard) - `allowlist` - - `open` (erfordert, dass `channels.slack.allowFrom` `"*"` enthält; alt: `channels.slack.dm.allowFrom`) + - `open` (erfordert, dass `channels.slack.allowFrom` `"*"` enthält; Legacy: `channels.slack.dm.allowFrom`) - `disabled` DM-Flags: - - `dm.enabled` (Standard true) + - `dm.enabled` (Standard: true) - `channels.slack.allowFrom` (bevorzugt) - - `dm.allowFrom` (alt) + - `dm.allowFrom` (Legacy) - `dm.groupEnabled` (Gruppen-DMs standardmäßig false) - `dm.groupChannels` (optionale MPIM-Allowlist) @@ -647,35 +650,35 @@ Zu den aktuellen Slack-Nachrichtenaktionen gehören `send`, `upload-file`, `down - - `channels.slack.groupPolicy` steuert die Channel-Behandlung: + + `channels.slack.groupPolicy` steuert die Kanalbehandlung: - `open` - `allowlist` - `disabled` - Die Channel-Allowlist befindet sich unter `channels.slack.channels` und sollte stabile Channel-IDs verwenden. + Die Kanal-Allowlist befindet sich unter `channels.slack.channels` und sollte stabile Kanal-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 (auch wenn `channels.defaults.groupPolicy` gesetzt ist). + Hinweis zur Laufzeit: Wenn `channels.slack` vollständig fehlt (nur Umgebungsvariablen-Setup), fällt die Laufzeit auf `groupPolicy="allowlist"` zurück und protokolliert eine Warnung (selbst wenn `channels.defaults.groupPolicy` gesetzt ist). Auflösung von Namen/IDs: - - Einträge in der Channel-Allowlist und 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 aber standardmäßig für das Routing ignoriert - - Eingangsautorisierung und Channel-Routing sind standardmäßig ID-first; direktes Matching von Benutzernamen/Slugs erfordert `channels.slack.dangerouslyAllowNameMatching: true` + - Kanal-Allowlist-Einträge und DM-Allowlist-Einträge werden beim Start aufgelöst, wenn der Token-Zugriff dies erlaubt + - nicht aufgelöste Kanalnamenseinträge bleiben wie konfiguriert erhalten, werden für das Routing standardmäßig jedoch ignoriert + - eingehende Autorisierung und Kanalrouting sind standardmäßig ID-zuerst; direktes Abgleichen von Benutzernamen/Slugs erfordert `channels.slack.dangerouslyAllowNameMatching: true` - - Channel-Nachrichten sind standardmäßig durch Erwähnungen begrenzt. + + Kanalnachrichten sind standardmäßig durch Erwähnungen gesteuert. - Quellen für Erwähnungen: + Erwähnungsquellen: - explizite App-Erwähnung (`<@botId>`) - Regex-Muster für Erwähnungen (`agents.list[].groupChat.mentionPatterns`, Fallback `messages.groupChat.mentionPatterns`) - - implizites Antwort-auf-Bot-Thread-Verhalten (deaktiviert, wenn `thread.requireExplicitMention` `true` ist) + - implizites Antwort-auf-Bot-Thread-Verhalten (deaktiviert, wenn `thread.requireExplicitMention` auf `true` gesetzt ist) - Steuerelemente pro Channel (`channels.slack.channels.`; Namen nur über Startauflösung oder `dangerouslyAllowNameMatching`): + Steuerelemente pro Kanal (`channels.slack.channels.`; Namen nur über Auflösung beim Start oder `dangerouslyAllowNameMatching`): - `requireMention` - `users` (Allowlist) @@ -684,44 +687,44 @@ Zu den aktuellen Slack-Nachrichtenaktionen gehören `send`, `upload-file`, `down - `systemPrompt` - `tools`, `toolsBySender` - Schlüsselformat für `toolsBySender`: `id:`, `e164:`, `username:`, `name:` oder Platzhalter `"*"` - (Altschlüssel ohne Präfix werden weiterhin nur `id:` zugeordnet) + (Legacy-Schlüssel ohne Präfix werden weiterhin nur `id:` zugeordnet) ## Threads, Sitzungen und Antwort-Tags -- DMs werden als `direct` geroutet; Channels als `channel`; MPIMs als `group`. -- Mit dem Standardwert `session.dmScope=main` werden Slack-DMs zur Hauptsitzung des Agenten zusammengeführt. -- Channel-Sitzungen: `agent::slack:channel:`. -- Thread-Antworten können bei Bedarf Thread-Sitzungssuffixe (`:thread:`) erzeugen. -- `channels.slack.thread.historyScope` ist standardmäßig `thread`; `thread.inheritParent` ist standardmäßig `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 teilgenommen hat. Ohne dies umgehen Antworten in einem Thread mit Bot-Beteiligung das `requireMention`-Gate. +- DMs werden als `direct` geroutet; Kanäle als `channel`; MPIMs als `group`. +- Mit dem Standardwert `session.dmScope=main` werden Slack-DMs in die Hauptsitzung des Agenten zusammengeführt. +- Kanalsitzungen: `agent::slack:channel:`. +- Thread-Antworten können, falls zutreffend, Thread-Sitzungssuffixe (`:thread:`) erzeugen. +- Der Standardwert für `channels.slack.thread.historyScope` ist `thread`; der Standardwert für `thread.inheritParent` ist `false`. +- `channels.slack.thread.initialHistoryLimit` steuert, wie viele vorhandene Thread-Nachrichten abgerufen werden, wenn eine neue Thread-Sitzung beginnt (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 nur auf explizite `@bot`-Erwähnungen innerhalb von Threads antwortet, selbst wenn der Bot bereits am Thread teilgenommen hat. Ohne dies umgehen Antworten in einem Thread, an dem der Bot beteiligt ist, das Gate `requireMention`. -Steuerelemente für Antwort-Threads: +Steuerelemente für Antwort-Threading: - `channels.slack.replyToMode`: `off|first|all|batched` (Standard `off`) - `channels.slack.replyToModeByChatType`: pro `direct|group|channel` -- Alt-Fallback für direkte Chats: `channels.slack.dm.replyToMode` +- Legacy-Fallback für direkte Chats: `channels.slack.dm.replyToMode` Manuelle Antwort-Tags werden unterstützt: - `[[reply_to_current]]` - `[[reply_to:]]` -Hinweis: `replyToMode="off"` deaktiviert **sämtliches** 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 Channel, während Telegram-Antworten im Haupt-Chatverlauf sichtbar bleiben. +Hinweis: `replyToMode="off"` deaktiviert **das gesamte** Antwort-Threading in Slack, einschließlich expliziter Tags `[[reply_to_*]]`. 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 blenden Nachrichten aus dem Kanal aus, während Telegram-Antworten im Haupt-Chatverlauf sichtbar bleiben. -## Ack-Reaktionen +## Bestätigungsreaktionen `ackReaction` sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet. -Auflösungsreihenfolge: +Reihenfolge der Auflösung: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- Emoji-Fallback der Agentenidentität (`agents.list[].identity.emoji`, sonst "👀") +- Emoji-Fallback der Agent-Identität (`agents.list[].identity.emoji`, sonst `"👀"`) Hinweise: @@ -735,15 +738,16 @@ Hinweise: - `off`: Live-Vorschau-Streaming deaktivieren. - `partial` (Standard): Vorschautext durch die neueste Teilausgabe ersetzen. - `block`: Vorschauaktualisierungen in Blöcken anhängen. -- `progress`: Während der Generierung einen Fortschrittsstatustext anzeigen und dann den endgültigen Text senden. +- `progress`: Fortschrittsstatustext während der Generierung anzeigen, dann den endgültigen Text senden. +- `streaming.preview.toolProgress`: Wenn die Entwurfsvorschau aktiv ist, Tool-/Fortschrittsaktualisierungen in dieselbe bearbeitete Vorschau-Nachricht leiten (Standard: `true`). Auf `false` setzen, um separate Tool-/Fortschrittsnachrichten beizubehalten. -`channels.slack.streaming.nativeTransport` steuert natives Slack-Text-Streaming, wenn `channels.slack.streaming.mode` auf `partial` gesetzt ist (Standard: `true`). +`channels.slack.streaming.nativeTransport` steuert das native Slack-Text-Streaming, wenn `channels.slack.streaming.mode` auf `partial` gesetzt ist (Standard: `true`). -- Für natives Text-Streaming und die Anzeige des Slack-Assistenten-Thread-Status muss ein Antwort-Thread verfügbar sein. Die Thread-Auswahl folgt weiterhin `replyToMode`. -- Channel- und Gruppenchat-Wurzeln 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, daher zeigen sie keine Vorschau im Thread-Stil an; verwenden Sie Thread-Antworten oder `typingReaction`, wenn dort sichtbarer Fortschritt angezeigt werden soll. -- Medien- und Nicht-Text-Payloads fallen auf normale Zustellung zurück. -- Wenn Streaming während einer Antwort fehlschlägt, fällt OpenClaw für die verbleibenden Payloads auf normale Zustellung zurück. +- Für natives Text-Streaming und das Slack-Assistenten-Thread-Statussignal muss ein Antwort-Thread verfügbar sein. Die Thread-Auswahl folgt weiterhin `replyToMode`. +- Kanal- und Gruppenchat-Wurzeln 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, daher zeigen sie keine Vorschau im Thread-Stil; verwenden Sie Thread-Antworten oder `typingReaction`, wenn Sie dort sichtbaren Fortschritt möchten. +- 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. Entwurfsvorschau anstelle von nativem Slack-Text-Streaming verwenden: @@ -760,17 +764,17 @@ Entwurfsvorschau anstelle von nativem Slack-Text-Streaming verwenden: } ``` -Altschlüssel: +Legacy-Schlüssel: - `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 alte `channels.slack.nativeStreaming` wird automatisch zu `channels.slack.streaming.nativeTransport` migriert. +- boolesches `channels.slack.streaming` wird automatisch zu `channels.slack.streaming.mode` und `channels.slack.streaming.nativeTransport` migriert. +- das Legacy-Feld `channels.slack.nativeStreaming` wird automatisch zu `channels.slack.streaming.nativeTransport` migriert. -## Typing-Reaction-Fallback +## Fallback für Tippreaktionen -`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. Dies 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 Lauf abgeschlossen ist. Dies ist besonders nützlich außerhalb von Thread-Antworten, die standardmäßig einen Statusindikator „schreibt gerade ...“ verwenden. -Auflösungsreihenfolge: +Reihenfolge der Auflösung: - `channels.slack.accounts..typingReaction` - `channels.slack.typingReaction` @@ -778,32 +782,32 @@ Auflösungsreihenfolge: Hinweise: - Slack erwartet Shortcodes (zum Beispiel `"hourglass_flowing_sand"`). -- Die Reaktion erfolgt nach bestem Aufwand und die Bereinigung wird nach Abschluss des Antwort- oder Fehlerpfads automatisch versucht. +- Die Reaktion erfolgt nach bestem Bemühen, und die Bereinigung wird automatisch versucht, nachdem die Antwort oder der Fehlerpfad abgeschlossen ist. ## Medien, Chunking und Zustellung - Slack-Dateianhänge werden von privat gehosteten Slack-URLs heruntergeladen (token-authentifizierter Request-Ablauf) und in den Medienspeicher geschrieben, wenn das Abrufen erfolgreich ist und Größenlimits dies zulassen. + Slack-Dateianhänge werden von privat gehosteten Slack-URLs heruntergeladen (tokenauthentifizierter Anfragefluss) und in den Medienspeicher geschrieben, wenn das Abrufen erfolgreich ist und Größenlimits dies erlauben. - Die Laufzeitgrenze für eingehende Daten beträgt standardmäßig `20MB`, sofern sie nicht durch `channels.slack.mediaMaxMb` überschrieben wird. + Die eingehende Laufzeitgrößenobergrenze beträgt standardmäßig `20MB`, sofern sie nicht durch `channels.slack.mediaMaxMb` überschrieben wird. - Text-Chunks verwenden `channels.slack.textChunkLimit` (Standard 4000) - `channels.slack.chunkMode="newline"` aktiviert eine absatzorientierte Aufteilung - - Dateisendungen verwenden Slack-Upload-APIs und können Thread-Antworten (`thread_ts`) einschließen - - Die Obergrenze für ausgehende Medien folgt `channels.slack.mediaMaxMb`, wenn konfiguriert; andernfalls verwenden Channel-Sendungen MIME-Art-Standards aus der Medienpipeline + - Dateisendungen verwenden die Slack-Upload-APIs und können Thread-Antworten (`thread_ts`) enthalten + - die Obergrenze für ausgehende Medien folgt `channels.slack.mediaMaxMb`, wenn konfiguriert; andernfalls verwenden Kanalsendungen die MIME-Art-Standardwerte aus der Medienpipeline - + Bevorzugte explizite Ziele: - `user:` für DMs - - `channel:` für Channels + - `channel:` für Kanäle - Slack-DMs werden beim Senden an Benutzerziele über Slack-Conversations-APIs geöffnet. + Slack-DMs werden über die Slack-Konversations-APIs geöffnet, wenn an Benutzerziele gesendet wird. @@ -829,22 +833,22 @@ Native Befehle erfordern [zusätzliche Manifest-Einstellungen](#additional-manif /help ``` -Native Argumentmenüs verwenden eine adaptive Rendering-Strategie, die vor dem Absenden eines ausgewählten Optionswerts ein Bestätigungsmodal anzeigt: +Native Argumentmenüs verwenden eine adaptive Rendering-Strategie, die vor dem Absenden eines ausgewählten Optionswerts einen Bestätigungsdialog anzeigt: - bis zu 5 Optionen: Button-Blöcke -- 6-100 Optionen: statisches Auswahlmenü +- 6–100 Optionen: statisches Auswahlmenü - mehr als 100 Optionen: externe Auswahl mit asynchroner Optionsfilterung, wenn Handler für Interaktivitätsoptionen verfügbar sind -- bei Überschreitung der Slack-Limits: codierte Optionswerte fallen auf Buttons zurück +- Slack-Limits überschritten: kodierte Optionswerte fallen auf Buttons zurück ```txt /think ``` -Slash-Sitzungen verwenden isolierte Schlüssel wie `agent::slack:slash:` und leiten Befehlsausführungen weiterhin mit `CommandTargetSessionKey` an die Ziel-Konversationssitzung weiter. +Slash-Sitzungen verwenden isolierte Schlüssel wie `agent::slack:slash:` und leiten Befehlsausführungen weiterhin über `CommandTargetSessionKey` an die Zielkonversationssitzung weiter. ## Interaktive Antworten -Slack kann interaktive, vom Agenten verfasste Antwortsteuerelemente rendern, aber diese Funktion ist standardmäßig deaktiviert. +Slack kann interaktive Antwortsteuerelemente rendern, die vom Agenten verfasst wurden, aber diese Funktion ist standardmäßig deaktiviert. Global aktivieren: @@ -878,43 +882,43 @@ Oder nur für ein Slack-Konto aktivieren: } ``` -Wenn aktiviert, können Agenten nur für Slack gültige Antwortdirektiven ausgeben: +Wenn aktiviert, können Agenten Slack-spezifische Antwortdirektiven ausgeben: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -Diese Direktiven werden zu Slack Block Kit kompiliert und leiten Klicks oder Auswahlen über den bestehenden Slack-Interaktionsereignispfad zurück. +Diese Direktiven werden in Slack Block Kit kompiliert und leiten Klicks oder Auswahlen über den vorhandenen Slack-Interaktionsereignispfad zurück. Hinweise: -- Dies ist eine Slack-spezifische UI. Andere Channels übersetzen Slack-Block-Kit-Direktiven nicht in ihre eigenen Button-Systeme. -- Die interaktiven Callback-Werte sind von OpenClaw erzeugte opake Tokens, keine rohen, vom Agenten verfassten Werte. -- Wenn erzeugte interaktive Blöcke die Slack-Block-Kit-Limits überschreiten würden, fällt OpenClaw auf die ursprüngliche Textantwort zurück, anstatt eine ungültige Blocks-Payload zu senden. +- Dies ist 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 rohen, vom Agenten verfassten Werte. +- Wenn generierte interaktive Blöcke die Slack-Block-Kit-Limits überschreiten würden, fällt OpenClaw auf die ursprüngliche Textantwort zurück, anstatt eine ungültige Block-Payload zu senden. ## Exec-Genehmigungen in Slack -Slack kann als nativer Genehmigungsclient mit interaktiven Buttons und Interaktionen fungieren, statt auf die Web-UI oder das Terminal zurückzufallen. +Slack kann als nativer Genehmigungsclient mit interaktiven Buttons und Interaktionen fungieren, anstatt auf die Web-UI oder das Terminal zurückzufallen. -- Exec-Genehmigungen verwenden `channels.slack.execApprovals.*` für natives DM-/Channel-Routing. -- Plugin-Genehmigungen können weiterhin über dieselbe Slack-native Button-Oberfläche aufgelöst werden, wenn die Anfrage bereits in Slack landet und die Genehmigungs-ID-Art `plugin:` ist. -- Die Autorisierung der Genehmigenden wird weiterhin erzwungen: Nur als Genehmigende identifizierte Benutzer können Anfragen über Slack genehmigen oder ablehnen. +- Exec-Genehmigungen verwenden `channels.slack.execApprovals.*` für natives DM-/Kanalrouting. +- Plugin-Genehmigungen können weiterhin über dieselbe native Slack-Button-Oberfläche aufgelöst werden, wenn die Anfrage bereits in Slack landet und die Genehmigungs-ID-Art `plugin:` ist. +- Die Autorisierung von Genehmigenden wird weiterhin erzwungen: Nur Benutzer, die als Genehmigende identifiziert wurden, können Anfragen über Slack genehmigen oder ablehnen. -Dies verwendet dieselbe gemeinsame Genehmigungs-Button-Oberfläche wie andere Channels. Wenn `interactivity` in Ihren Slack-App-Einstellungen aktiviert ist, werden Genehmigungsabfragen direkt in der Konversation als Block-Kit-Buttons gerendert. -Wenn diese Buttons vorhanden sind, sind sie die primäre Genehmigungs-UX; OpenClaw -sollte einen manuellen `/approve`-Befehl nur dann einschließen, wenn das Tool-Ergebnis sagt, dass Chat-Genehmigungen nicht verfügbar sind oder die manuelle Genehmigung der einzige Weg ist. +Dies verwendet dieselbe gemeinsame Genehmigungs-Button-Oberfläche wie andere Kanäle. Wenn `interactivity` in Ihren Slack-App-Einstellungen aktiviert ist, werden Genehmigungsaufforderungen direkt als Block-Kit-Buttons in der Konversation gerendert. +Wenn diese Buttons vorhanden sind, sind sie die primäre UX für Genehmigungen; OpenClaw +sollte nur dann einen manuellen `/approve`-Befehl einschließen, wenn das Tool-Ergebnis angibt, dass Chat-Genehmigungen nicht verfügbar sind oder die manuelle Genehmigung der einzige Weg ist. Konfigurationspfad: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers` (optional; fällt wenn möglich auf `commands.ownerAllowFrom` zurück) +- `channels.slack.execApprovals.approvers` (optional; greift nach Möglichkeit auf `commands.ownerAllowFrom` zurück) - `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, Standard: `dm`) - `agentFilter`, `sessionFilter` -Slack aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt ist oder `"auto"` ist und mindestens ein -Genehmigender aufgelöst wird. Setzen Sie `enabled: false`, um Slack explizit als nativen Genehmigungsclient zu deaktivieren. +Slack aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein +Genehmigender aufgelöst wird. Setzen Sie `enabled: false`, um Slack ausdrücklich als nativen Genehmigungsclient zu deaktivieren. Setzen Sie `enabled: true`, um native Genehmigungen zu erzwingen, wenn Genehmigende aufgelöst werden. -Standardverhalten ohne explizite Slack-Exec-Genehmigungskonfiguration: +Standardverhalten ohne explizite Konfiguration für Slack-Exec-Genehmigungen: ```json5 { @@ -925,7 +929,7 @@ Standardverhalten ohne explizite Slack-Exec-Genehmigungskonfiguration: ``` Eine explizite Slack-native Konfiguration ist nur erforderlich, wenn Sie Genehmigende überschreiben, Filter hinzufügen oder -sich für die Zustellung an den Ursprungs-Chat entscheiden möchten: +die Zustellung im Ursprungschat aktivieren möchten: ```json5 { @@ -941,23 +945,24 @@ sich für die Zustellung an den Ursprungs-Chat entscheiden möchten: } ``` -Gemeinsame Weiterleitung über `approvals.exec` ist davon getrennt. Verwenden Sie sie nur, wenn Exec-Genehmigungsabfragen zusätzlich -an andere Chats oder explizite Out-of-Band-Ziele weitergeleitet werden müssen. Gemeinsame Weiterleitung über `approvals.plugin` ist ebenfalls -getrennt; Slack-native Buttons können Plugin-Genehmigungen weiterhin auflösen, wenn diese Anfragen bereits in Slack landen. +Gemeinsame Weiterleitung über `approvals.exec` ist getrennt. Verwenden Sie sie nur, wenn Aufforderungen zur Exec-Genehmigung zusätzlich +an andere Chats oder explizite Ziele außerhalb des Bands geleitet werden müssen. Gemeinsame Weiterleitung über `approvals.plugin` 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-Channels und DMs, die bereits Befehle unterstützen. Siehe [Exec-Genehmigungen](/de/tools/exec-approvals) für das vollständige Modell zur Genehmigungsweiterleitung. +`/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 Modell der Genehmigungsweiterleitung. ## Ereignisse und Betriebsverhalten -- Nachrichtenbearbeitungen/-löschungen/Thread-Broadcasts werden in Systemereignisse abgebildet. -- Reaktions-Hinzufügen/-Entfernen-Ereignisse werden in Systemereignisse abgebildet. -- Ereignisse zu Beitritt/Austritt von Mitgliedern, erstellten/umbenannten Channels und hinzugefügten/entfernten 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 injiziert werden. -- Thread-Starter und anfängliches Kontext-Seeding aus dem Thread-Verlauf werden, sofern zutreffend, nach konfigurierten Sender-Allowlists gefiltert. -- Block-Aktionen und Modal-Interaktionen erzeugen strukturierte Systemereignisse `Slack interaction: ...` mit umfangreichen Payload-Feldern: - - Block-Aktionen: ausgewählte Werte, Labels, Picker-Werte und `workflow_*`-Metadaten - - Modal-Ereignisse `view_submission` und `view_closed` mit gerouteten Channel-Metadaten und Formulareingaben +- Nachrichtenbearbeitungen/-löschungen/Thread-Broadcasts werden Systemereignissen zugeordnet. +- Ereignisse zum Hinzufügen/Entfernen von Reaktionen werden Systemereignissen zugeordnet. +- Ereignisse zum Beitreten/Verlassen von Mitgliedern, Erstellen/Umbenennen von Kanälen sowie Hinzufügen/Entfernen von Pins werden Systemereignissen zugeordnet. +- `channel_id_changed` kann Kanal-Konfigurationsschlüssel migrieren, wenn `configWrites` aktiviert ist. +- Kanalthema/-zweck-Metadaten werden als nicht vertrauenswürdiger Kontext behandelt und können in den Routing-Kontext injiziert werden. +- Thread-Starter und das initiale Kontext-Seeding des Thread-Verlaufs werden, falls zutreffend, anhand konfigurierter Sender-Allowlists gefiltert. +- Blockaktionen und Modal-Interaktionen erzeugen strukturierte Systemereignisse `Slack interaction: ...` mit umfangreichen Payload-Feldern: + - Blockaktionen: ausgewählte Werte, Labels, Picker-Werte und `workflow_*`-Metadaten + - modale Ereignisse `view_submission` und `view_closed` mit gerouteten Kanalmetadaten und Formulareingaben ## Verweise auf die Konfigurationsreferenz @@ -967,23 +972,23 @@ Primäre Referenz: Wichtige Slack-Felder: - Modus/Auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` - - DM-Zugriff: `dm.enabled`, `dmPolicy`, `allowFrom` (alt: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` - - Kompatibilitätsumschalter: `dangerouslyAllowNameMatching` (nur im Notfall; ausgeschaltet lassen, sofern nicht benötigt) - - Channel-Zugriff: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` + - DM-Zugriff: `dm.enabled`, `dmPolicy`, `allowFrom` (Legacy: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` + - Kompatibilitätsschalter: `dangerouslyAllowNameMatching` (Notfalloption; deaktiviert lassen, sofern nicht erforderlich) + - Kanalzugriff: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - Threading/Verlauf: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - - Zustellung: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport` + - Zustellung: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress` - Betrieb/Funktionen: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` ## Fehlerbehebung - + Prüfen Sie in dieser Reihenfolge: - `groupPolicy` - - Channel-Allowlist (`channels.slack.channels`) + - Kanal-Allowlist (`channels.slack.channels`) - `requireMention` - - Allowlist `users` pro Channel + - kanalbezogene `users`-Allowlist Nützliche Befehle: @@ -999,8 +1004,8 @@ openclaw doctor Prüfen Sie: - `channels.slack.dm.enabled` - - `channels.slack.dmPolicy` (oder alt `channels.slack.dm.policy`) - - Kopplungsgenehmigungen / Allowlist-Einträge + - `channels.slack.dmPolicy` (oder Legacy `channels.slack.dm.policy`) + - Genehmigungen für Kopplung / Allowlist-Einträge ```bash openclaw pairing list slack @@ -1009,12 +1014,12 @@ openclaw pairing list slack - Validieren Sie Bot- + App-Token und die Aktivierung von Socket Mode in den Slack-App-Einstellungen. + Validieren Sie Bot- und App-Token sowie die Aktivierung von Socket Mode in den Slack-App-Einstellungen. Wenn `openclaw channels status --probe --json` `botTokenStatus` oder `appTokenStatus: "configured_unavailable"` anzeigt, ist das Slack-Konto - konfiguriert, aber die aktuelle Laufzeit konnte den durch SecretRef - gestützten Wert nicht auflösen. + konfiguriert, aber die aktuelle Laufzeit konnte den durch SecretRef gestützten + Wert nicht auflösen. @@ -1023,22 +1028,22 @@ openclaw pairing list slack - Signing Secret - Webhook-Pfad - - Slack-Request-URLs (Events + Interaktivität + Slash-Befehle) - - eindeutigen `webhookPath` pro HTTP-Konto + - Slack-Anfrage-URLs (Ereignisse + Interaktivität + Slash-Befehle) + - eindeutiger `webhookPath` pro HTTP-Konto - Wenn `signingSecretStatus: "configured_unavailable"` in Kontoübersichten - erscheint, ist das HTTP-Konto konfiguriert, aber die aktuelle Laufzeit konnte das - durch SecretRef gestützte Signing Secret nicht auflösen. + Wenn `signingSecretStatus: "configured_unavailable"` in Konto-Snapshots + erscheint, ist das HTTP-Konto konfiguriert, aber die aktuelle Laufzeit konnte das durch SecretRef gestützte Signing Secret + nicht auflösen. Prüfen Sie, ob Sie Folgendes beabsichtigt haben: - - nativer Befehlsmodus (`channels.slack.commands.native: true`) mit passend 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 Channel-/Benutzer-Allowlists. + Prüfen Sie außerdem `commands.useAccessGroups` und Kanal-/Benutzer-Allowlists. @@ -1048,7 +1053,7 @@ openclaw pairing list slack - [Kopplung](/de/channels/pairing) - [Gruppen](/de/channels/groups) - [Sicherheit](/de/gateway/security) -- [Channel-Routing](/de/channels/channel-routing) +- [Kanalrouting](/de/channels/channel-routing) - [Fehlerbehebung](/de/channels/troubleshooting) - [Konfiguration](/de/gateway/configuration) - [Slash-Befehle](/de/tools/slash-commands) diff --git a/docs/de/channels/telegram.md b/docs/de/channels/telegram.md index 9011e609b..787cf94e7 100644 --- a/docs/de/channels/telegram.md +++ b/docs/de/channels/telegram.md @@ -4,10 +4,10 @@ read_when: summary: Telegram-Bot-Supportstatus, Funktionen und Konfiguration title: Telegram x-i18n: - generated_at: "2026-04-21T06:22:51Z" + generated_at: "2026-04-21T17:45:33Z" model: gpt-5.4 provider: openai - source_hash: b5c70775b55d4923a31ad8bae7f4c6e7cbae754c05c3a578180d63db2b59e39a + source_hash: 816238b53942b319a300843db62ec1d4bf8d84bc11094010926ac9ad457c6d3d source_path: channels/telegram.md workflow: 15 --- @@ -20,21 +20,21 @@ Status: produktionsreif für Bot-DMs + Gruppen über grammY. Long Polling ist de Die Standard-DM-Richtlinie für Telegram ist Kopplung. - + Kanalübergreifende Diagnose- und Reparaturleitfäden. - Vollständige Muster und Beispiele für die Kanalkonfiguration. + Vollständige Channel-Konfigurationsmuster und Beispiele. -## Schnelleinrichtung +## Schnellstart Öffnen Sie Telegram und chatten Sie mit **@BotFather** (bestätigen Sie, dass der Handle genau `@BotFather` ist). - Führen Sie `/newbot` aus, folgen Sie den Aufforderungen und speichern Sie das Token. + Führen Sie `/newbot` aus, folgen Sie den Anweisungen und speichern Sie das Token. @@ -71,7 +71,7 @@ openclaw pairing approve telegram - Fügen Sie den Bot zu Ihrer Gruppe hinzu und setzen Sie dann `channels.telegram.groups` und `groupPolicy` so, dass sie zu Ihrem Zugriffsmodell passen. + Fügen Sie den Bot Ihrer Gruppe hinzu und setzen Sie dann `channels.telegram.groups` und `groupPolicy` passend zu Ihrem Zugriffsmodell. @@ -79,31 +79,31 @@ openclaw pairing approve telegram Die Reihenfolge der Token-Auflösung ist kontobewusst. In der Praxis haben config-Werte Vorrang vor dem Env-Fallback, und `TELEGRAM_BOT_TOKEN` gilt nur für das Standardkonto. -## Einstellungen auf der Telegram-Seite +## Einstellungen auf Telegram-Seite - Telegram-Bots verwenden standardmäßig den **Datenschutzmodus**, der einschränkt, welche Gruppennachrichten sie empfangen. + Telegram-Bots verwenden standardmäßig **Privacy Mode**, was einschränkt, welche Gruppennachrichten sie empfangen. - Wenn der Bot alle Gruppennachrichten sehen muss, dann entweder: + Wenn der Bot alle Gruppennachrichten sehen muss, gehen Sie wie folgt vor: - deaktivieren Sie den Datenschutzmodus über `/setprivacy`, oder - - machen Sie den Bot zu einem Gruppenadmin. + - machen Sie den Bot zu einem Gruppenadministrator. - Wenn Sie den Datenschutzmodus umschalten, entfernen Sie den Bot in jeder Gruppe und fügen Sie ihn erneut hinzu, damit Telegram die Änderung anwendet. + Wenn Sie den Datenschutzmodus umschalten, entfernen Sie den Bot in jeder Gruppe und fügen ihn erneut hinzu, damit Telegram die Änderung anwendet. - Der Admin-Status wird in den Telegram-Gruppeneinstellungen gesteuert. + Der Administratorstatus wird in den Telegram-Gruppeneinstellungen gesteuert. - Admin-Bots empfangen alle Gruppennachrichten, was für ein stets aktives Gruppenverhalten nützlich ist. + Admin-Bots empfangen alle Gruppennachrichten, was für stets aktive Gruppenfunktionen nützlich ist. - - `/setjoingroups`, um Gruppenhinzufügungen zu erlauben/zu verweigern + - `/setjoingroups`, um Gruppenhinzufügungen zu erlauben/verbieten - `/setprivacy` für das Sichtbarkeitsverhalten in Gruppen @@ -122,21 +122,21 @@ Die Reihenfolge der Token-Auflösung ist kontobewusst. In der Praxis haben confi `channels.telegram.allowFrom` akzeptiert numerische Telegram-Benutzer-IDs. Präfixe `telegram:` / `tg:` werden akzeptiert und normalisiert. `dmPolicy: "allowlist"` mit leerem `allowFrom` blockiert alle DMs und wird von der Konfigurationsvalidierung abgelehnt. - Das Setup fragt nur nach numerischen Benutzer-IDs. - Wenn Sie ein Upgrade durchgeführt haben und Ihre Konfiguration `@username`-Allowlist-Einträge enthält, führen Sie `openclaw doctor --fix` aus, um sie aufzulösen (Best-Effort; erfordert ein Telegram-Bot-Token). - Wenn Sie zuvor auf Allowlist-Dateien aus dem Pairing-Store gesetzt haben, kann `openclaw doctor --fix` Einträge in Allowlist-Abläufen in `channels.telegram.allowFrom` wiederherstellen (zum Beispiel wenn `dmPolicy: "allowlist"` noch keine expliziten IDs hat). + Die Einrichtung fragt nur nach numerischen Benutzer-IDs. + Wenn Sie ein Upgrade durchgeführt haben und Ihre Konfiguration `@username`-Einträge in der Allowlist enthält, führen Sie `openclaw doctor --fix` aus, um sie aufzulösen (Best Effort; erfordert ein Telegram-Bot-Token). + Wenn Sie sich zuvor auf Allowlist-Dateien aus dem Pairing-Store verlassen haben, kann `openclaw doctor --fix` Einträge in `channels.telegram.allowFrom` für Allowlist-Abläufe wiederherstellen (zum Beispiel wenn `dmPolicy: "allowlist"` noch keine expliziten IDs hat). - Für Bots mit nur einem Eigentümer bevorzugen Sie `dmPolicy: "allowlist"` mit expliziten numerischen `allowFrom`-IDs, um die Zugriffsrichtlinie dauerhaft in der Konfiguration zu halten (anstatt von früheren Pairing-Genehmigungen abhängig zu sein). + Für Bots mit nur einem Besitzer sollten Sie `dmPolicy: "allowlist"` mit expliziten numerischen `allowFrom`-IDs bevorzugen, damit die Zugriffsrichtlinie dauerhaft in der Konfiguration bleibt (anstatt von früheren Pairing-Genehmigungen abzuhängen). - Häufiges Missverständnis: Die DM-Kopplungsgenehmigung bedeutet nicht „dieser Absender ist überall autorisiert“. - Die Kopplung gewährt nur DM-Zugriff. Die Autorisierung von Gruppenabsendern kommt weiterhin aus expliziten Allowlists in der Konfiguration. - Wenn Sie möchten, dass „ich einmal autorisiert bin und sowohl DMs als auch Gruppenbefehle funktionieren“, tragen Sie Ihre numerische Telegram-Benutzer-ID in `channels.telegram.allowFrom` ein. + Häufiges Missverständnis: Die Genehmigung für DM-Kopplung bedeutet nicht „dieser Absender ist überall autorisiert“. + Kopplung gewährt nur DM-Zugriff. Die Autorisierung von Gruppenabsendern kommt weiterhin aus expliziten Konfigurations-Allowlists. + Wenn Sie möchten, dass „ich einmal autorisiert bin und dann sowohl DMs als auch Gruppenbefehle funktionieren“, tragen Sie Ihre numerische Telegram-Benutzer-ID in `channels.telegram.allowFrom` ein. ### Ihre Telegram-Benutzer-ID finden Sicherer (kein Drittanbieter-Bot): - 1. Senden Sie Ihrem Bot eine DM. + 1. Schreiben Sie Ihrem Bot eine DM. 2. Führen Sie `openclaw logs --follow` aus. 3. Lesen Sie `from.id`. @@ -151,11 +151,11 @@ curl "https://api.telegram.org/bot/getUpdates" - Zwei Kontrollen wirken zusammen: + Zwei Steuerungen greifen zusammen: 1. **Welche Gruppen erlaubt sind** (`channels.telegram.groups`) - keine `groups`-Konfiguration: - - mit `groupPolicy: "open"`: jede Gruppe kann die Gruppen-ID-Prüfungen bestehen + - mit `groupPolicy: "open"`: Jede Gruppe kann die Gruppen-ID-Prüfungen bestehen - mit `groupPolicy: "allowlist"` (Standard): Gruppen werden blockiert, bis Sie `groups`-Einträge (oder `"*"`) hinzufügen - `groups` konfiguriert: fungiert als Allowlist (explizite IDs oder `"*"`) @@ -164,17 +164,17 @@ curl "https://api.telegram.org/bot/getUpdates" - `allowlist` (Standard) - `disabled` - `groupAllowFrom` wird für die Filterung von Gruppenabsendern verwendet. Wenn es nicht gesetzt ist, greift Telegram auf `allowFrom` zurück. + `groupAllowFrom` wird für die Filterung von Gruppenabsendern verwendet. Wenn nicht gesetzt, verwendet Telegram `allowFrom` als Fallback. `groupAllowFrom`-Einträge sollten numerische Telegram-Benutzer-IDs sein (Präfixe `telegram:` / `tg:` werden normalisiert). - Tragen Sie keine Telegram-Gruppen- oder Supergruppen-Chat-IDs in `groupAllowFrom` ein. Negative Chat-IDs gehören unter `channels.telegram.groups`. + Setzen Sie keine Telegram-Gruppen- oder Supergruppen-Chat-IDs in `groupAllowFrom`. Negative Chat-IDs gehören unter `channels.telegram.groups`. Nicht numerische Einträge werden für die Absenderautorisierung ignoriert. - Sicherheitsgrenze (`2026.2.25+`): Die Authentifizierung von Gruppenabsendern übernimmt **nicht** DM-Pairing-Store-Genehmigungen. - Pairing bleibt nur für DMs. Für Gruppen setzen Sie `groupAllowFrom` oder `allowFrom` pro Gruppe/pro Thema. - Wenn `groupAllowFrom` nicht gesetzt ist, greift Telegram auf `allowFrom` aus der Konfiguration zurück, nicht auf den Pairing-Store. - Praktisches Muster für Bots mit nur einem Eigentümer: Setzen Sie Ihre Benutzer-ID in `channels.telegram.allowFrom`, lassen Sie `groupAllowFrom` unsetzt und erlauben Sie die Zielgruppen unter `channels.telegram.groups`. + Sicherheitsgrenze (`2026.2.25+`): Die Autorisierung von Gruppenabsendern übernimmt **nicht** Genehmigungen aus dem DM-Pairing-Store. + Kopplung bleibt nur für DMs. Für Gruppen setzen Sie `groupAllowFrom` oder `allowFrom` pro Gruppe/pro Thema. + Wenn `groupAllowFrom` nicht gesetzt ist, verwendet Telegram als Fallback `allowFrom` aus der Konfiguration, nicht den Pairing-Store. + Praktisches Muster für Bots mit nur einem Besitzer: Setzen Sie Ihre Benutzer-ID in `channels.telegram.allowFrom`, lassen Sie `groupAllowFrom` unset und erlauben Sie die Zielgruppen unter `channels.telegram.groups`. Laufzeithinweis: Wenn `channels.telegram` vollständig fehlt, verwendet die Laufzeit standardmäßig fail-closed `groupPolicy="allowlist"`, es sei denn, `channels.defaults.groupPolicy` ist explizit gesetzt. - Beispiel: Jedes Mitglied in genau einer bestimmten Gruppe erlauben: + Beispiel: beliebiges Mitglied in einer bestimmten Gruppe erlauben: ```json5 { @@ -191,7 +191,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Beispiel: Nur bestimmte Benutzer innerhalb einer bestimmten Gruppe erlauben: + Beispiel: nur bestimmte Benutzer innerhalb einer bestimmten Gruppe erlauben: ```json5 { @@ -209,7 +209,7 @@ curl "https://api.telegram.org/bot/getUpdates" ``` - Häufiger Fehler: `groupAllowFrom` ist keine Telegram-Gruppen-Allowlist. + Häufiger Fehler: `groupAllowFrom` ist keine Gruppen-Allowlist für Telegram. - Legen Sie negative Telegram-Gruppen- oder Supergruppen-Chat-IDs wie `-1001234567890` unter `channels.telegram.groups` ab. - Legen Sie Telegram-Benutzer-IDs wie `8734062810` unter `groupAllowFrom` ab, wenn Sie einschränken möchten, welche Personen innerhalb einer erlaubten Gruppe den Bot auslösen können. @@ -218,24 +218,24 @@ curl "https://api.telegram.org/bot/getUpdates" - + Gruppenantworten erfordern standardmäßig eine Erwähnung. Eine Erwähnung kann kommen von: - - nativer `@botusername`-Erwähnung, oder + - einer nativen `@botusername`-Erwähnung, oder - Erwähnungsmustern in: - `agents.list[].groupChat.mentionPatterns` - `messages.groupChat.mentionPatterns` - Sitzungsbezogene Befehlsumschalter: + Befehlsumschalter auf Sitzungsebene: - `/activation always` - `/activation mention` - Diese aktualisieren nur den Sitzungsstatus. Verwenden Sie die Konfiguration für Persistenz. + Diese aktualisieren nur den Sitzungsstatus. Verwenden Sie Konfiguration für Persistenz. - Beispiel für persistente Konfiguration: + Beispiel für dauerhafte Konfiguration: ```json5 { @@ -249,11 +249,11 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Die Gruppen-Chat-ID ermitteln: + Die Gruppen-Chat-ID abrufen: - leiten Sie eine Gruppennachricht an `@userinfobot` / `@getidsbot` weiter - oder lesen Sie `chat.id` aus `openclaw logs --follow` - - oder prüfen Sie Bot API `getUpdates` + - oder prüfen Sie die Bot-API `getUpdates` @@ -261,13 +261,13 @@ curl "https://api.telegram.org/bot/getUpdates" ## Laufzeitverhalten - Telegram gehört dem Gateway-Prozess. -- Das Routing ist deterministisch: Eingehende Telegram-Antworten gehen zurück an Telegram (das Modell wählt keine Kanäle aus). -- Eingehende Nachrichten werden in den gemeinsamen Kanalumschlag mit Antwortmetadaten und Medienplatzhaltern normalisiert. -- Gruppensitzungen sind nach Gruppen-ID isoliert. Forenthemen hängen `:topic:` an, um Themen isoliert zu halten. -- DM-Nachrichten können `message_thread_id` enthalten; OpenClaw leitet sie mit threadbewussten Sitzungsschlüsseln und bewahrt die Thread-ID für Antworten. -- Long Polling verwendet den grammY-Runner mit Sequenzierung pro Chat/pro Thread. Die gesamte Runner-Sink-Parallelität verwendet `agents.defaults.maxConcurrent`. -- Neustarts des Long-Polling-Watchdogs werden standardmäßig nach 120 Sekunden ohne abgeschlossene `getUpdates`-Lebenszeichen ausgelöst. Erhöhen Sie `channels.telegram.pollingStallThresholdMs` nur, wenn Ihre Bereitstellung weiterhin falsche Polling-Stall-Neustarts während lang laufender Arbeit sieht. Der Wert ist in Millisekunden angegeben und ist von `30000` bis `600000` zulässig; Überschreibungen pro Konto werden unterstützt. -- Die Telegram Bot API unterstützt keine Lesebestätigungen (`sendReadReceipts` gilt nicht). +- Das Routing ist deterministisch: Eingehende Telegram-Antworten gehen zurück an Telegram (das Modell wählt keine Channels aus). +- Eingehende Nachrichten werden in den gemeinsamen Channel-Umschlag mit Antwortmetadaten und Medienplatzhaltern normalisiert. +- Gruppensitzungen sind nach Gruppen-ID isoliert. Forenthemen hängen `:topic:` an, damit Themen isoliert bleiben. +- DM-Nachrichten können `message_thread_id` enthalten; OpenClaw routet sie mit threadbewussten Sitzungsschlüsseln und behält die Thread-ID für Antworten bei. +- Long Polling verwendet den grammY runner mit Sequenzierung pro Chat/pro Thread. Die gesamte Sink-Parallelität des runners verwendet `agents.defaults.maxConcurrent`. +- Neustarts durch den Long-Polling-Watchdog werden standardmäßig nach 120 Sekunden ohne abgeschlossene `getUpdates`-Lebendigkeit ausgelöst. Erhöhen Sie `channels.telegram.pollingStallThresholdMs` nur, wenn Ihre Bereitstellung weiterhin falsche Neustarts wegen Polling-Stillstand bei lang laufender Arbeit sieht. Der Wert ist in Millisekunden und von `30000` bis `600000` zulässig; Überschreibungen pro Konto werden unterstützt. +- Die Telegram Bot API hat keine Unterstützung für Lesebestätigungen (`sendReadReceipts` gilt nicht). ## Funktionsreferenz @@ -275,30 +275,31 @@ curl "https://api.telegram.org/bot/getUpdates" OpenClaw kann partielle Antworten in Echtzeit streamen: - - Direktchats: Vorschaunachricht + `editMessageText` - - Gruppen/Themen: Vorschaunachricht + `editMessageText` + - Direktchats: Vorschau-Nachricht + `editMessageText` + - Gruppen/Themen: Vorschau-Nachricht + `editMessageText` Voraussetzung: - `channels.telegram.streaming` ist `off | partial | block | progress` (Standard: `partial`) - `progress` wird auf Telegram auf `partial` abgebildet (Kompatibilität mit kanalübergreifender Benennung) - - ältere `channels.telegram.streamMode`- und boolesche `streaming`-Werte werden automatisch zugeordnet + - `streaming.preview.toolProgress` steuert, ob Tool-/Fortschrittsaktualisierungen dieselbe bearbeitete Vorschau-Nachricht wiederverwenden (Standard: `true`). Setzen Sie `false`, um separate Tool-/Fortschrittsnachrichten beizubehalten. + - das alte `channels.telegram.streamMode` und boolesche `streaming`-Werte werden automatisch zugeordnet Für reine Textantworten: - - DM: OpenClaw behält dieselbe Vorschaunachricht und führt eine abschließende Bearbeitung direkt darin aus (keine zweite Nachricht) - - Gruppe/Thema: OpenClaw behält dieselbe Vorschaunachricht und führt eine abschließende Bearbeitung direkt darin aus (keine zweite Nachricht) + - DM: OpenClaw behält dieselbe Vorschau-Nachricht bei und führt abschließend eine finale In-Place-Bearbeitung aus (keine zweite Nachricht) + - Gruppe/Thema: OpenClaw behält dieselbe Vorschau-Nachricht bei und führt abschließend eine finale In-Place-Bearbeitung aus (keine zweite Nachricht) - Für komplexe Antworten (zum Beispiel Medien-Payloads) fällt OpenClaw auf die normale endgültige Zustellung zurück und bereinigt anschließend die Vorschaunachricht. + Für komplexe Antworten (zum Beispiel Medien-Payloads) fällt OpenClaw auf die normale finale Zustellung zurück und räumt anschließend die Vorschau-Nachricht auf. Vorschau-Streaming ist getrennt von Block-Streaming. Wenn Block-Streaming für Telegram explizit aktiviert ist, überspringt OpenClaw den Vorschau-Stream, um doppeltes Streaming zu vermeiden. - Wenn der native Entwurfs-Transport nicht verfügbar ist oder abgelehnt wird, fällt OpenClaw automatisch auf `sendMessage` + `editMessageText` zurück. + Wenn der native Draft-Transport nicht verfügbar ist oder abgelehnt wird, fällt OpenClaw automatisch auf `sendMessage` + `editMessageText` zurück. - Nur-Telegram-Reasoning-Stream: + Nur Telegram-Reasoning-Stream: - - `/reasoning stream` sendet während der Generierung Reasoning an die Live-Vorschau - - die endgültige Antwort wird ohne Reasoning-Text gesendet + - `/reasoning stream` sendet das Reasoning während der Generierung an die Live-Vorschau + - die finale Antwort wird ohne Reasoning-Text gesendet @@ -314,13 +315,13 @@ curl "https://api.telegram.org/bot/getUpdates" - Die Registrierung des Telegram-Befehlsmenüs wird beim Start mit `setMyCommands` verarbeitet. + Die Registrierung des Telegram-Befehlsmenüs wird beim Start mit `setMyCommands` durchgeführt. Standardwerte für native Befehle: - `commands.native: "auto"` aktiviert native Befehle für Telegram - Benutzerdefinierte Befehlsmenüeinträge hinzufügen: + Eigene Einträge zum Befehlsmenü hinzufügen: ```json5 { @@ -344,21 +345,21 @@ curl "https://api.telegram.org/bot/getUpdates" Hinweise: - - benutzerdefinierte Befehle sind nur Menüeinträge; sie implementieren das Verhalten nicht automatisch + - benutzerdefinierte Befehle sind nur Menüeinträge; sie implementieren kein Verhalten automatisch - Plugin-/Skills-Befehle können weiterhin funktionieren, wenn sie eingegeben werden, auch wenn sie nicht im Telegram-Menü angezeigt werden - Wenn native Befehle deaktiviert sind, werden eingebaute entfernt. Benutzerdefinierte/Plugin-Befehle können sich bei entsprechender Konfiguration weiterhin registrieren. + Wenn native Befehle deaktiviert sind, werden integrierte Befehle entfernt. Benutzerdefinierte/Plugin-Befehle können bei entsprechender Konfiguration weiterhin registriert werden. Häufige Einrichtungsfehler: - - `setMyCommands failed` mit `BOT_COMMANDS_TOO_MUCH` bedeutet, dass das Telegram-Menü auch nach dem Kürzen noch überlaufen ist; reduzieren Sie Plugin-/Skills-/benutzerdefinierte Befehle oder deaktivieren Sie `channels.telegram.commands.native`. + - `setMyCommands failed` mit `BOT_COMMANDS_TOO_MUCH` bedeutet, dass das Telegram-Menü auch nach dem Kürzen noch überfüllt war; reduzieren Sie Plugin-/Skills-/benutzerdefinierte Befehle oder deaktivieren Sie `channels.telegram.commands.native`. - `setMyCommands failed` mit Netzwerk-/Fetch-Fehlern bedeutet in der Regel, dass ausgehendes DNS/HTTPS zu `api.telegram.org` blockiert ist. - ### Gerätekopplungsbefehle (`device-pair`-Plugin) + ### Gerätekopplungsbefehle (`device-pair` Plugin) - Wenn das `device-pair`-Plugin installiert ist: + Wenn das `device-pair` Plugin installiert ist: - 1. `/pair` erzeugt einen Einrichtungs-Code + 1. `/pair` erzeugt einen Einrichtungscode 2. fügen Sie den Code in der iOS-App ein 3. `/pair pending` listet ausstehende Anfragen auf (einschließlich Rolle/Scopes) 4. genehmigen Sie die Anfrage: @@ -366,16 +367,16 @@ curl "https://api.telegram.org/bot/getUpdates" - `/pair approve`, wenn es nur eine ausstehende Anfrage gibt - `/pair approve latest` für die neueste - Der Einrichtungs-Code enthält ein kurzlebiges Bootstrap-Token. Die integrierte Bootstrap-Übergabe hält das primäre Node-Token bei `scopes: []`; jedes übergebene Operator-Token bleibt auf `operator.approvals`, `operator.read`, `operator.talk.secrets` und `operator.write` begrenzt. Bootstrap-Umfangsprüfungen sind rollenpräfixiert, sodass diese Operator-Allowlist nur Operator-Anfragen erfüllt; Nicht-Operator-Rollen benötigen weiterhin Scopes unter ihrem eigenen Rollenpräfix. + Der Einrichtungscode enthält ein kurzlebiges Bootstrap-Token. Die integrierte Bootstrap-Übergabe hält das primäre Node-Token bei `scopes: []`; jedes übergebene Operator-Token bleibt auf `operator.approvals`, `operator.read`, `operator.talk.secrets` und `operator.write` begrenzt. Bootstrap-Scopes-Prüfungen sind rollenpräfigiert, sodass diese Operator-Allowlist nur Operator-Anfragen erfüllt; Nicht-Operator-Rollen benötigen weiterhin Scopes unter ihrem eigenen Rollenpräfix. - Wenn ein Gerät mit geänderten Auth-Details erneut versucht (zum Beispiel Rolle/Scopes/Public Key), wird die vorherige ausstehende Anfrage ersetzt und die neue Anfrage verwendet eine andere `requestId`. Führen Sie vor der Genehmigung erneut `/pair pending` aus. + Wenn ein Gerät es mit geänderten Auth-Details erneut versucht (zum Beispiel Rolle/Scopes/öffentlicher Schlüssel), wird die vorherige ausstehende Anfrage ersetzt und die neue Anfrage verwendet eine andere `requestId`. Führen Sie vor der Genehmigung erneut `/pair pending` aus. Weitere Details: [Kopplung](/de/channels/pairing#pair-via-telegram-recommended-for-ios). - Konfigurieren Sie den Geltungsbereich der Inline-Tastatur: + Bereich für die Inline-Tastatur konfigurieren: ```json5 { @@ -407,7 +408,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Geltungsbereiche: + Bereiche: - `off` - `dm` @@ -415,9 +416,9 @@ curl "https://api.telegram.org/bot/getUpdates" - `all` - `allowlist` (Standard) - Das ältere `capabilities: ["inlineButtons"]` wird auf `inlineButtons: "all"` abgebildet. + Das alte `capabilities: ["inlineButtons"]` wird auf `inlineButtons: "all"` abgebildet. - Beispiel für Nachrichtenaktion: + Beispiel für eine Nachrichtenaktion: ```json5 { @@ -435,12 +436,12 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Callback-Klicks werden als Text an den Agent weitergegeben: + Callback-Klicks werden als Text an den Agenten übergeben: `callback_data: ` - + Telegram-Tool-Aktionen umfassen: - `sendMessage` (`to`, `content`, optional `mediaUrl`, `replyToMessageId`, `messageThreadId`) @@ -449,7 +450,7 @@ curl "https://api.telegram.org/bot/getUpdates" - `editMessage` (`chatId`, `messageId`, `content`) - `createForumTopic` (`chatId`, `name`, optional `iconColor`, `iconCustomEmojiId`) - Kanal-Nachrichtenaktionen stellen ergonomische Aliasse bereit (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`). + Channel-Nachrichtenaktionen stellen ergonomische Aliase bereit (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`). Steuerungsoptionen: @@ -459,14 +460,14 @@ curl "https://api.telegram.org/bot/getUpdates" - `channels.telegram.actions.sticker` (Standard: deaktiviert) Hinweis: `edit` und `topic-create` sind derzeit standardmäßig aktiviert und haben keine separaten `channels.telegram.actions.*`-Schalter. - Laufzeit-Sendungen verwenden den aktiven Snapshot von Konfiguration/Secrets (Start/Reload), daher führen Aktionspfade keine ad-hoc-`SecretRef`-Neuauflösung pro Sendevorgang aus. + Laufzeitsendungen verwenden den aktiven Snapshot von config/secrets (Start/Reload), daher führen Aktionspfade keine ad-hoc-SecretRef-Neuauflösung pro Sendung aus. - Semantik für das Entfernen von Reaktionen: [/tools/reactions](/de/tools/reactions) + Semantik zum Entfernen von Reaktionen: [/tools/reactions](/de/tools/reactions) - - Telegram unterstützt explizite Antwort-Threading-Tags in generierter Ausgabe: + + Telegram unterstützt explizite Reply-Threading-Tags in generierter Ausgabe: - `[[reply_to_current]]` antwortet auf die auslösende Nachricht - `[[reply_to:]]` antwortet auf eine bestimmte Telegram-Nachrichten-ID @@ -477,27 +478,27 @@ curl "https://api.telegram.org/bot/getUpdates" - `first` - `all` - Hinweis: `off` deaktiviert implizites Antwort-Threading. Explizite `[[reply_to_*]]`-Tags werden weiterhin beachtet. + Hinweis: `off` deaktiviert implizites Reply-Threading. Explizite `[[reply_to_*]]`-Tags werden weiterhin beachtet. Forum-Supergruppen: - - Sitzungsschlüssel für Themen hängen `:topic:` an - - Antworten und Tippindikatoren zielen auf den Themen-Thread - - Themen-Konfigurationspfad: + - Topic-Sitzungsschlüssel hängen `:topic:` an + - Antworten und Tippen zielen auf den Themen-Thread + - Topic-Konfigurationspfad: `channels.telegram.groups..topics.` - Sonderfall Allgemeines Thema (`threadId=1`): + Sonderfall „Allgemeines Thema“ (`threadId=1`): - Nachrichtensendungen lassen `message_thread_id` weg (Telegram lehnt `sendMessage(...thread_id=1)` ab) - Tippaktionen enthalten weiterhin `message_thread_id` - Themenvererbung: Themeneinträge erben Gruppeneinstellungen, sofern sie nicht überschrieben werden (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`). - `agentId` ist nur themenspezifisch und wird nicht von Gruppenstandards geerbt. + Topic-Vererbung: Topic-Einträge erben Gruppeneinstellungen, sofern sie nicht überschrieben werden (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`). + `agentId` ist nur für Topics und wird nicht von Gruppenstandards geerbt. - **Agent-Routing pro Thema**: Jedes Thema kann durch Setzen von `agentId` in der Themenkonfiguration an einen anderen Agent weiterleiten. Dadurch erhält jedes Thema seinen eigenen isolierten Arbeitsbereich, Speicher und seine eigene Sitzung. Beispiel: + **Agent-Routing pro Topic**: Jedes Topic kann durch Setzen von `agentId` in der Topic-Konfiguration an einen anderen Agenten weiterleiten. Dadurch erhält jedes Topic seinen eigenen isolierten Workspace, Speicher und seine eigene Sitzung. Beispiel: ```json5 { @@ -507,7 +508,7 @@ curl "https://api.telegram.org/bot/getUpdates" "-1001234567890": { topics: { "1": { agentId: "main" }, // Allgemeines Thema → Haupt-Agent - "3": { agentId: "zu" }, // Dev-Thema → zu-Agent + "3": { agentId: "zu" }, // Entwicklungsthema → zu-Agent "5": { agentId: "coder" } // Code-Review → coder-Agent } } @@ -517,9 +518,9 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Jedes Thema hat dann seinen eigenen Sitzungsschlüssel: `agent:zu:telegram:group:-1001234567890:topic:3` + Jedes Topic hat dann seinen eigenen Sitzungsschlüssel: `agent:zu:telegram:group:-1001234567890:topic:3` - **Persistente ACP-Themenbindung**: Forenthemen können ACP-Harness-Sitzungen über typisierte ACP-Bindungen auf oberster Ebene anheften: + **Persistente ACP-Topic-Bindung**: Forenthemen können ACP-Harness-Sitzungen über typisierte ACP-Bindungen auf oberster Ebene anheften: - `bindings[]` mit `type: "acp"` und `match.channel: "telegram"` @@ -574,31 +575,31 @@ curl "https://api.telegram.org/bot/getUpdates" **Thread-gebundener ACP-Spawn aus dem Chat**: - - `/acp spawn --thread here|auto` kann das aktuelle Telegram-Thema an eine neue ACP-Sitzung binden. - - Nachfolgende Themen-Nachrichten werden direkt an die gebundene ACP-Sitzung weitergeleitet (kein `/acp steer` erforderlich). - - OpenClaw pinnt die Spawn-Bestätigungsnachricht nach einer erfolgreichen Bindung im Thema an. + - `/acp spawn --thread here|auto` kann das aktuelle Telegram-Topic an eine neue ACP-Sitzung binden. + - Nachfolgende Topic-Nachrichten werden direkt an die gebundene ACP-Sitzung geleitet (kein `/acp steer` erforderlich). + - OpenClaw heftet die Spawn-Bestätigungsnachricht nach einer erfolgreichen Bindung im Topic an. - Erfordert `channels.telegram.threadBindings.spawnAcpSessions=true`. - Der Vorlagenkontext umfasst: + Der Vorlagenkontext enthält: - `MessageThreadId` - `IsForum` DM-Thread-Verhalten: - - private Chats mit `message_thread_id` behalten DM-Routing bei, verwenden aber threadbewusste Sitzungsschlüssel/Antwortziele. + - Private Chats mit `message_thread_id` behalten DM-Routing bei, verwenden aber threadbewusste Sitzungsschlüssel/Antwortziele. - ### Audio-Nachrichten + ### Audionachrichten - Telegram unterscheidet zwischen Sprachnachrichten und Audiodateien. + Telegram unterscheidet zwischen Sprachnotizen und Audiodateien. - - Standard: Verhalten von Audiodateien - - Tag `[[audio_as_voice]]` in der Agent-Antwort, um das Senden als Sprachnachricht zu erzwingen + - Standard: Verhalten für Audiodateien + - Tag `[[audio_as_voice]]` in der Agent-Antwort, um das Senden als Sprachnotiz zu erzwingen - Beispiel für Nachrichtenaktion: + Beispiel für eine Nachrichtenaktion: ```json5 { @@ -610,11 +611,11 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - ### Video-Nachrichten + ### Videonachrichten Telegram unterscheidet zwischen Videodateien und Videonotizen. - Beispiel für Nachrichtenaktion: + Beispiel für eine Nachrichtenaktion: ```json5 { @@ -632,9 +633,9 @@ curl "https://api.telegram.org/bot/getUpdates" Verarbeitung eingehender Sticker: - - statisches WEBP: wird heruntergeladen und verarbeitet (Platzhalter ``) - - animiertes TGS: wird übersprungen - - Video-WEBM: wird übersprungen + - statisches WEBP: heruntergeladen und verarbeitet (Platzhalter ``) + - animiertes TGS: übersprungen + - Video-WEBM: übersprungen Sticker-Kontextfelder: @@ -664,7 +665,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Sticker-Aktion zum Senden: + Sticker-Sendeaktion: ```json5 { @@ -688,7 +689,7 @@ curl "https://api.telegram.org/bot/getUpdates" - + Telegram-Reaktionen kommen als `message_reaction`-Updates an (getrennt von Nachrichten-Payloads). Wenn aktiviert, reiht OpenClaw Systemereignisse ein wie: @@ -702,37 +703,37 @@ curl "https://api.telegram.org/bot/getUpdates" Hinweise: - - `own` bedeutet nur Benutzerreaktionen auf vom Bot gesendete Nachrichten (Best-Effort über den Gesendet-Nachrichten-Cache). - - Reaktionsereignisse beachten weiterhin die Telegram-Zugriffskontrollen (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); nicht autorisierte Absender werden verworfen. - - Telegram stellt in Reaktions-Updates keine Thread-IDs bereit. + - `own` bedeutet nur Benutzerreaktionen auf vom Bot gesendete Nachrichten (Best Effort über den Cache gesendeter Nachrichten). + - Reaktionsereignisse respektieren weiterhin die Telegram-Zugriffskontrollen (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); nicht autorisierte Absender werden verworfen. + - Telegram liefert in Reaktions-Updates keine Thread-IDs. - Nicht-Forum-Gruppen werden an die Gruppenchat-Sitzung geleitet - Forum-Gruppen werden an die Sitzung des allgemeinen Gruppenthemas (`:topic:1`) geleitet, nicht an das genaue Ursprungsthema - `allowed_updates` für Polling/Webhook enthalten `message_reaction` automatisch. + `allowed_updates` für Polling/Webhook enthalten automatisch `message_reaction`. `ackReaction` sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet. - Reihenfolge der Auflösung: + Auflösungsreihenfolge: - `channels.telegram.accounts..ackReaction` - `channels.telegram.ackReaction` - `messages.ackReaction` - - Emoji-Fallback der Agent-Identität (`agents.list[].identity.emoji`, sonst "👀") + - Fallback auf das Emoji der Agent-Identität (`agents.list[].identity.emoji`, sonst "👀") Hinweise: - Telegram erwartet Unicode-Emoji (zum Beispiel "👀"). - - Verwenden Sie `""`, um die Reaktion für einen Kanal oder ein Konto zu deaktivieren. + - Verwenden Sie `""`, um die Reaktion für einen Channel oder ein Konto zu deaktivieren. - Schreibvorgänge in die Kanalkonfiguration sind standardmäßig aktiviert (`configWrites !== false`). + Schreibvorgänge in die Channel-Konfiguration sind standardmäßig aktiviert (`configWrites !== false`). - Durch Telegram ausgelöste Schreibvorgänge umfassen: + Von Telegram ausgelöste Schreibvorgänge umfassen: - Gruppenmigrationsereignisse (`migrate_to_chat_id`) zum Aktualisieren von `channels.telegram.groups` - `/config set` und `/config unset` (erfordert aktivierte Befehle) @@ -756,32 +757,32 @@ curl "https://api.telegram.org/bot/getUpdates" Webhook-Modus: - - setzen Sie `channels.telegram.webhookUrl` - - setzen Sie `channels.telegram.webhookSecret` (erforderlich, wenn eine Webhook-URL gesetzt ist) + - `channels.telegram.webhookUrl` setzen + - `channels.telegram.webhookSecret` setzen (erforderlich, wenn eine Webhook-URL gesetzt ist) - optional `channels.telegram.webhookPath` (Standard `/telegram-webhook`) - optional `channels.telegram.webhookHost` (Standard `127.0.0.1`) - optional `channels.telegram.webhookPort` (Standard `8787`) - Der standardmäßige lokale Listener für den Webhook-Modus bindet an `127.0.0.1:8787`. + Der lokale Standard-Listener für den Webhook-Modus bindet an `127.0.0.1:8787`. - Wenn sich Ihr öffentlicher Endpunkt unterscheidet, schalten Sie einen Reverse Proxy davor und lassen `webhookUrl` auf die öffentliche URL zeigen. + Wenn sich Ihr öffentlicher Endpunkt unterscheidet, schalten Sie einen Reverse-Proxy davor und verweisen Sie `webhookUrl` auf die öffentliche URL. Setzen Sie `webhookHost` (zum Beispiel `0.0.0.0`), wenn Sie absichtlich externen Ingress benötigen. - + - Der Standardwert für `channels.telegram.textChunkLimit` ist 4000. - `channels.telegram.chunkMode="newline"` bevorzugt Absatzgrenzen (Leerzeilen) vor einer Aufteilung nach Länge. - `channels.telegram.mediaMaxMb` (Standard 100) begrenzt die Größe eingehender und ausgehender Telegram-Medien. - `channels.telegram.timeoutSeconds` überschreibt das Timeout des Telegram-API-Clients (wenn nicht gesetzt, gilt der grammY-Standard). - - `channels.telegram.pollingStallThresholdMs` hat standardmäßig den Wert `120000`; passen Sie ihn nur zwischen `30000` und `600000` an, wenn es zu falsch-positiven Neustarts wegen Polling-Stillstand kommt. - - Der Gruppenkontextverlauf verwendet `channels.telegram.historyLimit` oder `messages.groupChat.historyLimit` (Standard 50); `0` deaktiviert ihn. - - Zusätzlicher Kontext für Antworten/Zitate/Weiterleitungen wird derzeit so weitergegeben, wie er empfangen wurde. - - Telegram-Allowlists steuern in erster Linie, wer den Agent auslösen kann, nicht eine vollständige Grenze zur Redigierung von Zusatzkontext. - - DM-Verlaufskontrollen: + - `channels.telegram.pollingStallThresholdMs` hat standardmäßig den Wert `120000`; stellen Sie Werte zwischen `30000` und `600000` nur für Fehlalarme bei Neustarts wegen Polling-Stillstand ein. + - Der Verlauf des Gruppenkontexts verwendet `channels.telegram.historyLimit` oder `messages.groupChat.historyLimit` (Standard 50); `0` deaktiviert ihn. + - Zusätzlicher Kontext aus Antworten/Zitaten/Weiterleitungen wird derzeit wie empfangen weitergegeben. + - Telegram-Allowlists steuern in erster Linie, wer den Agenten auslösen kann, und sind keine vollständige Redaktionsgrenze für zusätzlichen Kontext. + - DM-Verlaufssteuerungen: - `channels.telegram.dmHistoryLimit` - `channels.telegram.dms[""].historyLimit` - - Die Konfiguration `channels.telegram.retry` gilt für Telegram-Sendehilfen (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern. + - Die Konfiguration `channels.telegram.retry` gilt für Telegram-Sendehelfer (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern. Das CLI-Sendeziel kann eine numerische Chat-ID oder ein Benutzername sein: @@ -800,7 +801,7 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \ --poll-duration-seconds 300 --poll-public ``` - Nur-Telegram-Umfrage-Flags: + Nur Telegram-Umfrage-Flags: - `--poll-duration-seconds` (5-600) - `--poll-anonymous` @@ -809,54 +810,54 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \ Telegram-Senden unterstützt außerdem: - - `--buttons` für Inline-Tastaturen, wenn `channels.telegram.capabilities.inlineButtons` dies für die Zieloberfläche erlaubt - - `--force-document`, um ausgehende Bilder und GIFs als Dokumente statt als komprimierte Fotos oder Uploads animierter Medien zu senden + - `--buttons` für Inline-Tastaturen, wenn `channels.telegram.capabilities.inlineButtons` die Zielfläche erlaubt + - `--force-document`, um ausgehende Bilder und GIFs als Dokumente statt als komprimierte Foto- oder animierte Medien-Uploads zu senden Aktionssteuerung: - `channels.telegram.actions.sendMessage=false` deaktiviert ausgehende Telegram-Nachrichten, einschließlich Umfragen - - `channels.telegram.actions.poll=false` deaktiviert das Erstellen von Telegram-Umfragen, während reguläres Senden aktiviert bleibt + - `channels.telegram.actions.poll=false` deaktiviert die Erstellung von Telegram-Umfragen, während reguläre Sendungen aktiviert bleiben - Telegram unterstützt Exec-Genehmigungen in Genehmiger-DMs und kann Genehmigungsaufforderungen optional im ursprünglichen Chat oder Thema posten. + Telegram unterstützt Exec-Genehmigungen in Approver-DMs und kann Genehmigungsaufforderungen optional im ursprünglichen Chat oder Topic posten. Konfigurationspfad: - `channels.telegram.execApprovals.enabled` - - `channels.telegram.execApprovals.approvers` (optional; greift, wenn möglich, auf numerische Eigentümer-IDs zurück, die aus `allowFrom` und direktem `defaultTo` abgeleitet werden) + - `channels.telegram.execApprovals.approvers` (optional; fällt, wenn möglich, auf numerische Eigentümer-IDs zurück, die aus `allowFrom` und direktem `defaultTo` abgeleitet werden) - `channels.telegram.execApprovals.target` (`dm` | `channel` | `both`, Standard: `dm`) - `agentFilter`, `sessionFilter` - Genehmiger müssen numerische Telegram-Benutzer-IDs sein. Telegram aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein Genehmiger aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus der numerischen Eigentümerkonfiguration des Kontos (`allowFrom` und Direktnachrichten-`defaultTo`). Setzen Sie `enabled: false`, um Telegram explizit als nativen Genehmigungsclient zu deaktivieren. Genehmigungsanfragen greifen andernfalls auf andere konfigurierte Genehmigungsrouten oder die Fallback-Richtlinie für Exec-Genehmigungen zurück. + Approver müssen numerische Telegram-Benutzer-IDs sein. Telegram aktiviert native Exec-Genehmigungen automatisch, wenn `enabled` nicht gesetzt oder `"auto"` ist und mindestens ein Approver aufgelöst werden kann, entweder aus `execApprovals.approvers` oder aus der numerischen Eigentümerkonfiguration des Kontos (`allowFrom` und Direktnachrichten-`defaultTo`). Setzen Sie `enabled: false`, um Telegram explizit als nativen Genehmigungs-Client zu deaktivieren. Andernfalls fallen Genehmigungsanfragen auf andere konfigurierte Genehmigungsrouten oder die Fallback-Richtlinie für Exec-Genehmigungen zurück. - Telegram rendert auch die gemeinsamen Genehmigungsschaltflächen, die von anderen Chat-Kanälen verwendet werden. Der native Telegram-Adapter ergänzt hauptsächlich die Weiterleitung von Genehmiger-DMs, die Verteilung auf Kanal/Thema und Tipp-Hinweise vor der Zustellung. + Telegram rendert außerdem die gemeinsamen Genehmigungsschaltflächen, die von anderen Chat-Channels verwendet werden. Der native Telegram-Adapter ergänzt hauptsächlich das Routing von Approver-DMs, die Verteilung auf Channels/Topics und Tipp-Hinweise vor der Zustellung. Wenn diese Schaltflächen vorhanden sind, sind sie die primäre UX für Genehmigungen; OpenClaw - sollte einen manuellen `/approve`-Befehl nur einfügen, wenn das Tool-Ergebnis angibt, - dass Chat-Genehmigungen nicht verfügbar sind oder die manuelle Genehmigung der einzige Weg ist. + sollte einen manuellen `/approve`-Befehl nur dann einfügen, wenn das Tool-Ergebnis sagt, + dass Chat-Genehmigungen nicht verfügbar sind oder manuelle Genehmigung der einzige Weg ist. - Zustellregeln: + Zustellungsregeln: - - `target: "dm"` sendet Genehmigungsaufforderungen nur an aufgelöste Genehmiger-DMs - - `target: "channel"` sendet die Aufforderung zurück an den ursprünglichen Telegram-Chat/das ursprüngliche Thema - - `target: "both"` sendet an Genehmiger-DMs und den ursprünglichen Chat/das ursprüngliche Thema + - `target: "dm"` sendet Genehmigungsaufforderungen nur an aufgelöste Approver-DMs + - `target: "channel"` sendet die Aufforderung zurück an den ursprünglichen Telegram-Chat/das ursprüngliche Topic + - `target: "both"` sendet an Approver-DMs und den ursprünglichen Chat/das ursprüngliche Topic - Nur aufgelöste Genehmiger können genehmigen oder ablehnen. Nicht-Genehmiger können `/approve` nicht verwenden und keine Telegram-Genehmigungsschaltflächen benutzen. + Nur aufgelöste Approver können genehmigen oder ablehnen. Nicht-Approver können `/approve` nicht verwenden und auch die Telegram-Genehmigungsschaltflächen nicht nutzen. Verhalten bei der Genehmigungsauflösung: - - IDs mit dem Präfix `plugin:` werden immer über Plugin-Genehmigungen aufgelöst. + - Mit `plugin:` präfixierte IDs werden immer über Plugin-Genehmigungen aufgelöst. - Andere Genehmigungs-IDs versuchen zuerst `exec.approval.resolve`. - - Wenn Telegram auch für Plugin-Genehmigungen autorisiert ist und das Gateway meldet, + - Wenn Telegram auch für Plugin-Genehmigungen autorisiert ist und das Gateway sagt, dass die Exec-Genehmigung unbekannt/abgelaufen ist, versucht Telegram es einmal erneut über `plugin.approval.resolve`. - - Echte Ablehnungen/Fehler bei Exec-Genehmigungen fallen nicht stillschweigend auf die Auflösung - von Plugin-Genehmigungen zurück. + - Echte Ablehnungen/Fehler bei Exec-Genehmigungen fallen nicht stillschweigend auf die + Auflösung von Plugin-Genehmigungen zurück. - Die Zustellung im Kanal zeigt den Befehlstext im Chat an, aktivieren Sie daher `channel` oder `both` nur in vertrauenswürdigen Gruppen/Themen. Wenn die Aufforderung in einem Forenthema landet, bewahrt OpenClaw das Thema sowohl für die Genehmigungsaufforderung als auch für die Nachverfolgung nach der Genehmigung. Exec-Genehmigungen laufen standardmäßig nach 30 Minuten ab. + Die Zustellung an Channels zeigt den Befehlstext im Chat an, also aktivieren Sie `channel` oder `both` nur in vertrauenswürdigen Gruppen/Topics. Wenn die Aufforderung in einem Forum-Topic landet, behält OpenClaw das Topic sowohl für die Genehmigungsaufforderung als auch für die Nachverfolgung nach der Genehmigung bei. Exec-Genehmigungen laufen standardmäßig nach 30 Minuten ab. - Inline-Genehmigungsschaltflächen hängen außerdem davon ab, dass `channels.telegram.capabilities.inlineButtons` die Zieloberfläche erlaubt (`dm`, `group` oder `all`). + Inline-Genehmigungsschaltflächen hängen außerdem davon ab, dass `channels.telegram.capabilities.inlineButtons` die Zielfläche (`dm`, `group` oder `all`) erlaubt. Verwandte Dokumentation: [Exec-Genehmigungen](/de/tools/exec-approvals) @@ -865,14 +866,14 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \ ## Steuerung von Fehlerantworten -Wenn der Agent auf einen Zustellungs- oder Providerfehler stößt, kann Telegram entweder mit dem Fehlertext antworten oder ihn unterdrücken. Zwei Konfigurationsschlüssel steuern dieses Verhalten: +Wenn beim Agenten ein Zustellungs- oder Provider-Fehler auftritt, kann Telegram entweder mit dem Fehlertext antworten oder ihn unterdrücken. Zwei Konfigurationsschlüssel steuern dieses Verhalten: -| Schlüssel | Werte | Standard | Beschreibung | -| ----------------------------------- | ----------------- | -------- | ------------------------------------------------------------------------------------------------- | -| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` sendet eine benutzerfreundliche Fehlermeldung an den Chat. `silent` unterdrückt Fehlerantworten vollständig. | -| `channels.telegram.errorCooldownMs` | Zahl (ms) | `60000` | Mindestzeit zwischen Fehlerantworten an denselben Chat. Verhindert Fehler-Spam bei Ausfällen. | +| Key | Values | Default | Description | +| ----------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | +| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` sendet eine freundliche Fehlermeldung an den Chat. `silent` unterdrückt Fehlerantworten vollständig. | +| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Mindestzeit zwischen Fehlerantworten an denselben Chat. Verhindert Fehler-Spam bei Ausfällen. | -Überschreibungen pro Konto, pro Gruppe und pro Thema werden unterstützt (gleiche Vererbung wie bei anderen Telegram-Konfigurationsschlüsseln). +Überschreibungen pro Konto, pro Gruppe und pro Topic werden unterstützt (dieselbe Vererbung wie bei anderen Telegram-Konfigurationsschlüsseln). ```json5 { @@ -895,40 +896,40 @@ Wenn der Agent auf einen Zustellungs- oder Providerfehler stößt, kann Telegram - - Wenn `requireMention=false`, muss der Telegram-Datenschutzmodus vollständige Sichtbarkeit erlauben. + - Wenn `requireMention=false`, muss der Telegram-Datenschutzmodus volle Sichtbarkeit erlauben. - BotFather: `/setprivacy` -> Deaktivieren - - dann Bot aus der Gruppe entfernen und erneut hinzufügen + - dann den Bot aus der Gruppe entfernen und erneut hinzufügen - `openclaw channels status` warnt, wenn die Konfiguration Gruppennachrichten ohne Erwähnung erwartet. - - `openclaw channels status --probe` kann explizite numerische Gruppen-IDs prüfen; der Platzhalter `"*"` kann nicht auf Mitgliedschaft geprüft werden. + - `openclaw channels status --probe` kann explizite numerische Gruppen-IDs prüfen; der Platzhalter `"*"` kann nicht per Mitgliedschaft geprüft werden. - schneller Sitzungstest: `/activation always`. - - wenn `channels.telegram.groups` existiert, muss die Gruppe aufgeführt sein (oder `"*"` enthalten) - - prüfen Sie die Bot-Mitgliedschaft in der Gruppe - - prüfen Sie die Logs: `openclaw logs --follow` auf Gründe für das Überspringen + - wenn `channels.telegram.groups` existiert, muss die Gruppe aufgelistet sein (oder `"*"` enthalten) + - Bot-Mitgliedschaft in der Gruppe verifizieren + - Logs prüfen: `openclaw logs --follow` auf Gründe für das Überspringen - + - - autorisieren Sie Ihre Absenderidentität (Pairing und/oder numerisches `allowFrom`) + - autorisieren Sie Ihre Absenderidentität (Kopplung und/oder numerisches `allowFrom`) - die Befehlsautorisierung gilt weiterhin, auch wenn die Gruppenrichtlinie `open` ist - `setMyCommands failed` mit `BOT_COMMANDS_TOO_MUCH` bedeutet, dass das native Menü zu viele Einträge hat; reduzieren Sie Plugin-/Skills-/benutzerdefinierte Befehle oder deaktivieren Sie native Menüs - - `setMyCommands failed` mit Netzwerk-/Fetch-Fehlern weist in der Regel auf Erreichbarkeitsprobleme bei DNS/HTTPS zu `api.telegram.org` hin + - `setMyCommands failed` mit Netzwerk-/Fetch-Fehlern deutet in der Regel auf DNS-/HTTPS-Erreichbarkeitsprobleme zu `api.telegram.org` hin - - Node 22+ + benutzerdefiniertes Fetch/Proxy kann ein sofortiges Abbruchverhalten auslösen, wenn `AbortSignal`-Typen nicht übereinstimmen. - - Einige Hosts lösen `api.telegram.org` zuerst zu IPv6 auf; defekter IPv6-Ausgang kann zu intermittierenden Telegram-API-Fehlern führen. - - Wenn die Logs `TypeError: fetch failed` oder `Network request for 'getUpdates' failed!` enthalten, versucht OpenClaw diese nun als behebbare Netzwerkfehler erneut. - - Wenn die Logs `Polling stall detected` enthalten, startet OpenClaw das Polling neu und baut den Telegram-Transport standardmäßig nach 120 Sekunden ohne abgeschlossene Long-Poll-Lebenszeichen neu auf. - - Erhöhen Sie `channels.telegram.pollingStallThresholdMs` nur, wenn lang laufende `getUpdates`-Aufrufe gesund sind, Ihr Host aber weiterhin falsch-positive Neustarts wegen Polling-Stillstand meldet. Andauernde Stillstände deuten in der Regel auf Probleme mit Proxy, DNS, IPv6 oder TLS-Ausgang zwischen dem Host und `api.telegram.org` hin. - - Auf VPS-Hosts mit instabilem direktem Ausgang/TLS leiten Sie Telegram-API-Aufrufe über `channels.telegram.proxy`: + - Node 22+ + benutzerdefiniertes Fetch/Proxy können ein sofortiges Abbruchverhalten auslösen, wenn AbortSignal-Typen nicht übereinstimmen. + - Einige Hosts lösen `api.telegram.org` zuerst in IPv6 auf; fehlerhaftes IPv6-Egress kann zu sporadischen Telegram-API-Fehlern führen. + - Wenn Logs `TypeError: fetch failed` oder `Network request for 'getUpdates' failed!` enthalten, versucht OpenClaw diese jetzt als behebbare Netzwerkfehler erneut. + - Wenn Logs `Polling stall detected` enthalten, startet OpenClaw das Polling neu und baut den Telegram-Transport standardmäßig nach 120 Sekunden ohne abgeschlossene Long-Poll-Lebendigkeit neu auf. + - Erhöhen Sie `channels.telegram.pollingStallThresholdMs` nur, wenn lang laufende `getUpdates`-Aufrufe gesund sind, Ihr Host aber weiterhin Fehlalarme bei Neustarts wegen Polling-Stillstand meldet. Anhaltende Stillstände weisen normalerweise auf Proxy-, DNS-, IPv6- oder TLS-Egress-Probleme zwischen dem Host und `api.telegram.org` hin. + - Auf VPS-Hosts mit instabilem direktem Egress/TLS leiten Sie Telegram-API-Aufrufe über `channels.telegram.proxy`: ```yaml channels: @@ -937,7 +938,7 @@ channels: ``` - Node 22+ verwendet standardmäßig `autoSelectFamily=true` (außer WSL2) und `dnsResultOrder=ipv4first`. - - Wenn Ihr Host WSL2 ist oder explizit besser mit IPv4-only-Verhalten funktioniert, erzwingen Sie die Familienauswahl: + - Wenn Ihr Host WSL2 ist oder explizit besser mit reinem IPv4-Verhalten funktioniert, erzwingen Sie die Familienauswahl: ```yaml channels: @@ -946,10 +947,11 @@ channels: autoSelectFamily: false ``` - - Antworten aus dem RFC-2544-Benchmarkbereich (`198.18.0.0/15`) sind für Telegram-Mediendownloads standardmäßig bereits erlaubt. - Wenn eine vertrauenswürdige Fake-IP oder ein transparenter Proxy `api.telegram.org` bei Mediendownloads auf - eine andere private/interne/Special-Use-Adresse umschreibt, können Sie den - nur für Telegram geltenden Bypass aktivieren: + - Antworten aus dem RFC-2544-Benchmark-Bereich (`198.18.0.0/15`) sind bereits standardmäßig + für Telegram-Mediendownloads erlaubt. Wenn ein vertrauenswürdiges Fake-IP- oder + transparentes Proxy `api.telegram.org` bei Mediendownloads auf eine andere + private/interne/spezielle Adresse umschreibt, können Sie sich bewusst + für die nur Telegram betreffende Umgehung entscheiden: ```yaml channels: @@ -958,18 +960,18 @@ channels: dangerouslyAllowPrivateNetwork: true ``` - - Dieselbe Aktivierung ist pro Konto verfügbar unter - `channels.telegram.accounts..network.dangerouslyAllowPrivateNetwork`. + - Dieselbe bewusste Aktivierung ist auch pro Konto unter + `channels.telegram.accounts..network.dangerouslyAllowPrivateNetwork` verfügbar. - Wenn Ihr Proxy Telegram-Media-Hosts in `198.18.x.x` auflöst, lassen Sie das - gefährliche Flag zunächst ausgeschaltet. Telegram-Medien erlauben den RFC-2544- - Benchmarkbereich standardmäßig bereits. + gefährliche Flag zunächst deaktiviert. Telegram-Medien erlauben den RFC-2544- + Benchmark-Bereich bereits standardmäßig. - `channels.telegram.network.dangerouslyAllowPrivateNetwork` schwächt die SSRF-Schutzmaßnahmen - für Telegram-Medien. Verwenden Sie es nur für vertrauenswürdige, vom Betreiber kontrollierte Proxy- - Umgebungen wie Clash, Mihomo oder Surge mit Fake-IP-Routing, wenn diese private oder - Special-Use-Antworten außerhalb des RFC-2544-Benchmarkbereichs synthetisieren. Lassen Sie es für normalen - Telegram-Zugriff über das öffentliche Internet deaktiviert. + `channels.telegram.network.dangerouslyAllowPrivateNetwork` schwächt den Telegram- + Medien-SSRF-Schutz. Verwenden Sie dies nur in vertrauenswürdigen, vom Betreiber kontrollierten Proxy- + Umgebungen wie Clash, Mihomo oder Surge mit Fake-IP-Routing, wenn sie + private oder spezielle Antworten außerhalb des RFC-2544-Benchmark- + Bereichs synthetisieren. Lassen Sie es für normalen öffentlichen Telegram-Zugriff deaktiviert. - Umgebungsüberschreibungen (temporär): @@ -986,59 +988,60 @@ dig +short api.telegram.org AAAA -Weitere Hilfe: [Fehlerbehebung für Kanäle](/de/channels/troubleshooting). +Weitere Hilfe: [Channel-Fehlerbehebung](/de/channels/troubleshooting). -## Zeiger auf die Telegram-Konfigurationsreferenz +## Verweise auf die Telegram-Konfigurationsreferenz Primäre Referenz: -- `channels.telegram.enabled`: Kanalstart aktivieren/deaktivieren. +- `channels.telegram.enabled`: Channel-Start aktivieren/deaktivieren. - `channels.telegram.botToken`: Bot-Token (BotFather). - `channels.telegram.tokenFile`: Token aus einem regulären Dateipfad lesen. Symlinks werden abgelehnt. - `channels.telegram.dmPolicy`: `pairing | allowlist | open | disabled` (Standard: pairing). -- `channels.telegram.allowFrom`: DM-Allowlist (numerische Telegram-Benutzer-IDs). `allowlist` erfordert mindestens eine Absender-ID. `open` erfordert `"*"`. `openclaw doctor --fix` kann ältere `@username`-Einträge zu IDs auflösen und Allowlist-Einträge aus Pairing-Store-Dateien in Allowlist-Migrationsabläufen wiederherstellen. -- `channels.telegram.actions.poll`: Erstellen von Telegram-Umfragen aktivieren oder deaktivieren (Standard: aktiviert; erfordert weiterhin `sendMessage`). -- `channels.telegram.defaultTo`: Standard-Telegram-Ziel, das von CLI `--deliver` verwendet wird, wenn kein explizites `--reply-to` angegeben ist. +- `channels.telegram.allowFrom`: DM-Allowlist (numerische Telegram-Benutzer-IDs). `allowlist` erfordert mindestens eine Absender-ID. `open` erfordert `"*"`. `openclaw doctor --fix` kann alte `@username`-Einträge in IDs auflösen und Allowlist-Einträge aus Pairing-Store-Dateien in Allowlist-Migrationsabläufen wiederherstellen. +- `channels.telegram.actions.poll`: Erstellung von Telegram-Umfragen aktivieren oder deaktivieren (Standard: aktiviert; erfordert weiterhin `sendMessage`). +- `channels.telegram.defaultTo`: Standard-Telegram-Ziel, das vom CLI `--deliver` verwendet wird, wenn kein explizites `--reply-to` angegeben ist. - `channels.telegram.groupPolicy`: `open | allowlist | disabled` (Standard: allowlist). -- `channels.telegram.groupAllowFrom`: Allowlist für Gruppenabsender (numerische Telegram-Benutzer-IDs). `openclaw doctor --fix` kann ältere `@username`-Einträge zu IDs auflösen. Nicht numerische Einträge werden bei der Authentifizierung ignoriert. Die Gruppenauthentifizierung verwendet keinen DM-Pairing-Store-Fallback (`2026.2.25+`). -- Priorität bei mehreren Konten: - - Wenn zwei oder mehr Konto-IDs konfiguriert sind, setzen Sie `channels.telegram.defaultAccount` (oder fügen Sie `channels.telegram.accounts.default` ein), um das Standardrouting explizit zu machen. - - Wenn keines von beiden gesetzt ist, greift OpenClaw auf die erste normalisierte Konto-ID zurück und `openclaw doctor` warnt. - - `channels.telegram.accounts.default.allowFrom` und `channels.telegram.accounts.default.groupAllowFrom` gelten nur für das Konto `default`. +- `channels.telegram.groupAllowFrom`: Gruppenabsender-Allowlist (numerische Telegram-Benutzer-IDs). `openclaw doctor --fix` kann alte `@username`-Einträge in IDs auflösen. Nicht numerische Einträge werden zur Authentifizierungszeit ignoriert. Gruppenauthentifizierung verwendet keinen Fallback auf den DM-Pairing-Store (`2026.2.25+`). +- Multi-Account-Priorität: + - Wenn zwei oder mehr Konto-IDs konfiguriert sind, setzen Sie `channels.telegram.defaultAccount` (oder fügen Sie `channels.telegram.accounts.default` ein), um Standardrouting explizit zu machen. + - Wenn keines von beiden gesetzt ist, fällt OpenClaw auf die erste normalisierte Konto-ID zurück und `openclaw doctor` gibt eine Warnung aus. + - `channels.telegram.accounts.default.allowFrom` und `channels.telegram.accounts.default.groupAllowFrom` gelten nur für das `default`-Konto. - Benannte Konten erben `channels.telegram.allowFrom` und `channels.telegram.groupAllowFrom`, wenn Werte auf Kontoebene nicht gesetzt sind. - Benannte Konten erben nicht `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`. -- `channels.telegram.groups`: gruppenspezifische Standardwerte + Allowlist (verwenden Sie `"*"` für globale Standardwerte). - - `channels.telegram.groups..groupPolicy`: gruppenspezifische Überschreibung für `groupPolicy` (`open | allowlist | disabled`). - - `channels.telegram.groups..requireMention`: Standard für Erwähnungs-Gating. +- `channels.telegram.groups`: Standardwerte pro Gruppe + Allowlist (verwenden Sie `"*"` für globale Standardwerte). + - `channels.telegram.groups..groupPolicy`: Überschreibung pro Gruppe für `groupPolicy` (`open | allowlist | disabled`). + - `channels.telegram.groups..requireMention`: Standard für Mention-Gating. - `channels.telegram.groups..skills`: Skills-Filter (weglassen = alle Skills, leer = keine). - - `channels.telegram.groups..allowFrom`: gruppenspezifische Überschreibung der Absender-Allowlist. - - `channels.telegram.groups..systemPrompt`: zusätzlicher Systemprompt für die Gruppe. + - `channels.telegram.groups..allowFrom`: Überschreibung der Absender-Allowlist pro Gruppe. + - `channels.telegram.groups..systemPrompt`: zusätzlicher System-Prompt für die Gruppe. - `channels.telegram.groups..enabled`: deaktiviert die Gruppe, wenn `false`. - - `channels.telegram.groups..topics..*`: themenspezifische Überschreibungen (Gruppenfelder + themenspezifisches `agentId`). - - `channels.telegram.groups..topics..agentId`: dieses Thema an einen bestimmten Agent weiterleiten (überschreibt Routing auf Gruppenebene und Binding-Routing). -- `channels.telegram.groups..topics..groupPolicy`: themenspezifische Überschreibung für `groupPolicy` (`open | allowlist | disabled`). -- `channels.telegram.groups..topics..requireMention`: themenspezifische Überschreibung für Erwähnungs-Gating. -- `bindings[]` auf oberster Ebene mit `type: "acp"` und kanonischer Themen-ID `chatId:topic:topicId` in `match.peer.id`: Felder für persistente ACP-Themenbindung (siehe [ACP Agents](/de/tools/acp-agents#channel-specific-settings)). -- `channels.telegram.direct..topics..agentId`: DM-Themen an einen bestimmten Agent weiterleiten (gleiches Verhalten wie bei Forenthemen). -- `channels.telegram.execApprovals.enabled`: Telegram als chatbasierten Exec-Genehmigungsclient für dieses Konto aktivieren. + - `channels.telegram.groups..topics..*`: Überschreibungen pro Topic (Gruppenfelder + Topic-spezifisches `agentId`). + - `channels.telegram.groups..topics..agentId`: dieses Topic an einen bestimmten Agenten routen (überschreibt Routing auf Gruppenebene und über Bindings). +- `channels.telegram.groups..topics..groupPolicy`: Überschreibung pro Topic für `groupPolicy` (`open | allowlist | disabled`). +- `channels.telegram.groups..topics..requireMention`: Überschreibung des Mention-Gatings pro Topic. +- oberstes `bindings[]` mit `type: "acp"` und kanonischer Topic-ID `chatId:topic:topicId` in `match.peer.id`: Felder für persistente ACP-Topic-Bindung (siehe [ACP Agents](/de/tools/acp-agents#channel-specific-settings)). +- `channels.telegram.direct..topics..agentId`: DM-Topics an einen bestimmten Agenten routen (gleiches Verhalten wie bei Forum-Topics). +- `channels.telegram.execApprovals.enabled`: Telegram als chatbasierten Client für Exec-Genehmigungen für dieses Konto aktivieren. - `channels.telegram.execApprovals.approvers`: Telegram-Benutzer-IDs, die Exec-Anfragen genehmigen oder ablehnen dürfen. Optional, wenn `channels.telegram.allowFrom` oder ein direktes `channels.telegram.defaultTo` den Eigentümer bereits identifiziert. -- `channels.telegram.execApprovals.target`: `dm | channel | both` (Standard: `dm`). `channel` und `both` bewahren das ursprüngliche Telegram-Thema, falls vorhanden. +- `channels.telegram.execApprovals.target`: `dm | channel | both` (Standard: `dm`). `channel` und `both` behalten das ursprüngliche Telegram-Topic bei, wenn vorhanden. - `channels.telegram.execApprovals.agentFilter`: optionaler Agent-ID-Filter für weitergeleitete Genehmigungsaufforderungen. -- `channels.telegram.execApprovals.sessionFilter`: optionaler Sitzungs-Schlüsselfilter (Teilzeichenfolge oder Regex) für weitergeleitete Genehmigungsaufforderungen. -- `channels.telegram.accounts..execApprovals`: Überschreibung pro Konto für Telegram-Exec-Genehmigungsrouting und Genehmiger-Autorisierung. +- `channels.telegram.execApprovals.sessionFilter`: optionaler Sitzungsschlüssel-Filter (Teilstring oder Regex) für weitergeleitete Genehmigungsaufforderungen. +- `channels.telegram.accounts..execApprovals`: Überschreibung pro Konto für Routing von Telegram-Exec-Genehmigungen und Approver-Autorisierung. - `channels.telegram.capabilities.inlineButtons`: `off | dm | group | all | allowlist` (Standard: allowlist). - `channels.telegram.accounts..capabilities.inlineButtons`: Überschreibung pro Konto. -- `channels.telegram.commands.nativeSkills`: Telegram-native Skills-Befehle aktivieren/deaktivieren. +- `channels.telegram.commands.nativeSkills`: native Skills-Befehle für Telegram aktivieren/deaktivieren. - `channels.telegram.replyToMode`: `off | first | all` (Standard: `off`). - `channels.telegram.textChunkLimit`: Größe ausgehender Chunks (Zeichen). - `channels.telegram.chunkMode`: `length` (Standard) oder `newline`, um vor dem Chunking nach Länge an Leerzeilen (Absatzgrenzen) zu trennen. - `channels.telegram.linkPreview`: Link-Vorschauen für ausgehende Nachrichten umschalten (Standard: true). -- `channels.telegram.streaming`: `off | partial | block | progress` (Live-Stream-Vorschau; Standard: `partial`; `progress` wird auf `partial` abgebildet; `block` dient der Kompatibilität mit dem älteren Vorschaumodus). Die Telegram-Vorschau für Streaming verwendet eine einzelne Vorschaunachricht, die direkt bearbeitet wird. -- `channels.telegram.mediaMaxMb`: Obergrenze für eingehende/ausgehende Telegram-Medien (MB, Standard: 100). -- `channels.telegram.retry`: Wiederholungsrichtlinie für Telegram-Sendehilfen (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern (`attempts`, `minDelayMs`, `maxDelayMs`, `jitter`). +- `channels.telegram.streaming`: `off | partial | block | progress` (Live-Stream-Vorschau; Standard: `partial`; `progress` wird auf `partial` abgebildet; `block` dient der Kompatibilität mit dem alten Vorschaumodus). Die Telegram-Vorschau beim Streaming verwendet eine einzelne Vorschau-Nachricht, die direkt bearbeitet wird. +- `channels.telegram.streaming.preview.toolProgress`: die Live-Vorschau-Nachricht für Tool-/Fortschrittsaktualisierungen wiederverwenden, wenn Vorschau-Streaming aktiv ist (Standard: `true`). Setzen Sie `false`, um separate Tool-/Fortschrittsnachrichten beizubehalten. +- `channels.telegram.mediaMaxMb`: Telegram-Medienlimit für ein-/ausgehend (MB, Standard: 100). +- `channels.telegram.retry`: Wiederholungsrichtlinie für Telegram-Sendehelfer (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern (Versuche, `minDelayMs`, `maxDelayMs`, `jitter`). - `channels.telegram.network.autoSelectFamily`: Node-`autoSelectFamily` überschreiben (true=aktivieren, false=deaktivieren). Standardmäßig auf Node 22+ aktiviert, bei WSL2 standardmäßig deaktiviert. - `channels.telegram.network.dnsResultOrder`: DNS-Ergebnisreihenfolge überschreiben (`ipv4first` oder `verbatim`). Standardmäßig `ipv4first` auf Node 22+. -- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: gefährliche Opt-in-Option für vertrauenswürdige Fake-IP- oder Transparent-Proxy-Umgebungen, in denen Telegram-Mediendownloads `api.telegram.org` auf private/interne/Special-Use-Adressen außerhalb des standardmäßigen RFC-2544-Benchmarkbereichs auflösen. +- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: gefährliche bewusste Aktivierung für vertrauenswürdige Fake-IP- oder transparente Proxy-Umgebungen, in denen Telegram-Mediendownloads `api.telegram.org` auf private/interne/spezielle Adressen außerhalb der standardmäßigen RFC-2544-Benchmark-Bereich-Freigabe auflösen. - `channels.telegram.proxy`: Proxy-URL für Bot-API-Aufrufe (SOCKS/HTTP). - `channels.telegram.webhookUrl`: Webhook-Modus aktivieren (erfordert `channels.telegram.webhookSecret`). - `channels.telegram.webhookSecret`: Webhook-Secret (erforderlich, wenn `webhookUrl` gesetzt ist). @@ -1046,24 +1049,24 @@ Primäre Referenz: - `channels.telegram.webhookHost`: lokaler Webhook-Bind-Host (Standard `127.0.0.1`). - `channels.telegram.webhookPort`: lokaler Webhook-Bind-Port (Standard `8787`). - `channels.telegram.actions.reactions`: Telegram-Tool-Reaktionen steuern. -- `channels.telegram.actions.sendMessage`: Senden von Telegram-Tool-Nachrichten steuern. -- `channels.telegram.actions.deleteMessage`: Löschen von Telegram-Tool-Nachrichten steuern. -- `channels.telegram.actions.sticker`: Telegram-Sticker-Aktionen steuern — Senden und Suchen (Standard: false). -- `channels.telegram.reactionNotifications`: `off | own | all` — steuert, welche Reaktionen Systemereignisse auslösen (Standard: `own`, wenn nicht gesetzt). -- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — steuert die Reaktionsfähigkeit des Agent (Standard: `minimal`, wenn nicht gesetzt). -- `channels.telegram.errorPolicy`: `reply | silent` — steuert das Verhalten von Fehlerantworten (Standard: `reply`). Überschreibungen pro Konto/Gruppe/Thema werden unterstützt. -- `channels.telegram.errorCooldownMs`: Mindestanzahl an ms zwischen Fehlerantworten an denselben Chat (Standard: `60000`). Verhindert Fehler-Spam bei Ausfällen. +- `channels.telegram.actions.sendMessage`: Telegram-Tool-Nachrichtensendungen steuern. +- `channels.telegram.actions.deleteMessage`: Telegram-Tool-Nachrichtenlöschungen steuern. +- `channels.telegram.actions.sticker`: Telegram-Sticker-Aktionen steuern — senden und suchen (Standard: false). +- `channels.telegram.reactionNotifications`: `off | own | all` — steuern, welche Reaktionen Systemereignisse auslösen (Standard: `own`, wenn nicht gesetzt). +- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — Reaktionsfähigkeit des Agenten steuern (Standard: `minimal`, wenn nicht gesetzt). +- `channels.telegram.errorPolicy`: `reply | silent` — Verhalten bei Fehlerantworten steuern (Standard: `reply`). Überschreibungen pro Konto/Gruppe/Topic werden unterstützt. +- `channels.telegram.errorCooldownMs`: Mindestzeit in ms zwischen Fehlerantworten an denselben Chat (Standard: `60000`). Verhindert Fehler-Spam bei Ausfällen. - [Konfigurationsreferenz - Telegram](/de/gateway/configuration-reference#telegram) Telegram-spezifische Felder mit hohem Signalwert: - Start/Auth: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` muss auf eine reguläre Datei zeigen; Symlinks werden abgelehnt) -- Zugriffskontrolle: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, `bindings[]` auf oberster Ebene (`type: "acp"`) +- Zugriffskontrolle: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, oberstes `bindings[]` (`type: "acp"`) - Exec-Genehmigungen: `execApprovals`, `accounts.*.execApprovals` - Befehl/Menü: `commands.native`, `commands.nativeSkills`, `customCommands` - Threading/Antworten: `replyToMode` -- Streaming: `streaming` (Vorschau), `blockStreaming` +- Streaming: `streaming` (Vorschau), `streaming.preview.toolProgress`, `blockStreaming` - Formatierung/Zustellung: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix` - Medien/Netzwerk: `mediaMaxMb`, `timeoutSeconds`, `pollingStallThresholdMs`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy` - Webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost` @@ -1077,6 +1080,6 @@ Telegram-spezifische Felder mit hohem Signalwert: - [Kopplung](/de/channels/pairing) - [Gruppen](/de/channels/groups) - [Sicherheit](/de/gateway/security) -- [Kanalrouting](/de/channels/channel-routing) +- [Channel-Routing](/de/channels/channel-routing) - [Multi-Agent-Routing](/de/concepts/multi-agent) - [Fehlerbehebung](/de/channels/troubleshooting) diff --git a/docs/de/gateway/multiple-gateways.md b/docs/de/gateway/multiple-gateways.md index 0f462bf5e..77e5c0484 100644 --- a/docs/de/gateway/multiple-gateways.md +++ b/docs/de/gateway/multiple-gateways.md @@ -1,108 +1,137 @@ --- read_when: - Mehr als ein Gateway auf demselben Rechner ausführen - - Sie benötigen isolierte Konfiguration/isolierten Status/eigene Ports pro Gateway -summary: Mehrere OpenClaw-Gateways auf einem Host ausführen (Isolierung, Ports und Profile) + - Sie benötigen isolierte Konfiguration, isolierten Status und isolierte Ports pro Gateway +summary: Mehrere OpenClaw Gateways auf einem Host ausführen (Isolation, Ports und Profile) title: Mehrere Gateways x-i18n: - generated_at: "2026-04-05T12:42:41Z" + generated_at: "2026-04-21T17:45:33Z" model: gpt-5.4 provider: openai - source_hash: 061f204bf56b28c6bd0e2c9aee6c561a8a162ca219060117fea4d3a007f01899 + source_hash: 8c3fcb921bc6596040e9249467964bd9dcd40ea7c16e958bb378247b0f994a7b source_path: gateway/multiple-gateways.md workflow: 15 --- # Mehrere Gateways (derselbe Host) -Die meisten Setups sollten ein einzelnes Gateway verwenden, da ein einziges Gateway mehrere Messaging-Verbindungen und Agenten verwalten kann. Wenn Sie eine stärkere Isolierung oder Redundanz benötigen (z. B. einen Rettungs-Bot), führen Sie separate Gateways mit isolierten Profilen/Ports aus. +Die meisten Setups sollten ein Gateway verwenden, weil ein einzelnes Gateway mehrere Messaging-Verbindungen und Agents verarbeiten kann. Wenn Sie stärkere Isolation oder Redundanz benötigen, z. B. einen Rescue-Bot, führen Sie separate Gateways mit isolierten Profilen und Ports aus. -## Checkliste zur Isolierung (erforderlich) +## Checkliste für die Isolation (erforderlich) - `OPENCLAW_CONFIG_PATH` — Konfigurationsdatei pro Instanz - `OPENCLAW_STATE_DIR` — Sitzungen, Anmeldedaten und Caches pro Instanz -- `agents.defaults.workspace` — Workspace-Root pro Instanz -- `gateway.port` (oder `--port`) — eindeutiger Port pro Instanz +- `agents.defaults.workspace` — Workspace-Stammverzeichnis pro Instanz +- `gateway.port` (oder `--port`) — eindeutig pro Instanz - Abgeleitete Ports (Browser/Canvas) dürfen sich nicht überschneiden -Wenn diese gemeinsam genutzt werden, treten Konfigurationsrennen und Portkonflikte auf. +Wenn diese gemeinsam genutzt werden, kommt es zu Konfigurations-Race-Conditions und Portkonflikten. -## Empfohlen: Profile (`--profile`) +## Empfohlen: Verwenden Sie das Standardprofil für das Hauptsystem und ein benanntes Profil für Rescue -Profile grenzen `OPENCLAW_STATE_DIR` + `OPENCLAW_CONFIG_PATH` automatisch ab und hängen Suffixe an Servicenamen an. +Profile grenzen `OPENCLAW_STATE_DIR` und `OPENCLAW_CONFIG_PATH` automatisch ab und hängen Suffixe an Dienstnamen an. Für die meisten Rescue-Bot-Setups sollten Sie den Haupt-Bot im Standardprofil belassen und nur dem Rescue-Bot ein benanntes Profil wie `rescue` geben. ```bash -# main -openclaw --profile main setup -openclaw --profile main gateway --port 18789 +# main (default profile) +openclaw setup +openclaw gateway --port 18789 # rescue openclaw --profile rescue setup openclaw --profile rescue gateway --port 19001 ``` -Dienste pro Profil: +Dienste: ```bash -openclaw --profile main gateway install +openclaw gateway install openclaw --profile rescue gateway install ``` -## Leitfaden für Rettungs-Bot +Wenn Sie möchten, dass beide Gateways benannte Profile verwenden, funktioniert das ebenfalls, ist aber nicht erforderlich. -Führen Sie ein zweites Gateway auf demselben Host mit eigenem Folgendem aus: +## Leitfaden für Rescue-Bots -- Profil/Konfiguration -- Statusverzeichnis -- Workspace -- Basisport (plus abgeleitete Ports) +Empfohlenes Setup: -So bleibt der Rettungs-Bot vom Haupt-Bot isoliert, sodass er Fehler analysieren oder Konfigurationsänderungen anwenden kann, wenn der primäre Bot nicht verfügbar ist. +- den Haupt-Bot im Standardprofil belassen +- den Rescue-Bot mit `--profile rescue` ausführen +- für das Rescue-Konto einen vollständig separaten Telegram-Bot verwenden +- den Rescue-Bot auf einem anderen Basisport wie `19001` betreiben -Portabstand: Lassen Sie zwischen den Basisports mindestens 20 Ports frei, damit sich die abgeleiteten Browser-/Canvas-/CDP-Ports nie überschneiden. +Dadurch bleibt der Rescue-Bot vom Haupt-Bot isoliert, sodass er Konfigurationsänderungen debuggen oder anwenden kann, wenn der primäre Bot ausgefallen ist. Lassen Sie zwischen den Basisports mindestens 20 Ports Abstand, damit sich die abgeleiteten Browser-/Canvas-/CDP-Ports niemals überschneiden. -### Installation (Rettungs-Bot) +### Empfohlener Rescue-Kanal/-Account + +Verwenden Sie für die meisten Setups einen vollständig separaten Telegram-Bot für das Rescue-Profil. + +Warum Telegram: + +- leicht auf reine Operator-Nutzung beschränkbar +- separates Bot-Token und separate Identität +- unabhängig von der Kanal-/App-Installation des Haupt-Bots +- einfacher DM-basierter Wiederherstellungspfad, wenn der Haupt-Bot defekt ist + +Wichtig ist die vollständige Unabhängigkeit: separates Bot-Konto, separate Anmeldedaten, separates OpenClaw-Profil, separater Workspace und separater Port. + +### Empfohlener Installationsablauf + +Verwenden Sie dies als Standard-Setup, sofern Sie keinen triftigen Grund haben, etwas anderes zu tun: ```bash -# Haupt-Bot (bestehend oder neu, ohne --profile-Parameter) -# Läuft auf Port 18789 + Chrome-CDC-/Canvas-/...-Ports +# Main bot (default profile, port 18789) openclaw onboard openclaw gateway install -# Rettungs-Bot (isoliertes Profil + Ports) +# Rescue bot (separate Telegram bot, separate profile, port 19001) openclaw --profile rescue onboard -# Hinweise: -# - der Workspace-Name erhält standardmäßig das Suffix -rescue -# - der Port sollte mindestens 18789 + 20 Ports sein, -# besser einen völlig anderen Basisport wählen, z. B. 19789, -# - der Rest des Onboardings ist derselbe wie normal - -# Um den Dienst zu installieren (falls dies nicht bereits während des Setups automatisch passiert ist) openclaw --profile rescue gateway install ``` +Während `openclaw --profile rescue onboard`: + +- verwenden Sie das separate Telegram-Bot-Token +- behalten Sie das Profil `rescue` bei +- verwenden Sie einen Basisport, der mindestens 20 höher ist als der des Haupt-Bots +- übernehmen Sie den Standard-Workspace für Rescue, sofern Sie nicht bereits selbst einen verwalten + +Wenn das Onboarding den Rescue-Dienst bereits für Sie installiert hat, ist das abschließende `gateway install` nicht erforderlich. + +### Was das Onboarding ändert + +`openclaw --profile rescue onboard` verwendet den normalen Onboarding-Ablauf, schreibt aber alles in ein separates Profil. + +In der Praxis bedeutet das, dass der Rescue-Bot Folgendes erhält: + +- eine eigene Konfigurationsdatei +- ein eigenes Statusverzeichnis +- einen eigenen Workspace (standardmäßig `~/.openclaw/workspace-rescue`) +- einen eigenen Namen für den verwalteten Dienst + +Die Eingabeaufforderungen sind ansonsten dieselben wie beim normalen Onboarding. + ## Portzuordnung (abgeleitet) Basisport = `gateway.port` (oder `OPENCLAW_GATEWAY_PORT` / `--port`). -- Browser-Control-Service-Port = Basisport + 2 (nur loopback) -- Der Canvas-Host wird auf dem Gateway-HTTP-Server bereitgestellt (derselbe Port wie `gateway.port`) -- Browser-Profil-CDP-Ports werden automatisch aus `browser.controlPort + 9 .. + 108` zugewiesen +- Browser-Steuerungsdienst-Port = Basisport + 2 (nur loopback) +- Canvas Host wird über den Gateway-HTTP-Server bereitgestellt (derselbe Port wie `gateway.port`) +- CDP-Ports für Browser-Profile werden automatisch aus `browser.controlPort + 9 .. + 108` zugewiesen -Wenn Sie einen dieser Werte in config oder env überschreiben, müssen Sie sie pro Instanz eindeutig halten. +Wenn Sie einen dieser Werte in der Konfiguration oder per Umgebungsvariable überschreiben, müssen sie pro Instanz eindeutig bleiben. -## Hinweise zu Browser/CDP (häufige Stolperfalle) +## Hinweise zu Browser/CDP (häufige Fehlerquelle) -- Setzen Sie `browser.cdpUrl` **nicht** auf mehreren Instanzen auf dieselben Werte fest. -- Jede Instanz benötigt ihren eigenen Browser-Control-Port und ihren eigenen CDP-Bereich (abgeleitet aus ihrem Gateway-Port). +- Legen Sie `browser.cdpUrl` auf mehreren Instanzen **nicht** auf dieselben Werte fest. +- Jede Instanz benötigt ihren eigenen Browser-Steuerungsport und ihren eigenen CDP-Bereich (abgeleitet von ihrem Gateway-Port). - Wenn Sie explizite CDP-Ports benötigen, setzen Sie `browser.profiles..cdpPort` pro Instanz. - Remote-Chrome: Verwenden Sie `browser.profiles..cdpUrl` (pro Profil, pro Instanz). -## Beispiel mit manuellen Env vars +## Beispiel für manuelle Umgebungsvariablen ```bash OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \ -OPENCLAW_STATE_DIR=~/.openclaw-main \ +OPENCLAW_STATE_DIR=~/.openclaw \ openclaw gateway --port 18789 OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \ @@ -113,10 +142,10 @@ openclaw gateway --port 19001 ## Schnelle Prüfungen ```bash -openclaw --profile main gateway status --deep +openclaw gateway status --deep openclaw --profile rescue gateway status --deep openclaw --profile rescue gateway probe -openclaw --profile main status +openclaw status openclaw --profile rescue status openclaw --profile rescue browser status ``` @@ -124,4 +153,4 @@ openclaw --profile rescue browser status Interpretation: - `gateway status --deep` hilft dabei, veraltete launchd-/systemd-/schtasks-Dienste aus älteren Installationen zu erkennen. -- Warntexte von `gateway probe` wie `multiple reachable gateways detected` sind nur dann zu erwarten, wenn Sie absichtlich mehr als ein isoliertes Gateway ausführen. +- Warntexte von `gateway probe` wie `multiple reachable gateways detected` sind nur dann erwartbar, wenn Sie absichtlich mehr als ein isoliertes Gateway ausführen. diff --git a/docs/de/tools/slash-commands.md b/docs/de/tools/slash-commands.md index 72804bb24..380706079 100644 --- a/docs/de/tools/slash-commands.md +++ b/docs/de/tools/slash-commands.md @@ -1,14 +1,14 @@ --- read_when: - - Verwendung oder Konfiguration von Chat-Befehlen - - Fehlerbehebung bei Befehlsrouting oder Berechtigungen + - Chat-Befehle verwenden oder konfigurieren + - Befehlsrouting oder Berechtigungen debuggen summary: 'Slash-Befehle: Text vs. nativ, Konfiguration und unterstützte Befehle' title: Slash-Befehle x-i18n: - generated_at: "2026-04-21T13:38:03Z" + generated_at: "2026-04-21T17:45:33Z" model: gpt-5.4 provider: openai - source_hash: d90ddee54af7c05b7fdf486590561084581d750e42cd14674d43bbdc0984df5d + source_hash: 26923608329ba2aeece2d4bc8edfa40ae86e03719a9f590f26ff79f57d97521d source_path: tools/slash-commands.md workflow: 15 --- @@ -23,14 +23,14 @@ Es gibt zwei verwandte Systeme: - **Befehle**: eigenständige `/...`-Nachrichten. - **Direktiven**: `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - Direktiven werden aus der Nachricht entfernt, bevor das Modell sie sieht. - - In normalen Chat-Nachrichten (nicht nur Direktiven) werden sie als „Inline-Hinweise“ behandelt und **persistieren keine** Sitzungseinstellungen. - - In Nachrichten, die nur Direktiven enthalten (die Nachricht enthält nur Direktiven), werden sie in der Sitzung persistiert und beantworten mit einer Bestätigung. - - Direktiven werden nur für **autorisierte Absender** angewendet. Wenn `commands.allowFrom` gesetzt ist, ist dies die einzige - verwendete Zulassungsliste; andernfalls stammt die Autorisierung aus Kanal-Zulassungslisten/Pairing plus `commands.useAccessGroups`. - Nicht autorisierte Absender sehen Direktiven als Klartext behandelt. + - In normalen Chat-Nachrichten (nicht nur aus Direktiven bestehend) werden sie als „Inline-Hinweise“ behandelt und **persistieren** keine Sitzungseinstellungen. + - In Nachrichten, die nur aus Direktiven bestehen (die Nachricht enthält nur Direktiven), werden sie in der Sitzung gespeichert und antworten mit einer Bestätigung. + - 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 zugelassene/autorisierte Absender): `/help`, `/commands`, `/status`, `/whoami` (`/id`). -Sie werden sofort ausgeführt, werden entfernt, bevor das Modell die Nachricht sieht, und der verbleibende Text läuft durch den normalen Ablauf weiter. +Es gibt außerdem einige **Inline-Kurzbefehle** (nur für Absender auf der Allowlist/autorisierte Absender): `/help`, `/commands`, `/status`, `/whoami` (`/id`). +Sie werden sofort ausgeführt, werden entfernt, bevor das Modell die Nachricht sieht, und der verbleibende Text läuft normal weiter. ## Konfiguration @@ -59,108 +59,109 @@ Sie werden sofort ausgeführt, werden entfernt, bevor das Modell die Nachricht s } ``` -- `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.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, auch wenn Sie dies auf `false` setzen. +- `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 Anbieter ohne native Unterstützung. - - Setzen Sie `channels.discord.commands.native`, `channels.telegram.commands.native` oder `channels.slack.commands.native`, um pro Anbieter 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 **Skill**-Befehle nativ, wenn unterstützt. + - Setzen Sie `channels.discord.commands.native`, `channels.telegram.commands.native` oder `channels.slack.commands.native`, um dies pro Anbieter zu überschreiben (bool oder `"auto"`). + - `false` löscht zuvor registrierte Befehle auf Discord/Telegram beim Start. 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 Anlegen eines Slash-Befehls pro Skill). - - Setzen Sie `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` oder `channels.slack.commands.nativeSkills`, um pro Anbieter zu überschreiben (bool oder `"auto"`). -- `commands.bash` (Standard `false`) aktiviert `! ` zum Ausführen von Host-Shell-Befehlen (`/bash ` ist ein Alias; erfordert `tools.elevated`-Zulassungslisten). -- `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 die 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-Überschreibungen). -- `commands.restart` (Standard `true`) aktiviert `/restart` plus Gateway-Neustart-Tool-Aktionen. -- `commands.ownerAllowFrom` (optional) setzt die explizite Zulassungsliste der Eigentümer für nur-Eigentümer-Befehls-/Tool-Oberflächen. Dies ist getrennt von `commands.allowFrom`. -- `commands.ownerDisplay` steuert, wie Eigentümer-IDs im System-Prompt erscheinen: `raw` oder `hash`. + - Setzen Sie `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` oder `channels.slack.commands.nativeSkills`, um dies pro Anbieter zu überschreiben (bool oder `"auto"`). +- `commands.bash` (Standard: `false`) aktiviert `! `, um Host-Shell-Befehle auszuführen (`/bash ` ist ein Alias; erfordert `tools.elevated`-Allowlists). +- `commands.bashForegroundMs` (Standard: `2000`) steuert, wie lange Bash wartet, bevor in den Hintergrundmodus gewechselt wird (`0` legt 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 Installation und Aktivieren/Deaktivieren). +- `commands.debug` (Standard: `false`) aktiviert `/debug` (nur Laufzeit-Overrides). +- `commands.restart` (Standard: `true`) aktiviert `/restart` sowie Gateway-Neustart-Tool-Aktionen. +- `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 erscheinen: `raw` oder `hash`. - `commands.ownerDisplaySecret` setzt optional das HMAC-Secret, das verwendet wird, wenn `commands.ownerDisplay="hash"` gesetzt ist. -- `commands.allowFrom` (optional) setzt eine anbieterbezogene Zulassungsliste für die Befehlsautorisierung. Wenn konfiguriert, ist sie die - einzige Autorisierungsquelle für Befehle und Direktiven (Kanal-Zulassungslisten/Pairing und `commands.useAccessGroups` - werden ignoriert). Verwenden Sie `"*"` für einen globalen Standard; anbieterbezogene Schlüssel überschreiben ihn. -- `commands.useAccessGroups` (Standard `true`) erzwingt Zulassungslisten/Richtlinien für Befehle, wenn `commands.allowFrom` nicht gesetzt ist. +- `commands.allowFrom` (optional) setzt eine anbieterspezifische Allowlist für die Befehlsautorisierung. Wenn konfiguriert, ist sie die + einzige Autorisierungsquelle für Befehle und Direktiven (`commands.useAccessGroups` + sowie Channel-Allowlists/Pairing werden ignoriert). Verwenden Sie `"*"` für einen globalen Standard; anbieterspezifische Schlüssel überschreiben ihn. +- `commands.useAccessGroups` (Standard: `true`) erzwingt Allowlists/Richtlinien für Befehle, wenn `commands.allowFrom` nicht gesetzt ist. ## Befehlsliste -Aktuelle Single Source of Truth: +Aktuelle Source of Truth: -- Kern-Integrationen stammen aus `src/auto-reply/commands-registry.shared.ts` -- generierte Dock-Befehle stammen aus `src/auto-reply/commands-registry.data.ts` -- Plugin-Befehle stammen aus Plugin-Aufrufen von `registerCommand()` -- die tatsächliche Verfügbarkeit auf Ihrem Gateway hängt weiterhin von Konfigurationsflags, Kanaloberfläche und installierten/aktivierten Plugins ab +- integrierte Kernbefehle 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 ### Integrierte Kernbefehle Heute verfügbare integrierte Befehle: - `/new [model]` startet eine neue Sitzung; `/reset` ist der Alias zum Zurücksetzen. -- `/compact [instructions]` komprimiert den Sitzungskontext. Siehe [/concepts/compaction](/de/concepts/compaction). -- `/stop` bricht die aktuelle Ausführung ab. -- `/session idle ` und `/session max-age ` verwalten das Ablaufen der Thread-Bindung. -- `/think ` setzt die Thinking-Stufe. Die Optionen stammen aus dem Anbieterprofil des aktiven Modells; gängige Stufen sind `off`, `minimal`, `low`, `medium` und `high`, mit benutzerdefinierten Stufen wie `xhigh`, `adaptive`, `max` oder binärem `on` nur dort, wo unterstützt. Aliasse: `/thinking`, `/t`. +- `/reset soft [message]` behält das aktuelle Transkript, verwirft wiederverwendete CLI-Backend-Sitzungs-IDs und führt das Laden von Start-/System-Prompts direkt erneut aus. +- `/compact [instructions]` kompaktiert den Sitzungskontext. Siehe [/concepts/compaction](/de/concepts/compaction). +- `/stop` bricht den aktuellen Lauf ab. +- `/session idle ` und `/session max-age ` verwalten den Ablauf der Thread-Bindung. +- `/think ` setzt das Denk-Level. Die Optionen stammen aus dem Anbieterprofil des aktiven Modells; gängige Level sind `off`, `minimal`, `low`, `medium` und `high`, mit benutzerdefinierten Leveln wie `xhigh`, `adaptive`, `max` oder binärem `on` nur dort, wo unterstützt. Aliase: `/thinking`, `/t`. - `/verbose on|off|full` schaltet ausführliche Ausgabe um. Alias: `/v`. - `/trace on|off` schaltet Plugin-Trace-Ausgabe für die aktuelle Sitzung um. -- `/fast [status|on|off]` zeigt den Fast-Modus an oder setzt ihn. +- `/fast [status|on|off]` zeigt den Schnellmodus an oder setzt ihn. - `/reasoning [on|off|stream]` schaltet die Sichtbarkeit von Reasoning um. Alias: `/reason`. -- `/elevated [on|off|ask|full]` schaltet den Elevated-Modus um. Alias: `/elev`. -- `/exec host= security= ask= node=` zeigt die Exec-Standards an oder setzt sie. +- `/elevated [on|off|ask|full]` schaltet den erhöhten Modus um. Alias: `/elev`. +- `/exec host= security= ask= node=` zeigt Standardwerte für Ausführung an oder setzt sie. - `/model [name|#|status]` zeigt das Modell an oder setzt es. - `/models [provider] [page] [limit=|size=|all]` listet Anbieter oder Modelle für einen Anbieter auf. -- `/queue ` verwaltet Queue-Verhalten (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) plus Optionen wie `debounce:2s cap:25 drop:summarize`. +- `/queue ` verwaltet das Queue-Verhalten (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) sowie Optionen wie `debounce:2s cap:25 drop:summarize`. - `/help` zeigt die kurze Hilfezusammenfassung an. - `/commands` zeigt den generierten Befehlskatalog an. -- `/tools [compact|verbose]` zeigt an, was der aktuelle Agent gerade verwenden kann. -- `/status` zeigt den Laufzeitstatus an, einschließlich Anbieternutzung/Kontingent, falls verfügbar. +- `/tools [compact|verbose]` zeigt, was der aktuelle Agent gerade verwenden kann. +- `/status` zeigt den Laufzeitstatus an, einschließlich Anbieternutzung/-quota, wenn verfügbar. - `/tasks` listet aktive/aktuelle Hintergrundaufgaben für die aktuelle Sitzung auf. -- `/context [list|detail|json]` erklärt, wie Kontext zusammengestellt wird. +- `/context [list|detail|json]` erklärt, wie der Kontext zusammengestellt wird. - `/export-session [path]` exportiert die aktuelle Sitzung nach HTML. Alias: `/export`. -- `/whoami` zeigt Ihre Absender-ID an. Alias: `/id`. +- `/whoami` zeigt Ihre Absender-ID. Alias: `/id`. - `/skill [input]` führt einen Skill nach Namen aus. -- `/allowlist [list|add|remove] ...` verwaltet Einträge in der Zulassungsliste. Nur Text. -- `/approve ` bearbeitet Exec-Genehmigungsabfragen. -- `/btw ` stellt eine Nebenfrage, ohne den künftigen Sitzungskontext zu ändern. Siehe [/tools/btw](/de/tools/btw). -- `/subagents list|kill|log|info|send|steer|spawn` verwaltet Sub-Agent-Ausführungen für die aktuelle Sitzung. +- `/allowlist [list|add|remove] ...` verwaltet Allowlist-Einträge. Nur Text. +- `/approve ` verarbeitet Genehmigungsaufforderungen für `exec`. +- `/btw ` stellt eine Nebenfrage, ohne den zukünftigen Sitzungskontext zu ändern. Siehe [/tools/btw](/de/tools/btw). +- `/subagents list|kill|log|info|send|steer|spawn` verwaltet Sub-Agent-Läufe für die aktuelle Sitzung. - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` verwaltet ACP-Sitzungen und Laufzeitoptionen. -- `/focus ` bindet den aktuellen Discord-Thread oder das aktuelle Telegram-Thema/Gespräch an ein Sitzungsziel. +- `/focus ` bindet den aktuellen Discord-Thread oder das aktuelle Telegram-Thema/die aktuelle Unterhaltung an ein Sitzungsziel. - `/unfocus` entfernt die aktuelle Bindung. -- `/agents` listet threadgebundene Agenten für die aktuelle Sitzung auf. -- `/kill ` bricht einen oder alle laufenden Sub-Agenten ab. -- `/steer ` sendet Steuerung an einen laufenden Sub-Agenten. Alias: `/tell`. -- `/config show|get|set|unset` liest oder schreibt `openclaw.json`. Nur Eigentümer. Erfordert `commands.config: true`. -- `/mcp show|get|set|unset` liest oder schreibt von OpenClaw verwaltete MCP-Server-Konfiguration unter `mcp.servers`. Nur Eigentümer. Erfordert `commands.mcp: true`. -- `/plugins list|inspect|show|get|install|enable|disable` untersucht oder ändert den Plugin-Status. `/plugin` ist ein Alias. Schreibvorgänge nur für Eigentümer. Erfordert `commands.plugins: true`. -- `/debug show|set|unset|reset` verwaltet nur zur Laufzeit geltende Konfigurationsüberschreibungen. Nur Eigentümer. Erfordert `commands.debug: true`. +- `/agents` listet threadgebundene Agents für die aktuelle Sitzung auf. +- `/kill ` bricht einen oder alle laufenden Sub-Agents ab. +- `/steer ` sendet Steuerung an einen laufenden Sub-Agent. 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 Plugin-Status oder ändert ihn. `/plugin` ist ein Alias. Schreibzugriffe nur für Owner. Erfordert `commands.plugins: true`. +- `/debug show|set|unset|reset` verwaltet nur zur Laufzeit geltende 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. +- `/restart` startet OpenClaw neu, wenn aktiviert. Standard: aktiviert; setzen Sie `commands.restart: false`, um ihn zu deaktivieren. - `/activation mention|always` setzt den Gruppenaktivierungsmodus. -- `/send on|off|inherit` setzt die Senderichtlinie. Nur Eigentümer. -- `/bash ` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! `. Erfordert `commands.bash: true` plus `tools.elevated`-Zulassungslisten. +- `/send on|off|inherit` setzt die Send-Richtlinie. Nur für Owner. +- `/bash ` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! `. Erfordert `commands.bash: true` plus `tools.elevated`-Allowlists. - `!poll [sessionId]` prüft einen Bash-Hintergrundjob. - `!stop [sessionId]` stoppt einen Bash-Hintergrundjob. ### Generierte Dock-Befehle -Dock-Befehle werden aus Kanal-Plugins mit Unterstützung für native Befehle generiert. Aktueller gebündelter Satz: +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`) -### Gebündelte Plugin-Befehle +### Befehle gebündelter Plugins -Gebündelte Plugins können weitere Slash-Befehle hinzufügen. Aktuelle gebündelte Befehle in diesem Repository: +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 Ablauf für Geräte-Pairing/-Einrichtung. Siehe [Pairing](/de/channels/pairing). -- `/phone status|arm [duration]|disarm` aktiviert vorübergehend Hochrisiko-Befehle des Phone-Node. -- `/voice status|list [limit]|set ` verwaltet die Talk-Sprachkonfiguration. Auf Discord ist der native Befehlsname `/talkvoice`. +- `/pair [qr|status|pending|approve|cleanup|notify]` verwaltet den Geräte-Pairing-/Einrichtungsablauf. Siehe [Pairing](/de/channels/pairing). +- `/phone status|arm [duration]|disarm` aktiviert vorübergehend risikoreiche Phone-Node-Befehle. +- `/voice status|list [limit]|set ` verwaltet die Talk-Sprachkonfiguration. Auf Discord lautet der Name des nativen Befehls `/talkvoice`. - `/card ...` sendet LINE-Rich-Card-Voreinstellungen. Siehe [LINE](/de/channels/line). -- `/codex status|models|threads|resume|compact|review|account|mcp|skills` untersucht und steuert den gebündelten Codex-App-Server-Harness. Siehe [Codex Harness](/de/plugins/codex-harness). +- `/codex status|models|threads|resume|compact|review|account|mcp|skills` prüft und steuert das gebündelte Codex-App-Server-Harness. Siehe [Codex Harness](/de/plugins/codex-harness). - Nur QQBot-Befehle: - `/bot-ping` - `/bot-version` @@ -170,70 +171,70 @@ Gebündelte Plugins können weitere Slash-Befehle hinzufügen. Aktuelle gebünde ### Dynamische Skill-Befehle -Vom Benutzer aufrufbare Skills werden auch als Slash-Befehle bereitgestellt: +Von Nutzern aufrufbare Skills werden ebenfalls als Slash-Befehle bereitgestellt: - `/skill [input]` funktioniert immer als generischer Einstiegspunkt. - Skills können auch als direkte Befehle wie `/prose` erscheinen, wenn der Skill/das Plugin sie registriert. -- Die Registrierung nativer Skill-Befehle wird über `commands.nativeSkills` und `channels..commands.nativeSkills` gesteuert. +- Die Registrierung nativer Skill-Befehle wird durch `commands.nativeSkills` und `channels..commands.nativeSkills` gesteuert. Hinweise: -- Befehle akzeptieren optional ein `:` zwischen Befehl und Argumenten (z. B. `/think: high`, `/send: on`, `/help:`). -- `/new ` akzeptiert einen Modellalias, `provider/model` oder einen Anbieternamen (unscharfer Abgleich); wenn es keine Übereinstimmung gibt, wird der Text als Nachrichtentext behandelt. +- Befehle akzeptieren optional ein `:` zwischen dem Befehl und den Argumenten (z. B. `/think: high`, `/send: on`, `/help:`). +- `/new ` akzeptiert einen Modellalias, `provider/model` oder einen Anbieternamen (fuzzy match); wenn es keine Übereinstimmung gibt, wird der Text als Nachrichtentext behandelt. - Für die vollständige Aufschlüsselung der Anbieternutzung verwenden Sie `openclaw status --usage`. -- `/allowlist add|remove` erfordert `commands.config=true` und beachtet kanalbezogene `configWrites`. -- In Kanälen mit mehreren Konten beachten konfigurationsbezogenes `/allowlist --account ` und `/config set channels..accounts....` auch `configWrites` des Zielkontos. +- `/allowlist add|remove` erfordert `commands.config=true` und beachtet Channel-`configWrites`. +- In Channels mit mehreren Konten beachten das auf Konfiguration zielende `/allowlist --account ` und `/config set channels..accounts....` auch die `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. - `/plugins install ` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:`. -- `/plugins enable|disable` aktualisiert die Plugin-Konfiguration und kann zu einem Neustart auffordern. +- `/plugins enable|disable` aktualisiert die Plugin-Konfiguration und fordert möglicherweise zu einem Neustart auf. - Nur auf Discord verfügbarer nativer Befehl: `/vc join|leave|status` steuert Sprachkanäle (erfordert `channels.discord.voice` und native Befehle; nicht als Text verfügbar). -- Discord-Befehle zur 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`). +- Discord-Thread-Bindungsbefehle (`/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**. -- `/trace` ist enger gefasst als `/verbose`: Es zeigt nur plugin-eigene Trace-/Debug-Zeilen an und lässt normales ausführliches Tool-Logging ausgeschaltet. -- `/fast on|off` persistiert eine Sitzungsüberschreibung. Verwenden Sie in der Sitzungs-UI die Option `inherit`, um sie zu löschen und auf Konfigurationsstandards zurückzufallen. -- `/fast` ist anbieterspezifisch: OpenAI/OpenAI Codex ordnen es auf nativen Responses-Endpunkten `service_tier=priority` zu, während direkte öffentliche Anthropic-Anfragen, einschließlich an `api.anthropic.com` gesendetem OAuth-authentifiziertem Datenverkehr, 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 eingeschlossen, wenn `/verbose` `on` oder `full` ist. -- `/reasoning`, `/verbose` und `/trace` sind in Gruppensettings riskant: Sie können internes Reasoning, Tool-Ausgaben oder Plugin-Diagnosen offenlegen, die Sie nicht beabsichtigt hatten. Lassen Sie sie bevorzugt deaktiviert, insbesondere in Gruppenchats. -- `/model` persistiert das neue Sitzungsmodell sofort. -- Wenn der Agent untätig ist, verwendet die nächste Ausführung es sofort. -- Wenn bereits eine Ausführung aktiv ist, markiert OpenClaw einen Live-Wechsel als ausstehend und startet erst 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 dem nächsten Benutzerzug in der Warteschlange bleiben. -- **Schnellpfad:** Nur-Befehl-Nachrichten von zugelassenen Absendern werden sofort verarbeitet (umgehen Queue + Modell). -- **Gruppen-Erwähnungs-Gating:** Nur-Befehl-Nachrichten von zugelassenen Absendern umgehen Erwähnungsanforderungen. -- **Inline-Kurzbefehle (nur für zugelassene Absender):** 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 durch den normalen Ablauf weiter. +- `/trace` ist enger gefasst als `/verbose`: Es zeigt nur Plugin-eigene Trace-/Debug-Zeilen und lässt normale ausführliche Tool-Ausgaben deaktiviert. +- `/fast on|off` speichert ein Sitzungs-Override. Verwenden Sie in der Sitzungs-UI die Option `inherit`, um es zu löschen und auf die Standardwerte aus der Konfiguration zurückzufallen. +- `/fast` ist anbieterspezifisch: OpenAI/OpenAI Codex ordnen es auf nativen Responses-Endpunkten `service_tier=priority` zu, während direkte öffentliche Anthropic-Anfragen, einschließlich OAuth-authentifiziertem Datenverkehr 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`, `/verbose` und `/trace` sind in Gruppeneinstellungen riskant: Sie können internes Reasoning, Tool-Ausgaben oder Plugin-Diagnosen offenlegen, die Sie nicht beabsichtigt hatten preiszugeben. Lassen Sie sie vorzugsweise deaktiviert, besonders in Gruppenchats. +- `/model` speichert das neue Sitzungsmodell sofort. +- Wenn der Agent inaktiv 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 Wiederholungszeitpunkt mit dem neuen Modell neu. +- Wenn Tool-Aktivität oder Antwortausgabe bereits begonnen hat, kann der ausstehende Wechsel bis zu einer späteren Wiederholungsmöglichkeit oder bis zur nächsten Nutzerinteraktion in der Warteschlange bleiben. +- **Schnellpfad:** Nur-Befehl-Nachrichten von Absendern auf der Allowlist werden sofort verarbeitet (umgehen Queue + Modell). +- **Gruppen-Erwähnungs-Gating:** Nur-Befehl-Nachrichten 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 normal weiter. - Aktuell: `/help`, `/commands`, `/status`, `/whoami` (`/id`). -- Nicht autorisierte Nur-Befehl-Nachrichten werden stillschweigend ignoriert, und Inline-`/...`-Token werden als Klartext behandelt. -- **Skill-Befehle:** `user-invocable`-Skills werden als Slash-Befehle bereitgestellt. Namen werden auf `a-z0-9_` bereinigt (maximal 32 Zeichen); bei Kollisionen werden numerische Suffixe angehängt (z. B. `_2`). - - `/skill [input]` führt einen Skill nach Namen aus (nützlich, wenn native Befehlsgrenzen Befehle pro Skill verhindern). +- Nicht autorisierte Nur-Befehl-Nachrichten werden stillschweigend ignoriert, und Inline-`/...`-Token werden als normaler Text behandelt. +- **Skill-Befehle:** `user-invocable` Skills werden als Slash-Befehle bereitgestellt. Namen werden zu `a-z0-9_` bereinigt (max. 32 Zeichen); bei Kollisionen werden numerische Suffixe angehängt (z. B. `_2`). + - `/skill [input]` führt einen Skill nach Namen aus (nützlich, wenn native Befehlslimits 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 routen (deterministisch, kein Modell). - Beispiel: `/prose` (OpenProse-Plugin) — siehe [OpenProse](/de/prose). -- **Argumente nativer Befehle:** 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. +- **Argumente nativer Befehle:** Discord verwendet Autovervollständigung für dynamische Optionen (und Schaltflächenmenüs, wenn Sie erforderliche Argumente weglassen). Telegram und Slack zeigen ein Schaltflächenmenü an, wenn ein Befehl Auswahlmöglichkeiten unterstützt und Sie das Argument weglassen. ## `/tools` `/tools` beantwortet eine Laufzeitfrage, keine Konfigurationsfrage: **was dieser Agent jetzt gerade in -diesem Gespräch verwenden kann**. +dieser Unterhaltung verwenden kann**. -- Standard-`/tools` ist kompakt und für schnelles Überfliegen optimiert. +- Das Standard-`/tools` ist kompakt und für schnelles Überfliegen 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 kann das Ändern von Agent, Kanal, Thread, Absenderautorisierung oder Modell - die Ausgabe ändern. +- Ergebnisse sind sitzungsbezogen, daher können Änderungen an Agent, Channel, Thread, Absenderautorisierung oder Modell + die Ausgabe verändern. - `/tools` enthält Tools, die zur Laufzeit tatsächlich erreichbar sind, einschließlich Kern-Tools, verbundener - Plugin-Tools und kanalbezogener Tools. + Plugin-Tools und Channel-eigener Tools. -Für das Bearbeiten von Profilen und Überschreibungen verwenden Sie das Tools-Panel der Control-UI oder Konfigurations-/Katalogoberflächen, statt -`/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) -- **Anbieternutzung/Kontingent** (Beispiel: „Claude 80% left“) erscheint in `/status` für den aktuellen Modellanbieter, wenn Nutzungsverfolgung aktiviert ist. OpenClaw normalisiert Anbieterfenster zu `% left`; bei MiniMax werden verbleibend-only-Prozentfelder vor der Anzeige invertiert, und Antworten mit `model_remains` bevorzugen den Chat-Modelleintrag plus ein modellmarkiertes Plan-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 plus eine größere promptorientierte Gesamtsumme wiederherstellen, wenn gespeicherte Summen fehlen oder kleiner sind. -- **Tokens/Kosten pro Antwort** werden über `/usage off|tokens|full` gesteuert (an normale Antworten angehängt). +- **Anbieternutzung/-quota** (Beispiel: „Claude 80 % übrig“) wird in `/status` für den aktuellen Modellanbieter angezeigt, wenn Nutzungsverfolgung aktiviert ist. OpenClaw normalisiert Anbieterfenster auf `% übrig`; bei MiniMax werden Prozentfelder mit nur Restwert vor der Anzeige invertiert, und `model_remains`-Antworten bevorzugen den Chat-Modell-Eintrag plus ein planbezogenes Label mit Modell-Tag. +- **Token-/Cache-Zeilen** in `/status` können auf den neuesten Nutzungeintrag im Transkript zurückfallen, wenn der Live-Sitzungs-Snapshot lückenhaft ist. Vorhandene von null verschiedene Live-Werte haben weiterhin Vorrang, und der Transkript-Fallback kann auch das aktive Laufzeitmodell-Label sowie einen größeren promptorientierten Gesamtwert wiederherstellen, wenn gespeicherte Summen fehlen oder kleiner sind. +- **Token/Kosten pro Antwort** wird durch `/usage off|tokens|full` gesteuert (an normale Antworten angehängt). - `/model status` betrifft **Modelle/Auth/Endpunkte**, nicht die Nutzung. ## Modellauswahl (`/model`) @@ -253,14 +254,14 @@ Beispiele: Hinweise: -- `/model` und `/model list` zeigen eine kompakte, nummerierte Auswahl an (Modellfamilie + verfügbare Anbieter). -- Auf Discord öffnen `/model` und `/models` eine interaktive Auswahl mit Dropdowns für Anbieter und Modell plus einem Submit-Schritt. -- `/model <#>` wählt aus dieser Auswahl aus (und bevorzugt wenn möglich den aktuellen Anbieter). -- `/model status` zeigt die Detailansicht an, einschließlich konfiguriertem Anbieter-Endpunkt (`baseUrl`) und API-Modus (`api`), sofern verfügbar. +- `/model` und `/model list` zeigen eine kompakte nummerierte Auswahl (Modellfamilie + verfügbare Anbieter). +- Auf Discord öffnen `/model` und `/models` eine interaktive Auswahl mit Dropdowns für Anbieter und Modell sowie einem Schritt zum Absenden. +- `/model <#>` wählt aus dieser Auswahl aus (und bevorzugt nach Möglichkeit den aktuellen Anbieter). +- `/model status` zeigt die Detailansicht an, einschließlich konfiguriertem Anbieter-Endpunkt (`baseUrl`) und API-Modus (`api`), wenn verfügbar. -## Debug-Überschreibungen +## Debug-Overrides -`/debug` ermöglicht das Setzen von **nur zur Laufzeit gültigen** Konfigurationsüberschreibungen (Arbeitsspeicher, nicht Festplatte). Nur Eigentümer. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.debug: true`. +`/debug` ermöglicht es Ihnen, **nur zur Laufzeit geltende** Konfigurations-Overrides zu setzen (im Speicher, nicht auf Datenträger). Nur für Owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.debug: true`. Beispiele: @@ -274,12 +275,12 @@ Beispiele: Hinweise: -- Überschreibungen gelten sofort für neue Konfigurationslesevorgänge, schreiben aber **nicht** in `openclaw.json`. -- Verwenden Sie `/debug reset`, um alle Überschreibungen zu löschen und zur Konfiguration auf Datenträger zurückzukehren. +- Overrides werden sofort auf neue Konfigurationslesevorgänge angewendet, schreiben jedoch **nicht** in `openclaw.json`. +- Verwenden Sie `/debug reset`, um alle Overrides zu löschen und zur Konfiguration auf Datenträger zurückzukehren. ## Plugin-Trace-Ausgabe -`/trace` ermöglicht das Umschalten **sitzungsbezogener pluginbezogener Trace-/Debug-Zeilen**, ohne den vollständigen ausführlichen Modus einzuschalten. +`/trace` erlaubt es Ihnen, **sitzungsbezogene Plugin-Trace-/Debug-Zeilen** umzuschalten, ohne den vollständigen ausführlichen Modus zu aktivieren. Beispiele: @@ -294,13 +295,13 @@ Hinweise: - `/trace` ohne Argument zeigt den aktuellen Trace-Status der Sitzung an. - `/trace on` aktiviert Plugin-Trace-Zeilen für die aktuelle Sitzung. - `/trace off` deaktiviert sie wieder. -- Plugin-Trace-Zeilen können in `/status` und als diagnostische Folgemeldung nach der normalen Assistentenantwort erscheinen. -- `/trace` ersetzt `/debug` nicht; `/debug` verwaltet weiterhin nur zur Laufzeit gültige Konfigurationsüberschreibungen. -- `/trace` ersetzt `/verbose` nicht; normale ausführliche Tool-/Statusausgabe gehört weiterhin zu `/verbose`. +- Plugin-Trace-Zeilen können in `/status` und als nachfolgende Diagnosenachricht nach der normalen Assistentenantwort erscheinen. +- `/trace` ersetzt nicht `/debug`; `/debug` verwaltet weiterhin nur zur Laufzeit geltende Konfigurations-Overrides. +- `/trace` ersetzt nicht `/verbose`; normale ausführliche Tool-/Statusausgabe gehört weiterhin zu `/verbose`. ## Konfigurationsaktualisierungen -`/config` schreibt in Ihre Konfiguration auf Datenträger (`openclaw.json`). Nur Eigentümer. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.config: true`. +`/config` schreibt in Ihre Konfiguration auf Datenträger (`openclaw.json`). Nur für Owner. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.config: true`. Beispiele: @@ -315,11 +316,11 @@ Beispiele: Hinweise: - Die Konfiguration wird vor dem Schreiben validiert; ungültige Änderungen werden abgelehnt. -- Aktualisierungen durch `/config` bleiben über Neustarts hinweg erhalten. +- `/config`-Aktualisierungen bleiben über Neustarts hinweg erhalten. ## MCP-Aktualisierungen -`/mcp` schreibt von OpenClaw verwaltete MCP-Serverdefinitionen unter `mcp.servers`. Nur Eigentümer. 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: @@ -332,12 +333,12 @@ Beispiele: Hinweise: -- `/mcp` speichert Konfiguration in der OpenClaw-Konfiguration, nicht in Pi-eigenen Projekteinstellungen. +- `/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. Nur-Lese-Abläufe können `/plugin` als Alias verwenden. Standardmäßig deaktiviert; aktivieren Sie es mit `commands.plugins: true`. +`/plugins` ermöglicht es Betreibern, erkannte Plugins zu prüfen und deren 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: @@ -351,34 +352,34 @@ Beispiele: Hinweise: -- `/plugins list` und `/plugins show` verwenden echte Plugin-Erkennung gegen den aktuellen Workspace plus die Konfiguration auf Datenträger. -- `/plugins enable|disable` aktualisiert nur die Plugin-Konfiguration; Plugins werden nicht installiert oder deinstalliert. -- Starten Sie das Gateway nach Änderungen an Aktivieren/Deaktivieren neu, damit sie angewendet werden. +- `/plugins list` und `/plugins show` verwenden echte Plugin-Erkennung für den aktuellen Workspace plus die Konfiguration auf Datenträger. +- `/plugins enable|disable` aktualisiert nur die Plugin-Konfiguration; Plugins werden dadurch nicht installiert oder deinstalliert. +- Starten Sie das Gateway nach Änderungen durch Aktivieren/Deaktivieren 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 (Direktnachrichten teilen `main`, Gruppen haben ihre eigene Sitzung). - **Native Befehle** verwenden isolierte Sitzungen: - Discord: `agent::discord:slash:` - - Slack: `agent::slack:slash:` (Präfix über `channels.slack.slashCommand.sessionPrefix` konfigurierbar) - - Telegram: `telegram:slash:` (zielt über `CommandTargetSessionKey` auf die Chatsitzung) -- **`/stop`** zielt auf die aktive Chatsitzung, damit die aktuelle Ausführung 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 anlegen (mit denselben Namen wie `/help`). Menüs für Befehlsargumente werden in Slack als ephemere Block-Kit-Buttons bereitgestellt. + - Slack: `agent::slack:slash:` (Präfix konfigurierbar über `channels.slack.slashCommand.sessionPrefix`) + - Telegram: `telegram:slash:` (zielt über `CommandTargetSessionKey` auf die Chat-Sitzung) +- **`/stop`** zielt auf die aktive Chat-Sitzung, damit der aktuelle Lauf abgebrochen werden kann. +- **Slack:** `channels.slack.slashCommand` wird weiterhin für einen einzelnen Befehl im Stil von `/openclaw` unterstützt. Wenn Sie `commands.native` aktivieren, müssen Sie einen Slack-Slash-Befehl pro integriertem Befehl erstellen (mit denselben Namen wie `/help`). Befehlsargumentmenüs für Slack werden als ephemere Block-Kit-Schaltflächen bereitgestellt. - Native Slack-Ausnahme: Registrieren Sie `/agentstatus` (nicht `/status`), weil Slack `/status` reserviert. Text-`/status` funktioniert weiterhin in Slack-Nachrichten. ## BTW-Nebenfragen `/btw` ist eine schnelle **Nebenfrage** zur aktuellen Sitzung. -Anders als normaler Chat: +Im Unterschied zu normalem Chat: - verwendet es die aktuelle Sitzung als Hintergrundkontext, -- läuft es als separater **tool-loser** One-Shot-Aufruf, -- ändert es den zukünftigen Sitzungskontext nicht, +- läuft es als separater **Tool-loser** Einmalaufruf, +- verändert es den zukünftigen Sitzungskontext nicht, - wird es nicht in den Transkriptverlauf geschrieben, - wird es als Live-Nebenergebnis statt als normale Assistentennachricht zugestellt. -Das macht `/btw` nützlich, wenn Sie eine vorübergehende Klärung möchten, während die Haupt- +Dadurch ist `/btw` nützlich, wenn Sie eine vorübergehende Klärung möchten, während die Haupt- aufgabe weiterläuft. Beispiel: @@ -387,5 +388,5 @@ Beispiel: /btw was machen wir gerade? ``` -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.