Expand description
Context compression for conversation history.
This module implements intelligent compression of conversation history to reduce token usage while preserving important information.
§Module Structure
- config: Compression configuration and bias settings
- types: Compression strategy, result, and segment types
- compressor: AI compressor and compression functions
- phase_detector: Conversation phase detection
- dependency: Message dependency tracking
Structs§
- AiCompressor
- AI-based compressor using a Provider.
- Circuit
Breaker State - State for circuit breaker to prevent infinite retry loops.
- Compression
Bias - Compression bias - controls what to prioritize during compression.
- Compression
Config - Configuration for context compression.
- Compression
History Entry - Compression history entry for session metadata.
- Compression
Outcome - Result of compression with metadata.
- Compression
Pipeline - Compression pipeline that orchestrates all modules.
- Compression
Result - Result of a compression operation.
- Compression
Thresholds - Thresholds for content compression.
- Dependency
Builder - Builder for dependency graphs.
- Dependency
Graph - Graph of message dependencies for preserving conversation coherence.
- Message
Dependency - Dependency relationship between ToolUse and ToolResult.
- Phase
Detector - Detector for conversation phase.
- Phase
Weights - Weight configuration for scoring based on conversation phase.
- Scored
Message - Message with its preservation score.
- Scorer
- Scorer for message preservation decisions.
- Summarized
Segment - A segment of conversation history that has been summarized.
- Summarizer
- Summarizer for large content.
- Tool
Compressor - Compressor for tool results.
Enums§
- AiCompression
Mode - Mode for AI-assisted compression.
- Compression
Strategy - Strategy for compressing conversation history.
- Conversation
Phase - Conversation phase detected from message history. Determines which weights to apply during scoring.
- Threshold
Level - Threshold level for compression warnings.
- Validation
Error - Validation errors for compression.
Constants§
- AUTOCOMPACT_
BUFFER_ TOKENS - Token buffers for threshold levels (from Claude Code).
- DEFAULT_
COMPRESSION_ THRESHOLD - Compression trigger threshold (percentage of context window). Lowered to 0.5 to compress earlier for long conversations (128K context -> 64K threshold)
- DEFAULT_
COMPRESSOR_ MODEL - Default model for summarization.
- DEFAULT_
TARGET_ RATIO - Target ratio after compression (keep this fraction of tokens).
- ERROR_
THRESHOLD_ BUFFER_ TOKENS - MANUAL_
COMPACT_ BUFFER_ TOKENS - MAX_
CONSECUTIVE_ FAILURES - Maximum consecutive compression failures before stopping retries. Claude Code: “1,279 sessions had 50+ consecutive failures, wasting ~250K API calls/day”
- MIN_
MESSAGES_ TO_ KEEP - Minimum messages to keep after compression. Increased to preserve more recent context for continuity
- TIME_
BASED_ MC_ CLEARED_ MESSAGE - Message to replace cleared tool result content (from Claude Code).
- TIME_
BASED_ MC_ GAP_ THRESHOLD_ MINUTES - Time-based microcompact threshold (minutes since last assistant message). When gap exceeds this, server cache has expired - clear old tool results.
- WARNING_
THRESHOLD_ BUFFER_ TOKENS
Traits§
- Compressor
- Compressor trait for different implementations.
Functions§
- build_
summary_ prompt - Build a prompt for summarization.
- compress_
messages - Compress messages synchronously.
- compress_
messages_ with_ ai - Compress messages with AI assistance (async version).
- compress_
messages_ with_ full_ ai - Compress messages with full AI support (async version).
- compress_
with_ bias - Compress with bias-based scoring.
- compress_
with_ pipeline - Legacy compression function (backward compatible).
- estimate_
tokens - Estimate token count for a message.
- estimate_
total_ tokens - Estimate total tokens for a message list.
- format_
tokens - Format token count for display.
- score_
by_ rules - Rule-based scoring for a message (public for pipeline use).
- score_
messages_ only - Score messages without compressing (analysis only).
- should_
compress - Check if compression should be triggered.