| name | context-optimizer |
| description | Advanced context management with auto-compaction and dynamic context optimization for DeepSeek's 64k context window. Features intelligent compaction (merging, summarizing, extracting), query-aware relevance scoring, and hierarchical memory system with context archive. Logs optimization events to chat. |
| homepage | https://github.com/clawdbot/clawdbot |
| metadata | {"clawdbot":{"emoji":"🧠","requires":{"bins":[],"npm":["tiktoken","@xenova/transformers"]},"install":[{"id":"npm","kind":"npm","label":"Install Context Pruner dependencies","command":"cd ~/.clawdbot/skills/context-pruner && npm install"}]}} |
Context Pruner
Advanced context management optimized for DeepSeek's 64k context window. Provides intelligent pruning, compression, and token optimization to prevent context overflow while preserving important information.
Key Features
- DeepSeek-optimized: Specifically tuned for 64k context window
- Adaptive pruning: Multiple strategies based on context usage
- Semantic deduplication: Removes redundant information
- Priority-aware: Preserves high-value messages
- Token-efficient: Minimizes token overhead
- Real-time monitoring: Continuous context health tracking
Quick Start
Auto-compaction with dynamic context:
import { createContextPruner } from './lib/index.js';
const pruner = createContextPruner({
contextLimit: 64000,
autoCompact: true,
dynamicContext: true,
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
queryAwareCompaction: true,
});
await pruner.initialize();
const processed = await pruner.processMessages(messages, currentQuery);
const status = pruner.getStatus();
console.log(`Context health: ${status.health}, Relevance scores: ${status.relevanceScores}`);
const compacted = await pruner.autoCompact(messages, currentQuery);
Archive Retrieval (Hierarchical Memory):
const archiveResult = await pruner.retrieveFromArchive('query about previous conversation', {
maxContextTokens: 1000,
minRelevance: 0.4,
});
if (archiveResult.found) {
const archiveContext = archiveResult.snippets.join('\n\n');
console.log(`Found ${archiveResult.sources.length} relevant sources`);
console.log(`Retrieved ${archiveResult.totalTokens} tokens from archive`);
}
Auto-Compaction Strategies
- Semantic Compaction: Merges similar messages instead of removing them
- Temporal Compaction: Summarizes older conversations by time windows
- Extractive Compaction: Extracts key information from verbose messages
- Adaptive Compaction: Chooses best strategy based on message characteristics
- Dynamic Context: Filters messages based on relevance to current query
Dynamic Context Management
- Query-aware Relevance: Scores messages based on similarity to current query
- Relevance Decay: Relevance scores decay over time for older conversations
- Adaptive Filtering: Automatically filters low-relevance messages
- Priority Integration: Combines message priority with semantic relevance
Hierarchical Memory System
The context archive provides a RAM vs Storage approach:
- Current Context (RAM): Limited (64k tokens), fast access, auto-compacted
- Archive (Storage): Larger (100MB), slower but searchable
- Smart Retrieval: When information isn't in current context, efficiently search archive
- Selective Loading: Extract only relevant snippets, not entire documents
- Automatic Storage: Compacted content automatically stored in archive
Configuration
{
contextLimit: 64000,
autoCompact: true,
compactThreshold: 0.75,
aggressiveCompactThreshold: 0.9,
dynamicContext: true,
relevanceDecay: 0.95,
minRelevanceScore: 0.3,
queryAwareCompaction: true,
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
preserveRecent: 10,
preserveSystem: true,
minSimilarity: 0.85,
enableArchive: true,
archivePath: './context-archive',
archiveSearchLimit: 10,
archiveMaxSize: 100 * 1024 * 1024,
archiveIndexing: true,
logToChat: true,
chatLogLevel: 'brief',
chatLogFormat: '📊 {action}: {details}',
batchSize: 5,
maxCompactionRatio: 0.5,
}
Chat Logging
The context optimizer can log events directly to chat:
const pruner = createContextPruner({
logToChat: true,
chatLogLevel: 'brief',
chatLogFormat: '📊 {action}: {details}',
onLog: (level, message, data) => {
if (level === 'info' && data.action === 'compaction') {
console.log(`🧠 Context optimized: ${message}`);
}
}
});
Integration with Clawdbot
Add to your Clawdbot config:
skills:
context-pruner:
enabled: true
config:
contextLimit: 64000
autoPrune: true
The pruner will automatically monitor context usage and apply appropriate pruning strategies to stay within DeepSeek's 64k limit.