Class ContextWindowStrategies

java.lang.Object
dev.agenor.runtime.memory.llm.ContextWindowStrategies

public final class ContextWindowStrategies extends Object
Factory for built-in context window strategies.

Provides singleton instances of the standard strategies:

  • FIXED - Last N messages that fit in budget
  • SLIDING - Recent + important messages
  • SUMMARIZED - Recent + summary of old messages

Usage Example:


 import dev.agenor.runtime.memory.llm.ContextWindowStrategies;

 // Use built-in strategies
 List<LLMMessage> selected = ContextWindowStrategies.SLIDING.selectMessages(
     allMessages,
     2000,
     estimator
 );

 // Or with static import
 import static dev.agenor.runtime.memory.llm.ContextWindowStrategies.*;

 List<LLMMessage> selected = SLIDING.selectMessages(allMessages, 2000, estimator);
 

Strategy Comparison:

Comparison of context window strategies
Strategy Algorithm Best For Requires LLM
FIXED Last N messages Short conversations No
SLIDING Recent + important Long conversations No
SUMMARIZED Recent + summary Very long conversations Yes

Thread Safety: All strategies are stateless and thread-safe.

Since:
0.6.0
See Also:
  • Field Details

    • FIXED

      public static final ContextWindowStrategy FIXED
      Fixed window strategy - includes last N messages that fit in budget.

      Algorithm:

      1. Start from most recent message
      2. Add messages while under token budget
      3. Stop when budget would be exceeded

      Characteristics:

      • Pros: Simple, fast, predictable
      • Cons: May lose important early context
      • Best For: Short conversations
      • Performance: O(n) time
      • Requires LLM: No
      • Overhead: 0 tokens
      See Also:
    • SLIDING

      public static final ContextWindowStrategy SLIDING
      Sliding window strategy - includes recent messages plus important older ones.

      Algorithm:

      1. Always include most recent messages (last 5)
      2. Score older messages by importance
      3. Include highest scoring that fit in remaining budget

      Importance Scoring:

      • System messages: High priority
      • Messages with function calls: High priority
      • Long messages: Higher priority (more information)
      • User questions: Higher than assistant responses

      Characteristics:

      • Pros: Balances recency and importance
      • Cons: Slightly slower, gaps in conversation flow
      • Best For: Long conversations
      • Performance: O(n log n) time
      • Requires LLM: No
      • Overhead: 0 tokens
      See Also:
    • SUMMARIZED

      public static final ContextWindowStrategy SUMMARIZED
      Summarized strategy - includes recent messages plus summary of old conversation.

      Algorithm:

      1. Include most recent messages (last 10)
      2. If older messages exist, create summary
      3. Insert summary as system message
      4. Adjust token budget accordingly

      Note: Current implementation is a placeholder. Full summarization will be available when integrated with DefaultLLMMemoryManager.

      Characteristics:

      • Pros: Preserves overall context, continuous narrative
      • Cons: Requires LLM call, slower (~1-2s)
      • Best For: Very long conversations
      • Performance: O(n) time + LLM call
      • Requires LLM: Yes
      • Overhead: ~200 tokens for summary
      See Also:
  • Method Details

    • forName

      public static ContextWindowStrategy forName(String name)
      Get a strategy by name (case-insensitive).

      Example:

      
       ContextWindowStrategy strategy = ContextWindowStrategies.forName("sliding");
       // Returns ContextWindowStrategies.SLIDING
       
      Parameters:
      name - strategy name ("fixed", "sliding", or "summarized")
      Returns:
      the corresponding strategy
      Throws:
      IllegalArgumentException - if name is unknown
    • values

      public static ContextWindowStrategy[] values()
      Get all available strategies.
      Returns:
      array of all built-in strategies
    • names

      public static String[] names()
      Get names of all available strategies.
      Returns:
      array of strategy names