2026 OpenClaw Active Memory & Sub-Agenten auf physischem Fern-Mac: MEMORY.md-Migration, Schreib-Heat & JSONL-Audit an Gateway-Sandbox—7×24-Langsession-Runbook (Konfig-Snippets + FAQ)
Plattform-Teams, die OpenClaw 7×24 in langen Sessions auf gemieteten physischen Fern-Macs betreiben, stoßen typischerweise auf drei Brüche: MEMORY.md driftet gegenüber dem Arbeitsverzeichnis der Sub-Agenten, Schreib-Heat sättigt SSDs, und Gateway-Sandbox-JSONL lässt sich nicht mit Host-Logs joinen. Dieser Artikel liefert zwei Entscheidungsmatrizen, ein Sieben-Schritte-Runbook, kopierbare Konfiguration, drei Abnahme-Schwellen und ein FAQ—ergänzt um Verweise auf JSONL-Rotation und verteilte Agenten auf derselben Hardware-Klasse.
1. Geltungsbereich & Zielgruppe
Ausgangspunkt: OpenClaw läuft unter macOS mit Gateway; Sie nutzen oder planen Active Memory (dauerhaftes Arbeitsgedächtnis über Turns) plus Sub-Agenten (eigene Prozesse, oft anderes cwd für Tools). Nicht Gegenstand: Cloud-Anbieter-APIs und Modell-Routing-Kontingente—hier geht es nur um Pfadverträge, Flush-Takt, Audit-Felder und Sandbox-Allowlists.
Kernaussage: MEMORY.md (oder gleichwertiger Träger) liegt an einem in der Konfiguration deklarierten absoluten Pfad; Sub-Agenten schreiben nur darüber oder über kontrollierte RPCs; Schreib-Heat bändigen Sie mit Halbwertszeit plus Batch-Flush; requestId am Gateway-Rand ausgeben, damit JSONL innerhalb und außerhalb der Sandbox dasselbe Feld nutzt. Für unbeaufsichtigte Zuverlässigkeit und JSONL-Rotation ergänzen Sie dieses Runbook um OpenClaw-Gateway: geplante Sicherung & JSONL-Beobachtbarkeit auf physischem Fern-Mac sowie Prometheus/Grafana-Observability für 7×24-Gateways.
2. Pain Points
- Constraint: relative Pfade × mehrere cwd. Sub-Agenten, die aus Unterordnern starten, schreiben
MEMORY.mdtief im Teilbaum, während der Parent noch die alte Stelle liest—Pfad-Split, kein mysteriöses Vergessen. - Versteckte Kosten: Schreib-Heat ist Write-Amplification. Fsync-lastige Voll-Rewrites pro Turn plus Audit-JSONL können
iowaitauf 7×24-Hosts sättigen, bevor Geschäftsverkehr das tut. - Stabilität & Audit: zwei Writer, zwei Bäume. Wenn die Sandbox Host-Pfade blockiert, landen Sub-Agent-Audits in privaten Verzeichnissen und Host-
jq-Joins scheitern—meist waren requestId und Schreibpfad-Politik nie vereinheitlicht.
3. Entscheidungsmatrizen
Vor dem Rollout abstimmen, wo Memory lebt und wie aggressiv auf Platte geflusht wird.
| Memory-Träger | Best fit | Haupt-Risiko |
|---|---|---|
| Einzelne MEMORY.md | Kleine Teams, menschliche Diffs, wenige tausend Einträge | Konkurrierende Schreibzugriffe; Dateigrößen-Tails |
| Sharding (Thema oder Session) | Lange Sessions mit LRU und Archiven | Index- und Querverweis-Pflege |
| Externer Vektorindex allein | Recall-first, Gateway off-host | Netzpartition—Degradationspfad muss vordefiniert sein |
| Schreib-Heat-Strategie | Plattenfreundlichkeit | Konsistenz-Risiko |
|---|---|---|
| Voll-Rewrite jeden Turn | Niedrig | Niedrig |
| Schwelle + Zeitfenster-Batch-Flush | Hoch | Crash-Fenster kann letzten Batch verlieren (WAL oder Dual-Write) |
| Nur Hochwert-Ereignisse | Am höchsten | Schlechte Prompts unter-dokumentieren Kontext |
4. Konfig-Snippets (Sandbox-ausgerichtet)
Illustratives JSON—Feldnamen an Ihre fixierte OpenClaw-Version anpassen. Nicht verhandelbar: absolute Pfade, Allowlists und requestId-Propagation.
{
"memory": {
"path": "/Users/ocagent/workspace/MEMORY.md",
"encoding": "utf-8",
"flush": { "maxEvents": 32, "intervalMs": 5000, "halfLifeRounds": 12 }
},
"subagents": {
"defaultCwd": "/Users/ocagent/workspace",
"inheritEnv": ["OPENCLAW_REQUEST_ID", "MEMORY_PATH"]
},
"gateway": {
"auditJsonl": "/Users/ocagent/logs/gateway-audit.jsonl",
"sandbox": {
"writable": [
"/Users/ocagent/workspace/.sandbox/scratch",
"/Users/ocagent/logs/sandbox-audit.jsonl"
]
}
}
}
In der launchd-plist MEMORY_PATH und OPENCLAW_REQUEST_ID exportieren (oder Gateway-Wrapper pro Request setzen), damit SSH-Vordergrund und unbeaufsichtigte Daemons nicht auseinanderlaufen.
5. Sieben-Schritte-Runbook (physischer Fern-Mac)
- Autoritative Pfade einfrieren. MEMORY-Datei, Audit-JSONL und Sandbox-Scratch als Absolute auf dem Runbook-Deckblatt dokumentieren—keine Spaltung zwischen Wiki und Code-Kommentaren.
- MEMORY.md migrieren. Unter Wartung oder read-only kopieren, mit
diffverifizieren,migratedAtim Header-Block setzen. - Sub-Agent-cwd normalisieren.
defaultCwdauf den Haupt-Workspace zwingen oder explizites Memory-Flag äquivalent setzen. - JSONL-Schema aktivieren. Auf
ts,level,requestId,actor,memoryOp,durationMsfür Gateway und Kinder einigen. - Sandbox-Abnahme. Sonden: Schreiben außerhalb der Allowlist scheitert und erzeugt
deny-Zeilen; Erfolge bleiben unterwritable. - Schreib-Heat tunen. Beim Wechsel von Voll-Flush pro Turn zu Fenster-Batches ein 24 h-Gesprächsskript replayen und
iostatplus JSONL-Wachstum beobachten. - Replay-Join. Host- und Sandbox-JSONL per
requestIdmitjqouter-joinen; jedes fehlende Paar blockiert Produktionsfreigabe.
6. Zitierfähige Schwellen
- Batch-Flush-Starterfenster: etwa 3–8 s oder 16–32 Ereignisse, je nachdem was zuerst eintritt; bei sehr langen Sessions mit Halbwertszeit verlängern.
- Audit-JSONL-Rotation: nahe 128–256 MB splitten, damit Objektspeicher-Sync keine Multi-GB-Tails kopiert.
- Join-SLA: in Pre-Prod-Soak 0 % fehlende
requestId-Paare für eine Stunde; in Produktion alarmieren, wenn dauerhaft über 0,1 % außerhalb dokumentierter Uhr-Skew-Buckets.
7. FAQ
F: EACCES beim Schreiben von MEMORY.md?
A: Besitzrechte mit UserName in der plist abgleichen; bei gemeinsamen Volumes Mount-Optionen prüfen.
F: Sub-Agent-Logs: memory path resolved to … weicht von der Hauptkonfiguration ab?
A: Umgebungs-Override-Reihenfolge—veraltetes MEMORY_PATH aus Shell-Profilen entfernen und explizite EnvironmentVariables in launchd setzen.
F: JSONL-Zeilen sind riesig und die Platte explodiert?
A: Keine vollen Prompts standardmäßig loggen—Hashes, Längen, Modell-Aliase; große Payloads hinter Objektspeicher-Pointern parken.
F: Sandbox-Auditdatei wird geschrieben, aber nie eingesammelt?
A: Pfad in Log-Shipper-Allowlists oder dokumentierten read-only-APFS-Mount zum Host mit Security-Review.
8. Fazit: Warum Mac mini zu langen Sessions mit Memory- und Audit-I/O passt
Active Memory mit JSONL-Audit ist faktisch hochfrequentes kleines I/O plus langlebige Prozesse: Plattenqualität, Scheduler-Fairness und Leistungsprofil entscheiden, ob Ihre Schreib-Heat-Strategie hält. Apple-Silicon-Mac mini (z. B. M4) verbindet Unified-Memory-Bandbreite mit Leerlauf in der Größenordnung ~4 W—ideal für leise 7×24-Gateways mit Memory und Logs auf schneller lokaler SSD.
macOS liefert launchd, Unified Logging und APFS-Snapshots, sodass Triage kurz bleibt, wenn eine Sandbox-deny-Zeile oder ein Flush-Regression auftritt—ergänzt durch Gatekeeper und SIP im Vergleich zu typischer Malware-Fläche auf Always-on-Windows-Hosts.
Wenn Sie lange Sessions vom Laptop auf einen physischen Fern-Mac verlagern, damit Sub-Agenten, Gateway-Sandbox und JSONL-Rotation dieselbe Baseline teilen, ist der Mac mini M4 derzeit einer der kosteneffizientesten Anker—Pfade einmal fixieren und dieselbe Hardware-Silhouette von Staging bis Produktion fahren.
Physischen Mac für Active Memory & JSONL-Audit?
Mieten Sie eine physische Mac-mini-Umgebung bei ZoneMac, fixieren Sie absolute Pfade und launchd-Plists und betreiben Sie denselben Active-Memory- plus JSONL-Stack wie in Staging.