Memory Curator Systematic memory management for agents through daily logging, session preservation, and knowledge extraction. Quick Start Log Today's Work
Append to today's log
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "Implemented user authentication with JWT" \ --category "Key Activities"
Show today's log
python scripts/daily_log.py --workspace ~/.openclaw/workspace --show Search Memory
Search all memory files
python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --query "GraphQL"
Search recent logs only (last 7 days)
python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --query "authentication" \ --days 7
Show recent logs
python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --recent 5 Extract Session Summary
Generate summary from current session
python scripts/extract_session.py \ --session ~/.openclaw/agents/ < agent-id
/sessions/ < session-id
.jsonl \ --output session-summary.md Core Workflows End of Day: Log Activities When: Before ending work session or switching contexts Steps: Review what was accomplished: Features implemented Bugs fixed Decisions made Learnings discovered Append to daily log: python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "Fixed race condition in payment processing - added mutex lock" Add structured entries for important work:
Key Activities
[14:30] Implemented user profile dashboard with GraphQL
[16:00] Fixed infinite re-render in UserContext - memoized provider value
Decisions Made
Chose Apollo Client over React Query - better caching + type generation
Decided to use JWT in httpOnly cookies instead of localStorage
Learnings
Apollo requires
__typename
field for cache normalization
-
React.memo doesn't prevent re-renders from context changes
See:
patterns.md
for what to log in different scenarios
Before Context Switch: Preserve Session
When:
Before running
/new
,
/reset
, or ending conversation
Steps:
Extract session summary:
Get current session ID from system prompt or openclaw status
python scripts/extract_session.py \ --session ~/.openclaw/agents/ < agent-id
/sessions/ < session-id
.jsonl \ --output ~/session-summary.md Review summary and edit Key Learnings section Save to daily log:
Append key points to today's log
cat ~/session-summary.md
~/.openclaw/workspace/memory/ $( date +%Y-%m-%d ) .md Extract critical context to MEMORY.md if needed: Non-obvious solutions Important decisions Patterns worth remembering Weekly Review: Extract Knowledge When: End of week (Friday/Sunday) or monthly Steps: Search for patterns in recent logs: python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --recent 7 Look for extraction signals: Repeated issues (3+ occurrences) High-cost learnings (>1 hour to solve) Non-obvious solutions Successful patterns worth reusing Extract to MEMORY.md: Add new sections or update existing ones Use problem-solution format Include code examples Add context for when to use Clean up MEMORY.md: Remove outdated information Consolidate duplicate entries Update code examples Improve organization if needed See: extraction.md for detailed extraction patterns Daily: Quick Logging For rapid context capture during work:
Quick note
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "TIL: DataLoader batches requests into single query"
Decision
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "Using Zustand for client state - simpler than Redux" \ --category "Decisions Made"
Problem solved
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "CORS + cookies: Enable credentials on client + server, Allow-Origin can't be *" Memory Structure Daily Logs ( memory/YYYY-MM-DD.md ) Purpose: Chronological activity tracking Content: What was done (timestamped) Decisions made Problems solved Learnings discovered Retention: Keep recent logs accessible, optionally archive logs >90 days When to use: "What did I do on [date]?" "When did I implement X?" Session history Activity tracking MEMORY.md Purpose: Curated long-term knowledge Content: Patterns and best practices Common solutions Mistakes to avoid Useful references Organization: Topic-based, not chronological When to use: "How do I solve X?" "What's the pattern for Y?" Best practices Reusable solutions See: organization.md for structure patterns Memory Logging Patterns What to Log Always log: Key implementation decisions (why approach X over Y) Non-obvious solutions Root causes of bugs Architecture decisions with rationale Patterns discovered Mistakes and how they were fixed Don't log: Every file changed (git has this) Obvious implementation details Routine commits Project-specific hacks See: patterns.md for comprehensive logging guidance When to Log During work: Quick notes with daily_log.py --entry Capture decisions as made Log problems when solved End of day: Review what was accomplished Structure important entries Add context for tomorrow End of week: Extract patterns to MEMORY.md Consolidate learnings Clean up outdated info Knowledge Extraction Extraction Criteria Extract to MEMORY.md when: Pattern appears 3+ times Solution took >1 hour to find Solution is non-obvious Will save significant time in future Applies across multiple projects Mistake was costly to debug Don't extract: One-off fixes Project-specific hacks Obvious solutions Rapidly changing APIs Extraction Format Problem-Solution Structure:
[Technology/Domain]
[Problem Title] ** Problem: ** [Clear description] ** Cause: ** [Root cause] ** Solution: ** [How to fix] ** Code: ** ```js // Example implementation Prevention: [How to avoid] Context: [When this applies] See: extraction.md for detailed extraction workflow
Scripts Reference
daily_log.py
Create or append to today's daily log. ```bash
Append entry
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --entry "Your log entry" \ [--category "Section Name"]
Create from template
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --template
Show today's log
python scripts/daily_log.py \ --workspace ~/.openclaw/workspace \ --show extract_session.py Extract summary from session JSONL. python scripts/extract_session.py \ --session ~/.openclaw/agents/ < id
/sessions/ < session
.jsonl \ [ --output summary.md ] Outputs: User requests summary Tools used Files touched Template for key learnings search_memory.py Search across all memory files.
Search with query
python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --query "search term" \ [ --days 30 ]
Show recent logs
python scripts/search_memory.py \ --workspace ~/.openclaw/workspace \ --recent 5 Best Practices Daily Discipline Start of day: Review yesterday's log, plan today During work: Quick notes for decisions and learnings End of day: Structure important entries, add context End of week: Extract patterns, clean up MEMORY.md Context Preservation Before /new or /reset : Extract session summary Add to daily log Preserve critical context in MEMORY.md After major work: Document what was accomplished Note key learnings Record next steps Knowledge Organization Topic-based structure - Group by domain, not date Problem-first titles - Lead with the problem being solved Searchable language - Use specific, findable terms Flat hierarchy - Maximum 2 levels deep Code examples - Include working examples See: organization.md for detailed structure guidance Troubleshooting Can't find past decision Search daily logs first: python scripts/search_memory.py --workspace ~/.openclaw/workspace --query "decision keyword" Search MEMORY.md: grep -i "keyword" ~/.openclaw/workspace/MEMORY.md Search session logs: rg "keyword" ~/.openclaw/agents/ < id
/sessions/.jsonl Memory files getting too large Archive old daily logs (>90 days): mkdir -p memory/archive/2025-Q1 mv memory/2025-01-.md memory/archive/2025-Q1/ Split MEMORY.md by domain if >1000 lines: memory/domains/ ├── react.md ├── graphql.md └── database.md Link from main MEMORY.md:
Domain Knowledge
React Patterns
-
GraphQL Patterns
Not sure what to log
See:
patterns.md
for comprehensive logging patterns
Quick rule:
If you spent >15 minutes on it or learned something non-obvious, log it.
Templates
Daily Log Template
Located at:
assets/templates/daily-log.md
Structure:
Key Activities
Decisions Made
Learnings
Challenges & Solutions
Context for Tomorrow
References
MEMORY.md Template
Located at:
assets/templates/MEMORY-template.md
Structure:
Patterns & Best Practices
Common Solutions
Learnings
Mistakes to Avoid
Useful References
Tips
Be consistent
- Log every day, extract every week
Be concise
- Future you needs facts, not stories
Be specific
- "Apollo cache normalization" > "cache issue"
Use code
- Examples > explanations
Search first
- Before asking, search your memory
Extract ruthlessly
- If it repeats 3x, extract it
Clean regularly
- Remove outdated info monthly
Version control
- Git commit MEMORY.md changes
Integration with OpenClaw
Auto-logging with Hooks
Create a hook to auto-log major events:
// ~/.openclaw/hooks/memory-logger/index.js
export
default
{
name
:
'memory-logger'
,
async
onToolCall
(
{
tool
,
agent
}
)
{
if
(
tool
===
'write'
||
tool
===
'edit'
)
{
// Log file modifications
await
exec
(
python scripts/daily_log.py --workspace
${
agent
.
workspace
}
--entry "Modified
${
tool
.
input
.
file_path
}
"
)
}
}
}
Session Preservation
Add to
AGENTS.md
:
Before /new or /reset Always preserve context: 1. Extract session summary 2. Add to daily log 3. Save critical decisions to MEMORY.md Weekly Review Cron openclaw cron add \ --name "weekly-memory-review" \ --at "Sunday 18:00" \ --system-event "Time for weekly memory review and knowledge extraction"