token-optimizer · d4kooo — Claude Code skill: cut token bloat in OpenClaw
A procedure set for OpenClaw agents: isolate background tasks, run local RAG, and consolidate context with Reset & Summarize before it balloons.
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill token-optimizer -a claude-code
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a claude-codeWhat token-optimizer does
The skill lays out five workflows for an OpenClaw instance. The first is task isolation: in openclaw.json you set sessionTarget: "isolated" on entries in the cron.jobs array, so a job runs in its own transient session instead of filling the main chat with heartbeat history. Add deliver: true to the payload to send results back to the main channel, and use the message tool when a human needs to be pinged.
The second workflow is the Reset & Summarize protocol. Once 📊 session_status shows more than 100k tokens, you scan the session, append new facts to MEMORY.md and memory/YYYY-MM-DD.md, then run openclaw gateway restart. The restart clears session history, but the system prompt and workspace files are injected fresh — that part is deliberate.
Local RAG comes next: point memorySearch at the local provider with the hf:second-state/All-MiniLM-L6-v2-Embedding-GGUF model and a sqlite store, then pull context with memory_search instead of loading everything. Two advanced sections cover indexing session transcripts from ~/.openclaw/sessions/*.jsonl via extraPaths and running hybrid vector plus keyword search. All of it edits OpenClaw's own config and calls its tools, so there is nothing to apply outside that runtime.
What it helps with
- move background cron jobs into a separate session
- shrink context once it passes 100k tokens
- set up local embeddings for memory search
- find an old conversation in session transcripts
- raise retrieval precision by mixing semantic and keyword search
Example prompts for the agent
- set up isolated cron jobs in openclaw.json
- context is growing too fast — walk me through Reset & Summarize
- configure memorySearch with local embeddings and sqlite
How to install token-optimizer
1Skills CLI (Vercel)
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill token-optimizer -a claude-codenpx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a claude-code2Manually: put the files in place
~/.claude/skills/d4kooo-token-optimizer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/d4kooo-token-optimizer/
1Skills CLI (Vercel)
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a codex2Manually: put the files in place
.agents/skills/d4kooo-token-optimizer/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a cursor2Manually: put the files in place
.cursor/skills/d4kooo-token-optimizer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install D4kooo/Openclaw-Token-memory-optimizer d4kooo-token-optimizer2Manually: put the files in place
.github/skills/d4kooo-token-optimizer/SKILL.md1Skills CLI (Vercel)
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a gemini-cli2Platform CLI
gemini skills install https://github.com/D4kooo/Openclaw-Token-memory-optimizerManually: put the files in place
.devin/skills/d4kooo-token-optimizer/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill d4kooo-token-optimizer -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about token-optimizer
How do I install token-optimizer in Claude?
Run npx skills add D4kooo/Openclaw-Token-memory-optimizer --skill token-optimizer -a claude-code. The skill then lives at ~/.claude/skills/d4kooo-token-optimizer/SKILL.md.
What does token-optimizer do?
It documents how to keep an OpenClaw instance from leaking tokens: isolate cron jobs, configure local RAG, index session transcripts, and consolidate context before it gets out of hand.
Where does this skill actually apply?
Its workflows edit openclaw.json and call OpenClaw tools such as memory_search, message and openclaw gateway restart. Outside that runtime there is nothing to apply.
Source text
SKILL.md · MIT
---
name: token-optimizer
description: Optimization suite for OpenClaw agents to prevent token leaks and context bloat. Use when an agent needs to implement background task isolation (Cron) or a Reset & Summarize workflow (RAG).
version: 1.1.0
authors:
- Pépère (shAde)
- Zayan (Clément)
---
# Token Optimizer Skill
This skill provides the procedural knowledge to keep your OpenClaw instance lean and efficient.
## Quick Reference
| Problem | Solution |
|---------|----------|
| Background tasks bloating context | Cron isolation (`sessionTarget: "isolated"`) |
| Reading entire history every turn | Local RAG with `memory_search` |
| Context exceeds 100k tokens | Reset & Summarize protocol |
| Finding old conversations | Session transcript indexing |
---
## Workflow 1: Periodic Task Isolation
To prevent background tasks from bloating your main conversation context, always isolate them.
### Steps
1. Locate your `openclaw.json` config.
2. In the `cron.jobs` array, set `sessionTarget: "isolated"` for any task that doesn't need to be part of the main chat history.
3. Use the `message` tool within the task's payload if human intervention is required.
### Example Config
```json
{
"cron": {
"jobs": [
{
"name": "Background Check",
"schedule": { "kind": "every", "everyMs": 1800000 },
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "Check for updates. If found, use message tool to notify user.",
"deliver": true
}
}
]
}
}
```
### Key Points
- `sessionTarget: "isolated"` runs the task in a separate, transient session
- Use `deliver: true` to send results back to the main channel
- Isolated sessions don't pollute your main context with heartbeat/check history
---
## Workflow 2: Reset & Summarize (The "Digital Soul" Protocol)
When your context usage (visible via `📊 session_status`) exceeds 100k tokens, perform a manual consolidation.
### Steps
1. **Check Context**: Run `📊 session_status` to see current token usage
2. **Scan History**: Review the current session for new facts, preferences, or project updates
3. **Update MEMORY.md**: Append these new facts to your long-term memory file
4. **Daily Log**: Ensure `memory/YYYY-MM-DD.md` is up to date with today's events
5. **Restart**: Run `openclaw gateway restart` to clear the active history
### When to Trigger
- Context > 100k tokens
- Session running for several days
- Noticeably slower responses
- User explicitly requests a "fresh start"
---
## Workflow 3: Local RAG Configuration
For efficient recall without token burn, configure local embeddings.
### Configuration (`openclaw.json`)
```json
{
"memorySearch": {
"embedding": {
"provider": "local",
"model": "hf:second-state/All-MiniLM-L6-v2-Embedding-GGUF"
},
"store": "sqlite",
"paths": ["memory/", "MEMORY.md"],
"extraPaths": []
}
}
```
### Usage
Use `memory_search` to retrieve context from your logs instead of loading everything:
```
memory_search(query="what did we decide about the API design")
```
The tool returns relevant snippets with file paths and line numbers. Use `memory_get` to pull specific sections.
---
## Workflow 4: Session Transcript Indexing (Advanced)
Index your session transcripts (`.jsonl` files) for searchable conversation history.
### How It Works
OpenClaw stores session transcripts in `~/.openclaw/sessions/`. These can be indexed for semantic search, allowing you to find old conversations without loading them into context.
### Configuration
Add transcript paths to `memorySearch.extraPaths`:
```json
{
"memorySearch": {
"extraPaths": [
"~/.openclaw/sessions/*.jsonl"
]
}
}
```
### Best Practices
- Index selectively (recent sessions, important conversations)
- Use date-based filtering to limit search scope
- Archive old transcripts to cold storage after indexing
---
## Workflow 5: Hybrid Search (Vector + BM25)
Combine semantic search with keyword matching for more accurate retrieval.
### Why Hybrid?
| Search Type | Strengths | Weaknesses |
|-------------|-----------|------------|
| Vector (semantic) | Finds conceptually similar content | May miss exact terms |
| BM25 (keyword) | Finds exact matches | Misses synonyms/paraphrases |
| **Hybrid** | Best of both worlds | Slightly more compute |
### How to Use
When `memory_search` returns low-confidence results:
1. Try the search with different phrasing (semantic variation)
2. Search for exact keywords you remember (BM25 behavior)
3. Combine results manually if needed
### Future Enhancement
OpenClaw's RAG system may support native hybrid search in future versions. For now, run multiple queries when precision matters.
---
## Troubleshooting
### "My context is growing too fast"
1. Check cron jobs: Are they isolated?
2. Check heartbeat frequency: Too frequent = more tokens
3. Are you loading large files unnecessarily?
### "memory_search returns nothing"
1. Verify `memorySearch` is configured in `openclaw.json`
2. Check that the embedding model is downloaded
3. Ensure memory files exist and have content
### "Restart didn't clear context"
The restart clears the session history, but:
- System prompt is always loaded
- Workspace files (MEMORY.md, etc.) are injected fresh
- This is by design for continuity
---
## Credits
- **Pépère** (shAde) — Original concept and documentation
- **Zayan** (Clément) — Implementation and testing
*Built for the OpenClaw community.* 🦦😸
© D4kooo · MIT · D4kooo/Openclaw-Token-memory-optimizer
Similar skills
All skills for Agent setup: memory, context, orchestration →token-optimizer by other authors comes first.