Dieses Playbook richtet sich an Teams, die Haystack 2.x als Pipeline betreiben und OpenClaw als äußeren Rand für Identität und Transport nutzen. Abgrenzung: Der Fokus auf LiteLLM Proxy und model_list liegt im Artikel LiteLLM hinter OpenClaw-Gateway; LangGraph-Zustand und Toolknoten werden in LangGraph-Tools & Gateway behandelt — hier steht die Haystack-Pipeline im Mittelpunkt. Gemeinsame Resilienzmuster teilen sich mit JSON Schema, Timeouts & Retry; Chunking- und Embedding-Parameter finden sich in Lokales RAG auf dem Mac.
Motivation · Installations- und Gateway-Kurztabelle · RAG-Härtung · Deployment · FAQ
Drei typische Bruchstellen
1) Tool-Argumente ohne Schema. Der Generator erfindet Schlüssel, HTTP-Backends antworten mit 400 — Incident-Zeit steigt, weil Ursache und Stufe nicht korreliert sind.
2) Ein Timeout für alles. Wenn derselbe Timer Index, LLM und Werkzeug umfasst, frisst ein langsamer Vektorstore den p95 des gesamten Chats.
3) Stille Fehler. Ohne strukturierte Fehlerzusammenfassung landen Stacktraces in Tickets, während Dashboards leer bleiben — Audit und Abrechnung leiden.
Kurztabelle: Installation und Gateway
| Komponente | Minimalstandard | Stabilitätshinweis |
|---|---|---|
| Python & haystack-ai | venv oder uv, requirements.lock mit exakter Minor-Version |
Index-Pfad und Paketversion gemeinsam taggen, sonst driftet die Embedding-Dimension |
| Vektor- / Hybrid-Index | lokales Verzeichnis auf APFS, genug freier Speicher für HNSW-Wachstum | Nacht-Compaction separat vom Online-Retriever planen |
| launchd | eigene Plists für Gateway und Worker, dokumentierte StandardOutPath |
Kein Sleep: caffeinate-Strategie oder dedizierte Mietinstanz |
| Schicht | Rolle | Prüfpunkt |
|---|---|---|
| OpenClaw-Gateway | Bearer aus Dashboard, Mandanten-Scope, einheitliche Fehler-JSON | Strippt der Ingress Authorization? Gleiche X-Request-ID in Logs |
| Tool-HTTP (Loopback) | nur 127.0.0.1, TLS optional intern |
Kein Welt-Port für Roh-Tool-Endpunkte |
| Haystack-Pipeline | Retriever → Generator → Tool-Rückkopplung | Retriever-Deadline < LLM-Budget; Schema-Check vor Netz |
RAG-Härtung: Schema, Retriever, Retry
JSON Schema (draft-07) pro Tool: Vor jedem Aufruf validieren; bei Verstoß TOOL_SCHEMA_INVALID mit Feldliste zurückgeben — keine ausgehende HTTP-Anfrage. So bleiben Backend-Verträge stabil, auch wenn der Generator promptt. Nutzt dieselbe Schema-Datei in CI wie in Laufzeit, damit Releases nicht „grün“ sind, während Produktion noch ein Legacy-Mapping fährt. Optionale default-Felder dokumentieren, damit Ops Änderungen reviewen können, ohne Prompt-Text zu lesen.
Retriever-Timeout und Breaker: Setzt eine harte Millisekunden-Deadline nur für BM25- und Vektorknoten, kleiner als das Gesamtbudget des Generators. Überschreitungen zählen in ein gleitendes Fenster; nach einem Schwellenwert Halboffen: nur noch wenige Probes, bis Health wieder grün ist — analog zu Breaker-Mustern, aber auf der Suchschicht verankert. Hybrid-Suchen sollten BM25- und dichte Vektorteil separat messen, weil unterschiedliche Indizes unterschiedliche Tail-Latenzen erzeugen; gemischte Shards erhalten eigene Budgets pro Mandant.
Retry-Vorlage: Exponentielles Backoff mit full jitter, maximale Versuche ≤ 3, nur wenn Upstream retryable signalisiert; Korrelation über Hash der normalisierten Parameter statt Klartext-Prompt. Idempotenz-Keys für schreibende Tools bleiben außerhalb der Retry-Schleife stabil. Schreibt die aktuelle Versuchsnummer und den nächsten Wartezeitvorschlag in die Fehlerzusammenfassung, damit Clients ohne Loginsicht entscheiden können, ob ein erneuter Versuch sinnvoll ist.
# Pseudocode: Retriever-Deadline getrennt vom LLM
retriever_deadline_ms = 450
llm_budget_ms = 12000
# Bei Timeout: strukturierte Kurzform an Generator, kein erfundener BelegDeployment in sechs Schritten
1) Arbeitswurzel. Unter ~/haystack-edge Ordner für config, indexes, logs anlegen; Secrets chmod 600.
2) OpenClaw starten. Gateway per launchd an die dokumentierte Loopback-Adresse binden; Dashboard-Token mit kleinstem Scope für erlaubte Modelle und Tool-Pfade.
3) Pipeline bauen. Haystack-2.x-Komponenten verkabeln: Retriever vor dem Generator, Tool-Knoten mit registrierten JSON-Schemata.
4) Validierung aktivieren. jsonschema vor jedem Tool-HTTP-Call; Fehlerpfad schreibt strukturierte Antwort ohne externe Seiteneffekte.
5) Breaker kalibrieren. Fensterbreite und Schwellen aus p95-Tests des Index befüllen, nicht aus Laptop-Schätzungen; bei Mandantenfähigkeit pro tenant_id trennen.
6) Fehlerzusammenfassung. Ausgangsobjekt mit Stufe, Komponente, HTTP-Status, Provider-Subcode und kurzem Snippet; optional Webhook für Alerts — Nutzerfloskeln nicht speichern. Bei Retriever-Miss nach Timeout ein kurzes retrieval_skipped-Signal an den Generator geben, damit dieser keine Quellen erfindet; das ist operativ leichter zu alarmieren als ein generisches 500.
- Smoke-Test: künstlicher Retriever-Timeout muss im Gateway-Log dieselbe
X-Request-IDzeigen wie die Pipeline-Zeile. - Schema-Änderungen versionieren; alte Tools parallel bis Traffic umgestellt ist.
- Logrotation für Inference-Spitzen — APFS füllt sich sonst bei Langläufern.
- Abnahme mit zwei Mandanten-Scopes: derselbe Index, unterschiedliche Deadline — erwartet getrennte Breaker-Zähler im Gateway.
FAQ
Brauchen wir LiteLLM zwingend? Nein. Dieses Setup adressiert Haystack-Komponenten; LiteLLM bleibt optional für Multi-Anbieter-Bündelung wie im LiteLLM-Artikel beschrieben.
LangGraph? Für Graph-Checkpointing siehe LangGraph-Guide; Haystack-Pipelines ersetzen hier den Graphen, nicht die Gateway-Disziplin.
CTA ohne Login? Regionen und Mac mini M4-Optionen sind auf der Kaufseite einsehbar; Tarife unter Preise, Details im Hilfezentrum — ohne vorherige Anmeldung.
Kurz: Haystack 2.x liefert die Pipeline; OpenClaw den vertrauenswürdigen Rand. Schema-first, Retriever getrennt vom LLM getaktet, Retry als Vorlage — dann bleibt RAG auf einem Remote-Mac auditierbar.