Support-Agent
Der Support-Agent ist ein zyklischer Agent, der wie ein First-Level-Support
arbeitet: Er ruft alle 5 Minuten ungelesene E-Mails ab, sucht die Antwort in der
ProcessCube®-Wissensbasis (pc knowledge) und legt eine begründete Antwort als
E-Mail-Entwurf zur Freigabe ab. Findet er keine belastbare Antwort, startet
er mit der Anfrage den Eskalations-Prozess in der Engine.
In Entwicklung. Teil der Preview-Phase (1.1.0-develop.x). Schnittstellen
und Verhalten können sich vor dem ersten Stable-Release noch ändern.
Der Support-Agent baut — wie die Coding-Agenten — auf der
Agent Runtime auf (Dockerfile.support) und erbt das komplette
OpenClaw-Setup (OpenClaw, Bun, Node, gh, pc, Claude, Codex, Volumes,
Gateway-CMD). Ergänzt werden nur Support-spezifische Teile: der knowledge-Skill,
die Mail-Dependencies und ein 5-Minuten-Cron support-agent-poll.
Ablauf je Zyklus
mail.ts fetch— ungelesene Mails aus dem LabelSupport(IMAP, peek)- Stichworte extrahieren →
pc knowledge search(cwd =$KNOWLEDGE_DIR) - Gate: kein Treffer bzw. nur Rauschen (
rankschlechter alsKNOWLEDGE_RANK_THRESHOLD, Default-0.2) → eskalieren; sonst den Top-Treffer inhaltlich prüfen (pc knowledge show, das LLM entscheidet — der bm25-Score ist nicht normiert) - Antwort: Entwurf via
mail.ts draft(BetreffAntwort zu <Betreff>) →mail.ts movenachSupport/Erledigt - Keine Antwort:
pc engine start-process-model Support-Escalation_Process startEskalation→mail.ts movenachSupport/Eskaliert
Der Agent liest nicht die INBOX, sondern ein dediziertes Eingangs-Label —
sonst würde er auf jede beliebige Mail (Newsletter, Benachrichtigungen …)
reagieren. Bearbeitete Mails wandern nach Support/Erledigt bzw.
Support/Eskaliert — das ist Audit-Trail und De-Dup zugleich.
Gmail-Setup (einmalig)
App-Password erzeugen und IMAP aktivieren
App-Password (16-stellig) erzeugen und IMAP aktivieren (Einstellungen → Weiterleitung & POP/IMAP).
Label Support anlegen
Filter anlegen
Ein Filter routet eingehende Support-Mails ins Label, z. B. An: support@deine-domain → „Posteingang überspringen” + „Label anwenden: Support”.
Die Ziel-Ordner Support/Erledigt und Support/Eskaliert müssen nicht vorab
existieren — mail.ts move legt sie bei Bedarf an.
Start (lokales Compose)
Das Support-Image (Dockerfile.support) setzt auf das Runtime-Image auf — dieses
muss lokal existieren (nicht öffentlich unter diesem Namen). Einmalig im Repo-Root
bauen, dann das Support-Image starten:
docker compose build # baut das Runtime-Image
docker network create pc-shared # einmalig (geteilt mit Engine/LowCode)
# .env: OPENCLAW_GATEWAY_TOKEN, GMAIL_USER, GMAIL_PASSWORD (App-Password), ENGINE_URL …
docker compose -f docker-compose.support.yml up -d --build
docker compose -f docker-compose.support.yml exec support-agent bash
# Im Container, einmalig:
pc-runtime setup # AI-Backend (Claude-Subscription) anmelden
pc engine login "$ENGINE_URL" --root # PoC: anonymer Root-LoginDer Support-Container nutzt den Gateway-Port 18790 sowie eigene
pc_support_*-Volumes (getrennt von Runtime- und Coding-Container). AI-Backend-
und Engine-Login müssen deshalb hier separat gemacht werden; sie bleiben
anschließend in den Volumes über Neustarts erhalten.
Erste Freigabe & manuelles Auslösen
Beim ersten openclaw-CLI-Aufruf im Container fragt das Gateway eine
Geräte-Freigabe an (Scope-Upgrade). Einmalig genehmigen, dann neu starten:
docker compose -f docker-compose.support.yml exec support-agent bash -lc '
openclaw devices list # zeigt die pending Request-ID
openclaw devices approve <request-id> # genehmigen
'
docker compose -f docker-compose.support.yml restart
docker compose -f docker-compose.support.yml exec support-agent pc-runtime doctor --smokeDer Agent läuft alle 5 Minuten automatisch. Sofort auslösen (z. B. nach einer Test-Mail):
docker compose -f docker-compose.support.yml exec support-agent \
openclaw cron run support-agent-pollLiefert das {"reason":"already-running"}, läuft gerade noch ein Zyklus — kurz
warten und erneut auslösen.
Umgebungsvariablen
| Variable | Default | Beschreibung |
|---|---|---|
GMAIL_USER / GMAIL_PASSWORD | — | Gmail-Konto + App-Password |
INPUT_MAILBOX | Support | Eingangs-Label (vom Gmail-Filter gespeist) |
DONE_MAILBOX / ESCALATED_MAILBOX | Support/Erledigt / Support/Eskaliert | Ziel nach Bearbeitung |
DRAFTS_MAILBOX | (auto) | Drafts-Ordner; leer = Auto-Detect via \Drafts |
KNOWLEDGE_DIR | /knowledge | Bind-Mount des pc knowledge-Index (read-write, SQLite WAL) |
KNOWLEDGE_RANK_THRESHOLD | -0.2 | bm25-Rausch-Grenze; schlechtere Treffer gelten als Rauschen |
ENGINE_URL | http://host.docker.internal:8000 | Ziel-Engine (aus LowCode) |
ESCALATION_PROCESS / ESCALATION_START_EVENT | Support-Escalation_Process / startEskalation | Eskalations-Prozess |
PoC-Hinweise: Der Engine-Login wird in /home/node/.processcube persistiert
(eigenes Volume). Ein anonymer Root-Login setzt IAM__ALLOWANONYMOUSROOTACCESS=true
an der Engine voraus (nur lokal!). Der Wissens-Index wird read-write gemountet,
weil pc knowledge die SQLite im WAL-Modus öffnet.