Dotyczy OpenClaw v2026.2 | Artykuł dla osób, które ukończyły podstawową konfigurację i chcą lepiej zrozumieć architekturę. Zalecane wcześniejsze ukończenie 3 pierwszych poradników.
TL;DR: Gateway to centralna płaszczyzna sterowania OpenClaw. Session to kontener kontekstu rozmowy (main/channel/group), Message Router decyduje o routingu wiadomości, Tool Registry zarządza uprawnieniami narzędzi, Skills to gotowe rozszerzenia. Endpoint WebSocket: ws://127.0.0.1:18789/ws, przydatne komendy: openclaw gateway/doctor/config. Zrozumienie tych koncepcji jest podstawą zaawansowanej konfiguracji.
Przegląd architektury
Ogólna architektura
flowchart TB
subgraph Clients["Warstwa klientów"]
WA[WhatsApp]
TG[Telegram]
DC[Discord]
SL[Slack]
WC[WebChat]
CLI[CLI]
MAC[macOS App]
IOS[iOS Node]
AND[Android Node]
end
subgraph Gateway["Warstwa Gateway"]
WS[Serwer WebSocket]
HTTP[Serwer HTTP]
MR[Router wiadomości]
SM[Menedżer sesji]
TR[Rejestr narzędzi]
EM[Menedżer zdarzeń]
CFG[Magazyn konfiguracji]
end
subgraph Agent["Warstwa agenta"]
PI[Pi Agent]
PROMPT[Silnik promptów]
TOOLS[Executor narzędzi]
SKILLS[Menedżer Skills]
end
subgraph External["Usługi zewnętrzne"]
FS[System plików]
BR[Przeglądarka]
API[Usługi API]
DB[Baza danych]
CAL[Harmonogram Cron]
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
Odpowiedzialności komponentów
| Komponent |
Odpowiedzialność |
Kluczowe zdolności |
| Serwer WebSocket |
Zarządzanie połączeniami klientów |
Utrzymanie połączeń, heartbeat, wysyłanie/odbieranie wiadomości |
| Serwer HTTP |
REST API i zasoby statyczne |
Web UI, health check, interfejs konfiguracji |
| Router wiadomości |
Routing i dystrybucja wiadomości |
Identyfikacja kanału, mapowanie sesji, przekazywanie wiadomości |
| Menedżer sesji |
Zarządzanie cyklem życia sesji |
Tworzenie, przywracanie, kompresja, czyszczenie |
| Rejestr narzędzi |
Rejestracja i wywoływanie narzędzi |
Odkrywanie narzędzi, kontrola uprawnień, sandbox |
| Menedżer zdarzeń |
Dystrybucja i subskrypcja zdarzeń |
Webhook, Cron, zdarzenia wewnętrzne |
| Magazyn konfiguracji |
Trwałość konfiguracji |
Aktualizacja na żywo, zarządzanie wersjami, backup |
Przepływ danych
sequenceDiagram
participant U as Użytkownik
participant C as Kanał
participant WS as WebSocket
participant MR as Router
participant SM as Sesja
participant A as Agent
participant T as Narzędzia
U->>C: Wysłanie wiadomości
C->>WS: Push wiadomości
WS->>MR: Żądanie routingu
MR->>SM: Wyszukanie/utworzenie sesji
SM-->>MR: Zwrócenie sesji
MR->>A: Dostarczenie wiadomości
A->>A: Przetwarzanie wiadomości
A->>T: Wywołanie narzędzia (opcjonalne)
T-->>A: Zwrócenie wyniku
A-->>MR: Wygenerowanie odpowiedzi
MR->>WS: Wysłanie odpowiedzi
WS->>C: Push odpowiedzi
C-->>U: Wyświetlenie wiadomości
Model sesji (Session)
Czym jest sesja?
Session to jedno z najważniejszych pojęć w OpenClaw. Każda sesja reprezentuje niezależny kontekst rozmowy zawierający:
| Składowa |
Opis |
| Historia wiadomości |
Pełny zapis rozmowy |
| Stan kontekstu |
Aktualne zadanie, zmienne tymczasowe |
| Konfiguracja |
Model, poziom myślenia, ustawienia sandbox |
| Metadane |
Czas utworzenia, statystyki tokenów, powiązane kanały |
Typy sesji
{
"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 |
Format Session ID |
Opis |
| main |
main |
Domyślna główna sesja, używana przez CLI i WebChat |
| channel |
{channel}:user:{senderId} |
Sesja prywatna, izolowana wg kanału i użytkownika |
| group |
{channel}:group:{groupId} |
Sesja grupowa, izolowana wg grupy |
Cykl życia sesji
stateDiagram-v2
[*] --> Created: Nadeszła wiadomość
Created --> Active: Pierwsza odpowiedź
Active --> Active: Interakcja
Active --> Idle: Brak aktywności
Idle --> Active: Nowa wiadomość
Idle --> Compacted: Automatyczna kompresja
Compacted --> Active: Kontynuacja rozmowy
Active --> Reset: Komenda /reset
Reset --> Created: Start od nowa
Active --> Pruned: Czyszczenie sesji
Idle --> Pruned: Czyszczenie po timeout
Pruned --> [*]
Komendy sesji
Komendy do zarządzania sesjami wysyłane w czacie:
| Komenda |
Funkcja |
Przykład |
/status |
Sprawdzenie stanu sesji |
Model, tokeny, koszty |
/new lub /reset |
Reset sesji |
Czyszczenie historii, nowa rozmowa |
/compact |
Kompresja kontekstu |
Podsumowanie historii, zwolnienie tokenów |
/think <level> |
Ustawienie poziomu myślenia |
/think high |
/verbose on/off |
Tryb szczegółowy |
Pokaż/ukryj wywołania narzędzi |
/usage off/tokens/full |
Wyświetlanie zużycia |
/usage full |
Konfiguracja sesji
{
"sessionPruning": {
"enabled": true,
"maxAge": 86400000,
"maxSize": 100,
"pruneOnStartup": true
},
"sessionCompression": {
"enabled": true,
"threshold": 50000,
"targetRatio": 0.3
}
}
| Ustawienie |
Opis |
Domyślnie |
maxAge |
Maksymalny czas życia sesji (ms) |
24 godziny |
maxSize |
Maksymalna liczba wiadomości |
100 |
threshold |
Próg kompresji (tokeny) |
50000 |
targetRatio |
Docelowy współczynnik kompresji |
30% |
Router wiadomości (Message Router)
Reguły routingu
Message Router odpowiada za kierowanie wiadomości do odpowiedniej sesji:
flowchart TB
MSG[Nadeszła wiadomość] --> CH{Typ kanału?}
CH -->|Prywatna| DM[Wyodrębnienie ID nadawcy]
CH -->|Grupowa| GRP[Wyodrębnienie ID grupy]
CH -->|WebChat/CLI| MAIN[Użycie sesji main]
DM --> SID[Sesja: channel:user:id]
GRP --> GID[Sesja: channel:group:id]
SID --> EXISTS{Sesja istnieje?}
GID --> EXISTS
EXISTS -->|Tak| LOAD[Załadowanie sesji]
EXISTS -->|Nie| CREATE[Utworzenie nowej sesji]
CREATE --> LOAD
LOAD --> AGENT[Dostarczenie do agenta]
Konfiguracja routingu
{
"messageRouting": {
"defaultSession": "main",
"channelMapping": {
"telegram": {
"userPrefix": "telegram:user",
"groupPrefix": "telegram:group"
},
"whatsapp": {
"userPrefix": "whatsapp:user",
"groupPrefix": "whatsapp:group"
}
},
"groupActivation": {
"mode": "mention",
"mentionPatterns": ["@bot", "/bot"]
}
}
}
Strategie aktywacji grup
| Tryb |
Opis |
Scenariusz |
mention |
Wymagane @wspomnienie |
Aktywne grupy, redukcja zakłóceń |
always |
Odpowiedź na wszystkie wiadomości |
Dedykowana grupa robocza |
keyword |
Odpowiedź przy słowie kluczowym |
Grupy tematyczne |
{
"channels": {
"telegram": {
"groups": {
"*": {
"requireMention": true
},
"-100WORKGROUP": {
"requireMention": false,
"activationMode": "always"
}
}
}
}
}
Wbudowane narzędzia
OpenClaw posiada bogaty zestaw wbudowanych narzędzi:
| Kategoria |
Nazwa narzędzia |
Funkcja |
| Operacje na plikach |
read |
Odczyt pliku |
|
write |
Zapis pliku |
|
edit |
Edycja pliku |
| Wykonanie poleceń |
bash |
Wykonanie polecenia Shell |
|
process |
Zarządzanie procesami |
| Przeglądarka |
browser |
Sterowanie przeglądarką |
| Wyszukiwanie |
web_search |
Wyszukiwanie w sieci |
| Węzły |
camera |
Operacje kamery |
|
screen_record |
Nagrywanie ekranu |
|
notify |
Wysyłanie powiadomień |
| Sesje |
sessions_list |
Lista sesji |
|
sessions_history |
Historia sesji |
|
sessions_send |
Wiadomości między sesjami |
| Canvas |
canvas |
Operacje Canvas |
Kontrola uprawnień narzędzi
{
"agents": {
"defaults": {
"sandbox": {
"mode": "off",
"allowlist": ["read", "write", "bash", "web_search"],
"denylist": []
}
}
}
}
| Tryb sandbox |
Opis |
off |
Wszystkie narzędzia dostępne (tylko sesja main) |
non-main |
Sandbox dla sesji innych niż main |
always |
Sandbox dla wszystkich sesji |
Szczegóły konfiguracji sandbox
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history"
],
"denylist": [
"browser",
"canvas",
"camera",
"screen_record"
]
}
}
}
}
System umiejętności (Skills)
Architektura Skills
flowchart LR
subgraph Skills["Katalog Skills"]
S1[gmail/SKILL.md]
S2[calendar/SKILL.md]
S3[home-assistant/SKILL.md]
end
subgraph Manager["Menedżer Skills"]
DISC[Odkrywanie]
LOAD[Ładowanie]
EXEC[Wykonanie]
end
subgraph Agent["Agent"]
PROMPT[Wstrzyknięcie do promptu]
TOOLS[Rejestracja narzędzi]
RES[Zwrócenie wyników]
end
Skills --> DISC
DISC --> LOAD
LOAD --> PROMPT
LOAD --> TOOLS
PROMPT --> Agent
TOOLS --> Agent
Agent --> EXEC
EXEC --> RES
Struktura katalogu Skills
~/.openclaw/workspace/skills/
├── gmail/
│ ├── SKILL.md # Definicja umiejętności
│ ├── package.json # Zależności (opcjonalne)
│ └── src/
│ └── index.js # Implementacja (opcjonalna)
├── calendar/
│ └── SKILL.md
└── my-custom-skill/
└── SKILL.md
Struktura SKILL.md
# 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
Instalacja Skills
# Instalacja z ClawHub
openclaw skill install gmail
# Instalacja z GitHub
openclaw skill install github:user/repo/skill-name
# Ręczna instalacja
git clone https://github.com/user/skill-repo.git ~/.openclaw/workspace/skills/skill-name
Konfiguracja Skills
{
"skills": {
"bundled": true,
"managed": true,
"workspace": true,
"installGating": true
}
}
| Ustawienie |
Opis |
bundled |
Włącz wbudowane umiejętności |
managed |
Włącz umiejętności zarządzane z ClawHub |
workspace |
Włącz lokalne umiejętności z workspace |
installGating |
Potwierdzenie przed instalacją |
Protokół WebSocket
Endpoint połączenia
ws://127.0.0.1:18789/ws
{
"type": "message_type",
"id": "unique_message_id",
"data": {
// Zawartość wiadomości
}
}
Typy wiadomości klienta
| Typ |
Opis |
Przykład |
agent.send |
Wysłanie wiadomości |
Rozmowa z agentem |
session.list |
Lista sesji |
Zarządzanie sesjami |
session.get |
Szczegóły sesji |
Podgląd sesji |
session.patch |
Modyfikacja konfiguracji sesji |
Zmiana modelu |
config.get |
Pobranie konfiguracji |
Odczyt ustawień |
config.set |
Ustawienie konfiguracji |
Aktualizacja ustawień |
Typy wiadomości serwera
| Typ |
Opis |
agent.response |
Odpowiedź agenta |
agent.thinking |
Proces myślenia (streaming) |
tool.invoked |
Wywołanie narzędzia |
tool.result |
Wynik narzędzia |
session.created |
Utworzenie sesji |
session.reset |
Reset sesji |
error |
Komunikat o błędzie |
Przykład: Wysyłanie wiadomości
// Połączenie WebSocket
const ws = new WebSocket('ws://127.0.0.1:18789/ws');
// Wysłanie wiadomości
ws.send(JSON.stringify({
type: 'agent.send',
id: 'msg-001',
data: {
session: 'main',
message: 'Cześć, przedstaw się'
}
}));
// Odbiór odpowiedzi
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
console.log(msg);
// Przykładowy wynik:
// {
// type: 'agent.response',
// id: 'msg-001',
// data: {
// content: 'Cześć! Jestem Twoim asystentem OpenClaw...',
// session: 'main'
// }
// }
};
System zdarzeń (Event System)
Wbudowane zdarzenia
| Zdarzenie |
Kiedy wyzwalane |
message.received |
Odebrano wiadomość od użytkownika |
message.sent |
Wysłano odpowiedź |
session.created |
Utworzono nową sesję |
session.reset |
Zresetowano sesję |
tool.invoked |
Wywołano narzędzie |
tool.completed |
Zakończono wykonanie narzędzia |
agent.thinking |
Agent myśli |
error.occurred |
Wystąpił błąd |
Konfiguracja Webhook
{
"webhooks": [
{
"url": "https://your-server.com/webhook/openclaw",
"events": ["message.received", "tool.invoked"],
"secret": "your_webhook_secret",
"headers": {
"X-Custom-Header": "value"
}
}
]
}
Payload Webhook
{
"event": "message.received",
"timestamp": "2026-02-26T10:30:00Z",
"data": {
"channel": "telegram",
"sender": "123456789",
"session": "telegram:user:123456789",
"message": "Cześć",
"metadata": {
"messageId": "msg_abc123",
"timestamp": "2026-02-26T10:30:00Z"
}
},
"signature": "sha256=..."
}
Zadania cykliczne (Cron)
Przykład konfiguracji
{
"cron": [
{
"id": "daily-briefing",
"schedule": "0 9 * * *",
"session": "main",
"message": "Podaj mi dzisiejszy harmonogram",
"enabled": true
},
{
"id": "weekly-summary",
"schedule": "0 18 * * 5",
"session": "main",
"message": "Wygeneruj podsumowanie tygodnia pracy",
"enabled": true
}
]
}
Wyrażenia Cron
┌───────────── minuta (0 - 59)
│ ┌───────────── godzina (0 - 23)
│ │ ┌───────────── dzień miesiąca (1 - 31)
│ │ │ ┌───────────── miesiąc (1 - 12)
│ │ │ │ ┌───────────── dzień tygodnia (0 - 6, 0 = niedziela)
│ │ │ │ │
* * * * *
Popularne przykłady
| Wyrażenie |
Opis |
0 9 * * * |
Codziennie o 9:00 |
0 18 * * 1-5 |
Dni robocze o 18:00 |
*/30 * * * * |
Co 30 minut |
0 0 1 * * |
1. dnia każdego miesiąca o 0:00 |
Hierarchia i priorytety konfiguracji
Kolejność priorytetów
Parametry CLI > Zmienne środowiskowe > Plik konfiguracyjny > Wartości domyślne
Źródła konfiguracji
| Źródło |
Lokalizacja |
Priorytet |
| Parametry CLI |
Parametry wiersza poleceń |
Najwyższy |
| Zmienne środowiskowe |
OPENCLAW_* |
Wysoki |
| Plik konfiguracyjny |
~/.openclaw/openclaw.json |
Średni |
| Wartości domyślne |
Wbudowane w kod |
Najniższy |
Przykład łączenia konfiguracji
// ~/.openclaw/openclaw.json
{
"agent": {
"model": "anthropic/claude-opus-4-6"
}
}
# Nadpisanie zmienną środowiskową
export OPENCLAW_AGENT_MODEL="anthropic/claude-sonnet-4"
# Nadpisanie parametrem CLI (najwyższy priorytet)
openclaw gateway --model "anthropic/claude-opus-4"
Aktualizacja konfiguracji na żywo
# Aktualizacja konfiguracji (bez restartu)
openclaw config set agent.model "anthropic/claude-sonnet-4"
# Przeładowanie pliku konfiguracyjnego
openclaw config reload
# Weryfikacja konfiguracji
openclaw config get agent.model
Podręczna ściągawka poleceń
Zarządzanie Gateway
# Uruchomienie Gateway
openclaw gateway
# Z określonym portem
openclaw gateway --port 18790
# W tle
openclaw gateway --daemon
# Szczegółowe logi
openclaw gateway --verbose
# Health check
openclaw health
Zarządzanie sesjami
# Lista wszystkich sesji
openclaw session list
# Szczegóły sesji
openclaw session show main
openclaw session show telegram:user:123456789
# Reset sesji
openclaw session reset main
# Usunięcie sesji
openclaw session delete telegram:user:123456789
Zarządzanie konfiguracją
# Podgląd konfiguracji
openclaw config get agent.model
openclaw config get channels.telegram.botToken
# Ustawienie konfiguracji
openclaw config set agent.thinkingLevel high
# Lista wszystkich ustawień
openclaw config list
# Walidacja konfiguracji
openclaw config validate
Narzędzia diagnostyczne
# Pełna diagnostyka
openclaw doctor
# Sprawdzenie konkretnego elementu
openclaw doctor --check gateway
openclaw doctor --check config
openclaw doctor --check channels
# Podgląd logów
openclaw logs
openclaw logs --follow
openclaw logs --level error
Rozwiązywanie problemów
Gateway nie uruchamia się
# Sprawdzenie zajętości portu
lsof -i :18789
netstat -tlnp | grep 18789
# Sprawdzenie składni konfiguracji
openclaw config validate
# Szczegółowy błąd
openclaw gateway --verbose 2>&1 | tee gateway.log
Utrata sesji
# Sprawdzenie katalogu sesji
ls -la ~/.openclaw/sessions/
# Sprawdzenie konfiguracji czyszczenia
openclaw config get sessionPruning
# Wyłączenie automatycznego czyszczenia
openclaw config set sessionPruning.enabled false
Niepowodzenie wywołania narzędzia
# Sprawdzenie konfiguracji sandbox
openclaw config get agents.defaults.sandbox
# Tymczasowe wyłączenie sandbox
openclaw config set agents.defaults.sandbox.mode off
# Logi narzędzi
openclaw logs --filter tool
Niepowodzenie połączenia WebSocket
# Sprawdzenie statusu Gateway
curl http://127.0.0.1:18789/health
# Sprawdzenie endpointu WebSocket
wscat -c ws://127.0.0.1:18789/ws
# Sprawdzenie firewalla
sudo ufw status
sudo iptables -L -n | grep 18789
Podsumowanie
Zrozumienie kluczowych koncepcji Gateway jest kluczem do opanowania OpenClaw:
- Session: kontener kontekstu rozmowy, z izolacją typów
- Message Router: rdzeń routingu wiadomości, decyduje o kierunku
- Tool Registry: centrum rejestracji narzędzi, kontroluje zdolności agenta
- Skills: system rozszerzeń umiejętności, szybkie powiększanie funkcjonalności
- WebSocket: protokół komunikacji w czasie rzeczywistym, wsparcie dla własnych klientów
- System zdarzeń: mechanizm dystrybucji zdarzeń, obsługa Webhook i Cron
Te koncepcje będą się powtarzać w kolejnych artykułach — ich głębokie zrozumienie pomoże Ci lepiej konfigurować i używać OpenClaw.
Podsumowanie artykułu:
- Poznałeś ogólną architekturę Gateway i odpowiedzialności komponentów
- Zrozumiałeś model sesji i cykl życia
- Nauczyłeś się routingu wiadomości i strategii aktywacji grup
- Poznałeś uprawnienia narzędzi i konfigurację sandbox
- Opanowałeś protokół WebSocket i system zdarzeń
Historia zmian:
- 2026-02-26: Pierwsza wersja, na podstawie OpenClaw v2026.2
Nawigacja po serii: