Provides automatic conversation continuity across sessions by loading recent memory at session start and generating AI summaries during compaction.
session:start#Runs when a new session begins. Loads the most recent daily memory file and injects two context blocks:
session:compact:before#Runs before automatic compaction (20+ messages OR 60% of token limit). Does two things:
agent.generateSummary() and prepends it to today's memory file<!-- recent_messages_block -->) — this is what session:start reads back next sessionbash
clawhub install session-context
Or manually:
bash
cd ~/.openclaw/workspace/skills
git clone https://github.com/thomasmarcel/openclaw-skill-session-context.git session-context
openclaw skills enable session-context
memory/ directory (created automatically)Customize thresholds in hooks/session/compact:before/handler.js:
js
return (
msgCount >= 20 || // minimum messages before summarizing
tokenCount > maxTokens * 0.6 // trigger at 60% of token limit
);
Adjust how many raw messages to preserve:
js
// In both handler files:
const MAX_RECENT_MESSAGES = 10; // last N user/assistant turns to preserve verbatim
Adjust summary context size:
js
// In hooks/session/start/handler.js:
const MAX_SUMMARY_CHARS = 6000; // cap on AI summary injected at session start
text
memory/
2026-04-03.md # daily files — summaries at top, recent_messages block at bottom
2026-04-04.md
Each file has this structure:
text
## HH:MM:SS
<AI summary of the session>
---
## Earlier timestamp
<earlier summary>
<!-- recent_messages_block -->
[{"role":"user","content":"..."},
{"role":"assistant","content":"..."},
...]
The <!-- recent_messages_block --> section is always at the end and replaced each compaction with the latest N turns.
During a conversation: As token usage grows, OpenClaw monitors session size.
Before compaction: The session:compact:before hook checks thresholds. If met:
memory/YYYY-MM-DD.mdCompaction proceeds: Older messages are pruned.
Next session: The session:start hook loads the file and injects both:
MIT