context-compactor

Automatic context compression for OpenClaw sessions. Summarizes long conversations into structured digests (decisions, facts, pending items, technical details), saves compressed summaries to disk, and injects them into new sessions. Reduces token waste from redundant context repetition. Use when conversation exceeds ~50 turns, when context feels bloated, when starting a new session and prior context is needed, or when the user says "compact", "summarize this conversation", "start fresh but remember".

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "context-compactor" with this command: npx skills add zgjq/context-compactor-zero-dep

Context Compactor

Compresses long conversations into structured summaries. Saves token by replacing raw conversation history with dense, searchable digests.

Requirements

  • Runtime: Python 3.10+ (standard library only)
  • OS: Linux, macOS
  • Environment variables:
    • OPENCLAW_WORKSPACE — Workspace root (default: ~/.openclaw/workspace)
  • Environment: OPENCLAW_WORKSPACE (default: ~/.openclaw/workspace)

Security

Write Restrictions (Hard Rules)

The agent may ONLY write to these locations:

  • memory/compacts/ — compact files only
  • SESSION-STATE.md — via smart-memory skill (not this skill)

The agent MUST NOT write to:

  • Any directory outside the workspace
  • System directories (/etc, /usr, /var, /tmp except session cache)
  • User home directory root (~/.ssh, ~/.config, ~/.aws, etc.)
  • Any .* dotfile or dotdir in workspace root
  • Any file not matching memory/compacts/*.md

Read Restrictions

The agent may ONLY read from:

  • The current conversation context (already available)
  • memory/compacts/ — for listing/reading past compacts

The agent MUST NOT read from:

  • /etc/passwd, /etc/shadow, or any system credential file
  • ~/.ssh/, ~/.aws/, ~/.config/openclaw/ or similar
  • Any file outside the workspace unless explicitly asked by the user

Redaction Enforcement

Before writing ANY compact, the agent MUST run this checklist:

  1. ✅ No file paths (replace with <REDACTED_PATH>)
  2. ✅ No URLs (replace with <REDACTED_URL>)
  3. ✅ No internal IPs (replace with <INTERNAL_URL>)
  4. ✅ No passwords, tokens, API keys (delete entirely)
  5. ✅ No personal info beyond work context

If any item fails → do not write the compact until fixed.

Privacy Boundaries

What Compacts May Contain

  • Decisions, facts, pending actions, blockers
  • Project names and feature descriptions

What Compacts Must NOT Contain

  • File system paths (use <REDACTED_PATH> placeholder)
  • Internal URLs, endpoints, or infrastructure details
  • API keys, tokens, passwords, secrets (script-level regex filter)
  • Private keys or certificates
  • User personal information beyond work context

Agent Rules

  • Before saving a compact, strip or redact all paths, internal URLs, and credentials
  • Use placeholders: <PROJECT_ROOT>, <INTERNAL_URL>, <DB_CONFIG>
  • If unsure whether something is sensitive, redact it
  • Compacts are for "what was decided" not "where things live"

Data Isolation

  • Keyword extraction: Fully local — no network calls, no external transmission
  • LLM extraction (opt-in): Sends conversation text to the agent's configured LLM provider. This is inherent to using any LLM-based compaction and is not controlled by this skill. The skill only provides the prompt template; the agent/platform handles the actual API call.
  • Maximum 30 compacts retained, oldest auto-deleted
  • Compacts are stored locally and read locally — the skill itself never makes network calls

How It Works

Long conversation (10,000+ tokens)
    ↓
compact_session.py --extract
    ↓
Structured digest (~500 tokens)
    ↓
Saved to memory/compacts/YYYY-MM-DD-HHMM.md
    ↓
New session reads latest compact on startup

Compression ratio: ~20:1 — a 10,000 token conversation becomes ~500 token digest.

Quick Reference

ActionScript
Write compact (agent-authored)python3 scripts/compact_session.py --write < compact.md
List compactspython3 scripts/compact_session.py --list
Read latest compactpython3 scripts/compact_session.py --latest
Show compact statspython3 scripts/compact_session.py --stats

How compaction works: The agent drafts the compact content, then pipes it through --write which enforces security checks (no paths, URLs, IPs, secrets) before saving. This ensures programmatic enforcement — the agent never writes directly to disk.

Compact Format

# Session Compact — 2026-03-31 17:00 UTC
**Turns**: 45 | **Est. tokens saved**: ~9,500

## Decisions Made
- [2026-03-31] Chose SQLite over Redis for golden3 prompts
- [2026-03-31] Decided to use zero-dependency approach for smart-memory

## Facts Established
- [PROJ] golden3 site at golden3.killclaw.xyz, repo github.com/zgjq/golden3
- [TECH] Prompts stored in data/golden3.db, table `prompts`, category `scoring`
- [PREF] User prefers direct, no-nonsense communication style

## Pending Actions
- [ ] Publish smart-memory to ClawHub
- [ ] Fix scoring display from 100-point to 10-point scale

## Technical Context
- Server: ubuntu-4gb-hel1-1, Node v24.14.0
- Golden3 uses node:sqlite (DatabaseSync)

## Blockers / Open Questions
- Need ClawHub login token to publish

## Session Summary
Built smart-memory skill from Claude Code architecture study. Published to ClawHub
as smart-memory-zero-dep. Memory system now active with WAL protocol, type
classification, temporal decay, and snapshot/restore.

Agent Behavior

When to Compact

  • Conversation exceeds ~50 turns
  • Context window approaching limits (see AGENTS.md token discipline rules)
  • User says "compact", "summarize", "fresh start", "压缩"

How to Compact

The agent drafts the compact content, then saves it via:

echo "compact content" | python3 scripts/compact_session.py --write

The --write flag enforces all security checks programmatically: redaction of paths/URLs/IPs/secrets, path containment within workspace, and file naming. The agent NEVER writes directly to disk.

When to Inject Compact

  • New session startup — check for recent compact
  • User asks "what were we working on"
  • Context search returns nothing but a compact exists

Extraction Rules

From the conversation, extract:

  1. Decisions — anything with "chose X over Y", "decided to", "going with"
  2. Facts — URLs, file paths, configs, technical details, user preferences
  3. Pending — uncompleted tasks, "later", "TODO", "next step"
  4. Blockers — "need X first", "blocked by", "waiting for"
  5. Summary — 2-3 sentence overview of what happened

Skip:

  • Greetings, small talk, "ok", "嗯"
  • Repeated information already in MEMORY.md
  • Debugging noise (unless it led to a LESSON)
  • Sensitive data (tokens, passwords)

Integration with smart-memory

This skill works with smart-memory:

  • Compacts reference [TYPE] tags from smart-memory's classification system
  • Pending items from compacts can feed into wal pending
  • Facts from compacts can be promoted to MEMORY.md
  • Compacts live in memory/compacts/ — decayed by smart-memory's archival system

File Structure

~/.openclaw/workspace/
├── memory/
│   └── compacts/
│       ├── 2026-03-31-1700.md   # Session compact
│       ├── 2026-03-30-1430.md
│       └── ...

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Context Brief

Persistent context survival for OpenClaw. Writes file-based anchors to memory/anchors/ to preserve critical context across sessions. Reads MEMORY.md and dail...

Registry SourceRecently Updated
2790Profile unavailable
Automation

Clever Compact

Your OpenClaw agent forgets everything between sessions — after /new, after compaction, after overnight. Clever Compact fixes all three: injects your last st...

Registry SourceRecently Updated
6780Profile unavailable
General

Context Handoff

保存和恢复聊天上下文到本地文件。用于用户想在切换账号、清空 session、重新开会话、跨会话延续项目时,把当前会话级上下文或项目级摘要落盘并在之后恢复。也用于列出已有的会话上下文槽位或项目摘要,并按更新时间排序返回最近使用项。触发词包括:保存当前上下文、保存会话摘要、保存项目摘要、记下这次讨论、切号前保存、恢复...

Registry SourceRecently Updated
1760Profile unavailable
General

Context Slim

See exactly what's eating your context window. Analyzes prompts, conversations, and system instructions to show where every token goes. Actionable compressio...

Registry SourceRecently Updated
3370Profile unavailable