Dotyczy OpenClaw v2026.2 | Artykuł zakłada ukończenie podstawowej instalacji i chęć zarządzania OpenClaw przez przeglądarkę.
TL;DR: Web UI dostępny pod http://127.0.0.1:18789, zawiera strony: Chat (rozmowa), Sessions (sesje), Config (konfiguracja), Nodes (węzły), Logs (logi), Skills (umiejętności). Canvas to przestrzeń wizualizacji sterowana przez agenta — tworzenie wykresów, dashboardów, interfejsów interaktywnych. Zdalny dostęp: Tailscale Serve lub tunel SSH. Mobilny Canvas dostępny w aplikacjach iOS/Android.
Web Control UI
Dostęp do Web UI
Po uruchomieniu Gateway otwórz przeglądarkę:
http://127.0.0.1:18789
Przegląd interfejsu
flowchart LR
subgraph WebUI["Web Control UI"]
Chat[Chat — Rozmowa]
Sessions[Sessions — Sesje]
Config[Config — Konfiguracja]
Nodes[Nodes — Węzły]
Logs[Logs — Logi]
Skills[Skills — Umiejętności]
end
subgraph Features["Funkcje"]
F1[Rozmowa w czasie rzeczywistym]
F2[Zarządzanie sesjami]
F3[Edycja konfiguracji]
F4[Sterowanie węzłami]
F5[Przeglądanie logów]
F6[Zarządzanie umiejętnościami]
end
Chat --> F1
Sessions --> F2
Config --> F3
Nodes --> F4
Logs --> F5
Skills --> F6
Funkcje stron
Chat (Rozmowa)
| Funkcja | Opis |
|---|---|
| Wprowadzanie wiadomości | Obsługa tekstu, Markdown, bloków kodu |
| Historia wiadomości | Pełny zapis rozmowy |
| Wywołania narzędzi | Wyświetlanie procesu i wyników wywołań |
| Proces myślenia | Opcjonalne wyświetlanie procesu myślenia agenta |
| Statystyki tokenów | Wyświetlanie zużycia tokenów |
| Przełączanie modelu | Szybkie przełączanie modelu |
Sessions (Sesje)
| Funkcja | Opis |
|---|---|
| Lista sesji | Podgląd wszystkich aktywnych sesji |
| Szczegóły sesji | Status i konfiguracja pojedynczej sesji |
| Operacje na sesji | Reset, usunięcie, eksport sesji |
| Przełączanie sesji | Przechodzenie między sesjami |
| Izolacja sesji | Podgląd wg kanału, użytkownika |
Config (Konfiguracja)
| Funkcja | Opis |
|---|---|
| Edycja konfiguracji | Edycja online pliku konfiguracyjnego |
| Walidacja konfiguracji | Walidacja składni w czasie rzeczywistym |
| Aktualizacja na żywo | Zmiany bez restartu |
| Eksport konfiguracji | Eksport kopii zapasowej |
| Historia konfiguracji | Podgląd historii zmian |
Nodes (Węzły)
| Funkcja | Opis |
|---|---|
| Lista węzłów | Podgląd podłączonych węzłów urządzeń |
| Status węzłów | Online, uprawnienia |
| Sterowanie węzłami | Włączanie/wyłączanie funkcji węzłów |
| Parowanie węzłów | Parowanie nowych węzłów |
Logs (Logi)
| Funkcja | Opis |
|---|---|
| Logi na żywo | Strumieniowe wyświetlanie logów systemowych |
| Filtrowanie logów | Filtrowanie wg poziomu, modułu |
| Wyszukiwanie logów | Wyszukiwanie wg słów kluczowych |
| Eksport logów | Pobieranie plików logów |
Skills (Umiejętności)
| Funkcja | Opis |
|---|---|
| Lista umiejętności | Podgląd zainstalowanych umiejętności |
| Instalacja umiejętności | Instalacja z ClawHub |
| Konfiguracja umiejętności | Konfiguracja parametrów |
| Wyłączanie umiejętności | Włączanie/wyłączanie |
Konfiguracja Web UI
{
"web": {
"enabled": true,
"port": 18789,
"bind": "loopback",
"auth": {
"mode": "password",
"password": "your-secure-password"
},
"theme": "dark"
}
}
| Ustawienie | Opis | Domyślnie |
|---|---|---|
enabled |
Włącz Web UI | true |
port |
Port nasłuchu | 18789 |
bind |
Adres bindowania | loopback |
auth.mode |
Tryb uwierzytelniania | none |
auth.password |
Hasło dostępu | - |
theme |
Motyw | dark |
Zdalny dostęp
Metoda 1: Tailscale
{
"gateway": {
"tailscale": {
"mode": "serve"
}
}
}
Dostęp przez sieć Tailscale:
https://your-tailnet-name.ts.net
Metoda 2: Tunel SSH
# Utworzenie tunelu SSH lokalnie
ssh -L 18789:localhost:18789 user@remote-server
# Następnie otwórz
http://localhost:18789
Metoda 3: Reverse proxy
Za pomocą Caddy lub Nginx:
Caddyfile:
your-domain.com {
reverse_proxy localhost:18789
}
Canvas — wizualna przestrzeń robocza
Czym jest Canvas?
Canvas to przestrzeń wizualizacji sterowana przez agenta. Agent może:
- Tworzyć dynamiczne wykresy
- Budować interaktywne interfejsy
- Wyświetlać dane w czasie rzeczywistym
- Generować dashboardy
- Osadzać zewnętrzne treści
Architektura Canvas
flowchart TB
subgraph Agent["Agent"]
PROMPT[Analiza żądania]
GEN[Generowanie A2UI]
EXEC[Wykonanie operacji]
end
subgraph Canvas["Canvas Runtime"]
RENDER[Silnik renderowania]
STATE[Zarządzanie stanem]
EVENT[Obsługa zdarzeń]
end
subgraph UI["Interfejs użytkownika"]
DISPLAY[Wyświetlanie Canvas]
INTERACT[Interakcja użytkownika]
end
Agent --> Canvas
PROMPT --> GEN
GEN --> RENDER
RENDER --> DISPLAY
DISPLAY --> INTERACT
INTERACT --> EVENT
EVENT --> EXEC
Podstawowe użycie
Użycie Canvas w czacie
Użytkownik: Stwórz prostą aplikację listy zadań
Agent: Tworzę aplikację listy zadań w Canvas...
[Generowanie komponentu Canvas]
Komendy Canvas
| Komenda | Opis |
|---|---|
/canvas create |
Utwórz nowy Canvas |
/canvas show |
Pokaż bieżący Canvas |
/canvas clear |
Wyczyść Canvas |
/canvas export |
Eksportuj Canvas |
Komponenty Canvas
Komponent tekstowy
canvas.text({
content: "Hello, World!",
style: {
fontSize: "24px",
color: "#333",
fontWeight: "bold"
}
})
Komponent przycisku
canvas.button({
label: "Kliknij mnie",
onClick: () => {
console.log("Przycisk kliknięty!")
},
style: {
background: "#3b82f6",
color: "white"
}
})
Komponent listy
canvas.list({
items: ["Element 1", "Element 2", "Element 3"],
onSelect: (item) => {
console.log(`Wybrano: ${item}`)
}
})
Komponent wykresu
canvas.chart({
type: "bar",
data: {
labels: ["Sty", "Lut", "Mar"],
datasets: [{
label: "Przychód",
data: [100, 200, 150]
}]
}
})
Komponent formularza
canvas.form({
fields: [
{ name: "username", type: "text", label: "Nazwa użytkownika" },
{ name: "email", type: "email", label: "Email" },
{ name: "submit", type: "submit", label: "Wyślij" }
],
onSubmit: (data) => {
console.log("Formularz wysłany:", data)
}
})
Praktyczne przykłady
Przykład 1: Dashboard danych
// Kod Canvas wygenerowany przez agenta
canvas.render(`
<Dashboard>
<Header title="Dashboard sprzedaży" />
<Row>
<Card title="Łączny przychód" value="$125,430" trend="+12%" />
<Card title="Aktywni użytkownicy" value="3,245" trend="+5%" />
<Card title="Współczynnik konwersji" value="4.2%" trend="-1%" />
</Row>
<Row>
<Chart type="line" data={revenueData} title="Trend przychodów" />
<Chart type="bar" data={usersData} title="Wzrost użytkowników" />
</Row>
</Dashboard>
`)
Przykład 2: Interaktywny kalkulator
canvas.render(`
<Calculator>
<Display value={display} />
<Keypad>
<Button onClick={() => input('7')}>7</Button>
<Button onClick={() => input('8')}>8</Button>
<Button onClick={() => input('9')}>9</Button>
<Button onClick={() => input('/')}>/</Button>
// ... więcej przycisków
</Keypad>
</Calculator>
`)
const state = { display: '0' }
function input(value) {
state.display = calculate(state.display, value)
canvas.update()
}
Przykład 3: Monitoring w czasie rzeczywistym
canvas.render(`
<Monitor>
<Header title="Monitor systemu" />
<Metrics>
<Metric
label="Użycie CPU"
value={cpuUsage}
threshold={80}
unit="%"
/>
<Metric
label="Pamięć"
value={memoryUsed}
threshold={90}
unit="GB"
/>
<Metric
label="Dysk I/O"
value={diskIO}
unit="MB/s"
/>
</Metrics>
<Chart type="line" data={historyData} realtime />
</Monitor>
`)
// Okresowa aktualizacja danych
setInterval(() => {
cpuUsage = getCpuUsage()
memoryUsed = getMemoryUsed()
diskIO = getDiskIO()
canvas.update()
}, 1000)
API Canvas
canvas.render(template)
Renderowanie zawartości Canvas.
canvas.render(`
<Container>
<Text>Witaj</Text>
</Container>
`)
canvas.update()
Aktualizacja stanu Canvas.
state.count++
canvas.update()
canvas.clear()
Wyczyszczenie Canvas.
canvas.clear()
canvas.snapshot()
Pobranie zrzutu Canvas.
const image = await canvas.snapshot()
canvas.eval(code)
Wykonanie kodu w kontekście Canvas.
await canvas.eval(`
document.getElementById('counter').innerText = '${count}'
`)
Biblioteka komponentów A2UI
Canvas używa biblioteki komponentów A2UI (Agent-to-UI):
Komponenty układu
| Komponent | Opis |
|---|---|
<Container> |
Kontener |
<Row> |
Układ poziomy |
<Column> |
Układ pionowy |
<Grid> |
Układ siatkowy |
<Card> |
Kontener kartowy |
Wyświetlanie danych
| Komponent | Opis |
|---|---|
<Text> |
Tekst |
<Heading> |
Nagłówek |
<List> |
Lista |
<Table> |
Tabela |
<Chart> |
Wykres |
Komponenty interaktywne
| Komponent | Opis |
|---|---|
<Button> |
Przycisk |
<Input> |
Pole wejściowe |
<Select> |
Rozwijana lista |
<Checkbox> |
Pole wyboru |
<Form> |
Formularz |
Współpraca Canvas z agentem
Agent tworzy Canvas
Użytkownik: Stwórz panel śledzenia postępu projektu
Agent: Tworzę panel śledzenia postępu projektu w Canvas...
Agent:
- Analizuje wymagania
- Projektuje układ
- Generuje kod Canvas
- Renderuje interfejs
Canvas wyzwala agenta
Interakcja użytkownika z Canvas może wyzwalać operacje agenta:
canvas.button({
label: "Generuj raport",
onClick: async () => {
await agent.send("Wygeneruj raport miesięczny")
}
})
Canvas na różnych urządzeniach
macOS
Canvas wyświetlany jako osobne okno:
openclaw canvas show
iOS
Canvas zintegrowany w iOS Node App:
- Otwórz aplikację OpenClaw iOS
- Przełącz na zakładkę Canvas
Android
Canvas zintegrowany w Android Node App:
- Otwórz aplikację OpenClaw Android
- Przełącz na zakładkę Canvas
Web
Canvas wyświetlany w Web UI:
- Otwórz http://localhost:18789
- Kliknij zakładkę Canvas
Konfiguracja Canvas
{
"canvas": {
"enabled": true,
"theme": "dark",
"autoUpdate": true,
"updateInterval": 1000,
"maxComponents": 100,
"persistState": true
}
}
| Ustawienie | Opis | Domyślnie |
|---|---|---|
enabled |
Włącz Canvas | true |
theme |
Motyw | dark |
autoUpdate |
Automatyczna aktualizacja stanu | true |
updateInterval |
Interwał aktualizacji (ms) | 1000 |
maxComponents |
Maksymalna liczba komponentów | 100 |
persistState |
Trwałość stanu | true |
Podsumowanie
Web Control UI i Canvas sprawiają, że OpenClaw to nie tylko asystent czatowy, ale kompletna platforma interakcji:
- Web UI: panel sterowania w przeglądarce, zarządza wszystkim
- Canvas: przestrzeń wizualizacji sterowana przez agenta
- A2UI: bogata biblioteka komponentów, szybkie budowanie interfejsów
- Wieloplatformowość: macOS, iOS, Android, Web — spójne doświadczenie
Dzięki tym funkcjom agent może tworzyć dashboardy, interfejsy zarządzania, narzędzia interaktywne, znacząco rozszerzając scenariusze zastosowań asystenta AI.
Podsumowanie artykułu:
- Opanowałeś funkcje i użycie Web Control UI
- Poznałeś podstawowe koncepcje i komponenty Canvas
- Zapoznałeś się z biblioteką komponentów A2UI
- Nauczyłeś się współpracy Canvas z agentem
- Opanowałeś użycie Canvas na wielu urządzeniach
Historia zmian:
- 2026-02-26: Pierwsza wersja, na podstawie OpenClaw v2026.2
Nawigacja po serii:
- ← Poprzedni artykuł: Personalizacja agenta
- → Następny artykuł: Routing wielu agentów i izolacja sesji