Do agents dream of electric sheep?
Nächtlicher Memory-Maintenance-Worker für OpenClaw.
Repo/Projektname: agentic-dreams
Skill-Name (intern): dream
dream verarbeitet typischerweise jede Nacht genau ein älteres Daily Memory und leitet daraus drei mögliche Bewegungen ab:
- das Daily selbst verdichten
- stabile, aktive Langzeitinformation nach
MEMORY.mdübernehmen - sekundäre, verdrängte oder nicht mehr aktiv führende Information nach
SUBCONSCIOUS.mdablegen
Nicht heroisch. Nicht kreativ-chaotisch. Konservativ.
dream arbeitet so:
- das LLM beurteilt und editiert direkt Daily,
MEMORY.mdundSUBCONSCIOUS.mdim Agent-Workspace scripts/dream_state.pyverwaltet nurdream-state.json, Hashes, Cursor und Idempotenz- ein kompaktes Run-Log dokumentiert den Lauf für Menschen
Wichtig: Dieses Repo ist Skill-/Projektcode, nicht der operative Speicherort.
- Projekt/Skill enthält Doku, Skripte und Beispiele
- Runtime-Daten liegen im Agent-Workspace
Zur Laufzeit gehören also in den Ziel-Workspace des Agents:
MEMORY.mdSUBCONSCIOUS.mdmemory/*.mdmemory/dream-log/*.mdmemory/dream-state.json
scripts/dream_state.py arbeitet deshalb nicht relativ zum Skillordner, sondern gegen einen explizit übergebenen Workspace:
py scripts/dream_state.py --workspace <agent-workspace> show- Daily Memory = episodisches Rohmaterial: Was ist passiert?
MEMORY.md= aktives, kanonisches Langzeitgedächtnis: Was soll dauerhaft aktiv erinnert werden?SUBCONSCIOUS.md= latenter, verdrängter oder sekundärer Kontext: Was soll nicht aktiv vorne liegen, aber auch nicht ganz verloren gehen?
- Nie
MEMORY.mdkomplett umschreiben - Nie heutige oder gestrige Daily-Datei verdichten
memory_searchals Evidenz nutzen, aber nicht als alleinige Entscheidungsinstanz behandeln- Dauerhafte Dubletten zwischen
MEMORY.mdundSUBCONSCIOUS.mdvermeiden - Idempotent arbeiten: keine doppelten Übernahmen
- Jede Änderung mit einem einzigen nachvollziehbaren Run-Log dokumentieren
skill/– eigentlicher AgentSkilldocs/– Design, Regeln, Obsoleszenz-Heuristik, State-Schemascripts/dream_state.py– Interface zudream-state.jsonim Ziel-Workspaceexamples/dream-state.example.json– Beispiel für den maschinenlesbaren Stateexamples/dream-log/README.md– Beispielhinweis für menschenlesbare Run-Logs
Einfach den ganzen Projektinhalt in den Ziel-Skill-Ordner kopieren, also auch docs/ und examples/.
Installationsempfehlung (kompakt):
- Distribution/Repo:
agentic-dreams - Zielskill im Workspace:
skills/dream/ - Skill-Aufrufname bleibt:
dream
Wichtig dabei:
- das Skript läuft aus dem Skill-Ordner
- die operativen Dateien liegen trotzdem nur im Agent-Workspace
scripts/dream_state.pyimmer mit--workspace <agent-workspace>aufrufen
MEMORY.mdSUBCONSCIOUS.mdmemory/YYYY-MM-DD.mdmemory/dream-log/YYYY-MM-DD.mdmemory/dream-state.json
- relevantes State-/Cursor-Kontextfenster aus
memory/dream-state.jsonim Agent-Workspace holen (show+pending) - genau ein älteres Daily im Agent-Workspace auswählen: standardmäßig die älteste offene Daily-Datei laut
cursor.nextDailyCandidate - Daily semantisch beurteilen und direkt bearbeiten
SUBCONSCIOUS.mdnur bei Bedarf öffnen (wennpendingReviewvorhanden ist oder neue Kandidaten entstehen)- Ableitungen nach
MEMORY.mdundSUBCONSCIOUS.mddirekt eintragen - erst danach offene
pendingReview-Fälle gegen die neuen Signale prüfen und gezielt aktualisieren (pending-update/pending-apply) memory/dream-state.jsonaktualisieren (record, optional--pending-review-jsonbei vollständiger Ersetzung)- Run-Log append-basiert in
memory/dream-log/YYYY-MM-DD.mdschreiben
Direkt vom Daily nach SUBCONSCIOUS.md dürfen nur Inhalte, die nicht aktiv-langzeitwürdig sind, aber als Hintergrundsignal erhalten bleiben sollen, zum Beispiel:
- verdrängte Zwischenstände
- verworfene, aber aufschlussreiche Hypothesen
- frühere Workarounds
- sehr spezifische Kontextreste mit möglichem späterem Erklärwert
- Dinge, die helfen könnten spätere Änderungen in
MEMORY.mdzu verstehen
Nicht dorthin gehören:
- banaler Tagesmüll
- triviale To-do-Reste
- Einmaligkeiten ohne späteren Wert
Nutze memory_search gezielt, bevor du Inhalte nach MEMORY.md oder SUBCONSCIOUS.md verschiebst:
- prüfe, ob dieselbe Entscheidung oder Präferenz bereits in
MEMORY.mdverankert ist - prüfe, ob ein ähnlicher Kontext bereits in
SUBCONSCIOUS.mdliegt - suche nach neueren Gegenbelegen, wenn ein Eintrag suppressionsverdächtig ist
Nicht nötig für jede triviale Daily-Kürzung; nötig für semantische Promotion-/Suppression-Entscheidungen.
Wenn memory/dream-state.json im Agent-Workspace noch nicht existiert, ist das kein Problem.
scripts/dream_state.pyarbeitet mit einem Default-State- beim ersten Schreibvorgang wird die Datei angelegt
- sinnvoller Einstieg:
py scripts/dream_state.py --workspace <agent-workspace> refresh-cursorshow funktioniert auch ohne bestehende Datei; refresh-cursor schreibt den ersten sinnvollen State.
Wenn SUBCONSCIOUS.md im Agent-Workspace noch fehlt, darf sie bei Bedarf mit knapper Grundstruktur neu angelegt werden.
Typisch nachts, z. B. 03:30 Europe/Vienna.
Empfohlen zunächst:
- genau ein Daily pro Nacht, aber nie das von gestern
cursor.nextDailyCandidateundprocessedDailiessauber pflegenpending-suppressionkonservativ und kontextabhängig auflösen (Tempo je nach Evidenz/Schweregrad)- State klein und nützlich halten