Zurück

04. OpenClaw Gateway Kernkonzepte im Detail

Tiefgehendes Verständnis der OpenClaw Gateway-Kernarchitektur. Dieser Artikel erläutert detailliert das Session-Modell, den Message Router, die Tool Registry, das Skills-System, das WebSocket-Protokoll und weitere Schlüsselkonzepte, um Entwicklern fortgeschrittene Konfiguration und Fehlerbehebung zu ermöglichen.

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"
        }
      }
    }
  }
}

Tool Registry

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

Nachrichtenformat

{
  "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: