Agentic.Loop.ContextCompression
(agentic v0.2.2)
Copy Markdown
Two-tier context compression: truncation for moderate overflow, LLM-based summarization for severe overflow.
Ported from Homunculus MemoryManager.optimize_context pattern.
Strategy
- When context is < 2× budget: truncate older messages (keep recent ones intact)
- When context is ≥ 2× budget: use LLM summarization via
llm_chatcallback - Falls back to truncation on LLM error
Summary
Functions
Compress messages to fit within a token budget.
Estimate token count for a list of messages.
Truncate messages to fit within a token budget, keeping system + recent messages.
Functions
@spec compress([map()], non_neg_integer(), Agentic.Loop.Context.t()) :: {[map()], boolean()}
Compress messages to fit within a token budget.
Returns {compressed_messages, was_summarized}.
@spec estimate_tokens([map()]) :: non_neg_integer()
Estimate token count for a list of messages.
@spec truncate([map()], non_neg_integer()) :: [map()]
Truncate messages to fit within a token budget, keeping system + recent messages.