Budowanie asystenta osobistego z OpenClaw
OpenClaw to bramka WhatsApp + Telegram + Discord + iMessage dla agentów Pi. Wtyczki dodają Mattermost. Ten przewodnik opisuje konfigurację „asystenta osobistego”: jeden dedykowany numer WhatsApp, który zachowuje się jak twój zawsze dostępny agent.
⚠️ Bezpieczeństwo przede wszystkim
Dajesz agentowi możliwość:
- uruchamiania komend na twojej maszynie (zależnie od konfiguracji narzędzi Pi)
- czytania/zapisywania plików w twoim workspace
- wysyłania wiadomości przez WhatsApp/Telegram/Discord/Mattermost (wtyczka)
Zacznij ostrożnie:
- Zawsze ustaw
channels.whatsapp.allowFrom(nigdy nie uruchamiaj otwartego na świat na swoim osobistym Macu). - Używaj dedykowanego numeru WhatsApp dla asystenta.
- Heartbeaty domyślnie działają co 30 minut. Wyłącz je, dopóki nie zaufasz konfiguracji, ustawiając
agents.defaults.heartbeat.every: "0m".
Wymagania wstępne
- OpenClaw zainstalowany i onboarded — zobacz Pierwsze kroki, jeśli jeszcze tego nie zrobiłeś
- Drugi numer telefonu (SIM/eSIM/prepaid) dla asystenta
Konfiguracja z dwoma telefonami (zalecana)
Chcesz osiągnąć to:
flowchart TB
A["<b>Your Phone (personal)<br></b><br>Your WhatsApp<br>+1-555-YOU"] -- message --> B["<b>Second Phone (assistant)<br></b><br>Assistant WA<br>+1-555-ASSIST"]
B -- linked via QR --> C["<b>Your Mac (openclaw)<br></b><br>Pi agent"]
Jeśli podłączysz osobisty WhatsApp do OpenClaw, każda wiadomość do ciebie staje się „inputem agenta”. Rzadko tego chcesz.
5-minutowy szybki start
- Sparuj WhatsApp Web (pokazuje QR; zeskanuj telefonem asystenta):
openclaw channels login
- Uruchom Gateway (zostaw działający):
openclaw gateway --port 18789
- Umieść minimalną konfigurację w
~/.openclaw/openclaw.json:
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Teraz wyślij wiadomość na numer asystenta z telefonu z allowlisty.
Po zakończeniu onboardingu system automatycznie otworzy dashboard i wyświetli czysty (bez tokenów) link. Jeśli pyta o auth, wklej token z gateway.auth.token w ustawieniach Control UI. Żeby otworzyć ponownie: openclaw dashboard.
Daj agentowi workspace (AGENTS)
OpenClaw czyta instrukcje operacyjne i „pamięć” z katalogu workspace.
Domyślnie OpenClaw używa ~/.openclaw/workspace jako workspace agenta i tworzy go automatycznie (plus startowe pliki AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) przy setup/pierwszym uruchomieniu agenta. BOOTSTRAP.md jest tworzony tylko gdy workspace jest zupełnie nowy (nie wraca po usunięciu). MEMORY.md jest opcjonalny (nie tworzony automatycznie); gdy istnieje, jest ładowany dla normalnych sesji. Sesje subagentów wstrzykują tylko AGENTS.md i TOOLS.md.
Wskazówka: traktuj ten folder jako „pamięć” OpenClaw i zrób z niego repo git (najlepiej prywatne), żeby twoje AGENTS.md + pliki pamięci miały backup. Jeśli git jest zainstalowany, nowe workspace’y są automatycznie inicjalizowane.
openclaw setup
Pełny układ workspace + przewodnik backupu: Workspace agenta Workflow pamięci: Pamięć
Opcjonalnie: wybierz inny workspace przez agents.defaults.workspace (obsługuje ~).
{
agent: {
workspace: "~/.openclaw/workspace",
},
}
Jeśli już dostarczasz własne pliki workspace z repozytorium, możesz całkowicie wyłączyć tworzenie plików bootstrap:
{
agent: {
skipBootstrap: true,
},
}
Konfiguracja, która zamienia go w „asystenta”
OpenClaw domyślnie jest dobrze skonfigurowany jako asystent, ale zwykle będziesz chciał dostroić:
- personę/instrukcje w
SOUL.md - domyślne ustawienia thinking (jeśli potrzebujesz)
- heartbeaty (gdy mu zaufasz)
Przykład:
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-6",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
// Zacznij od 0; włącz później.
heartbeat: { every: "0m" },
},
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true },
},
},
},
routing: {
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"],
},
},
session: {
scope: "per-sender",
resetTriggers: ["/new", "/reset"],
reset: {
mode: "daily",
atHour: 4,
idleMinutes: 10080,
},
},
}
Sesje i pamięć
- Pliki sesji:
~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl - Metadane sesji (zużycie tokenów, ostatnia trasa itp.):
~/.openclaw/agents/<agentId>/sessions/sessions.json(legacy:~/.openclaw/sessions/sessions.json) /newlub/resetrozpoczyna nową sesję dla danego czatu (konfigurowalne przezresetTriggers). Wysłane samodzielnie powoduje, że agent odpowiada krótkim powitaniem potwierdzającym reset./compact [instructions]kompaktuje kontekst sesji i raportuje pozostały budżet kontekstu.
Heartbeaty (tryb proaktywny)
Domyślnie OpenClaw uruchamia heartbeat co 30 minut z promptem:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
Ustaw agents.defaults.heartbeat.every: "0m", żeby wyłączyć.
- Jeśli
HEARTBEAT.mdistnieje, ale jest efektywnie pusty (tylko puste linie i nagłówki markdown jak# Heading), OpenClaw pomija uruchomienie heartbeatu, żeby oszczędzić wywołania API. - Jeśli plik nie istnieje, heartbeat i tak się uruchamia i model decyduje, co zrobić.
- Jeśli agent odpowie
HEARTBEAT_OK(opcjonalnie z krótkim paddingiem; zobaczagents.defaults.heartbeat.ackMaxChars), OpenClaw wstrzymuje dostarczanie na zewnątrz dla tego heartbeatu. - Domyślnie dostarczanie heartbeatu do celów DM-style
user:<id>jest dozwolone. Ustawagents.defaults.heartbeat.directPolicy: "block", żeby wstrzymać dostarczanie do celów bezpośrednich, jednocześnie utrzymując uruchomienia heartbeatu. - Heartbeaty uruchamiają pełne tury agenta — krótsze interwały spalają więcej tokenów.
{
agent: {
heartbeat: { every: "30m" },
},
}
Media wchodzące i wychodzące
Przychodzące załączniki (obrazy/audio/dokumenty) mogą być udostępniane twojemu poleceniu przez szablony:
{{MediaPath}}(lokalna ścieżka pliku tymczasowego){{MediaUrl}}(pseudo-URL){{Transcript}}(jeśli transkrypcja audio jest włączona)
Załączniki wychodzące od agenta: umieść MEDIA:<path-or-url> w osobnej linii (bez spacji). Przykład:
Here's the screenshot.
MEDIA:https://example.com/screenshot.png
OpenClaw wyciąga je i wysyła jako media razem z tekstem.
Checklist operacyjny
openclaw status # lokalny status (dane logowania, sesje, zdarzenia w kolejce)
openclaw status --all # pełna diagnoza (tylko odczyt, można wkleić)
openclaw status --deep # dodaje sondy health gateway (Telegram + Discord)
openclaw health --json # snapshot health gateway (WS)
Logi znajdują się w /tmp/openclaw/ (domyślnie: openclaw-YYYY-MM-DD.log).
Następne kroki
- WebChat: WebChat
- Operacje Gateway: Runbook Gateway
- Cron + wybudzenia: Zadania cron
- Companion paska menu macOS: Aplikacja macOS OpenClaw
- Aplikacja węzłowa iOS: Aplikacja iOS
- Aplikacja węzłowa Android: Aplikacja Android
- Status Windows: Windows (WSL2)
- Status Linux: Aplikacja Linux
- Bezpieczeństwo: Bezpieczeństwo