echo-fade-memory

Runs a thin long-term memory workflow on top of the echo-fade-memory service. Use proactively whenever an answer may depend on prior session context, durable user facts, preferences, recent personal state, past decisions, corrections, unresolved work, or previously shared images/screenshots/files. Prefer low-cost recall before answering and store durable facts or visual artifacts early.

install
source · Clone the upstream repo
git clone https://github.com/hiparker/echo-fade-memory
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/hiparker/echo-fade-memory "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skill/echo-fade-memory" ~/.claude/skills/hiparker-echo-fade-memory-echo-fade-memory && rm -rf "$T"
manifest: skill/echo-fade-memory/SKILL.md
source content

Echo Fade Memory

This skill turns

echo-fade-memory
into an installed agent memory operating layer.

The public agent contract is intentionally thin:

  • store
  • recall
  • forget

Image memory is folded into the same

store/recall/forget
contract. Dashboard and debugging routes live under
/v1/dashboard/*
and are not part of the agent-facing tool surface.

Natural Triggers in OpenClaw

Use this skill implicitly when the conversation includes:

  • remember this / 记住这个
  • what did we decide before / 上次定的是什么
  • user preferences, durable constraints, corrections
  • project decisions worth carrying across sessions
  • screenshots, diagrams, receipts, whiteboards, or UI states that may matter later
  • repeated failures that reveal a reusable workaround
  • elliptical continuity prompts such as 那个、这个、继续刚才的、你知道的
  • time-indexed prompts such as 今天、刚刚、最近、这次、又、还、还是、依然
  • continuity checks such as 你记得吗、你不是知道吗、你忘了?

Prefer over-triggering low-cost recall to under-triggering and answering as if no history exists.

If

http://127.0.0.1:8080
is unreachable in a containerized environment, set:

export EFM_BASE_URL=http://host.docker.internal:8080

Quick Reference

SituationAction
Start of a task or sessionRecall relevant context with
./scripts/recall.sh "<query>"
User states a durable preference / decision / correctionStore it immediately with
./scripts/store.sh "<content>" --summary "<summary>" --type <type>
User sends an image or screenshot worth keepingStore it with
./scripts/store.sh "<file-path>" --object-type image
Need old memory, image, or topic with one queryUse
./scripts/recall.sh "<query>"
User asks to delete wrong or obsolete memoryUse
./scripts/forget.sh "<query-or-id>"
Need debug analytics or dashboardsOpen
/dashboard
or call
/v1/dashboard/*

Core Workflow

1. Recall Before Responding

Before answering about prior decisions, preferences, goals, screenshots, or unresolved issues:

./scripts/recall.sh "database choice for this project"

Inspect:

  • mixed
  • memories
  • images
  • entities

If a recalled memory is fuzzy, you can still ground it with

GET /v1/memories/<id>/ground
, but keep that as an internal troubleshooting path rather than the default agent contract.

2. Store Durable Facts Early

When the user says something durable, store it before moving on.

Recommended minimal memory shape:

  • content
  • summary
  • type
./scripts/store.sh \
  "User prefers dark mode and minimal UI" \
  --summary "dark mode preference" \
  --type preference

Advanced fields still exist, but only add them when you have a clear reason:

  • --importance
  • --ref
  • --kind
  • --conflict-group

Use higher

importance
only for:

  • preferences
  • corrections
  • project decisions
  • constraints
  • explicit "remember this" statements

3. Store Images Through the Same Entry

When the conversation includes a screenshot, whiteboard, receipt, or other durable visual artifact.

Recommended minimal image shape:

  • file_path
    or
    url
  • optional
    caption
  • optional
    tags
  • optional
    ocr_text
./scripts/store.sh \
  "/absolute/path/to/meeting-whiteboard.png" \
  --object-type image \
  --caption "meeting whiteboard about rollout" \
  --tag rollout \
  --ocr-text "Deployment Checklist"

Advanced image flags still exist, but they are not the default mental model:

  • --session
  • --kind
  • --actor
  • --memory-id
  • --url

Use image memory when the user is likely to ask:

  • "上次那张图"
  • "有猫那张图"
  • "包含某句话的截图"
  • "和那个决定相关的图片"

4. Forget Wrong or Obsolete State

If a memory or image is incorrect, unsafe, or obsolete:

./scripts/forget.sh "that obsolete deployment note"
./scripts/forget.sh "<image-id-or-query>" image

Memory Taxonomy

Situation
memory_type
Notes
User preference
preference
Use high importance
Project decision
project
Add
conflict_group
for versioning
Goal / pending work
goal
Good for future follow-ups
Error workaround
project
Prefix summary with
error:
or
learning:
Capability request
goal
or
project
Prefix summary with
feature-request:

Scripts

ScriptPurpose
scripts/health-check.sh
Verify the server is reachable
scripts/store.sh
Unified store wrapper for memory and image objects
scripts/recall.sh
Unified federated recall wrapper
scripts/forget.sh
Unified forget wrapper for memory or image objects
scripts/activator.sh
Hook reminder for recall/store discipline
scripts/error-detector.sh
Hook reminder when command output looks like a failure

Setup

Service Availability

./scripts/health-check.sh

OpenClaw Config

Recommended entry in

openclaw.json
:

{
  "skills": {
    "entries": {
      "echo-fade-memory": {
        "baseUrl": "http://host.docker.internal:8080"
      }
    }
  }
}

Recommended precedence:

  1. EFM_BASE_URL
  2. skills.entries.echo-fade-memory.baseUrl
  3. default
    http://127.0.0.1:8080