Einen persönlichen Assistenten mit OpenClaw bauen

OpenClaw ist ein WhatsApp + Telegram + Discord + iMessage Gateway für Pi Agents. Plugins fügen Mattermost hinzu. Diese Anleitung zeigt dir das “persönlicher Assistent”-Setup: eine dedizierte WhatsApp-Nummer, die sich wie dein Always-on-Agent verhält.

⚠️ Sicherheit zuerst

Du gibst einem Agent die Möglichkeit:

  • Befehle auf deinem Rechner auszuführen (abhängig von deinem Pi Tool Setup)
  • Dateien in deinem Workspace zu lesen und zu schreiben
  • Nachrichten über WhatsApp/Telegram/Discord/Mattermost (Plugin) zu versenden

Starte konservativ:

  • Setze immer channels.whatsapp.allowFrom (lass den Agent niemals offen für die ganze Welt auf deinem persönlichen Mac laufen).
  • Nutze eine dedizierte WhatsApp-Nummer für den Assistenten.
  • Heartbeats laufen standardmäßig alle 30 Minuten. Deaktiviere sie, bis du dem Setup vertraust, mit agents.defaults.heartbeat.every: "0m".

Voraussetzungen

  • Node 22+
  • OpenClaw im PATH verfügbar (empfohlen: globale Installation)
  • Eine zweite Telefonnummer (SIM/eSIM/Prepaid) für den Assistenten
npm install -g openclaw@latest
# oder: pnpm add -g openclaw@latest

Aus dem Quellcode (Entwicklung):

git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # installiert UI-Abhängigkeiten beim ersten Durchlauf automatisch
pnpm build
pnpm link --global

Das Zwei-Telefon-Setup (empfohlen)

Das willst du haben:

Dein Telefon (persönlich)      Zweites Telefon (Assistent)
┌─────────────────┐           ┌─────────────────┐
│  Dein WhatsApp  │  ──────▶  │  Assistenten-WA │
│  +1-555-YOU     │  Nachricht│  +1-555-ASSIST  │
└─────────────────┘           └────────┬────────┘
                                       │ per QR verknüpft

                              ┌─────────────────┐
                              │  Dein Mac       │
                              │  (openclaw)     │
                              │    Pi Agent     │
                              └─────────────────┘

Wenn du dein persönliches WhatsApp mit OpenClaw verknüpfst, wird jede Nachricht an dich zu “Agent-Input”. Das willst du selten.

5-Minuten-Schnellstart

  1. WhatsApp Web koppeln (zeigt QR-Code; scanne mit dem Assistenten-Telefon):
openclaw channels login
  1. Gateway starten (laufen lassen):
openclaw gateway --port 18789
  1. Minimale Config in ~/.openclaw/openclaw.json anlegen:
{
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}

Jetzt schreib eine Nachricht an die Assistenten-Nummer von deinem freigegebenen Telefon.

Wenn das Onboarding fertig ist, öffnen wir automatisch das Dashboard mit deinem Gateway Token und geben den tokenisierten Link aus. Um es später erneut zu öffnen: openclaw dashboard.

Dem Agent einen Workspace geben (AGENTS)

OpenClaw liest Betriebsanweisungen und “Gedächtnis” aus seinem Workspace-Verzeichnis.

Standardmäßig nutzt OpenClaw ~/.openclaw/workspace als Agent Workspace und erstellt ihn (plus Starter-Dateien AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md) automatisch beim Setup oder ersten Agent-Lauf. BOOTSTRAP.md wird nur erstellt, wenn der Workspace brandneu ist (es sollte nicht zurückkommen, nachdem du es gelöscht hast).

Tipp: Behandle diesen Ordner wie OpenClaws “Gedächtnis” und mach daraus ein Git-Repo (idealerweise privat), damit deine AGENTS.md und Memory-Dateien gesichert sind. Wenn Git installiert ist, werden brandneue Workspaces automatisch initialisiert.

