# Session Memory

> Write session summaries to daily memory files and search session history so OpenClaw can recall and cite past conversations.

- Skill: `modbender/session-memory-3` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add modbender/session-memory-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/session-memory-3/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/modbender/session-memory-3

---


# session-memory

Use this skill when the user asks to **remember yesterday’s (or a date’s) chat**, to **summarize a day’s sessions into memory**, or to **search past conversations** (by keyword or date). It bridges session logs and the memory store so OpenClaw can answer “what did we talk about on …?” and use session context in replies.

## When to use

- User asks: “把昨天的聊天记到记忆里” / “总结一下 2 月 27 日的对话并写入 memory”
- User asks: “查一下之前我们说过关于 XXX 的对话” / “搜索会话里关于 discord/股票 的内容”
- User wants past chats to be **searchable via memory/citations** → run the summarize script for that day first, then normal memory search will include it.

## Paths (default agent)

- **Sessions**: `~/.openclaw/agents/main/sessions/`  
  - `sessions.json` = index; `<session-id>.jsonl` = full transcript.
- **Memory**: `<workspace>/memory/`  
  - Daily file: `memory/YYYY-MM-DD.md`. Create or append a `## Session summary` section.

Run scripts from the **workspace root** (e.g. `~/.openclaw/workspace`), or pass `--workspace` so `memory/` is resolved correctly.

## 1. Summarize a day’s sessions → memory (session-to-memory)

Writes a **session summary** for the given date into `memory/YYYY-MM-DD.md` (creates the file or appends a section). Memory citations and RAG will then include that day’s chat.

```bash
node skills/session-memory/scripts/session-to-memory.js --date YYYY-MM-DD
```

Optional:

- `--date YYYY-MM-DD` — date to summarize (default: yesterday in local time).
- `--workspace /path/to/workspace` — workspace root; memory dir is `<workspace>/memory` (default: cwd or `~/.openclaw/workspace`).
- `--sessions-dir /path` — override sessions dir (default: `~/.openclaw/agents/main/sessions`).
- `--append` — append a “Session summary” section if the file exists; otherwise replace (default: append).
- `--max-messages 200` — cap messages per session when building summary (default: 200).

Example:

```bash
cd ~/.openclaw/workspace
node skills/session-memory/scripts/session-to-memory.js --date 2026-02-27 --append
```

Then answer the user with: “已把 2026-02-27 的会话摘要写入 memory/2026-02-27.md，之后你问当天的对话我就能通过记忆检索到。”

## 2. Search sessions (session-search)

Searches session JSONL by **keyword** and optional **date range**, returns snippets (session id, date, role, snippet) so the agent can use them in context. Does **not** write to memory; use this to answer “之前我们说过 XXX 吗？” or to gather context before summarizing.

```bash
node skills/session-memory/scripts/session-search.js --query "关键词" [--since YYYY-MM-DD] [--until YYYY-MM-DD] [--limit 20]
```

Optional:

- `--query "..."` — search phrase (required).
- `--since YYYY-MM-DD` — only sessions that started on or after this date.
- `--until YYYY-MM-DD` — only sessions that started on or before this date.
- `--limit N` — max number of snippets (default: 20).
- `--sessions-dir /path` — override sessions dir.

Output: JSON array of `{ sessionId, date, role, snippet, timestamp }` to stdout. Use the result in your reply or to decide whether to run session-to-memory for that day.

Example:

```bash
node skills/session-memory/scripts/session-search.js --query "discord 断联" --since 2026-02-26 --limit 10
```

## 3. List sessions by date (for discovery)

To see which days have sessions (e.g. before summarizing or searching):

```bash
for f in ~/.openclaw/agents/main/sessions/*.jsonl; do
  [ -f "$f" ] && echo "$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1) $(basename "$f" .jsonl)"
done | sort -r
```

If `jq` is not available, use the session-search script with a very broad query and `--limit 1` per day, or run the summarize script with `--date` for a specific date (it will report “no sessions” if none).

## Tips

- Summarize **after** the day ends (or when the user asks) so `memory/YYYY-MM-DD.md` contains that day’s session summary; then OpenClaw’s memory/citation search will find it.
- Session search is **read-only** over JSONL; it does not change memory. Use it to answer “有没有说过 XXX” or to prepare a summary.
- Large sessions are truncated by `--max-messages` when summarizing to avoid huge memory files.

