Install
openclaw skills install @shenmeng/longterm-memory-managerLong-term memory management system for maintaining MEMORY.md, consolidating daily memories, and extracting key insights. Use when: (1) Consolidating daily memories into MEMORY.md, (2) Archiving old daily memories, (3) Extracting key facts from conversations, (4) Searching through memory history, (5) Setting up memory maintenance automation. Triggers on '长期记忆', 'memory consolidate', '记忆管理', '归档', 'MEMORY.md', '记忆压缩'.
openclaw skills install @shenmeng/longterm-memory-managerSystematic management of MEMORY.md and daily memory files for persistent knowledge retention.
~/.openclaw/workspace/
├── MEMORY.md # Long-term curated memory (main)
├── memory/ # Daily memory files
│ ├── 2025-01-20.md
│ ├── 2025-01-21.md
│ └── ...
└── .memory-archive/ # Archived memories
└── 2025-01/
├── consolidated.md
└── raw/
# Consolidate recent daily memories
python3 {baseDir}/scripts/memory_manager.py --consolidate --days 7
# Archive old memories
python3 {baseDir}/scripts/memory_manager.py --archive --older-than 30
# Extract key facts from MEMORY.md
python3 {baseDir}/scripts/memory_manager.py --extract-facts
# Search memory history
python3 {baseDir}/scripts/memory_manager.py --search "关键词"
# Generate memory summary
python3 {baseDir}/scripts/memory_manager.py --summary --output memory-summary.md
# Health check
python3 {baseDir}/scripts/memory_manager.py --health
MEMORY.md should contain distilled, long-term knowledge:
# MEMORY.md - Long-Term Memory
## User Profile
- Name: ...
- Preferences: ...
- Work patterns: ...
## Key Decisions
- [Date] Decision: Reasoning...
## Important Facts
- Account: location...
- Credentials: stored in...
- Recurring tasks: ...
## Lessons Learned
- Pattern: Insight...
## Active Projects
- Project A: Status, next steps...
## Recurring Context
- Weekly meetings: ...
- Regular reports: ...
# Full consolidation workflow
python3 {baseDir}/scripts/memory_manager.py --consolidate --auto-archive
| Keep | Don't Keep |
|---|---|
| User preferences | Temporary states |
| Key decisions | Daily trivia |
| Important facts | Transient data |
| Lessons learned | Detailed logs |
| Active projects | Heartbeat checks |
| Recurring patterns | One-time events |
| Credentials locations | OAuth URLs |
memory/YYYY-MM-DD.md files capture:
DO:
# 2025-01-20
## Key Events
- User asked about X, decided Y
- Set up new integration Z
- Discovered preference for concise responses
## Decisions
- Use tool X instead of Y for Z task (user preference)
## Pending
- Follow up on ...
DON'T:
# 2025-01-20
Got message. Replied HEARTBEAT_OK.
User said hi. Said hi back.
Time is 3pm.
The system can extract valuable content:
# Extract what matters from daily files
python3 {baseDir}/scripts/memory_manager.py --extract --from "2025-01-20.md"
# Output: List of extractable facts
Default: Archive daily memories older than 30 days
# Archive old memories
python3 {baseDir}/scripts/memory_manager.py --archive --older-than 30
# Archive with consolidation
python3 {baseDir}/scripts/memory_manager.py --archive --older-than 30 --consolidate-first
.memory-archive/
├── 2025-01/
│ ├── consolidated.md # Summary of the month
│ └── raw/ # Original daily files
│ ├── 2025-01-01.md
│ └── ...
└── 2025-02/
└── ...
# Search archived memories
python3 {baseDir}/scripts/memory_manager.py --search "keyword" --include-archive
# Retrieve specific archived content
python3 {baseDir}/scripts/memory_manager.py --retrieve "2025-01-15"
Daily memories contain repetition and noise. Compression extracts:
# Compress with custom rules
python3 {baseDir}/scripts/memory_manager.py --compress \
--rules keep-decisions,keep-preferences,keep-facts \
--remove heartbeets,trivial,transient
Before (daily files, 5000 words):
# 2025-01-20
User asked about API. Looked up docs. Found answer.
User preferred concise response. Noted preference.
...
# 2025-01-21
User asked about API again. Provided concise answer.
User appreciated brevity.
...
After (MEMORY.md, 100 words):
## User Preferences
- Prefers concise responses over detailed explanations
## Knowledge
- API documentation location: ...
## Lessons
- Concise answers are preferred for API questions
# Search all memories
python3 {baseDir}/scripts/memory_manager.py --search "关键词"
# Search specific range
python3 {baseDir}/scripts/memory_manager.py --search "..." --from 2025-01-01 --to 2025-01-31
# Search with context
python3 {baseDir}/scripts/memory_manager.py --search "..." --context 3
# Search archives too
python3 {baseDir}/scripts/memory_manager.py --search "..." --include-archive
{
"query": "关键词",
"results": [
{
"date": "2025-01-20",
"file": "memory/2025-01-20.md",
"line": 15,
"context": "...",
"relevance": "high"
}
],
"total": 3
}
This skill works alongside vector memory (LanceDB):
| System | Purpose | Retention |
|---|---|---|
| MEMORY.md | Curated long-term memory | Permanent |
| memory/YYYY-MM-DD.md | Daily logs | 30 days → archive |
| Vector memory (LanceDB) | Semantic search | Variable |
# Consolidate both systems
python3 {baseDir}/scripts/memory_manager.py --consolidate --sync-vector
# The script will:
# 1. Update MEMORY.md
# 2. Archive old daily files
# 3. Sync key facts to vector memory
Add to heartbeat or cron:
# HEARTBEAT.md
- Run memory consolidation weekly
- Archive memories older than 30 days
- Sync to vector memory
Or via cron:
# Weekly consolidation (Sunday 4am)
cron action=add job='{
"name": "memory-consolidation",
"schedule": "0 4 * * 0",
"text": "Consolidate weekly memories: 1) Review memory/ files 2) Update MEMORY.md 3) Archive old files 4) Sync to vector memory"
}'
During heartbeats, automatically extract:
python3 {baseDir}/scripts/memory_manager.py --auto-extract --days 1
| Metric | Healthy | Warning | Critical |
|---|---|---|---|
| Daily files count | <30 | 30-60 | >60 |
| MEMORY.md size | <50KB | 50-100KB | >100KB |
| Archive coverage | >90% | 50-90% | <50% |
| Last consolidation | <7 days | 7-14 days | >14 days |
python3 {baseDir}/scripts/memory_manager.py --health
# Output
{
"status": "healthy",
"metrics": {
"daily_files": 15,
"memory_md_size": "12KB",
"last_consolidation": "2025-01-18",
"archive_coverage": "95%"
},
"recommendations": []
}
# Clean up stale content
python3 {baseDir}/scripts/memory_manager.py --cleanup
# Remove duplicates
python3 {baseDir}/scripts/memory_manager.py --dedupe
# Reorganize structure
python3 {baseDir}/scripts/memory_manager.py --reorganize
# Use with self-evolution
python3 {baseDir}/scripts/memory_manager.py --consolidate
python3 ../self-evolution/scripts/evolution.py --analyze --with-memory
# Use with self-improvement
# Log a learning, then consolidate
python3 {baseDir}/scripts/memory_manager.py --extract-from .learnings/LEARNINGS.md
# 1. Check health
python3 {baseDir}/scripts/memory_manager.py --health
# 2. Consolidate recent memories
python3 {baseDir}/scripts/memory_manager.py --consolidate --days 7
# 3. Archive old files
python3 {baseDir}/scripts/memory_manager.py --archive --older-than 30
# 4. Sync to vector memory
python3 {baseDir}/scripts/memory_manager.py --sync-vector
# 5. Generate report
python3 {baseDir}/scripts/memory_manager.py --summary
# Extract key facts immediately
python3 {baseDir}/scripts/memory_manager.py --extract --today
# Update MEMORY.md
python3 {baseDir}/scripts/memory_manager.py --update --section "Key Decisions" --add "..."
# Search all memories for context
python3 {baseDir}/scripts/memory_manager.py --search "项目名" --include-archive --context 5
# Export relevant memories
python3 {baseDir}/scripts/memory_manager.py --export "项目名" --output project-context.md