Context Optimization

Last updated: April 25, 2026

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

  1. Monitor Token Usage: Track token usage before and after optimization
  2. Quality Assurance: Regularly review conversation quality
  3. Tune Thresholds: Adjust thresholds based on usage patterns
  4. Test Fallbacks: Verify fallback models work correctly
  5. 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