token-optimizer
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).
Savant verdict: Review advised
Security analysis or source-hub review identified patterns requiring attention.
Live evaluation
Not evaluated yet. Workspaces can request a live evaluation.
Security assessment
Risk score
20/100
Recommendation
CAUTION
Severity
LOW
Savant decision
Review advised
The assessment recommends caution with a risk score of 20/100 or more; review its findings before use. Static security analysis completed.
1 pattern found
- Memory Poisoning: clear contexthigh · SKILL.md:187 · Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
Structure
- Ships 1 executable scriptscripts/check-optimization.sh. Review what they do before enabling the skill for agents with tool access.
- The source hub's security checks flagged this skillRunlayer: warn (6/6 files flagged)
SKILL.md
---
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.* 🦦😸