Gilt für OpenClaw v2026.2 | Dieser Artikel richtet sich an Nutzer, die die Grundkonfiguration abgeschlossen haben und die Architektur tiefer verstehen möchten. Es wird empfohlen, zuerst die Artikel 1-3 durchzuarbeiten.
TL;DR: Das Gateway ist die zentrale Steuerungsebene von OpenClaw. Session ist der Dialogkontext-Container (main/channel/group), Message Router bestimmt das Nachrichtenrouting, Tool Registry verwaltet Werkzeugberechtigungen, Skills sind vorgefertigte Fähigkeitserweiterungen. WebSocket-Endpunkt: ws://127.0.0.1:18789/ws, häufige Befehle: openclaw gateway/doctor/config. Das Verständnis dieser Konzepte ist die Grundlage für fortgeschrittene Konfiguration.
Architekturübersicht
Gesamtarchitektur
flowchart TB
subgraph Clients["Client-Schicht"]
WA[WhatsApp]
TG[Telegram]
DC[Discord]
SL[Slack]
WC[WebChat]
CLI[CLI]
MAC[macOS App]
IOS[iOS Node]
AND[Android Node]
end
subgraph Gateway["Gateway-Schicht"]
WS[WebSocket Server]
HTTP[HTTP Server]
MR[Message Router]
SM[Session Manager]
TR[Tool Registry]
EM[Event Manager]
CFG[Config Store]
end
subgraph Agent["Agent-Schicht"]
PI[Pi Agent]
PROMPT[Prompt Engine]
TOOLS[Tool Executor]
SKILLS[Skills Manager]
end
subgraph External["Externe Dienste"]
FS[Dateisystem]
BR[Browser]
API[API-Dienste]
DB[Datenbank]
CAL[Cron-Scheduler]
end
Clients --> WS
Clients --> HTTP
WS --> MR
HTTP --> MR
MR --> SM
SM --> PI
PI --> PROMPT
PI --> TOOLS
PI --> SKILLS
TOOLS --> TR
TR --> External
EM --> MR
CFG --> SM
CFG --> TR
Komponentenaufgaben
| Komponente |
Aufgabe |
Schlüsselfähigkeiten |
| WebSocket Server |
Client-Verbindungsverwaltung |
Verbindungspflege, Heartbeat-Erkennung, Nachrichtenversand/-empfang |
| HTTP Server |
REST API und statische Ressourcen |
Web UI, Gesundheitscheck, Konfigurationsschnittstelle |
| Message Router |
Nachrichtenrouting und -verteilung |
Kanalerkennung, Sitzungszuordnung, Nachrichtenweiterleitung |
| Session Manager |
Sitzungslebenszyklus-Verwaltung |
Erstellen, Wiederherstellen, Komprimieren, Bereinigen |
| Tool Registry |
Werkzeugregistrierung und -aufruf |
Werkzeugerkennung, Berechtigungskontrolle, Ausführungs-Sandbox |
| Event Manager |
Ereignisverteilung und -abonnement |
Webhook, Cron, interne Ereignisse |
| Config Store |
Konfigurationspersistenz |
Hot-Update, Versionsverwaltung, Backup/Wiederherstellung |
Datenfluss
sequenceDiagram
participant U as Benutzer
participant C as Channel
participant WS as WebSocket
participant MR as Router
participant SM as Session
participant A as Agent
participant T as Tools
U->>C: Nachricht senden
C->>WS: Nachricht weiterleiten
WS->>MR: Routing-Anfrage
MR->>SM: Sitzung suchen/erstellen
SM-->>MR: Sitzung zurückgeben
MR->>A: Nachricht zustellen
A->>A: Nachricht verarbeiten
A->>T: Werkzeug aufrufen (optional)
T-->>A: Ergebnis zurückgeben
A-->>MR: Antwort generieren
MR->>WS: Antwort senden
WS->>C: Antwort weiterleiten
C-->>U: Nachricht anzeigen
Session-Modell
Was ist eine Session?
Session ist eines der Kernkonzepte in OpenClaw. Jede Session repräsentiert einen unabhängigen Dialogkontext und enthält:
| Bestandteil |
Beschreibung |
| Nachrichtenverlauf |
Vollständige Konversationshistorie |
| Kontextzustand |
Aktuelle Aufgabe, temporäre Variablen |
| Konfiguration |
Modell, Denkniveau, Sandbox-Einstellungen |
| Metadaten |
Erstellungszeit, Token-Statistik, verknüpfte Kanäle |
Session-Typen
{
"sessions": {
"main": {
"type": "main",
"model": "anthropic/claude-opus-4-6",
"thinkingLevel": "high",
"channel": null,
"created": "2026-02-26T10:00:00Z"
},
"telegram:user:123456789": {
"type": "channel",
"model": "anthropic/claude-opus-4-6",
"thinkingLevel": "normal",
"channel": "telegram",
"sender": "123456789",
"created": "2026-02-26T10:05:00Z"
},
"telegram:group:-100123456789": {
"type": "group",
"model": "anthropic/claude-sonnet-4",
"thinkingLevel": "minimal",
"channel": "telegram",
"groupId": "-100123456789",
"created": "2026-02-26T10:10:00Z"
}
}
}
| Typ |
Session-ID-Format |
Beschreibung |
| main |
main |
Standard-Hauptsitzung, verwendet von CLI und WebChat |
| channel |
{channel}:user:{senderId} |
Privatchat-Sitzung, isoliert nach Kanal und Benutzer |
| group |
{channel}:group:{groupId} |
Gruppensitzung, isoliert nach Gruppe |
Session-Lebenszyklus
stateDiagram-v2
[*] --> Erstellt: Nachricht empfangen
Erstellt --> Aktiv: Erste Antwort
Aktiv --> Aktiv: Nachrichtenaustausch
Aktiv --> Inaktiv: Keine Aktivität
Inaktiv --> Aktiv: Neue Nachricht
Inaktiv --> Komprimiert: Automatische Komprimierung
Komprimiert --> Aktiv: Gespräch fortsetzen
Aktiv --> Zurückgesetzt: /reset Befehl
Zurückgesetzt --> Erstellt: Neustart
Aktiv --> Bereinigt: Sitzungsbereinigung
Inaktiv --> Bereinigt: Timeout-Bereinigung
Bereinigt --> [*]
Session-Befehle
Folgende Befehle im Chat zur Sitzungsverwaltung:
| Befehl |
Funktion |
Beispiel |
/status |
Sitzungsstatus anzeigen |
Modell, Token, Kosten anzeigen |
/new oder /reset |
Sitzung zurücksetzen |
Verlauf löschen, neues Gespräch |
/compact |
Kontext komprimieren |
Verlauf zusammenfassen, Token freigeben |
/think <level> |
Denkniveau einstellen |
/think high |
/verbose on/off |
Detailmodus ein/aus |
Tool-Aufrufe anzeigen/verbergen |
/usage off/tokens/full |
Nutzungsanzeige |
/usage full |
Session-Konfiguration
{
"sessionPruning": {
"enabled": true,
"maxAge": 86400000,
"maxSize": 100,
"pruneOnStartup": true
},
"sessionCompression": {
"enabled": true,
"threshold": 50000,
"targetRatio": 0.3
}
}
| Option |
Beschreibung |
Standardwert |
maxAge |
Maximale Sitzungslebenszeit (Millisekunden) |
24 Stunden |
maxSize |
Maximale Nachrichtenanzahl |
100 Nachrichten |
threshold |
Komprimierungsschwelle (Token) |
50000 |
targetRatio |
Komprimierungsziel |
30% |
Message Router
Routing-Regeln
Der Message Router leitet empfangene Nachrichten an die richtige Session weiter:
flowchart TB
MSG[Nachricht empfangen] --> CH{Kanaltyp?}
CH -->|Privatchat| DM[Absender-ID extrahieren]
CH -->|Gruppenchat| GRP[Gruppen-ID extrahieren]
CH -->|WebChat/CLI| MAIN[main-Session verwenden]
DM --> SID[Session: channel:user:id]
GRP --> GID[Session: channel:group:id]
SID --> EXISTS{Session vorhanden?}
GID --> EXISTS
EXISTS -->|Ja| LOAD[Session laden]
EXISTS -->|Nein| CREATE[Neue Session erstellen]
CREATE --> LOAD
LOAD --> AGENT[An Agent übergeben]
Routing-Konfiguration
{
"messageRouting": {
"defaultSession": "main",
"channelMapping": {
"telegram": {
"userPrefix": "telegram:user",
"groupPrefix": "telegram:group"
},
"whatsapp": {
"userPrefix": "whatsapp:user",
"groupPrefix": "whatsapp:group"
}
},
"groupActivation": {
"mode": "mention",
"mentionPatterns": ["@bot", "/bot"]
}
}
}
Gruppenaktivierungsstrategie
| Modus |
Beschreibung |
Anwendungsfall |
mention |
Muss @erwähnt werden |
Aktive Gruppen, weniger Störung |
always |
Auf alle Nachrichten reagieren |
Dedizierte Arbeitsgruppen |
keyword |
Bei Schlüsselwörtern reagieren |
Themenspezifische Gruppen |
{
"channels": {
"telegram": {
"groups": {
"*": {
"requireMention": true
},
"-100WORKGROUP": {
"requireMention": false,
"activationMode": "always"
}
}
}
}
}
Integrierte Werkzeuge
OpenClaw enthält umfangreiche integrierte Werkzeuge:
| Werkzeugkategorie |
Werkzeugname |
Funktion |
| Dateioperationen |
read |
Datei lesen |
|
write |
Datei schreiben |
|
edit |
Datei bearbeiten |
| Befehlsausführung |
bash |
Shell-Befehl ausführen |
|
process |
Prozesse verwalten |
| Browser |
browser |
Browser steuern |
| Suche |
web_search |
Websuche |
| Knoten |
camera |
Kameraoperationen |
|
screen_record |
Bildschirmaufnahme |
|
notify |
Benachrichtigung senden |
| Sitzung |
sessions_list |
Sitzungen auflisten |
|
sessions_history |
Sitzungsverlauf |
|
sessions_send |
Sitzungsübergreifende Nachricht |
| Canvas |
canvas |
Canvas-Operationen |
Werkzeug-Berechtigungskontrolle
{
"agents": {
"defaults": {
"sandbox": {
"mode": "off",
"allowlist": ["read", "write", "bash", "web_search"],
"denylist": []
}
}
}
}
| Sandbox-Modus |
Beschreibung |
off |
Alle Werkzeuge verfügbar (nur main-Session) |
non-main |
Sandbox für Nicht-main-Sessions aktiviert |
always |
Sandbox für alle Sessions aktiviert |
Detaillierte Sandbox-Konfiguration
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history"
],
"denylist": [
"browser",
"canvas",
"camera",
"screen_record"
]
}
}
}
}
Skills-System
Skills-Architektur
flowchart LR
subgraph Skills["Skills-Verzeichnis"]
S1[gmail/SKILL.md]
S2[calendar/SKILL.md]
S3[home-assistant/SKILL.md]
end
subgraph Manager["Skills Manager"]
DISC[Erkennung]
LOAD[Laden]
EXEC[Ausführung]
end
subgraph Agent["Agent"]
PROMPT[In Prompt einfügen]
TOOLS[Tools registrieren]
RES[Ergebnis zurückgeben]
end
Skills --> DISC
DISC --> LOAD
LOAD --> PROMPT
LOAD --> TOOLS
PROMPT --> Agent
TOOLS --> Agent
Agent --> EXEC
EXEC --> RES
Skills-Verzeichnisstruktur
~/.openclaw/workspace/skills/
├── gmail/
│ ├── SKILL.md # Skill-Definition
│ ├── package.json # Abhängigkeiten (optional)
│ └── src/
│ └── index.js # Implementierung (optional)
├── calendar/
│ └── SKILL.md
└── my-custom-skill/
└── SKILL.md
SKILL.md Struktur
# Gmail Skill
## Description
Send and read Gmail messages through OpenClaw.
## Triggers
- email
- gmail
- mail
- send email
- read email
## Instructions
When the user wants to send an email:
1. Ask for recipient, subject, and body
2. Use the gmail_send tool
3. Confirm the email was sent
When the user wants to check emails:
1. Use the gmail_list tool
2. Summarize the results
## Tools
- gmail_list: List recent emails
- gmail_send: Send an email
- gmail_read: Read a specific email
## Examples
User: "Check my email"
Action: Use gmail_list tool
User: "Send an email to [email protected]"
Action: Ask for subject and body, then use gmail_send
Skills installieren
# Von ClawHub installieren
openclaw skill install gmail
# Von GitHub installieren
openclaw skill install github:user/repo/skill-name
# Manuell installieren
git clone https://github.com/user/skill-repo.git ~/.openclaw/workspace/skills/skill-name
Skills-Konfiguration
{
"skills": {
"bundled": true,
"managed": true,
"workspace": true,
"installGating": true
}
}
| Option |
Beschreibung |
bundled |
Integrierte Skills aktivieren |
managed |
ClawHub-verwaltete Skills aktivieren |
workspace |
Lokale Workspace-Skills aktivieren |
installGating |
Bestätigung vor Installation erforderlich |
WebSocket-Protokoll
Verbindungsendpunkt
ws://127.0.0.1:18789/ws
{
"type": "message_type",
"id": "unique_message_id",
"data": {
// Nachrichteninhalt
}
}
Client-Nachrichtentypen
| Typ |
Beschreibung |
Beispiel |
agent.send |
Nachricht senden |
Mit Agent chatten |
session.list |
Sitzungen auflisten |
Sitzungen verwalten |
session.get |
Sitzungsdetails abrufen |
Sitzung anzeigen |
session.patch |
Sitzungskonfiguration ändern |
Modell wechseln |
config.get |
Konfiguration abrufen |
Einstellungen lesen |
config.set |
Konfiguration setzen |
Einstellungen aktualisieren |
Server-Nachrichtentypen
| Typ |
Beschreibung |
agent.response |
Agent-Antwort |
agent.thinking |
Denkprozess (Streaming) |
tool.invoked |
Werkzeugaufruf |
tool.result |
Werkzeugergebnis |
session.created |
Sitzung erstellt |
session.reset |
Sitzung zurückgesetzt |
error |
Fehlermeldung |
Beispiel: Nachricht senden
// WebSocket verbinden
const ws = new WebSocket('ws://127.0.0.1:18789/ws');
// Nachricht senden
ws.send(JSON.stringify({
type: 'agent.send',
id: 'msg-001',
data: {
session: 'main',
message: 'Hallo, bitte stell dich vor'
}
}));
// Antwort empfangen
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
console.log(msg);
// Beispielausgabe:
// {
// type: 'agent.response',
// id: 'msg-001',
// data: {
// content: 'Hallo! Ich bin dein OpenClaw-Assistent...',
// session: 'main'
// }
// }
};
Event-System
Integrierte Ereignisse
| Ereignis |
Auslöser |
message.received |
Benutzernachricht empfangen |
message.sent |
Antwortnachricht gesendet |
session.created |
Neue Sitzung erstellt |
session.reset |
Sitzung zurückgesetzt |
tool.invoked |
Werkzeug aufgerufen |
tool.completed |
Werkzeugausführung abgeschlossen |
agent.thinking |
Agent denkt nach |
error.occurred |
Fehler aufgetreten |
Webhook-Konfiguration
{
"webhooks": [
{
"url": "https://your-server.com/webhook/openclaw",
"events": ["message.received", "tool.invoked"],
"secret": "your_webhook_secret",
"headers": {
"X-Custom-Header": "value"
}
}
]
}
Webhook-Payload
{
"event": "message.received",
"timestamp": "2026-02-26T10:30:00Z",
"data": {
"channel": "telegram",
"sender": "123456789",
"session": "telegram:user:123456789",
"message": "Hallo",
"metadata": {
"messageId": "msg_abc123",
"timestamp": "2026-02-26T10:30:00Z"
}
},
"signature": "sha256=..."
}
Cron-Zeitplanaufgaben
Konfigurationsbeispiel
{
"cron": [
{
"id": "daily-briefing",
"schedule": "0 9 * * *",
"session": "main",
"message": "Bitte gib mir meinen heutigen Terminplan",
"enabled": true
},
{
"id": "weekly-summary",
"schedule": "0 18 * * 5",
"session": "main",
"message": "Erstelle eine Wochenzusammenfassung",
"enabled": true
}
]
}
Cron-Ausdruck
┌───────────── Minute (0 - 59)
│ ┌───────────── Stunde (0 - 23)
│ │ ┌───────────── Tag (1 - 31)
│ │ │ ┌───────────── Monat (1 - 12)
│ │ │ │ ┌───────────── Wochentag (0 - 6, 0 = Sonntag)
│ │ │ │ │
* * * * *
Gängige Beispiele
| Ausdruck |
Beschreibung |
0 9 * * * |
Täglich um 9:00 |
0 18 * * 1-5 |
Werktags um 18:00 |
*/30 * * * * |
Alle 30 Minuten |
0 0 1 * * |
Am 1. jedes Monats um 0:00 |
Konfigurationsebenen und Priorität
Prioritätsreihenfolge
CLI-Parameter > Umgebungsvariablen > Konfigurationsdatei > Standardwerte
Konfigurationsquellen
| Quelle |
Ort |
Priorität |
| CLI-Parameter |
Kommandozeilenargumente |
Höchste |
| Umgebungsvariablen |
OPENCLAW_* |
Hoch |
| Konfigurationsdatei |
~/.openclaw/openclaw.json |
Mittel |
| Standardwerte |
Im Code integriert |
Niedrigste |
Konfigurationsbeispiel mit Überschreibung
// ~/.openclaw/openclaw.json
{
"agent": {
"model": "anthropic/claude-opus-4-6"
}
}
# Umgebungsvariable überschreibt
export OPENCLAW_AGENT_MODEL="anthropic/claude-sonnet-4"
# CLI-Parameter überschreibt (höchste Priorität)
openclaw gateway --model "anthropic/claude-opus-4"
Konfiguration Hot-Update
# Konfiguration aktualisieren (ohne Neustart)
openclaw config set agent.model "anthropic/claude-sonnet-4"
# Konfigurationsdatei neu laden
openclaw config reload
# Konfiguration überprüfen
openclaw config get agent.model
Befehlsreferenz
Gateway-Verwaltung
# Gateway starten
openclaw gateway
# Port angeben
openclaw gateway --port 18790
# Im Hintergrund
openclaw gateway --daemon
# Detaillierte Logs
openclaw gateway --verbose
# Gesundheitscheck
openclaw health
Sitzungsverwaltung
# Alle Sitzungen auflisten
openclaw session list
# Sitzungsdetails anzeigen
openclaw session show main
openclaw session show telegram:user:123456789
# Sitzung zurücksetzen
openclaw session reset main
# Sitzung löschen
openclaw session delete telegram:user:123456789
Konfigurationsverwaltung
# Konfiguration anzeigen
openclaw config get agent.model
openclaw config get channels.telegram.botToken
# Konfiguration setzen
openclaw config set agent.thinkingLevel high
# Alle Konfigurationen auflisten
openclaw config list
# Konfiguration validieren
openclaw config validate
Diagnosewerkzeuge
# Vollständige Diagnose
openclaw doctor
# Bestimmten Bereich prüfen
openclaw doctor --check gateway
openclaw doctor --check config
openclaw doctor --check channels
# Logs anzeigen
openclaw logs
openclaw logs --follow
openclaw logs --level error
Fehlerbehebung
Gateway startet nicht
# Port-Belegung prüfen
lsof -i :18789
netstat -tlnp | grep 18789
# Konfigurationssyntax prüfen
openclaw config validate
# Detaillierte Fehler anzeigen
openclaw gateway --verbose 2>&1 | tee gateway.log
Sitzung verloren
# Sitzungsverzeichnis prüfen
ls -la ~/.openclaw/sessions/
# Bereinigungskonfiguration prüfen
openclaw config get sessionPruning
# Automatische Bereinigung deaktivieren
openclaw config set sessionPruning.enabled false
Werkzeugaufruf fehlgeschlagen
# Sandbox-Konfiguration prüfen
openclaw config get agents.defaults.sandbox
# Sandbox vorübergehend deaktivieren
openclaw config set agents.defaults.sandbox.mode off
# Werkzeug-Logs anzeigen
openclaw logs --filter tool
WebSocket-Verbindung fehlgeschlagen
# Gateway-Status prüfen
curl http://127.0.0.1:18789/health
# WebSocket-Endpunkt prüfen
wscat -c ws://127.0.0.1:18789/ws
# Firewall prüfen
sudo ufw status
sudo iptables -L -n | grep 18789
Fazit
Das Verständnis der Gateway-Kernkonzepte ist der Schlüssel zur Beherrschung von OpenClaw:
- Session: Container für den Dialogkontext, unterstützt Typisolierung
- Message Router: Kern des Nachrichtenroutings, bestimmt Nachrichtenziel
- Tool Registry: Werkzeugregistrierungszentrale, steuert Agent-Fähigkeiten
- Skills: Skill-Erweiterungssystem, schnelle Funktionserweiterung
- WebSocket: Echtzeit-Kommunikationsprotokoll, unterstützt benutzerdefinierte Clients
- Event-System: Ereignisverteilungsmechanismus, unterstützt Webhook und Cron
Diese Konzepte werden in den folgenden Artikeln immer wieder auftauchen. Ein tiefes Verständnis hilft dir, OpenClaw besser zu konfigurieren und zu nutzen.
Zusammenfassung dieses Artikels:
- Gateway-Gesamtarchitektur und Komponentenaufgaben beherrscht
- Session-Modell und Lebenszyklus verstanden
- Nachrichtenrouting und Gruppenaktivierungsstrategie erlernt
- Werkzeugberechtigungen und Sandbox-Konfiguration kennengelernt
- WebSocket-Protokoll und Event-System beherrscht
Änderungsprotokoll:
- 2026-02-26: Erstveröffentlichung, basierend auf OpenClaw v2026.2
Seriennavigation: