From aradotso-trending-skills-37
Implements automatic cognitive memory consolidation for OpenClaw/MyClaw AI agents via dream cycles that scan logs, extract insights, score importance, apply forgetting curves, build knowledge graphs, and provide health dashboards. Useful for persistent agent learning across sessions.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-1 --plugin aradotso-trending-skills-37This skill uses the workspace's default tool permissions.
```markdown
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
---
name: openclaw-auto-dream
description: Automatic cognitive memory consolidation for OpenClaw/MyClaw agents — sleep cycles, importance scoring, forgetting curves, knowledge graphs, and health dashboards.
triggers:
- set up auto-dream memory for my openclaw agent
- configure memory consolidation for myclaw
- how do I install openclaw auto-dream
- my ai agent keeps forgetting things between sessions
- set up dream cycles for memory management
- how does auto-dream importance scoring work
- export or import memory bundle between myclaw instances
- show me the memory health dashboard
---
# OpenClaw Auto-Dream
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
OpenClaw Auto-Dream is a cognitive memory architecture for [OpenClaw](https://github.com/openclaw/openclaw) agents (as used on [MyClaw.ai](https://myclaw.ai)). It gives your AI agent the ability to periodically "sleep and dream" — scanning raw daily logs, extracting structured knowledge, scoring importance, applying forgetting curves, building a knowledge graph, and surfacing non-obvious insights. The result is an agent that genuinely learns and connects the dots over time rather than accumulating stale, disconnected files.
---
## How It Works
Auto-Dream runs a **three-phase dream cycle** (default: 4 AM daily via cron):
1. **Collect** — Scans unconsolidated daily logs (last 7 days), detects priority markers, extracts decisions/people/facts/projects/lessons/procedures/open threads.
2. **Consolidate** — Routes each insight to one of five memory layers, deduplicates semantically, assigns unique IDs (`mem_NNN`), creates relation links.
3. **Evaluate** — Scores importance, applies forgetting curves, calculates a 5-metric health score, generates insights, writes dream report, sends notification.
### Five Memory Layers
| Layer | Storage | Purpose |
|-------|---------|---------|
| Working | LCM plugin (auto-detected) | Real-time context compression & semantic recall |
| Episodic | `memory/episodes/*.md` | Project narratives, event timelines |
| Long-term | `MEMORY.md` | Facts, decisions, people, milestones, strategy |
| Procedural | `memory/procedures.md` | Workflows, preferences, tool patterns |
| Index | `memory/index.json` | Metadata, scores, relations, health stats |
---
## Installation
### Via ClawHub (Recommended)
Tell your MyClaw agent:
Install the openclaw-auto-dream skill from ClawHub
Or manually inside your OpenClaw agent environment:
```bash
claw skill install openclaw-auto-dream
Clone into your OpenClaw skills directory:
git clone https://github.com/LeoYeAI/openclaw-auto-dream.git \
~/.openclaw/skills/openclaw-auto-dream
Then register the skill with your agent:
claw skill register ~/.openclaw/skills/openclaw-auto-dream
After installation, tell your agent:
Set up auto-dream
The setup wizard will:
memory/ directory structurememory/index.json with default health metricssilent / summary / full)0 4 * * *)Auto-Dream is configured via memory/config.json in your agent's workspace:
{
"dream_schedule": "0 4 * * *",
"notification_level": "summary",
"scan_window_days": 7,
"forgetting": {
"min_age_days": 90,
"importance_threshold": 0.3
},
"scoring": {
"recency_half_life_days": 180,
"permanent_marker": "⚠️ PERMANENT",
"high_marker": "🔥 HIGH",
"pin_marker": "📌 PIN"
},
"layers": {
"working_lcm": true,
"episodic": true,
"long_term": true,
"procedural": true
},
"export": {
"compress": true,
"include_archive": false
}
}
If you need to override config values via the environment (e.g. in CI or multi-instance deployments):
AUTODREAM_SCHEDULE="0 2 * * *" # Override cron schedule
AUTODREAM_NOTIFY_LEVEL="full" # silent | summary | full
AUTODREAM_SCAN_DAYS=14 # Days of logs to scan per cycle
AUTODREAM_FORGET_THRESHOLD=0.25 # Importance below which entries are archived
These phrases trigger built-in Auto-Dream intents inside your OpenClaw agent:
| Phrase | Action |
|---|---|
"Dream now" | Trigger an immediate full dream cycle |
"Show memory dashboard" | Generate and open the interactive HTML dashboard |
"What do you remember about [topic]?" | Semantic search across all memory layers |
"Memory health" | Print current 5-metric health score |
"Export memory bundle" | Export all layers to memory/export-YYYY-MM-DD.json |
"Import memory bundle" | Merge an exported bundle into current memory |
"Export only procedures" | Selective single-layer export |
"Forget [topic]" | Immediately archive entries matching topic |
"Pin this" | Mark current context with 📌 PIN (immune to forgetting) |
"What did you learn last week?" | Show insights from the last 7 dream logs |
Auto-Dream scans your agent's daily log files for special markers during the Collect phase. Use these in any log entry or conversation note:
<!-- important -->
Decided to use Postgres over SQLite for the user DB — scalability concern.
⚠️ PERMANENT
Client prefers all reports in US Letter format, not A4.
🔥 HIGH
The deploy pipeline breaks when NODE_ENV is not explicitly set.
📌 PIN
Weekly sync with Alex every Tuesday at 10 AM.
| Marker | Effect |
|---|---|
<!-- important --> | Extracted and routed to appropriate memory layer |
⚠️ PERMANENT | Always scores 1.0 importance; never archived |
🔥 HIGH | Base weight doubled during importance scoring |
📌 PIN | Immune to forgetting curve; always retained |
Every memory entry is scored on each dream cycle:
importance = (base_weight × recency_factor × reference_boost) / 8.0
Where:
recency_factor = max(0.1, 1.0 - days_since_created / 180)reference_boost = log₂(reference_count + 1)base_weight doubles for 🔥 HIGH entries; ⚠️ PERMANENT always returns 1.0import math
def score_entry(entry: dict, today_date) -> float:
if "⚠️ PERMANENT" in entry.get("markers", []):
return 1.0
days_old = (today_date - entry["created_at"]).days
recency = max(0.1, 1.0 - days_old / 180)
refs = entry.get("reference_count", 0)
ref_boost = math.log2(refs + 1) if refs > 0 else 1.0
base = entry.get("base_weight", 1.0)
if "🔥 HIGH" in entry.get("markers", []):
base *= 2.0
return min(1.0, (base * recency * ref_boost) / 8.0)
Entries are never deleted — only gracefully archived:
def should_archive(entry: dict, today_date) -> bool:
# Immune markers
immune = {"⚠️ PERMANENT", "📌 PIN"}
if immune & set(entry.get("markers", [])):
return False
days_unreferenced = (today_date - entry["last_referenced"]).days
importance = entry["importance_score"]
return days_unreferenced > 90 and importance < 0.3
def archive_entry(entry: dict):
summary = f"[{entry['id']}] {entry['title']} — {entry['one_line_summary']}"
append_to_file("memory/archive.md", summary)
entry["status"] = "archived"
# Original ID preserved for relation tracking
health = (
freshness × 0.25 +
coverage × 0.25 +
coherence × 0.20 +
efficiency × 0.15 +
reachability× 0.15
) × 100
| Metric | Definition |
|---|---|
| Freshness | % of entries referenced in the last 30 days |
| Coverage | % of knowledge categories updated in the last 14 days |
| Coherence | % of entries with at least one relation link |
| Efficiency | Inversely proportional to MEMORY.md line count (penalises bloat) |
| Reachability | Knowledge graph connectivity via union-find across entry relations |
Check health anytime:
"Memory health"
→ 🩺 Health: 79/100
Freshness: 0.81 Coverage: 0.74 Coherence: 0.68
Efficiency: 0.91 Reachability: 0.72
⚠️ Coherence declining — consider linking isolated entries
Export from one MyClaw instance:
"Export memory bundle"
→ Saved: memory/export-2026-03-28.json (142 entries, 3 layers)
The export format:
{
"version": "4.0",
"exported_at": "2026-03-28T06:00:00Z",
"source_instance": "myclaw-instance-abc123",
"layers": {
"long_term": [ /* entries */ ],
"procedural": [ /* entries */ ],
"episodic": [ /* entries */ ]
},
"index": { /* metadata + scores */ }
}
Import on another instance (newer entry wins on conflict):
"Import memory bundle"
→ Upload or paste path to export JSON
→ Merging 142 entries... 138 new, 4 conflicts resolved (newer wins)
→ Pre-import backup saved to memory/pre-import-backup-2026-03-28.json
Selective export:
"Export only procedures"
→ Saved: memory/export-procedures-2026-03-28.json (23 entries)
After setup, your agent workspace will contain:
workspace/
├── MEMORY.md # Long-term memory layer (human-readable)
├── memory/
│ ├── config.json # Auto-Dream configuration
│ ├── index.json # Entry metadata, scores, relations, health
│ ├── procedures.md # Procedural memory layer
│ ├── archive.md # Archived (forgotten) entries — one-liners
│ ├── dream-log.md # Appended report after each cycle
│ ├── dashboard.html # Generated interactive dashboard
│ ├── episodes/
│ │ ├── project-alpha.md
│ │ └── onboarding-2026-01.md
│ └── exports/
│ └── export-2026-03-28.json
└── logs/
├── daily-2026-03-28.md # Raw daily logs (scanned by Auto-Dream)
└── daily-2026-03-27.md
Generate the zero-dependency HTML dashboard:
"Show memory dashboard"
→ Generated: memory/dashboard.html
The dashboard includes:
Open it in any browser — no server required, all data embedded inline.
After each cycle, a report is appended to memory/dream-log.md:
## Dream Cycle — 2026-03-28T04:00:12Z
**Health:** 82/100 (↑3 from last cycle)
**Entries:** +5 new · ~3 updated · -1 archived
**Duration:** 14.2s
### New Memories
- mem_087: Decided to migrate auth to Clerk (episodic + long-term)
- mem_088: Alex prefers async updates over meetings (long-term)
### Archived
- mem_034: [compressed] Early Stripe test key config — 2025-09-01
### Insights
1. Project Beta's scope decisions mirror what caused delays in Project Alpha — pattern detected.
2. Strategic decisions cluster on Mondays — likely tied to weekly planning sessions.
3. No lessons recorded for last 3 completed projects — retrospective habit may be slipping.
### Suggestions
- Link mem_072 (auth strategy) ↔ mem_087 (Clerk migration) — high semantic overlap
- mem_091 unreferenced for 78 days — consider pinning or letting it expire
Configure in memory/config.json or tell your agent "Set notifications to [level]":
| Level | What You Receive |
|---|---|
silent | Nothing pushed — logged to dream-log.md only |
summary | 🌀 Health: 82/100 | +5 new, ~3 updated, -1 archived | 💡 Top insight |
full | Complete dream report with all sections pushed to your chat channel |
Push is delivered to whichever channel your MyClaw agent is connected to (Telegram, Discord, Slack, WhatsApp, etc.).
# Check cron is registered
crontab -l | grep autodream
# Run a manual cycle and watch output
claw skill run openclaw-auto-dream --trigger dream --verbose
# Check for log errors
tail -50 ~/.openclaw/logs/skills.log | grep auto-dream
memory/index.json is corrupted or missing"Rebuild memory index"
→ Scans all memory layer files and regenerates index.json from scratch
→ Note: reference counts and relation links will be reset
Common causes and fixes:
| Symptom | Cause | Fix |
|---|---|---|
| Coherence < 0.5 | Many unlinked entries | "Link related memories" — agent will suggest and apply links |
| Freshness < 0.5 | Old entries not being referenced | "What do you remember about X?" — queries boost reference counts |
| Efficiency < 0.5 | MEMORY.md has grown too large | "Compress long-term memory" — consolidates verbose entries |
| Reachability < 0.5 | Isolated knowledge clusters | Check dream insights — they will flag disconnected subgraphs |
"Check working memory status"
→ ⚠️ LCM plugin not found — Working layer disabled
→ Install with: claw plugin install lcm
→ Then: claw skill reconfigure openclaw-auto-dream
This is a bug — ⚠️ PERMANENT entries should never be archived. Force a fix:
# In your agent workspace
claw skill run openclaw-auto-dream --repair-permanent-markers
Add to your agent's daily log template in memory/procedures.md:
## Decision Template
When recording a decision, always include:
🔥 HIGH
Decision: [what was decided]
Rationale: [why]
Alternatives considered: [what else was evaluated]
"Dream now, then show me everything you remember about Project Alpha"
"Memory health"
"What's stale?"
"Link related memories"
"Dream now"
# On work instance
"Export only procedures"
# Copy memory/export-procedures-2026-03-28.json to personal instance
# On personal instance
"Import memory bundle"
# Select the procedures export — workflows sync across instances