openclaw setup

Vollständiges Workspace-Layout und Backup-Anleitung: Agent Workspace Memory-Workflow: Memory

Optional: Wähle einen anderen Workspace mit agents.defaults.workspace (unterstützt ~).

{
  agent: {
    workspace: "~/.openclaw/workspace",
  },
}

Wenn du bereits eigene Workspace-Dateien aus einem Repo auslieferst, kannst du die Bootstrap-Dateierstellung komplett deaktivieren:

{
  agent: {
    skipBootstrap: true,
  },
}

Die Config, die daraus “einen Assistenten” macht

OpenClaw hat standardmäßig ein gutes Assistenten-Setup, aber du willst normalerweise anpassen:

  • Persona/Anweisungen in SOUL.md
  • Thinking-Defaults (falls gewünscht)
  • Heartbeats (sobald du dem Setup vertraust)

Beispiel:

{
  logging: { level: "info" },
  agent: {
    model: "anthropic/claude-opus-4-5",
    workspace: "~/.openclaw/workspace",
    thinkingDefault: "high",
    timeoutSeconds: 1800,
    // Starte mit 0; später aktivieren.
    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,
    },
  },
}

Sessions und Memory

  • Session-Dateien: ~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl
  • Session-Metadaten (Token-Nutzung, letzte Route, etc.): ~/.openclaw/agents/<agentId>/sessions/sessions.json (Legacy: ~/.openclaw/sessions/sessions.json)
  • /new oder /reset startet eine frische Session für diesen Chat (konfigurierbar über resetTriggers). Wenn alleine gesendet, antwortet der Agent mit einem kurzen Hallo zur Bestätigung des Resets.
  • /compact [instructions] komprimiert den Session Context und meldet das verbleibende Context-Budget.

Heartbeats (proaktiver Modus)

Standardmäßig führt OpenClaw alle 30 Minuten einen Heartbeat mit diesem Prompt aus: 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. Setze agents.defaults.heartbeat.every: "0m" zum Deaktivieren.

  • Wenn HEARTBEAT.md existiert, aber effektiv leer ist (nur Leerzeilen und Markdown-Header wie # Heading), überspringt OpenClaw den Heartbeat-Lauf, um API-Calls zu sparen.
  • Wenn die Datei fehlt, läuft der Heartbeat trotzdem und das Modell entscheidet, was zu tun ist.
  • Wenn der Agent mit HEARTBEAT_OK antwortet (optional mit kurzem Padding; siehe agents.defaults.heartbeat.ackMaxChars), unterdrückt OpenClaw die ausgehende Zustellung für diesen Heartbeat.
  • Heartbeats führen vollständige Agent-Turns aus — kürzere Intervalle verbrauchen mehr Token.
{
  agent: {
    heartbeat: { every: "30m" },
  },
}

Medien rein und raus

Eingehende Anhänge (Bilder/Audio/Dokumente) können über Templates an deinen Befehl übergeben werden:

  • {{MediaPath}} (lokaler Temp-Dateipfad)
  • {{MediaUrl}} (Pseudo-URL)
  • {{Transcript}} (wenn Audio-Transkription aktiviert ist)

Ausgehende Anhänge vom Agent: Füge MEDIA:<path-or-url> in einer eigenen Zeile ein (keine Leerzeichen). Beispiel:

Hier ist der Screenshot.
MEDIA:https://example.com/screenshot.png

OpenClaw extrahiert diese und sendet sie als Medien zusammen mit dem Text.

Operations-Checkliste

openclaw status          # lokaler Status (Credentials, Sessions, wartende Events)
openclaw status --all    # vollständige Diagnose (read-only, einfügbar)
openclaw status --deep   # fügt Gateway Health Probes hinzu (Telegram + Discord)
openclaw health --json   # Gateway Health Snapshot (WS)

Logs liegen unter /tmp/openclaw/ (Standard: openclaw-YYYY-MM-DD.log).

Nächste Schritte