chore(i18n): refresh de translations
This commit is contained in:
parent
dcae304d49
commit
73b4fdb2e0
File diff suppressed because it is too large
Load Diff
@ -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.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Kopplung" icon="link" href="/de/channels/pairing">
|
||||
@ -23,7 +23,7 @@ Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der S
|
||||
<Card title="Slash-Befehle" icon="terminal" href="/de/tools/slash-commands">
|
||||
Natives Befehlsverhalten und Befehlskatalog.
|
||||
</Card>
|
||||
<Card title="Fehlerbehebung für Channels" icon="wrench" href="/de/channels/troubleshooting">
|
||||
<Card title="Fehlerbehebung für Kanäle" icon="wrench" href="/de/channels/troubleshooting">
|
||||
Kanalübergreifende Diagnose- und Reparaturleitfäden.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
@ -36,10 +36,10 @@ Status: produktionsreif für DMs + Channels über Slack-App-Integrationen. Der S
|
||||
<Step title="Eine neue Slack-App erstellen">
|
||||
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-...`)
|
||||
</Step>
|
||||
|
||||
<Step title="OpenClaw konfigurieren">
|
||||
@ -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
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="HTTP-Request-URLs">
|
||||
<Tab title="HTTP-Anfrage-URLs">
|
||||
<Steps>
|
||||
<Step title="Eine neue Slack-App erstellen">
|
||||
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-...`)
|
||||
|
||||
</Step>
|
||||
|
||||
@ -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
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="HTTP-Request-URLs">
|
||||
<Tab title="HTTP-Anfrage-URLs">
|
||||
|
||||
```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.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Optionale native Slash-Befehle">
|
||||
|
||||
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 <duration|off> oder max-age <duration|off>"
|
||||
"usage_hint": "idle <duration|off> or max-age <duration|off>"
|
||||
},
|
||||
{
|
||||
"command": "/think",
|
||||
"description": "Das Denk-Level festlegen",
|
||||
"description": "Die Denkstufe festlegen",
|
||||
"usage_hint": "<level>"
|
||||
},
|
||||
{
|
||||
@ -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=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>"
|
||||
},
|
||||
{
|
||||
@ -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": "<name> [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"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab title="HTTP-Request-URLs">
|
||||
<Tab title="HTTP-Anfrage-URLs">
|
||||
|
||||
```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 <duration|off> oder max-age <duration|off>",
|
||||
"usage_hint": "idle <duration|off> or max-age <duration|off>",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/think",
|
||||
"description": "Das Denk-Level festlegen",
|
||||
"description": "Die Denkstufe festlegen",
|
||||
"usage_hint": "<level>",
|
||||
"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=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>",
|
||||
"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": "<name> [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
|
||||
</Tabs>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Optionale Autorschaft-Scopes (Schreibvorgänge)">
|
||||
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:`.
|
||||
<Accordion title="Optionale Scopes für die Verfasserschaft (Schreibvorgänge)">
|
||||
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:`.
|
||||
</Accordion>
|
||||
<Accordion title="Optionale User-Token-Scopes (Lesevorgänge)">
|
||||
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)
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -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`.
|
||||
|
||||
<Tip>
|
||||
Für Aktionen/Verzeichnislesevorgänge kann das User-Token bevorzugt werden, wenn es konfiguriert ist. Für Schreibvorgänge bleibt das Bot-Token bevorzugt; 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.
|
||||
</Tip>
|
||||
|
||||
## 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
|
||||
|
||||
<Tabs>
|
||||
<Tab title="DM-Richtlinie">
|
||||
`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
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Channel-Richtlinie">
|
||||
`channels.slack.groupPolicy` steuert die Channel-Behandlung:
|
||||
<Tab title="Kanalrichtlinie">
|
||||
`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`
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Erwähnungen und Channel-Benutzer">
|
||||
Channel-Nachrichten sind standardmäßig durch Erwähnungen begrenzt.
|
||||
<Tab title="Erwähnungen und Kanalbenutzer">
|
||||
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.<id>`; Namen nur über Startauflösung oder `dangerouslyAllowNameMatching`):
|
||||
Steuerelemente pro Kanal (`channels.slack.channels.<id>`; 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)
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 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:<agentId>:slack:channel:<channelId>`.
|
||||
- Thread-Antworten können bei Bedarf Thread-Sitzungssuffixe (`:thread:<threadTs>`) 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:<agentId>:slack:channel:<channelId>`.
|
||||
- Thread-Antworten können, falls zutreffend, Thread-Sitzungssuffixe (`:thread:<threadTs>`) 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:<id>]]`
|
||||
|
||||
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.<accountId>.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.<accountId>.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
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Eingehende Anhänge">
|
||||
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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Ausgehender Text und Dateien">
|
||||
- Text-Chunks verwenden `channels.slack.textChunkLimit` (Standard 4000)
|
||||
- `channels.slack.chunkMode="newline"` aktiviert eine absatzorientierte Aufteilung
|
||||
- Dateisendungen verwenden Slack-Upload-APIs und können Thread-Antworten (`thread_ts`) einschließen
|
||||
- Die Obergrenze für ausgehende Medien folgt `channels.slack.mediaMaxMb`, wenn konfiguriert; andernfalls verwenden 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
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Zustellungsziele">
|
||||
<Accordion title="Zustellziele">
|
||||
Bevorzugte explizite Ziele:
|
||||
|
||||
- `user:<id>` für DMs
|
||||
- `channel:<id>` für Channels
|
||||
- `channel:<id>` 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.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -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:<agentId>:slack:slash:<userId>` und leiten Befehlsausführungen weiterhin mit `CommandTargetSessionKey` an die Ziel-Konversationssitzung weiter.
|
||||
Slash-Sitzungen verwenden isolierte Schlüssel wie `agent:<agentId>:slack:slash:<userId>` 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
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Keine Antworten in Channels">
|
||||
<Accordion title="Keine Antworten in Kanälen">
|
||||
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
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Socket Mode verbindet sich nicht">
|
||||
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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Native/Slash-Befehle werden nicht ausgelöst">
|
||||
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.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
<Card title="Kopplung" icon="link" href="/de/channels/pairing">
|
||||
Die Standard-DM-Richtlinie für Telegram ist Kopplung.
|
||||
</Card>
|
||||
<Card title="Fehlerbehebung für Kanäle" icon="wrench" href="/de/channels/troubleshooting">
|
||||
<Card title="Channel-Fehlerbehebung" icon="wrench" href="/de/channels/troubleshooting">
|
||||
Kanalübergreifende Diagnose- und Reparaturleitfäden.
|
||||
</Card>
|
||||
<Card title="Gateway-Konfiguration" icon="settings" href="/de/gateway/configuration">
|
||||
Vollständige Muster und Beispiele für die Kanalkonfiguration.
|
||||
Vollständige Channel-Konfigurationsmuster und Beispiele.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## Schnelleinrichtung
|
||||
## Schnellstart
|
||||
|
||||
<Steps>
|
||||
<Step title="Bot-Token in BotFather erstellen">
|
||||
Ö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.
|
||||
|
||||
</Step>
|
||||
|
||||
@ -71,7 +71,7 @@ openclaw pairing approve telegram <CODE>
|
||||
</Step>
|
||||
|
||||
<Step title="Bot zu einer Gruppe hinzufügen">
|
||||
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.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
@ -79,31 +79,31 @@ openclaw pairing approve telegram <CODE>
|
||||
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.
|
||||
</Note>
|
||||
|
||||
## Einstellungen auf der Telegram-Seite
|
||||
## Einstellungen auf Telegram-Seite
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Datenschutzmodus und Gruppensichtbarkeit">
|
||||
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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Gruppenberechtigungen">
|
||||
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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Nützliche BotFather-Schalter">
|
||||
|
||||
- `/setjoingroups`, um Gruppenhinzufügungen zu erlauben/zu verweigern
|
||||
- `/setjoingroups`, um Gruppenhinzufügungen zu erlauben/verbieten
|
||||
- `/setprivacy` für das Sichtbarkeitsverhalten in Gruppen
|
||||
|
||||
</Accordion>
|
||||
@ -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<bot_token>/getUpdates"
|
||||
</Tab>
|
||||
|
||||
<Tab title="Gruppenrichtlinie und Allowlists">
|
||||
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<bot_token>/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<bot_token>/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<bot_token>/getUpdates"
|
||||
```
|
||||
|
||||
<Warning>
|
||||
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<bot_token>/getUpdates"
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Mention-Verhalten">
|
||||
<Tab title="Erwähnungsverhalten">
|
||||
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<bot_token>/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`
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@ -261,13 +261,13 @@ curl "https://api.telegram.org/bot<bot_token>/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:<threadId>` 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:<threadId>` 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<bot_token>/getUpdates"
|
||||
<Accordion title="Live-Stream-Vorschau (Nachrichtenbearbeitungen)">
|
||||
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
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -314,13 +315,13 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Native Befehle und benutzerdefinierte Befehle">
|
||||
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<bot_token>/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<bot_token>/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).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Inline-Schaltflächen">
|
||||
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<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Geltungsbereiche:
|
||||
Bereiche:
|
||||
|
||||
- `off`
|
||||
- `dm`
|
||||
@ -415,9 +416,9 @@ curl "https://api.telegram.org/bot<bot_token>/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<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Callback-Klicks werden als Text an den Agent weitergegeben:
|
||||
Callback-Klicks werden als Text an den Agenten übergeben:
|
||||
`callback_data: <value>`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Telegram-Nachrichtenaktionen für Agents und Automatisierung">
|
||||
<Accordion title="Telegram-Nachrichtenaktionen für Agenten und Automatisierung">
|
||||
Telegram-Tool-Aktionen umfassen:
|
||||
|
||||
- `sendMessage` (`to`, `content`, optional `mediaUrl`, `replyToMessageId`, `messageThreadId`)
|
||||
@ -449,7 +450,7 @@ curl "https://api.telegram.org/bot<bot_token>/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<bot_token>/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)
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Antwort-Threading-Tags">
|
||||
Telegram unterstützt explizite Antwort-Threading-Tags in generierter Ausgabe:
|
||||
<Accordion title="Reply-Threading-Tags">
|
||||
Telegram unterstützt explizite Reply-Threading-Tags in generierter Ausgabe:
|
||||
|
||||
- `[[reply_to_current]]` antwortet auf die auslösende Nachricht
|
||||
- `[[reply_to:<id>]]` antwortet auf eine bestimmte Telegram-Nachrichten-ID
|
||||
@ -477,27 +478,27 @@ curl "https://api.telegram.org/bot<bot_token>/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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Forenthemen und Thread-Verhalten">
|
||||
Forum-Supergruppen:
|
||||
|
||||
- Sitzungsschlüssel für Themen hängen `:topic:<threadId>` an
|
||||
- Antworten und Tippindikatoren zielen auf den Themen-Thread
|
||||
- Themen-Konfigurationspfad:
|
||||
- Topic-Sitzungsschlüssel hängen `:topic:<threadId>` an
|
||||
- Antworten und Tippen zielen auf den Themen-Thread
|
||||
- Topic-Konfigurationspfad:
|
||||
`channels.telegram.groups.<chatId>.topics.<threadId>`
|
||||
|
||||
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<bot_token>/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<bot_token>/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<bot_token>/getUpdates"
|
||||
|
||||
**Thread-gebundener ACP-Spawn aus dem Chat**:
|
||||
|
||||
- `/acp spawn <agent> --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 <agent> --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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Audio, Video und Sticker">
|
||||
### 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<bot_token>/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<bot_token>/getUpdates"
|
||||
|
||||
Verarbeitung eingehender Sticker:
|
||||
|
||||
- statisches WEBP: wird heruntergeladen und verarbeitet (Platzhalter `<media:sticker>`)
|
||||
- animiertes TGS: wird übersprungen
|
||||
- Video-WEBM: wird übersprungen
|
||||
- statisches WEBP: heruntergeladen und verarbeitet (Platzhalter `<media:sticker>`)
|
||||
- animiertes TGS: übersprungen
|
||||
- Video-WEBM: übersprungen
|
||||
|
||||
Sticker-Kontextfelder:
|
||||
|
||||
@ -664,7 +665,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Sticker-Aktion zum Senden:
|
||||
Sticker-Sendeaktion:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -688,7 +689,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Reaktionsbenachrichtigungen">
|
||||
<Accordion title="Benachrichtigungen zu Reaktionen">
|
||||
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<bot_token>/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`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Ack-Reaktionen">
|
||||
`ackReaction` sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet.
|
||||
|
||||
Reihenfolge der Auflösung:
|
||||
Auflösungsreihenfolge:
|
||||
|
||||
- `channels.telegram.accounts.<accountId>.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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Konfigurationsschreibvorgänge aus Telegram-Ereignissen und -Befehlen">
|
||||
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<bot_token>/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.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Limits, Wiederholungsversuche und CLI-Ziele">
|
||||
<Accordion title="Limits, Wiederholungen und CLI-Ziele">
|
||||
- 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["<user_id>"].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
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Exec-Genehmigungen in Telegram">
|
||||
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
|
||||
<AccordionGroup>
|
||||
<Accordion title="Bot antwortet nicht auf Gruppennachrichten ohne Erwähnung">
|
||||
|
||||
- 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`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Bot sieht Gruppennachrichten überhaupt nicht">
|
||||
|
||||
- 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
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Befehle funktionieren nur teilweise oder gar nicht">
|
||||
<Accordion title="Befehle funktionieren teilweise oder gar nicht">
|
||||
|
||||
- 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
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Polling- oder Netzwerk-Instabilität">
|
||||
|
||||
- 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.<accountId>.network.dangerouslyAllowPrivateNetwork`.
|
||||
- Dieselbe bewusste Aktivierung ist auch pro Konto unter
|
||||
`channels.telegram.accounts.<accountId>.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.
|
||||
|
||||
<Warning>
|
||||
`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.
|
||||
</Warning>
|
||||
|
||||
- Umgebungsüberschreibungen (temporär):
|
||||
@ -986,59 +988,60 @@ dig +short api.telegram.org AAAA
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
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.<id>.groupPolicy`: gruppenspezifische Überschreibung für `groupPolicy` (`open | allowlist | disabled`).
|
||||
- `channels.telegram.groups.<id>.requireMention`: Standard für Erwähnungs-Gating.
|
||||
- `channels.telegram.groups`: Standardwerte pro Gruppe + Allowlist (verwenden Sie `"*"` für globale Standardwerte).
|
||||
- `channels.telegram.groups.<id>.groupPolicy`: Überschreibung pro Gruppe für `groupPolicy` (`open | allowlist | disabled`).
|
||||
- `channels.telegram.groups.<id>.requireMention`: Standard für Mention-Gating.
|
||||
- `channels.telegram.groups.<id>.skills`: Skills-Filter (weglassen = alle Skills, leer = keine).
|
||||
- `channels.telegram.groups.<id>.allowFrom`: gruppenspezifische Überschreibung der Absender-Allowlist.
|
||||
- `channels.telegram.groups.<id>.systemPrompt`: zusätzlicher Systemprompt für die Gruppe.
|
||||
- `channels.telegram.groups.<id>.allowFrom`: Überschreibung der Absender-Allowlist pro Gruppe.
|
||||
- `channels.telegram.groups.<id>.systemPrompt`: zusätzlicher System-Prompt für die Gruppe.
|
||||
- `channels.telegram.groups.<id>.enabled`: deaktiviert die Gruppe, wenn `false`.
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.*`: themenspezifische Überschreibungen (Gruppenfelder + themenspezifisches `agentId`).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.agentId`: dieses Thema an einen bestimmten Agent weiterleiten (überschreibt Routing auf Gruppenebene und Binding-Routing).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy`: themenspezifische Überschreibung für `groupPolicy` (`open | allowlist | disabled`).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.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.<id>.topics.<threadId>.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.<id>.topics.<threadId>.*`: Überschreibungen pro Topic (Gruppenfelder + Topic-spezifisches `agentId`).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.agentId`: dieses Topic an einen bestimmten Agenten routen (überschreibt Routing auf Gruppenebene und über Bindings).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy`: Überschreibung pro Topic für `groupPolicy` (`open | allowlist | disabled`).
|
||||
- `channels.telegram.groups.<id>.topics.<threadId>.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.<id>.topics.<threadId>.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.<account>.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.<account>.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.<account>.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)
|
||||
|
||||
@ -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.<name>.cdpPort` pro Instanz.
|
||||
- Remote-Chrome: Verwenden Sie `browser.profiles.<name>.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.
|
||||
|
||||
@ -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 `! <cmd>` zum Ausführen von Host-Shell-Befehlen (`/bash <cmd>` 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 `! <cmd>`, um Host-Shell-Befehle auszuführen (`/bash <cmd>` ist ein Alias; erfordert `tools.elevated`-Allowlists).
|
||||
- `commands.bashForegroundMs` (Standard: `2000`) steuert, wie lange Bash wartet, bevor in den Hintergrundmodus gewechselt wird (`0` 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 <duration|off>` und `/session max-age <duration|off>` verwalten das Ablaufen der Thread-Bindung.
|
||||
- `/think <level>` 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 <duration|off>` und `/session max-age <duration|off>` verwalten den Ablauf der Thread-Bindung.
|
||||
- `/think <level>` 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=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` zeigt die Exec-Standards an oder setzt sie.
|
||||
- `/elevated [on|off|ask|full]` schaltet den erhöhten Modus um. Alias: `/elev`.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` zeigt Standardwerte für Ausführung an oder setzt sie.
|
||||
- `/model [name|#|status]` zeigt das Modell an oder setzt es.
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` listet Anbieter oder Modelle für einen Anbieter auf.
|
||||
- `/queue <mode>` verwaltet Queue-Verhalten (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) plus Optionen wie `debounce:2s cap:25 drop:summarize`.
|
||||
- `/queue <mode>` 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 <name> [input]` führt einen Skill nach Namen aus.
|
||||
- `/allowlist [list|add|remove] ...` verwaltet Einträge in der Zulassungsliste. Nur Text.
|
||||
- `/approve <id> <decision>` bearbeitet Exec-Genehmigungsabfragen.
|
||||
- `/btw <question>` 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 <id> <decision>` verarbeitet Genehmigungsaufforderungen für `exec`.
|
||||
- `/btw <question>` stellt eine Nebenfrage, ohne den zukünftigen Sitzungskontext zu ändern. Siehe [/tools/btw](/de/tools/btw).
|
||||
- `/subagents list|kill|log|info|send|steer|spawn` verwaltet 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 <target>` bindet den aktuellen Discord-Thread oder das aktuelle Telegram-Thema/Gespräch an ein Sitzungsziel.
|
||||
- `/focus <target>` 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 <id|#|all>` bricht einen oder alle laufenden Sub-Agenten ab.
|
||||
- `/steer <id|#> <message>` 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 <id|#|all>` bricht einen oder alle laufenden Sub-Agents ab.
|
||||
- `/steer <id|#> <message>` 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 <command>` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! <command>`. Erfordert `commands.bash: true` plus `tools.elevated`-Zulassungslisten.
|
||||
- `/send on|off|inherit` setzt die Send-Richtlinie. Nur für Owner.
|
||||
- `/bash <command>` führt einen Host-Shell-Befehl aus. Nur Text. Alias: `! <command>`. Erfordert `commands.bash: true` plus `tools.elevated`-Allowlists.
|
||||
- `!poll [sessionId]` prüft einen Bash-Hintergrundjob.
|
||||
- `!stop [sessionId]` stoppt einen Bash-Hintergrundjob.
|
||||
|
||||
### Generierte Dock-Befehle
|
||||
|
||||
Dock-Befehle werden aus 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 <camera|screen|writes|all> [duration]|disarm` aktiviert vorübergehend Hochrisiko-Befehle des Phone-Node.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` 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 <camera|screen|writes|all> [duration]|disarm` aktiviert vorübergehend risikoreiche Phone-Node-Befehle.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` 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 <name> [input]` funktioniert immer als generischer Einstiegspunkt.
|
||||
- Skills können auch als direkte Befehle wie `/prose` erscheinen, wenn der Skill/das Plugin sie registriert.
|
||||
- Die Registrierung nativer Skill-Befehle wird über `commands.nativeSkills` und `channels.<provider>.commands.nativeSkills` gesteuert.
|
||||
- Die Registrierung nativer Skill-Befehle wird durch `commands.nativeSkills` und `channels.<provider>.commands.nativeSkills` gesteuert.
|
||||
|
||||
Hinweise:
|
||||
|
||||
- Befehle akzeptieren optional ein `:` zwischen Befehl und Argumenten (z. B. `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` akzeptiert einen 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 <model>` 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 <id>` und `/config set channels.<provider>.accounts.<id>...` 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 <id>` und `/config set channels.<provider>.accounts.<id>...` 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 <spec>` akzeptiert dieselben Plugin-Spezifikationen wie `openclaw plugins install`: lokaler Pfad/Archiv, npm-Paket oder `clawhub:<pkg>`.
|
||||
- `/plugins enable|disable` aktualisiert die Plugin-Konfiguration und 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 <name> [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 <name> [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:<agentId>:discord:slash:<userId>`
|
||||
- Slack: `agent:<agentId>:slack:slash:<userId>` (Präfix über `channels.slack.slashCommand.sessionPrefix` konfigurierbar)
|
||||
- Telegram: `telegram:slash:<userId>` (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:<agentId>:slack:slash:<userId>` (Präfix konfigurierbar über `channels.slack.slashCommand.sessionPrefix`)
|
||||
- Telegram: `telegram:slash:<userId>` (zielt über `CommandTargetSessionKey` auf die Chat-Sitzung)
|
||||
- **`/stop`** zielt auf die aktive Chat-Sitzung, damit der aktuelle Lauf abgebrochen werden kann.
|
||||
- **Slack:** `channels.slack.slashCommand` wird weiterhin für einen einzelnen Befehl im Stil von `/openclaw` unterstützt. Wenn Sie `commands.native` aktivieren, müssen Sie einen Slack-Slash-Befehl pro integriertem Befehl erstellen (mit denselben Namen wie `/help`). 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.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user