Skip to content

[Feature] Decouple dreaming from memory-core — allow any memory plugin to implement dreaming protocol #85473

Description

@Footree

Summary

Dreaming (Light → Deep → REM consolidation) is a powerful feature, but it is currently tightly coupled to memory-core. Users who run alternative memory plugins (e.g. memory-lancedb-pro) cannot use dreaming even when the plugin is otherwise feature-complete.

The problem

Dreaming depends on memory-core internal state formats:

  • short-term-recall.json
  • Daily memory files (memory/YYYY-MM-DD.md)
  • phase-signals.json
  • Managed cron with hardcoded internal paths

None of these are exposed as a plugin protocol. A memory plugin cannot "opt in" to dreaming — it must either be memory-core or nothing.

Proposed solution

Expose dreaming as a memory plugin protocol consisting of:

  1. Config schema: dreaming config block that any plugin can declare (e.g. enabled, frequency, model)
  2. Required capabilities: a set of interface methods the plugin must implement to participate in the dreaming lifecycle:
    • Query recent memories (for light phase candidate collection)
    • Promote candidates (for deep phase durable writes)
    • Report state (for REFLECTION/REM phase)
  3. Dreaming runtime: OpenClaw manages the cron scheduling and phase orchestration; the plugin implements the storage backend

This mirrors the pattern where OpenClaw already supports pluggable memory backends — dreaming should be part of that contract.

Related

Benefit

Any memory plugin could implement the dreaming protocol, enabling:

  • memory-lancedb-pro users to get automatic memory consolidation
  • Future memory plugins to ship with dreaming support from day one
  • Reduced maintenance burden on OpenClaw core (protocol vs. monolith)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.staleMarked as stale due to inactivity

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions