ワンクリックで
dream
Consolidates stored memories by merging duplicates, resolving contradictions, and pruning stale entries. Use when memory count is high, search results feel noisy or repetitive, or periodic cleanup is needed to maintain memory quality.
メニュー
Consolidates stored memories by merging duplicates, resolving contradictions, and pruning stale entries. Use when memory count is high, search results feel noisy or repetitive, or periodic cleanup is needed to maintain memory quality.
Plan and then execute a migration of a project from the mem0 open-source / self-hosted SDK (the local `Memory` class) to the mem0 Platform / hosted / managed SDK (the `MemoryClient` class). Use this whenever a developer wants to move, switch, or migrate their mem0 usage off OSS/self-hosted to the hosted API — e.g. "migrate my mem0 setup to the platform", "switch from self-hosted mem0 to MemoryClient", "use my mem0 API key instead of a local Qdrant", "move mem0 to the cloud/hosted/managed service", or "replace my local mem0 vector store + embedder config with the platform". Applies to Python (`from mem0 import Memory` → `from mem0 import MemoryClient`) and TypeScript/JavaScript (`import { Memory } from "mem0ai/oss"` → `import MemoryClient from "mem0ai"`). Trigger even when the user doesn't say the word "migrate" but clearly wants their existing mem0 integration to run against the hosted platform. It first produces a reviewable migration plan, then executes it after the developer approves. Strictly scoped to th
Searches and injects relevant memories into context before starting work on a task or topic. Use when beginning a new task, switching context, or when past decisions, preferences, or knowledge need to be loaded.
Deletes memories by search query or memory ID with confirmation before removal. Use when removing outdated information, incorrect memories, sensitive data, or cleaning up after experiments.
Pins or unpins a memory to protect it from pruning during dream consolidation. Use when a memory is critical and must never be removed, such as core preferences, important decisions, or immutable personal facts.
Stores a memory verbatim from user input with appropriate category classification. Use when the user says remember this, save this, store this, note that, or explicitly asks to record a preference, decision, goal, or lesson.
Searches memories and displays compact one-liner results, or looks up a specific memory by ID. Use for quick memory lookups, checking if something was recorded, resolving [mem0:id] citations, or browsing memories without full category detail.
| name | dream |
| description | Consolidates stored memories by merging duplicates, resolving contradictions, and pruning stale entries. Use when memory count is high, search results feel noisy or repetitive, or periodic cleanup is needed to maintain memory quality. |
This skill performs a memory consolidation pass: it fetches all memories, identifies near-duplicates, flags contradictions, and prunes stale entries. All proposed changes are shown as a diff for user approval before anything is modified.
IMPORTANT: Execute steps strictly in order (1 -> 2 -> 3 -> 4 -> 5). Each step depends on the previous one. Do NOT run steps in parallel or skip ahead.
Use mem0_memory tool with action="get_all" to retrieve every memory.
If zero memories are found, print:
No memories found. Nothing to consolidate.
...and stop.
Work entirely in-memory; do not modify anything yet.
Group memories by category. For each group, identify the following:
Two memories are near-duplicates when they express the same fact but phrased differently (e.g., "Prefers morning meetings" and "Likes scheduling meetings early").
Heuristics — two memories are near-duplicates if all of these hold:
[PINNED]).For each qualifying pair, draft a merged version that is more complete than either original.
Two memories contradict when they assert opposing facts about the same topic (e.g., "Prefers cats" vs. "Allergic to cats, prefers dogs").
Identify the likely winner: the more recent memory wins. Store both IDs and their content for user review.
A memory is a prune candidate when any of the following is true:
Always skip memories where content starts with [PINNED], regardless of age.
Print a structured diff before making any changes:
## dream — consolidation report
Merges (<N>):
[mem0:<id1>] + [mem0:<id2>] -> "<merged content, 100 chars>"
Conflicts (<N>):
[mem0:<idA>] vs [mem0:<idB>] — "<topic>" [A/B/skip]
Prune (<N>):
[mem0:<id>] — <category>, <age>d old
Proposed: <N> merges, <N> prunes, <N> conflicts. Apply? [Y/n]
If there are zero total proposals, print:
Dream complete. No duplicate, contradictory, or stale memories found.
...and stop.
For each conflict pair, wait for the user to choose A, B, or skip.
After all conflict resolutions are collected, prompt: Apply? [Y/n]
If the user declines, print Cancelled. No changes made. and stop.
If confirmed, apply all changes:
Merges: Delete both originals, add the merged version using mem0_memory with action="add".
Contradictions (resolved): Delete the loser using mem0_memory with action="delete".
Prunes: Delete each using mem0_memory with action="delete".
Dream complete — merged: <N>, pruned: <N>, conflicts resolved: <N>, skipped: <N>
When invoked with --auto (e.g., /mem0-dream --auto), run non-interactively:
Print a compact summary:
[mem0-dream --auto] merged=<N> pruned=<N> conflicts_skipped=<N>
/mem0-forget — targeted deletion of specific memories/mem0-status — quick health check