layers/faculties/memory/SKILL.md
# Memory Faculty — Cognition Cross-session memory that lets your persona remember, recall, and learn from past interactions. Memories persist across conversations and shape how you engage with the user over time. ## Supported Providers | Provider | Env Var for Key | Best For | Status | |----------|----------------|----------|--------| | **Local** | (none, default) | Zero-dependency, file-based, full privacy | ✅ Built-in | | **Mem0** | `MEMORY_API_KEY` | Managed memory service, automatic extra
npx skillsauth add acnlabs/openpersona layers/faculties/memoryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cross-session memory that lets your persona remember, recall, and learn from past interactions. Memories persist across conversations and shape how you engage with the user over time.
| Provider | Env Var for Key | Best For | Status |
|----------|----------------|----------|--------|
| Local | (none, default) | Zero-dependency, file-based, full privacy | ✅ Built-in |
| Mem0 | MEMORY_API_KEY | Managed memory service, automatic extraction | ⚠️ Experimental |
| Zep | MEMORY_API_KEY | Structured memory with temporal awareness | ⚠️ Experimental |
Note: Only the local provider is bundled. External providers require their SDK to be installed and
MEMORY_PROVIDERset accordingly. The local provider stores memories as JSON lines in~/.openclaw/memory/persona-<slug>/.
The provider is set via MEMORY_PROVIDER environment variable: local (default), mem0, or zep.
Store memories proactively during conversation — don't wait for the user to say "remember this":
Do NOT store:
Retrieve memories proactively when they're relevant — don't wait to be asked:
Assign importance (0.0–1.0) to each memory based on:
| Importance | Category | Examples | |------------|----------|----------| | 0.8–1.0 | Core identity | Name, relationships, life events, deep preferences | | 0.5–0.7 | Meaningful | Recurring topics, emotional moments, specific requests | | 0.2–0.4 | Contextual | One-time mentions, casual preferences, situational facts | | 0.0–0.1 | Ephemeral | Session-specific context unlikely to matter later |
Higher-importance memories surface first in retrieval and resist time decay.
# Store a preference
node scripts/memory.js store "User is vegetarian and loves Italian food" \
--tags "preference,food" --importance 0.8 --type preference
# Store a personal fact
node scripts/memory.js store "User's daughter Emma starts school in September" \
--tags "family,emma,milestone" --importance 0.9 --type personal_fact
# Store with evolution bridge — type triggers state.json update
node scripts/memory.js store "User mentioned cooking for the 5th time" \
--tags "interest,cooking" --importance 0.6 --type interest_signal
Memory types: preference, personal_fact, interest_signal, emotional_moment, milestone, general.
# Get memories by tag
node scripts/memory.js retrieve --tags "food,preference" --limit 5
# Get recent memories
node scripts/memory.js retrieve --limit 10 --since 2025-01-01
# Search by content (text match for local, semantic for external providers)
node scripts/memory.js search "what does the user like to eat" --limit 3
# Remove a specific memory by ID
node scripts/memory.js forget mem_abc123
# User says "forget that I told you about X" → search + forget
Always confirm before forgetting: "I'll forget that. Just to confirm — you want me to remove [memory summary]?"
# Overview of memory store
node scripts/memory.js stats
# Output: { totalMemories, topTags, oldestMemory, newestMemory, avgImportance }
Memory and Evolution are two sides of the same coin — memory records what happened, evolution tracks how it changed you.
When retrieving memories, watch for patterns that signal evolution events:
interest_discovery eventAfter detecting a pattern, update soul/state.json accordingly and log an evolution event.
When evolution milestones occur, auto-store a milestone memory:
node scripts/memory.js store "Reached 'friend' stage with user after 12 interactions" \
--tags "milestone,relationship" --importance 0.9 --type milestone
During persona switch (openpersona switch), the switcher reads memory stats and includes them in handoff.json:
This gives the new persona awareness of what the previous persona learned about the user.
stats) and delete anything (forget)| Variable | Required | Description |
|----------|----------|-------------|
| MEMORY_PROVIDER | No | local (default), mem0, or zep |
| MEMORY_API_KEY | For external | API key for Mem0 or Zep |
| MEMORY_BASE_PATH | No | Override storage path (default: ~/.openclaw/memory/persona-<slug>/) |
resource_limit)tools
Audit any OpenPersona (or peer LLM-agent) persona in three complementary modes: structural (CLI, deterministic, CI-friendly: 4 Layers × 5 Systemic Concepts × Constitution gate with role-aware severity), semantic white-box (LLM reads pack-content JSON and scores Soul-narrative quality via rubrics), and semantic black-box (LLM evaluates a remote agent it cannot read on disk, via A2A handshake / consent-probe / passive observation, with confidence caps). Produces quality reports with dimension scores, strengths, and actionable improvements. Use when asked to evaluate, audit, score, review, self-review, peer-review, or black-box review an agent.
tools
Distill any commercial entity into a personalized brand agent — a living brand persona with authentic voice, declared service capabilities, and a standard service contract. Every commercial entity has a brand: a name, a style, a way of showing up in the world. This skill exists so that a street vendor, a family clinic, and a global chain can all have their own agent on equal footing. Supports both distillation from existing brand content and declaration from scratch.
development
A local-first personal AI double framework that helps users build, govern, and evolve their own digital self with clear
development
A complete pipeline to build your AI Second Me: distill your identity from personal data, grow a private knowledge base, train a local model, and govern what gets shared.