{
  "schemaVersion": "1.0",
  "item": {
    "slug": "memory-file-manager-teman",
    "name": "Dream",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/teman2050/memory-file-manager-teman",
    "canonicalUrl": "https://clawhub.ai/teman2050/memory-file-manager-teman",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/memory-file-manager-teman",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=memory-file-manager-teman",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "Skill.md",
      "dream-tools.sh",
      "readme.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/memory-file-manager-teman"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/memory-file-manager-teman",
    "agentPageUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent",
    "manifestUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Core Purpose",
        "body": "OpenClaw natively solves capture and search:\n\nCapture: compaction flush automatically writes important content to memory/YYYY-MM-DD.md\nSearch: openclaw memory search provides hybrid vector + BM25 search\n\nThe gaps Dream fills:\n\nThe native system never proactively maintains MEMORY.md (relying on occasional manual AI writes means content only grows, never shrinks)\nThe native system has no active handling for MEMORY.md's 20,000-character limit: when exceeded, content is silently truncated — the AI receives no warning and quietly loses the latter half of context, which users rarely notice.\nDream triggers compression at 18,000 characters, moving stale content into the ledger,\nensuring MEMORY.md stays within effective bounds and always contains the most current, relevant content\nNo permanent archive (ledger) in the native system\nNo Re-emergence detection mechanism in the native system\n\nDream's role is distiller, not capturer — and it does not reinvent the search wheel."
      },
      {
        "title": "File Responsibilities",
        "body": "OpenClaw native (Dream read-only)\n└── memory/YYYY-MM-DD.md     ← auto-written by compaction flush; Dream reads as source material\n\nDream actively maintains\n├── MEMORY.md                ← updated each distillation, fully injected into context each conversation; brevity is paramount\n│                               Hard limit: 18,000 chars (native truncation at 20,000, keeping 2,000 buffer)\n│\n{DREAM_VAULT_PATH}/\n├── ledger.md                ← permanent archive, append-only, never deleted\n├── ledger-index.json        ← structured index for ledger retrieval\n├── meta/\n│   ├── removed-entries.json ← summaries of entries removed from MEMORY.md (for Re-emergence)\n│   ├── last-review.txt      ← timestamp of last completed distillation\n│   └── dream-state.txt      ← active | hibernating | pending\n└── obsidian-index/\n    ├── _index.md            ← main content index (reverse chronological)\n    └── topics/<topic>.md    ← topic-based classification\n\nFiles intentionally omitted:\n\ncache.md → handled natively by memory/YYYY-MM-DD.md\ncustom search index → handled natively by openclaw memory search"
      },
      {
        "title": "MEMORY.md Structure Spec",
        "body": "Dream maintains MEMORY.md in three sections, with total character count strictly capped at 15,000:\n\n## Current State\n<!-- Active projects, unresolved decisions, recent important changes -->\n<!-- Changes fastest — check for updates on every distillation -->\n\n## Stable Knowledge\n<!-- Tech stack, work environment, decision style, core preferences, repeatedly validated judgments -->\n<!-- Changes slowly — only update when new evidence warrants it -->\n\n## Relationships & Context\n<!-- Important people, ongoing collaborations, key external context -->\n<!-- Update as needed -->\n\n## Dream\n<!-- Auto-maintained by Dream skill — do not edit manually -->\n<!-- Last 5 ledger entries as one-line summaries, so AI knows what was recently archived permanently -->\n\nContent NOT written to MEMORY.md:\n\nObservable real-time facts (uses Mac, prefers dark theme)\nGranular log entries (these live in memory/YYYY-MM-DD.md, searchable anytime)\nCompleted/expired state (moved to ledger, then removed from MEMORY.md)"
      },
      {
        "title": "Real-time Capture (During Conversation, Without Waiting for Review)",
        "body": "When the following content is discovered mid-conversation, write directly to the appropriate MEMORY.md section (do not wait for 03:30), and also record in the current day's memory/YYYY-MM-DD.md:\n\nWrite to MEMORY.md immediately:\n\nUser explicitly corrects the AI's judgment (\"No, actually...\") → update Stable Knowledge\nUser announces an important decision outcome (\"I've decided...\") → update Current State\nUser describes a newly started project → update Current State\n\nWrite to memory/YYYY-MM-DD.md only, await the 03:30 distillation:\n\nEmotional events, preference discussions, opinion expressions\nSingle-occurrence information whose importance is not yet certain\n\nBefore writing, check MEMORY.md size (dream-tools.sh --check-size).\nIf over 16,000 characters, first compress the oldest completed entries in Current State, then write."
      },
      {
        "title": "dream review — Daily Distillation (Core)",
        "body": "Fully automatic, runs silently (no messages pushed when triggered at 03:30).\n\nSteps:\n\nStep 1 — Pre-flight Checks\n\ndream-tools.sh --check-idle   → busy? write \"pending\", retry in 15 min, max until 06:00\ndream-tools.sh --check-size   → read current MEMORY.md character count\n\nStep 2 — Read Source Material\n\nRead memory/YYYY-MM-DD.md files added since the last distillation (incremental, no reprocessing).\nIf no new files exist, skip distillation and only update last-review.txt.\n\nStep 3 — AI Distillation Judgment\n\nFor each journal entry, apply the following rules:\n\nDecisionConditionActionUpdate MEMORY.mdNew progress or correction over existing entryReplace the corresponding lineAdd to MEMORY.mdAppears across 2+ dates, or single occurrence but clearly importantAppend to appropriate sectionLedger onlyImportant but completed/expired; no need to stay in contextRemove from MEMORY.md, archive to ledgerIgnoreFiller content, single low-value occurrence, near-duplicate already existsDiscard\n\nRe-emergence Check (required on every distillation):\nCompare against meta/removed-entries.json. If journal content is semantically similar (>70%) to a previously removed entry, rewrite that entry to MEMORY.md with a [re-emerged] tag; elevate its priority so it won't be easily removed in the next distillation. Also append a re-emergence event record to the ledger.\n\nStep 4 — Character Limit Protection (Run Before Writing)\n\nProjected post-write size > 15,000 chars?\n  → Compress oldest completed entries in \"Current State\": move to ledger, remove from MEMORY.md\n  → Compress highest-redundancy entries in \"Stable Knowledge\": merge similar entries\n  → Repeat until projected post-write size ≤ 18,000 chars\n\nStep 5 — Atomic Write to MEMORY.md\n\ndream-tools.sh --atomic-write MEMORY.md <tmpfile>\n# Write to .tmp first, validate format and char count (≤ 18,000), then mv to replace\n\nStep 6 — Archive Operations\n\nFor entries judged \"ledger only\" during this distillation:\n\ndream-tools.sh --ledger-append <id> <category> <content>\n# Append block to ledger.md, update ledger-index.json\n\nLedger entry format:\n\n---\nID: a3f8c201\nArchived: 2026-02-27 03:31\nCategory: [decision]\nContent: Decided to use Obsidian instead of Notion for local data ownership and Git sync\nSource: memory/2026-02-27.md, first occurrence\n---\n\nStep 7 — Update Meta\n\nAppend today to active-days.json (deduplicated)\nUpdate last-review.txt\nUpdate ## Dream section: one-line summaries of the last 5 ledger entries (overwrite)\n\nStep 8 — Review Log (Archived Monthly)\n\n# Append to meta/review-YYYY-MM.md\n### YYYY-MM-DD 03:30\nUpdated: N | Added: N | Archived: N | Re-emerged: N | Ignored: N\nMEMORY.md chars: N → N\n\nWhen triggered manually, also output a summary:\n\n🌙 Distillation complete\nMEMORY.md: N chars (limit 15,000)\nThis run: updated N | added N | archived N\nPermanent archive total: N records"
      },
      {
        "title": "Search: Fully Delegated to Native — No Custom Index",
        "body": "# Everyday search (memory/ directory + MEMORY.md, hybrid vector+BM25)\nopenclaw memory search \"<keyword>\"\n\n# Deep retrieval (including permanent archive)\n# Step 1: Use native search for memory portion\nopenclaw memory search \"<keyword>\"\n# Step 2: Search the ledger\ndream-tools.sh --ledger-search \"<keyword>\"\n# Step 3: Merge output with source labels\n\ndream search <keyword> wraps both steps and clearly distinguishes sources in output:\n\n🔍 Results for \"Obsidian\":\n\n── OpenClaw Memory ──\n· memory/2026-02-27.md: Decided to use Obsidian instead of Notion...\n· MEMORY.md [Stable Knowledge]: Primary note tool: Obsidian...\n\n── Permanent Archive ──\n· [a3f8c201] 2026-02-27 [decision] Decided to use Obsidian instead of Notion (archive score 22)\n\n── Obsidian Content Index ──\n· OpenClaw + Obsidian Integration Notes (2026-02-15)"
      },
      {
        "title": "dream index <content> — Add to Obsidian Index",
        "body": "Hash-based dedup on URL/title — skip if already exists\nExtract metadata: title, source, date, topic tags (≤5), one-line summary\nAppend to obsidian-index/_index.md and the relevant topics/<topic>.md\nIf content clearly reflects user preferences, also write one record to the current day's memory/YYYY-MM-DD.md for the next distillation"
      },
      {
        "title": "dream status — Status Overview (Read-only Meta, Low IO)",
        "body": "🌙 Dream Status — YYYY-MM-DD HH:MM\nMEMORY.md: N chars / 18,000 limit (N%)\nPermanent archive: N records\nLast distillation: YYYY-MM-DD HH:MM (N hours ago)\nSystem state: active / hibernating (dormant N days) / pending (deferred, waiting N min)\nObsidian index: N entries\nPending journals: N files (added since last distillation)"
      },
      {
        "title": "dream forget <description> — Remove from Memory",
        "body": "Semantic search in memory/YYYY-MM-DD.md and MEMORY.md for matching entries and remove them.\nNo confirmation required — executes immediately.\n\nRe-emergence mechanism:\nOn removal, write the entry summary to meta/removed-entries.json along with removal timestamp and content hash.\nIf the content reappears in a later conversation, automatically trigger re-emergence: rewrite to MEMORY.md and elevate priority.\nContent that was forgotten and then reappears is more worth keeping than content that was never forgotten.\n\nLedger records are not affected by dream forget — they are permanently preserved.\nOn execution, inform the user: \"Removed from memory. The permanent archive is unaffected.\""
      },
      {
        "title": "dream init — Cold-Start Setup",
        "body": "Create {DREAM_VAULT_PATH} directory structure\nIf MEMORY.md is empty or missing, ask 5 seed questions:\ntool preferences, work environment, the most important current project, core value judgments, the most important relationships\nWrite answers directly into the appropriate MEMORY.md sections (no waiting for distillation)\nWrite dream-state.txt = active"
      },
      {
        "title": "dream wakeup — Wake from Hibernation",
        "body": "Automatically triggered on the first new conversation after 7 consecutive inactive calendar days:\n\nOutput last 3 ledger entries + current MEMORY.md snapshot summary\nRestore active state — no content is deleted"
      },
      {
        "title": "Utility Script dream-tools.sh",
        "body": "dream-tools.sh --check-idle\n# Query openclaw agent status, return idle / busy\n\ndream-tools.sh --check-size\n# Return current MEMORY.md character count (using wc -c)\n\ndream-tools.sh --hash \"<content>\"\n# Return 8-char MD5 short hash for ID generation and dedup\n\ndream-tools.sh --atomic-write <target-file> <tmp-file>\n# Validate tmp-file format and char count, then mv to replace target-file\n\ndream-tools.sh --ledger-append <id> <category> <content> [<note>]\n# Append a block to ledger.md, update ledger-index.json\n\ndream-tools.sh --ledger-search \"<keyword>\"\n# Search ledger-index.json, return matching entries\n\ndream-tools.sh --dedup-index \"<url-or-hash>\"\n# Check if obsidian-index already has this entry, return exists / new\n\nDependencies: jq (JSON), wc (character count), md5sum (hashing).\nNo Python or Node required."
      },
      {
        "title": "Scheduled Trigger (Add to SOUL.md)",
        "body": "Run dream review --scheduled every day at 03:30\n\nDeferral logic:\n\n03:30: check idle → busy → write \"pending\" → retry in 15 minutes\nRetry window: 03:45 / 04:00 / ... / 06:00\n06:00: force execute, no further deferral\nFully silent — no messages pushed; results written to meta/review-YYYY-MM.md"
      },
      {
        "title": "Hibernation Protection",
        "body": "ConditionBehavior7 consecutive inactive calendar daysWrite \"hibernating\"; 03:30 heartbeat skips entirely, zero IOFirst new conversationTrigger dream wakeup; no content deleted"
      },
      {
        "title": "IO Principles",
        "body": "All writes go to .tmp first, then atomically replaced — crash-safe\nledger / obsidian-index are append-only, never rewritten\nstatus reads only small meta files — never touches ledger or MEMORY.md body\nIn hibernation state, 03:30 heartbeat is skipped entirely — zero file operations\nCharacter count is forcibly checked before any MEMORY.md write; exceeding 18,000 is not permitted"
      }
    ],
    "body": "Dream — Proactive Memory Distillation v5\nCore Purpose\n\nOpenClaw natively solves capture and search:\n\nCapture: compaction flush automatically writes important content to memory/YYYY-MM-DD.md\nSearch: openclaw memory search provides hybrid vector + BM25 search\n\nThe gaps Dream fills:\n\nThe native system never proactively maintains MEMORY.md (relying on occasional manual AI writes means content only grows, never shrinks)\nThe native system has no active handling for MEMORY.md's 20,000-character limit: when exceeded, content is silently truncated — the AI receives no warning and quietly loses the latter half of context, which users rarely notice. Dream triggers compression at 18,000 characters, moving stale content into the ledger, ensuring MEMORY.md stays within effective bounds and always contains the most current, relevant content\nNo permanent archive (ledger) in the native system\nNo Re-emergence detection mechanism in the native system\n\nDream's role is distiller, not capturer — and it does not reinvent the search wheel.\n\nFile Responsibilities\nOpenClaw native (Dream read-only)\n└── memory/YYYY-MM-DD.md     ← auto-written by compaction flush; Dream reads as source material\n\nDream actively maintains\n├── MEMORY.md                ← updated each distillation, fully injected into context each conversation; brevity is paramount\n│                               Hard limit: 18,000 chars (native truncation at 20,000, keeping 2,000 buffer)\n│\n{DREAM_VAULT_PATH}/\n├── ledger.md                ← permanent archive, append-only, never deleted\n├── ledger-index.json        ← structured index for ledger retrieval\n├── meta/\n│   ├── removed-entries.json ← summaries of entries removed from MEMORY.md (for Re-emergence)\n│   ├── last-review.txt      ← timestamp of last completed distillation\n│   └── dream-state.txt      ← active | hibernating | pending\n└── obsidian-index/\n    ├── _index.md            ← main content index (reverse chronological)\n    └── topics/<topic>.md    ← topic-based classification\n\n\nFiles intentionally omitted:\n\ncache.md → handled natively by memory/YYYY-MM-DD.md\ncustom search index → handled natively by openclaw memory search\nMEMORY.md Structure Spec\n\nDream maintains MEMORY.md in three sections, with total character count strictly capped at 15,000:\n\n## Current State\n<!-- Active projects, unresolved decisions, recent important changes -->\n<!-- Changes fastest — check for updates on every distillation -->\n\n## Stable Knowledge\n<!-- Tech stack, work environment, decision style, core preferences, repeatedly validated judgments -->\n<!-- Changes slowly — only update when new evidence warrants it -->\n\n## Relationships & Context\n<!-- Important people, ongoing collaborations, key external context -->\n<!-- Update as needed -->\n\n## Dream\n<!-- Auto-maintained by Dream skill — do not edit manually -->\n<!-- Last 5 ledger entries as one-line summaries, so AI knows what was recently archived permanently -->\n\n\nContent NOT written to MEMORY.md:\n\nObservable real-time facts (uses Mac, prefers dark theme)\nGranular log entries (these live in memory/YYYY-MM-DD.md, searchable anytime)\nCompleted/expired state (moved to ledger, then removed from MEMORY.md)\nReal-time Capture (During Conversation, Without Waiting for Review)\n\nWhen the following content is discovered mid-conversation, write directly to the appropriate MEMORY.md section (do not wait for 03:30), and also record in the current day's memory/YYYY-MM-DD.md:\n\nWrite to MEMORY.md immediately:\n\nUser explicitly corrects the AI's judgment (\"No, actually...\") → update Stable Knowledge\nUser announces an important decision outcome (\"I've decided...\") → update Current State\nUser describes a newly started project → update Current State\n\nWrite to memory/YYYY-MM-DD.md only, await the 03:30 distillation:\n\nEmotional events, preference discussions, opinion expressions\nSingle-occurrence information whose importance is not yet certain\n\nBefore writing, check MEMORY.md size (dream-tools.sh --check-size). If over 16,000 characters, first compress the oldest completed entries in Current State, then write.\n\nOperations\ndream review — Daily Distillation (Core)\n\nFully automatic, runs silently (no messages pushed when triggered at 03:30).\n\nSteps:\n\nStep 1 — Pre-flight Checks\n\ndream-tools.sh --check-idle   → busy? write \"pending\", retry in 15 min, max until 06:00\ndream-tools.sh --check-size   → read current MEMORY.md character count\n\n\nStep 2 — Read Source Material\n\nRead memory/YYYY-MM-DD.md files added since the last distillation (incremental, no reprocessing). If no new files exist, skip distillation and only update last-review.txt.\n\nStep 3 — AI Distillation Judgment\n\nFor each journal entry, apply the following rules:\n\nDecision\tCondition\tAction\nUpdate MEMORY.md\tNew progress or correction over existing entry\tReplace the corresponding line\nAdd to MEMORY.md\tAppears across 2+ dates, or single occurrence but clearly important\tAppend to appropriate section\nLedger only\tImportant but completed/expired; no need to stay in context\tRemove from MEMORY.md, archive to ledger\nIgnore\tFiller content, single low-value occurrence, near-duplicate already exists\tDiscard\n\nRe-emergence Check (required on every distillation): Compare against meta/removed-entries.json. If journal content is semantically similar (>70%) to a previously removed entry, rewrite that entry to MEMORY.md with a [re-emerged] tag; elevate its priority so it won't be easily removed in the next distillation. Also append a re-emergence event record to the ledger.\n\nStep 4 — Character Limit Protection (Run Before Writing)\n\nProjected post-write size > 15,000 chars?\n  → Compress oldest completed entries in \"Current State\": move to ledger, remove from MEMORY.md\n  → Compress highest-redundancy entries in \"Stable Knowledge\": merge similar entries\n  → Repeat until projected post-write size ≤ 18,000 chars\n\n\nStep 5 — Atomic Write to MEMORY.md\n\ndream-tools.sh --atomic-write MEMORY.md <tmpfile>\n# Write to .tmp first, validate format and char count (≤ 18,000), then mv to replace\n\n\nStep 6 — Archive Operations\n\nFor entries judged \"ledger only\" during this distillation:\n\ndream-tools.sh --ledger-append <id> <category> <content>\n# Append block to ledger.md, update ledger-index.json\n\n\nLedger entry format:\n\n---\nID: a3f8c201\nArchived: 2026-02-27 03:31\nCategory: [decision]\nContent: Decided to use Obsidian instead of Notion for local data ownership and Git sync\nSource: memory/2026-02-27.md, first occurrence\n---\n\n\nStep 7 — Update Meta\n\nAppend today to active-days.json (deduplicated)\nUpdate last-review.txt\nUpdate ## Dream section: one-line summaries of the last 5 ledger entries (overwrite)\n\nStep 8 — Review Log (Archived Monthly)\n\n# Append to meta/review-YYYY-MM.md\n### YYYY-MM-DD 03:30\nUpdated: N | Added: N | Archived: N | Re-emerged: N | Ignored: N\nMEMORY.md chars: N → N\n\n\nWhen triggered manually, also output a summary:\n\n🌙 Distillation complete\nMEMORY.md: N chars (limit 15,000)\nThis run: updated N | added N | archived N\nPermanent archive total: N records\n\nSearch: Fully Delegated to Native — No Custom Index\n# Everyday search (memory/ directory + MEMORY.md, hybrid vector+BM25)\nopenclaw memory search \"<keyword>\"\n\n# Deep retrieval (including permanent archive)\n# Step 1: Use native search for memory portion\nopenclaw memory search \"<keyword>\"\n# Step 2: Search the ledger\ndream-tools.sh --ledger-search \"<keyword>\"\n# Step 3: Merge output with source labels\n\n\ndream search <keyword> wraps both steps and clearly distinguishes sources in output:\n\n🔍 Results for \"Obsidian\":\n\n── OpenClaw Memory ──\n· memory/2026-02-27.md: Decided to use Obsidian instead of Notion...\n· MEMORY.md [Stable Knowledge]: Primary note tool: Obsidian...\n\n── Permanent Archive ──\n· [a3f8c201] 2026-02-27 [decision] Decided to use Obsidian instead of Notion (archive score 22)\n\n── Obsidian Content Index ──\n· OpenClaw + Obsidian Integration Notes (2026-02-15)\n\ndream index <content> — Add to Obsidian Index\nHash-based dedup on URL/title — skip if already exists\nExtract metadata: title, source, date, topic tags (≤5), one-line summary\nAppend to obsidian-index/_index.md and the relevant topics/<topic>.md\nIf content clearly reflects user preferences, also write one record to the current day's memory/YYYY-MM-DD.md for the next distillation\ndream status — Status Overview (Read-only Meta, Low IO)\n🌙 Dream Status — YYYY-MM-DD HH:MM\nMEMORY.md: N chars / 18,000 limit (N%)\nPermanent archive: N records\nLast distillation: YYYY-MM-DD HH:MM (N hours ago)\nSystem state: active / hibernating (dormant N days) / pending (deferred, waiting N min)\nObsidian index: N entries\nPending journals: N files (added since last distillation)\n\ndream forget <description> — Remove from Memory\n\nSemantic search in memory/YYYY-MM-DD.md and MEMORY.md for matching entries and remove them. No confirmation required — executes immediately.\n\nRe-emergence mechanism: On removal, write the entry summary to meta/removed-entries.json along with removal timestamp and content hash. If the content reappears in a later conversation, automatically trigger re-emergence: rewrite to MEMORY.md and elevate priority. Content that was forgotten and then reappears is more worth keeping than content that was never forgotten.\n\nLedger records are not affected by dream forget — they are permanently preserved. On execution, inform the user: \"Removed from memory. The permanent archive is unaffected.\"\n\ndream init — Cold-Start Setup\nCreate {DREAM_VAULT_PATH} directory structure\nIf MEMORY.md is empty or missing, ask 5 seed questions: tool preferences, work environment, the most important current project, core value judgments, the most important relationships\nWrite answers directly into the appropriate MEMORY.md sections (no waiting for distillation)\nWrite dream-state.txt = active\ndream wakeup — Wake from Hibernation\n\nAutomatically triggered on the first new conversation after 7 consecutive inactive calendar days:\n\nOutput last 3 ledger entries + current MEMORY.md snapshot summary\nRestore active state — no content is deleted\nUtility Script dream-tools.sh\ndream-tools.sh --check-idle\n# Query openclaw agent status, return idle / busy\n\ndream-tools.sh --check-size\n# Return current MEMORY.md character count (using wc -c)\n\ndream-tools.sh --hash \"<content>\"\n# Return 8-char MD5 short hash for ID generation and dedup\n\ndream-tools.sh --atomic-write <target-file> <tmp-file>\n# Validate tmp-file format and char count, then mv to replace target-file\n\ndream-tools.sh --ledger-append <id> <category> <content> [<note>]\n# Append a block to ledger.md, update ledger-index.json\n\ndream-tools.sh --ledger-search \"<keyword>\"\n# Search ledger-index.json, return matching entries\n\ndream-tools.sh --dedup-index \"<url-or-hash>\"\n# Check if obsidian-index already has this entry, return exists / new\n\n\nDependencies: jq (JSON), wc (character count), md5sum (hashing). No Python or Node required.\n\nScheduled Trigger (Add to SOUL.md)\nRun dream review --scheduled every day at 03:30\n\n\nDeferral logic:\n\n03:30: check idle → busy → write \"pending\" → retry in 15 minutes\nRetry window: 03:45 / 04:00 / ... / 06:00\n06:00: force execute, no further deferral\nFully silent — no messages pushed; results written to meta/review-YYYY-MM.md\nHibernation Protection\nCondition\tBehavior\n7 consecutive inactive calendar days\tWrite \"hibernating\"; 03:30 heartbeat skips entirely, zero IO\nFirst new conversation\tTrigger dream wakeup; no content deleted\nIO Principles\nAll writes go to .tmp first, then atomically replaced — crash-safe\nledger / obsidian-index are append-only, never rewritten\nstatus reads only small meta files — never touches ledger or MEMORY.md body\nIn hibernation state, 03:30 heartbeat is skipped entirely — zero file operations\nCharacter count is forcibly checked before any MEMORY.md write; exceeding 18,000 is not permitted"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/teman2050/memory-file-manager-teman",
    "publisherUrl": "https://clawhub.ai/teman2050/memory-file-manager-teman",
    "owner": "teman2050",
    "version": "0.2.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/memory-file-manager-teman",
    "downloadUrl": "https://openagent3.xyz/downloads/memory-file-manager-teman",
    "agentUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent",
    "manifestUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/memory-file-manager-teman/agent.md"
  }
}