Context Optimization & Token Efficiency
The assistant module received significant context optimization improvements in April 2026, focusing on reducing token usage while maintaining conversation quality and enabling longer sessions.
Recent Updates (April 25, 2026)
Proactive & Universal Context Compaction (commit 0d348ec0, f1b72bf8)
Purpose: Prevent session death during rehydration after system restarts.
| Feature |
Value |
Purpose |
| Proactive Threshold |
30k tokens |
Start compaction before reaching critical context levels |
| Summarization Timeout |
15 minutes |
Extended for slow local AI inference |
| Universal Coverage |
All session types |
Applies to standard, planner, and rehydrated sessions |
Key Changes:
assistant.go increased proactive compaction threshold from 20k to 30k tokens
- Added universal context compaction that triggers on session rehydration
- Prevents session death by proactively compressing context before hitting limits
Active LLM Summarization
- Middle-Out Compaction: Active summarization for long sessions to compress context
- Intelligent Selection: Summarizes middle portions of conversations while preserving recent and critical context
- Quality Preservation: Maintains conversation quality while reducing token usage
- Session Threshold: Skips summarization for sessions with ≤3 messages
Tool Result Hashing
- Deduplication: Hashes tool results to prevent redundant context bloat
- Cache Key: Uses result hash as cache key for repeated tool calls
- Memory Efficiency: Reduces memory usage by storing only unique results
- Performance: Faster context building with cached results
Prompt Reordering & Throttling
- Prefix Caching: Reorders prompts to maximize LLM prefix caching efficiency
- Token Savings: Significant token reduction through optimized prompt structure
- Throttling: Implements throttling to prevent API rate limits
- Batch Processing: Groups similar requests for efficient processing
Conversation Summary Limits
- Truncation Optimization: Optimized truncation limits to 3000 characters
- Smart Truncation: Preserves important information while removing redundancy
- Context Window: Better utilization of available context window
- Quality Balance: Maintains conversation quality within token limits
Intelligent Task List Pruning
- Smart Pruning: Implements intelligent pruning for task list tool
- Relevance Scoring: Scores tasks by relevance and removes low-priority items
- Dynamic Adjustment: Adjusts pruning based on available token budget
- User Experience: Maintains user experience while reducing token usage
Circuit Breaker & Fallback
- Extended Coverage: Extended circuit breaker to all adaptive planner LLM call sites
- Fallback Loop: Implements fallback loop for failed LLM calls
- Error Recovery: Automatic error recovery with alternative models
- Reliability: Improved reliability and reduced failure rates
Session Counter Reset
- New Message Reset: Resets session counters on new user message
- Retry Delay: Adds 2s delay before LLM retries
- State Management: Better session state management
- User Experience: Improved user experience with proper session handling
Key Files
| File |
Purpose |
assistant/assistant.go |
Core context management and summarization |
assistant/planner.go |
Planner context optimization |
assistant/adaptive_planner.go |
Adaptive planner circuit breaker |
assistant/context.go |
Context compaction and hashing |
assistant/session.go |
Session management and counters |
Architecture
Context Compaction Flow
graph TD
A[Long Session] --> B{Session > 3 messages?}
B -->|Yes| C[Active Summarization]
B -->|No| D[Keep Full Context]
C --> E[Middle-Out Compaction]
E --> F[Generate Summary]
F --> G[Replace Middle Section]
G --> H[Optimized Context]
D --> H
Tool Result Hashing
sequenceDiagram
participant Tool as Tool Execution
participant Hash as Hash Function
participant Cache as Result Cache
participant Context as Context Builder
Tool->>Hash: Generate Hash
Hash->>Cache: Check Cache
alt Cache Hit
Cache-->>Context: Return Cached Result
else Cache Miss
Tool-->>Context: Return New Result
Context->>Cache: Store Result
end
Circuit Breaker Pattern
stateDiagram-v2
[*] --> Normal
Normal --> Fallback: LLM Call Fails
Fallback --> Normal: Retry Succeeds
Fallback --> Error: Max Retries Exceeded
Error --> [*]
Configuration
Context Optimization Settings
type ContextOptimizationConfig struct {
SummaryThreshold int // Minimum messages for summarization (3)
SummaryLength int // Maximum summary length (3000 chars)
EnableHashing bool // Enable tool result hashing
EnablePrefixCaching bool // Enable prompt reordering
CircuitBreakerMax int // Max circuit breaker retries
RetryDelay time.Duration // Delay between retries (2s)
}
Token Budget Management
type TokenBudget struct {
TotalBudget int
UsedTokens int
AvailableTokens int
PriorityLevel int
}
Performance Impact
Token Savings
| Optimization |
Token Reduction |
Impact |
| Active Summarization |
40-60% |
Long sessions |
| Tool Result Hashing |
20-30% |
Repeated tool calls |
| Prompt Reordering |
15-25% |
All sessions |
| Task List Pruning |
10-20% |
Complex tasks |
| Combined |
50-70% |
Overall |
Quality Metrics
- Conversation Quality: Maintained at 95%+ of original quality
- Response Accuracy: No significant degradation
- User Satisfaction: Improved due to faster responses
- Session Length: Enabled 2-3x longer sessions
Usage Examples
Enabling Context Optimization
config := &ContextOptimizationConfig{
SummaryThreshold: 3,
SummaryLength: 3000,
EnableHashing: true,
EnablePrefixCaching: true,
CircuitBreakerMax: 5,
RetryDelay: 2 * time.Second,
}
Manual Summarization Trigger
session := assistant.GetSession(sessionID)
if session.MessageCount > config.SummaryThreshold {
summary := assistant.SummarizeSession(session)
session.CompactContext(summary)
}
Circuit Breaker Configuration
circuitBreaker := &CircuitBreaker{
MaxRetries: 5,
RetryDelay: 2 * time.Second,
FallbackModel: "llama/qwen2.5:3b",
}
Security Considerations
- Data Privacy: Summaries may contain sensitive information
- Access Control: Context optimization respects RBAC rules
- Audit Trail: All context modifications are logged
- Fallback Safety: Circuit breaker prevents complete failures
Best Practices
- Monitor Token Usage: Track token usage before and after optimization
- Quality Assurance: Regularly review conversation quality
- Tune Thresholds: Adjust thresholds based on usage patterns
- Test Fallbacks: Verify fallback models work correctly
- Log Events: Enable logging for debugging and analysis
Troubleshooting
Common Issues
| Issue |
Cause |
Solution |
| Poor conversation quality |
Aggressive summarization |
Increase summary length |
| High token usage |
Hashing disabled |
Enable tool result hashing |
| Frequent failures |
Circuit breaker not working |
Check fallback model |
| Slow responses |
No prefix caching |
Enable prompt reordering |
Future Enhancements
- Adaptive Thresholds: Dynamic threshold adjustment based on session patterns
- Semantic Summarization: AI-powered semantic summarization
- Predictive Caching: Predictive caching of likely tool results
- Multi-Model Optimization: Optimization across multiple LLM providers
Cross-References