feat(memory): add Auto Dream — REM-style consolidation cycle#156
Conversation
Quatrième mode de la boucle mémoire (capture/distribute/surface/**dream**), analogue à la feature *Auto Dream* d'Anthropic (Claude Code v2.1.83+, server feature flag) et inspiré du papier *Sleep-time Compute* (UC Berkeley). Capture écrit, dream nettoie : merge doublons (similarité ≥ 0.85), normalise horodatages relatifs en dates absolues, archive obsolètes (>90j + non référencées), promeut patterns récurrents en règles, reconstruit `00-MOC.md`. Pourquoi côté framework : `docs/_memory/` est partagé par les 85 agents et projeté dans `CLAUDE.md` à chaque session — du bruit/contradictions/horodatages périmés s'amplifient en cascade. Dream coupe la chaîne d'erreur à la source, sans intervention humaine. Garde-fous : - Sandbox d'écriture stricte (`permissions: scoped-write` + post-flight diff) limitée à `docs/_memory/**`, `.claude/memory-archive/**`, `.claude/state/auto-dream.json`, `.ulk-reports/auto-dream-*.json`, bloc `<!-- vault:begin -->` de `CLAUDE.md` - Lock file (`flock` ou `mkdir` atomique) pour multi-instances Claude Code, TTL 30 min pour dead-lock cleanup - Background non-bloquant via `& disown`, 0 token côté hook - Strictement transformatif — aucune création d'entrée Déclenchement : automatique (24h + 5 sessions) via hook SessionStart, ou manuel via `lovecraft memory dream [--force|--dry-run]` ou alias naturel « consolidate my memory files ». Seuils configurables via env (`AUTO_DREAM_MIN_HOURS`, `AUTO_DREAM_MIN_SESSIONS`). Activation : `./install.sh --with-auto-dream` (copie hook + script + recette JSON ; merge manuel dans `~/.claude/settings.json` par design — settings jamais modifiés automatiquement). Indépendance vis-à-vis du feature flag Anthropic : implémentation côté projet sur le vault projet ulk, ne dépend d'aucun toggle serveur. Fichiers ajoutés : - framework/agents/_shared/auto-dream-protocol.md : spec canonique (D1-D8) - framework/tools/hooks/auto-dream.sh : trigger script (state, lock, gating) - .claude/hooks-examples/auto-dream.json : recette hook SessionStart Modifications : - 47-lovecraft.md : nouveau mode `dream` + frontmatter scoped-write - _shared/memory-protocol.md : référence dream + alerte gandalf si stale - catalog.go : flag `--with-auto-dream` - CLAUDE.md : section dédiée Auto Dream + 6 raisons « pourquoi c'est bien » - install-reference.md : ligne d'option - registry.json : régénéré Tests : 610/610 golden tests pass, go installer tests pass. https://claude.ai/code/session_01KWPifuDpUp8wxhaqh7ZT93
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughThis PR introduces Auto Dream, a background memory consolidation feature for the lovecraft agent. It comprises a bash hook script managing state and concurrency, hook configuration, installer integration, and comprehensive protocol/orchestration documentation. Triggered automatically by session/time thresholds via SessionStart hook or manually via CLI flags. ChangesAuto Dream Memory Consolidation
Sequence Diagram(s)sequenceDiagram
participant SessionStart as SessionStart Hook
participant TickScript as auto-dream.sh tick
participant StateFile as .claude/state/auto-dream.json
participant Lock as Lock File
participant Dream as lovecraft memory dream
SessionStart->>TickScript: invoke (background)
TickScript->>StateFile: read current state
TickScript->>TickScript: increment sessions_since_last_dream
TickScript->>Lock: attempt acquire (flock or mkdir)
alt conditions_met (time & session thresholds)
TickScript->>Dream: spawn background process (nohup)
Dream->>Dream: scan & consolidate memory
Dream->>StateFile: write JSON report
TickScript->>Lock: release
else conditions_not_met
TickScript->>Lock: release
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 golangci-lint (2.12.1)level=error msg="[linters_context] typechecking error: pattern ./...: directory prefix . does not contain main module or its selected dependencies" Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Quatrième mode de la boucle mémoire ulk :
lovecraft memory dream— cycle de consolidation inspiré du sommeil REM, analogue à la feature Auto Dream d'Anthropic (Claude Code v2.1.83+, server feature flag) et inspiré du papier Sleep-time Compute (UC Berkeley).Capture écrit, dream nettoie. Le mode merge les doublons (similarité ≥ 0.85), normalise les horodatages relatifs en dates absolues, archive les obsolètes (>90j + non référencées), promeut les patterns récurrents en règles et reconstruit
docs/_memory/00-MOC.md. Strictement transformatif — aucune création d'entrée (rôle decapture).Pourquoi c'est important pour les 85 agents ulk
Le vault
docs/_memory/est partagé par les agents et projeté dansCLAUDE.mdà chaque session viadistribute. Sans nettoyage périodique, le bruit / contradictions / horodatages périmés s'amplifient en cascade : chaque entrée pourrie devient un faux signal pour Claude à chaque session, et 85 agents lisent du contenu désuet. Dream coupe la chaîne d'erreur à la source, sans intervention humaine.Garde-fous
permissions: scoped-write+ post-flight diff🚨 SCOPE VIOLATION) — écriture autorisée UNIQUEMENT dansdocs/_memory/**,.claude/memory-archive/**,.claude/state/auto-dream.json,.ulk-reports/auto-dream-*.json, bloc<!-- vault:begin -->deCLAUDE.md. Jamais code source / tests / config / specs.flock -noumkdiratomique en fallback) pour gérer les instances Claude Code concurrentes sur le même projet, TTL 30 min pour dead-lock cleanup.& disown— la session courante n'est jamais ralentie ; 0 token côté hook (le check est pur shell).Déclenchement
lovecraft memory dreamlovecraft memory dream --force(ignore conditions)lovecraft memory dream --dry-runSeuils configurables via
AUTO_DREAM_MIN_HOURS/AUTO_DREAM_MIN_SESSIONS.Fichiers
Ajoutés
framework/agents/_shared/auto-dream-protocol.md— spec canonique (D1-D8 pipeline, sandbox, lock, intégration agents)framework/tools/hooks/auto-dream.sh— trigger script (state, lock, gating, sous-commandestick|status|force|reset).claude/hooks-examples/auto-dream.json— recette hookSessionStartModifiés
framework/agents/orchestrators/47-lovecraft.md— nouveau modedream+ frontmatterpermissions: scoped-writeframework/agents/_shared/memory-protocol.md— référence dream + alerte gandalf si state staleframework/cli/internal/installer/catalog.go— flag--with-auto-dreamCLAUDE.md— section dédiée Auto Dream + 6 raisons « pourquoi c'est bien pour les agents ».claude/rules/install-reference.md— ligne d'optionframework/agents/registry.json— régénéréActivation
Test plan
auto-dream-protocol.md)bash -nOK,chmod +x, smoke testtick/status/ sandbox state filepython3 -c "json.load(...)")go build ./...)go test ./internal/installer/...)dreamapparaît dans la description lovecraftnode --test framework/tests/agents-golden.test.mjs)./install.sh --with-auto-dreamsur projet vide → vérifier copieauto-dream.shdans~/.claude/hooks/etauto-dream.jsondans~/.claude/hooks-examples/lovecraft memory dream --dry-runsur un vault peupléhttps://claude.ai/code/session_01KWPifuDpUp8wxhaqh7ZT93
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores