/install 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 onlySESSION-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:
- ✅ No file paths (replace with
\x3CREDACTED_PATH>) - ✅ No URLs (replace with
\x3CREDACTED_URL>) - ✅ No internal IPs (replace with
\x3CINTERNAL_URL>) - ✅ No passwords, tokens, API keys (delete entirely)
- ✅ 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
\x3CREDACTED_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:
\x3CPROJECT_ROOT>,\x3CINTERNAL_URL>,\x3CDB_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
| Action | Script |
|---|---|
| Write compact (agent-authored) | python3 scripts/compact_session.py --write \x3C compact.md |
| List compacts | python3 scripts/compact_session.py --list |
| Read latest compact | python3 scripts/compact_session.py --latest |
| Show compact stats | python3 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:
- Decisions — anything with "chose X over Y", "decided to", "going with"
- Facts — URLs, file paths, configs, technical details, user preferences
- Pending — uncompleted tasks, "later", "TODO", "next step"
- Blockers — "need X first", "blocked by", "waiting for"
- 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
│ └── ...
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install context-compactor-zero-dep - After installation, invoke the skill by name or use
/context-compactor-zero-dep - Provide required inputs per the skill's parameter spec and get structured output
What is Context Compactor (Zero Dep)?
Automatic context compression for OpenClaw sessions. Summarizes long conversations into structured digests (decisions, facts, pending items, technical detail... It is an AI Agent Skill for Claude Code / OpenClaw, with 195 downloads so far.
How do I install Context Compactor (Zero Dep)?
Run "/install context-compactor-zero-dep" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Context Compactor (Zero Dep) free?
Yes, Context Compactor (Zero Dep) is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Context Compactor (Zero Dep) support?
Context Compactor (Zero Dep) is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Context Compactor (Zero Dep)?
It is built and maintained by zgjq (@zgjq); the current version is v1.1.3.